diff --git a/bundles/chunk-IPKBAWYB.mjs b/bundles/chunk-IPKBAWYB.mjs deleted file mode 100755 index c658353..0000000 --- a/bundles/chunk-IPKBAWYB.mjs +++ /dev/null @@ -1,6482 +0,0 @@ - -import {createRequire as __cjsCompatRequire} from 'module'; -const require = __cjsCompatRequire(import.meta.url); - -import { - ConfigValidationError, - Log, - assertValidGithubConfig, - determineRepoBaseDirFromCwd, - getConfig, - green, - yellow -} from "./chunk-A44KY2LO.mjs"; -import { - __commonJS, - __publicField, - __toESM -} from "./chunk-2JKI6SI6.mjs"; - -// node_modules/fast-content-type-parse/index.js -var require_fast_content_type_parse = __commonJS({ - "node_modules/fast-content-type-parse/index.js"(exports, module) { - "use strict"; - var NullObject = function NullObject2() { - }; - NullObject.prototype = /* @__PURE__ */ Object.create(null); - var paramRE = /; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu; - var quotedPairRE = /\\([\v\u0020-\u00ff])/gu; - var mediaTypeRE = /^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u; - var defaultContentType = { type: "", parameters: new NullObject() }; - Object.freeze(defaultContentType.parameters); - Object.freeze(defaultContentType); - function parse2(header) { - if (typeof header !== "string") { - throw new TypeError("argument header is required and must be a string"); - } - let index = header.indexOf(";"); - const type = index !== -1 ? header.slice(0, index).trim() : header.trim(); - if (mediaTypeRE.test(type) === false) { - throw new TypeError("invalid media type"); - } - const result = { - type: type.toLowerCase(), - parameters: new NullObject() - }; - if (index === -1) { - return result; - } - let key; - let match; - let value; - paramRE.lastIndex = index; - while (match = paramRE.exec(header)) { - if (match.index !== index) { - throw new TypeError("invalid parameter format"); - } - index += match[0].length; - key = match[1].toLowerCase(); - value = match[2]; - if (value[0] === '"') { - value = value.slice(1, value.length - 1); - quotedPairRE.test(value) && (value = value.replace(quotedPairRE, "$1")); - } - result.parameters[key] = value; - } - if (index !== header.length) { - throw new TypeError("invalid parameter format"); - } - return result; - } - function safeParse2(header) { - if (typeof header !== "string") { - return defaultContentType; - } - let index = header.indexOf(";"); - const type = index !== -1 ? header.slice(0, index).trim() : header.trim(); - if (mediaTypeRE.test(type) === false) { - return defaultContentType; - } - const result = { - type: type.toLowerCase(), - parameters: new NullObject() - }; - if (index === -1) { - return result; - } - let key; - let match; - let value; - paramRE.lastIndex = index; - while (match = paramRE.exec(header)) { - if (match.index !== index) { - return defaultContentType; - } - index += match[0].length; - key = match[1].toLowerCase(); - value = match[2]; - if (value[0] === '"') { - value = value.slice(1, value.length - 1); - quotedPairRE.test(value) && (value = value.replace(quotedPairRE, "$1")); - } - result.parameters[key] = value; - } - if (index !== header.length) { - return defaultContentType; - } - return result; - } - module.exports.default = { parse: parse2, safeParse: safeParse2 }; - module.exports.parse = parse2; - module.exports.safeParse = safeParse2; - module.exports.defaultContentType = defaultContentType; - } -}); - -// node_modules/typed-graphqlify/dist/index.js -var require_dist = __commonJS({ - "node_modules/typed-graphqlify/dist/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.GraphQLType = void 0; - (function(GraphQLType) { - GraphQLType[GraphQLType["SCALAR"] = 0] = "SCALAR"; - GraphQLType[GraphQLType["INLINE_FRAGMENT"] = 1] = "INLINE_FRAGMENT"; - GraphQLType[GraphQLType["FRAGMENT"] = 2] = "FRAGMENT"; - })(exports.GraphQLType || (exports.GraphQLType = {})); - var typeSymbol = Symbol("GraphQL Type"); - var paramsSymbol = Symbol("GraphQL Params"); - function isInlineFragmentObject(value) { - return typeof value === "object" && value !== null && value[typeSymbol] === exports.GraphQLType.INLINE_FRAGMENT; - } - function isFragmentObject(value) { - return typeof value === "object" && value !== null && value[typeSymbol] === exports.GraphQLType.FRAGMENT; - } - function isScalarObject(value) { - return typeof value === "object" && value !== null && value[typeSymbol] === exports.GraphQLType.SCALAR; - } - function renderName(name) { - return name === void 0 ? "" : name; - } - function renderParams(params3, brackets, array) { - if (brackets === void 0) { - brackets = true; - } - if (array === void 0) { - array = false; - } - if (!params3) { - return ""; - } - var builder = []; - for (var _i = 0, _a = Object.entries(params3); _i < _a.length; _i++) { - var _b = _a[_i], key = _b[0], value = _b[1]; - var params_1 = void 0; - if (value === null) { - params_1 = "null"; - } else if (Array.isArray(value)) { - params_1 = "[".concat(renderParams(value, false, true), "]"); - } else if (typeof value === "object") { - params_1 = "{".concat(renderParams(value, false), "}"); - } else { - params_1 = "".concat(value); - } - builder.push(array ? "".concat(params_1) : "".concat(key, ":").concat(params_1)); - } - var built = builder.join(","); - if (brackets) { - built = "(".concat(built, ")"); - } - return built; - } - function renderScalar(name, params3) { - return renderName(name) + renderParams(params3); - } - function renderInlineFragment(fragment2, context) { - return "...on ".concat(fragment2.typeName).concat(renderObject(void 0, fragment2.internal, context)); - } - function renderFragment(fragment2, context) { - return "fragment ".concat(fragment2.name, " on ").concat(fragment2.typeName).concat(renderObject(void 0, fragment2.internal, context)); - } - function renderArray(name, arr, context) { - var first = arr[0]; - if (first === void 0 || first === null) { - throw new Error("Cannot render array with no first value"); - } - first[paramsSymbol] = arr[paramsSymbol]; - return renderType(name, first, context); - } - function renderType(name, value, context) { - switch (typeof value) { - case "bigint": - case "boolean": - case "number": - case "string": - throw new Error("Rendering type ".concat(typeof value, " directly is disallowed")); - case "object": - if (value === null) { - throw new Error("Cannot render null"); - } - if (isScalarObject(value)) { - return "".concat(renderScalar(name, value[paramsSymbol]), " "); - } else if (Array.isArray(value)) { - return renderArray(name, value, context); - } else { - return renderObject(name, value, context); - } - case "undefined": - return ""; - default: - throw new Error("Cannot render type ".concat(typeof value)); - } - } - function renderObject(name, obj, context) { - var fields = []; - for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) { - var _b = _a[_i], key = _b[0], value = _b[1]; - fields.push(renderType(key, value, context)); - } - for (var _c = 0, _d = Object.getOwnPropertySymbols(obj); _c < _d.length; _c++) { - var sym = _d[_c]; - var value = obj[sym]; - if (isInlineFragmentObject(value)) { - fields.push(renderInlineFragment(value, context)); - } else if (isFragmentObject(value)) { - context.fragments.set(sym, value); - fields.push("...".concat(value.name)); - } - } - if (fields.length === 0) { - throw new Error("Object cannot have no fields"); - } - return "".concat(renderName(name)).concat(renderParams(obj[paramsSymbol]), "{").concat(fields.join("").trim(), "}"); - } - function render(value) { - var context = { - fragments: /* @__PURE__ */ new Map() - }; - var rend = renderObject(void 0, value, context); - var rendered = /* @__PURE__ */ new Map(); - var executingContext = context; - var currentContext = { - fragments: /* @__PURE__ */ new Map() - }; - while (executingContext.fragments.size > 0) { - for (var _i = 0, _a = Array.from(executingContext.fragments.entries()); _i < _a.length; _i++) { - var _b = _a[_i], sym = _b[0], fragment2 = _b[1]; - if (!rendered.has(sym)) { - rendered.set(sym, renderFragment(fragment2, currentContext)); - } - } - executingContext = currentContext; - currentContext = { - fragments: /* @__PURE__ */ new Map() - }; - } - return rend + Array.from(rendered.values()).join(""); - } - function fragmentToString(value) { - var context = { - fragments: /* @__PURE__ */ new Map() - }; - renderObject(void 0, value, context); - var currentContext = { - fragments: /* @__PURE__ */ new Map() - }; - var output = ""; - for (var _i = 0, _a = Array.from(context.fragments.entries()); _i < _a.length; _i++) { - var _b = _a[_i], fragment2 = _b[1]; - output = output + renderFragment(fragment2, currentContext); - } - return output; - } - function createOperate(operateType) { - function operate(opNameOrQueryObject, queryObject) { - if (typeof opNameOrQueryObject === "string") { - if (!queryObject) { - throw new Error("queryObject is not set"); - } - return { - toString: function() { - return "".concat(operateType, " ").concat(opNameOrQueryObject).concat(render(queryObject)); - } - }; - } - return { - toString: function() { - return "".concat(operateType).concat(render(opNameOrQueryObject)); - } - }; - } - return operate; - } - var query2 = createOperate("query"); - var mutation = createOperate("mutation"); - var subscription = createOperate("subscription"); - function params2(params3, input) { - if (typeof params3 !== "object") { - throw new Error("Params have to be an object"); - } - if (typeof input !== "object") { - throw new Error("Cannot apply params to JS ".concat(typeof params3)); - } - input[paramsSymbol] = params3; - return input; - } - function alias(alias2, target) { - return "".concat(alias2, ":").concat(target); - } - function fragment(name, typeName, input) { - var _a, _b; - var fragment2 = (_a = {}, _a[typeSymbol] = exports.GraphQLType.FRAGMENT, _a.name = name, _a.typeName = typeName, _a.internal = input, _a); - return _b = {}, _b[Symbol("Fragment(".concat(name, " on ").concat(typeName, ")"))] = fragment2, _b; - } - function rawString(input) { - return JSON.stringify(input); - } - var __assign = function() { - __assign = Object.assign || function __assign2(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - function optional(obj) { - return obj; - } - function on(typeName, internal) { - var _a, _b; - var fragment2 = (_a = {}, _a[typeSymbol] = exports.GraphQLType.INLINE_FRAGMENT, _a.typeName = typeName, _a.internal = internal, _a); - return _b = {}, _b[Symbol("InlineFragment(".concat(typeName, ")"))] = fragment2, _b; - } - function onUnion(types3) { - var fragments = {}; - for (var _i = 0, _a = Object.entries(types3); _i < _a.length; _i++) { - var _b = _a[_i], typeName = _b[0], internal = _b[1]; - fragments = __assign(__assign({}, fragments), on(typeName, internal)); - } - return fragments; - } - function scalarType() { - var _a; - var scalar = (_a = {}, _a[typeSymbol] = exports.GraphQLType.SCALAR, _a); - return scalar; - } - var types2 = function() { - function types3() { - } - Object.defineProperty(types3, "number", { - get: function() { - return scalarType(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(types3, "string", { - get: function() { - return scalarType(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(types3, "boolean", { - get: function() { - return scalarType(); - }, - enumerable: false, - configurable: true - }); - types3.constant = function(_c) { - return scalarType(); - }; - types3.oneOf = function(_e) { - return scalarType(); - }; - types3.custom = function() { - return scalarType(); - }; - types3.optional = types3; - return types3; - }(); - exports.alias = alias; - exports.fragment = fragment; - exports.fragmentToString = fragmentToString; - exports.mutation = mutation; - exports.on = on; - exports.onUnion = onUnion; - exports.optional = optional; - exports.params = params2; - exports.paramsSymbol = paramsSymbol; - exports.query = query2; - exports.rawString = rawString; - exports.render = render; - exports.subscription = subscription; - exports.typeSymbol = typeSymbol; - exports.types = types2; - } -}); - -// node_modules/semver/internal/constants.js -var require_constants = __commonJS({ - "node_modules/semver/internal/constants.js"(exports, module) { - var SEMVER_SPEC_VERSION = "2.0.0"; - var MAX_LENGTH = 256; - var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; - var MAX_SAFE_COMPONENT_LENGTH = 16; - var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; - var RELEASE_TYPES = [ - "major", - "premajor", - "minor", - "preminor", - "patch", - "prepatch", - "prerelease" - ]; - module.exports = { - MAX_LENGTH, - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_SAFE_INTEGER, - RELEASE_TYPES, - SEMVER_SPEC_VERSION, - FLAG_INCLUDE_PRERELEASE: 1, - FLAG_LOOSE: 2 - }; - } -}); - -// node_modules/semver/internal/debug.js -var require_debug = __commonJS({ - "node_modules/semver/internal/debug.js"(exports, module) { - var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => { - }; - module.exports = debug2; - } -}); - -// node_modules/semver/internal/re.js -var require_re = __commonJS({ - "node_modules/semver/internal/re.js"(exports, module) { - var { - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_LENGTH - } = require_constants(); - var debug2 = require_debug(); - exports = module.exports = {}; - var re = exports.re = []; - var safeRe = exports.safeRe = []; - var src = exports.src = []; - var t = exports.t = {}; - var R = 0; - var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; - var safeRegexReplacements = [ - ["\\s", 1], - ["\\d", MAX_LENGTH], - [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] - ]; - var makeSafeRegex = (value) => { - for (const [token, max] of safeRegexReplacements) { - value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`); - } - return value; - }; - var createToken = (name, value, isGlobal) => { - const safe = makeSafeRegex(value); - const index = R++; - debug2(name, index, value); - t[name] = index; - src[index] = value; - re[index] = new RegExp(value, isGlobal ? "g" : void 0); - safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0); - }; - createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); - createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); - createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); - createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); - createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); - createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`); - createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`); - createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); - createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); - createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); - createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); - createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); - createToken("FULL", `^${src[t.FULLPLAIN]}$`); - createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); - createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); - createToken("GTLT", "((?:<|>)?=?)"); - createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); - createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); - createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); - createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); - createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); - createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); - createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); - createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); - createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`); - createToken("COERCERTL", src[t.COERCE], true); - createToken("COERCERTLFULL", src[t.COERCEFULL], true); - createToken("LONETILDE", "(?:~>?)"); - createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); - exports.tildeTrimReplace = "$1~"; - createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); - createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); - createToken("LONECARET", "(?:\\^)"); - createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); - exports.caretTrimReplace = "$1^"; - createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); - createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); - createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); - createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); - createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); - exports.comparatorTrimReplace = "$1$2$3"; - createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); - createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); - createToken("STAR", "(<|>)?=?\\s*\\*"); - createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); - createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); - } -}); - -// node_modules/semver/internal/parse-options.js -var require_parse_options = __commonJS({ - "node_modules/semver/internal/parse-options.js"(exports, module) { - var looseOption = Object.freeze({ loose: true }); - var emptyOpts = Object.freeze({}); - var parseOptions = (options) => { - if (!options) { - return emptyOpts; - } - if (typeof options !== "object") { - return looseOption; - } - return options; - }; - module.exports = parseOptions; - } -}); - -// node_modules/semver/internal/identifiers.js -var require_identifiers = __commonJS({ - "node_modules/semver/internal/identifiers.js"(exports, module) { - var numeric = /^[0-9]+$/; - var compareIdentifiers = (a, b) => { - const anum = numeric.test(a); - const bnum = numeric.test(b); - if (anum && bnum) { - a = +a; - b = +b; - } - return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; - }; - var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); - module.exports = { - compareIdentifiers, - rcompareIdentifiers - }; - } -}); - -// node_modules/semver/classes/semver.js -var require_semver = __commonJS({ - "node_modules/semver/classes/semver.js"(exports, module) { - var debug2 = require_debug(); - var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants(); - var { safeRe: re, t } = require_re(); - var parseOptions = require_parse_options(); - var { compareIdentifiers } = require_identifiers(); - var SemVer = class { - constructor(version, options) { - options = parseOptions(options); - if (version instanceof SemVer) { - if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { - return version; - } else { - version = version.version; - } - } else if (typeof version !== "string") { - throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`); - } - if (version.length > MAX_LENGTH) { - throw new TypeError( - `version is longer than ${MAX_LENGTH} characters` - ); - } - debug2("SemVer", version, options); - this.options = options; - this.loose = !!options.loose; - this.includePrerelease = !!options.includePrerelease; - const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); - if (!m) { - throw new TypeError(`Invalid Version: ${version}`); - } - this.raw = version; - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError("Invalid major version"); - } - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError("Invalid minor version"); - } - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError("Invalid patch version"); - } - if (!m[4]) { - this.prerelease = []; - } else { - this.prerelease = m[4].split(".").map((id) => { - if (/^[0-9]+$/.test(id)) { - const num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num; - } - } - return id; - }); - } - this.build = m[5] ? m[5].split(".") : []; - this.format(); - } - format() { - this.version = `${this.major}.${this.minor}.${this.patch}`; - if (this.prerelease.length) { - this.version += `-${this.prerelease.join(".")}`; - } - return this.version; - } - toString() { - return this.version; - } - compare(other) { - debug2("SemVer.compare", this.version, this.options, other); - if (!(other instanceof SemVer)) { - if (typeof other === "string" && other === this.version) { - return 0; - } - other = new SemVer(other, this.options); - } - if (other.version === this.version) { - return 0; - } - return this.compareMain(other) || this.comparePre(other); - } - compareMain(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch); - } - comparePre(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - if (this.prerelease.length && !other.prerelease.length) { - return -1; - } else if (!this.prerelease.length && other.prerelease.length) { - return 1; - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0; - } - let i = 0; - do { - const a = this.prerelease[i]; - const b = other.prerelease[i]; - debug2("prerelease compare", i, a, b); - if (a === void 0 && b === void 0) { - return 0; - } else if (b === void 0) { - return 1; - } else if (a === void 0) { - return -1; - } else if (a === b) { - continue; - } else { - return compareIdentifiers(a, b); - } - } while (++i); - } - compareBuild(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - let i = 0; - do { - const a = this.build[i]; - const b = other.build[i]; - debug2("build compare", i, a, b); - if (a === void 0 && b === void 0) { - return 0; - } else if (b === void 0) { - return 1; - } else if (a === void 0) { - return -1; - } else if (a === b) { - continue; - } else { - return compareIdentifiers(a, b); - } - } while (++i); - } - inc(release, identifier, identifierBase) { - switch (release) { - case "premajor": - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc("pre", identifier, identifierBase); - break; - case "preminor": - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc("pre", identifier, identifierBase); - break; - case "prepatch": - this.prerelease.length = 0; - this.inc("patch", identifier, identifierBase); - this.inc("pre", identifier, identifierBase); - break; - case "prerelease": - if (this.prerelease.length === 0) { - this.inc("patch", identifier, identifierBase); - } - this.inc("pre", identifier, identifierBase); - break; - case "major": - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { - this.major++; - } - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case "minor": - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++; - } - this.patch = 0; - this.prerelease = []; - break; - case "patch": - if (this.prerelease.length === 0) { - this.patch++; - } - this.prerelease = []; - break; - case "pre": { - const base = Number(identifierBase) ? 1 : 0; - if (!identifier && identifierBase === false) { - throw new Error("invalid increment argument: identifier is empty"); - } - if (this.prerelease.length === 0) { - this.prerelease = [base]; - } else { - let i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === "number") { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) { - if (identifier === this.prerelease.join(".") && identifierBase === false) { - throw new Error("invalid increment argument: identifier already exists"); - } - this.prerelease.push(base); - } - } - if (identifier) { - let prerelease = [identifier, base]; - if (identifierBase === false) { - prerelease = [identifier]; - } - if (compareIdentifiers(this.prerelease[0], identifier) === 0) { - if (isNaN(this.prerelease[1])) { - this.prerelease = prerelease; - } - } else { - this.prerelease = prerelease; - } - } - break; - } - default: - throw new Error(`invalid increment argument: ${release}`); - } - this.raw = this.format(); - if (this.build.length) { - this.raw += `+${this.build.join(".")}`; - } - return this; - } - }; - module.exports = SemVer; - } -}); - -// node_modules/semver/functions/parse.js -var require_parse = __commonJS({ - "node_modules/semver/functions/parse.js"(exports, module) { - var SemVer = require_semver(); - var parse2 = (version, options, throwErrors = false) => { - if (version instanceof SemVer) { - return version; - } - try { - return new SemVer(version, options); - } catch (er) { - if (!throwErrors) { - return null; - } - throw er; - } - }; - module.exports = parse2; - } -}); - -// node_modules/semver/functions/valid.js -var require_valid = __commonJS({ - "node_modules/semver/functions/valid.js"(exports, module) { - var parse2 = require_parse(); - var valid = (version, options) => { - const v = parse2(version, options); - return v ? v.version : null; - }; - module.exports = valid; - } -}); - -// node_modules/semver/functions/clean.js -var require_clean = __commonJS({ - "node_modules/semver/functions/clean.js"(exports, module) { - var parse2 = require_parse(); - var clean = (version, options) => { - const s = parse2(version.trim().replace(/^[=v]+/, ""), options); - return s ? s.version : null; - }; - module.exports = clean; - } -}); - -// node_modules/semver/functions/inc.js -var require_inc = __commonJS({ - "node_modules/semver/functions/inc.js"(exports, module) { - var SemVer = require_semver(); - var inc = (version, release, options, identifier, identifierBase) => { - if (typeof options === "string") { - identifierBase = identifier; - identifier = options; - options = void 0; - } - try { - return new SemVer( - version instanceof SemVer ? version.version : version, - options - ).inc(release, identifier, identifierBase).version; - } catch (er) { - return null; - } - }; - module.exports = inc; - } -}); - -// node_modules/semver/functions/diff.js -var require_diff = __commonJS({ - "node_modules/semver/functions/diff.js"(exports, module) { - var parse2 = require_parse(); - var diff = (version1, version2) => { - const v1 = parse2(version1, null, true); - const v2 = parse2(version2, null, true); - const comparison = v1.compare(v2); - if (comparison === 0) { - return null; - } - const v1Higher = comparison > 0; - const highVersion = v1Higher ? v1 : v2; - const lowVersion = v1Higher ? v2 : v1; - const highHasPre = !!highVersion.prerelease.length; - const lowHasPre = !!lowVersion.prerelease.length; - if (lowHasPre && !highHasPre) { - if (!lowVersion.patch && !lowVersion.minor) { - return "major"; - } - if (highVersion.patch) { - return "patch"; - } - if (highVersion.minor) { - return "minor"; - } - return "major"; - } - const prefix = highHasPre ? "pre" : ""; - if (v1.major !== v2.major) { - return prefix + "major"; - } - if (v1.minor !== v2.minor) { - return prefix + "minor"; - } - if (v1.patch !== v2.patch) { - return prefix + "patch"; - } - return "prerelease"; - }; - module.exports = diff; - } -}); - -// node_modules/semver/functions/major.js -var require_major = __commonJS({ - "node_modules/semver/functions/major.js"(exports, module) { - var SemVer = require_semver(); - var major = (a, loose) => new SemVer(a, loose).major; - module.exports = major; - } -}); - -// node_modules/semver/functions/minor.js -var require_minor = __commonJS({ - "node_modules/semver/functions/minor.js"(exports, module) { - var SemVer = require_semver(); - var minor = (a, loose) => new SemVer(a, loose).minor; - module.exports = minor; - } -}); - -// node_modules/semver/functions/patch.js -var require_patch = __commonJS({ - "node_modules/semver/functions/patch.js"(exports, module) { - var SemVer = require_semver(); - var patch = (a, loose) => new SemVer(a, loose).patch; - module.exports = patch; - } -}); - -// node_modules/semver/functions/prerelease.js -var require_prerelease = __commonJS({ - "node_modules/semver/functions/prerelease.js"(exports, module) { - var parse2 = require_parse(); - var prerelease = (version, options) => { - const parsed = parse2(version, options); - return parsed && parsed.prerelease.length ? parsed.prerelease : null; - }; - module.exports = prerelease; - } -}); - -// node_modules/semver/functions/compare.js -var require_compare = __commonJS({ - "node_modules/semver/functions/compare.js"(exports, module) { - var SemVer = require_semver(); - var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); - module.exports = compare; - } -}); - -// node_modules/semver/functions/rcompare.js -var require_rcompare = __commonJS({ - "node_modules/semver/functions/rcompare.js"(exports, module) { - var compare = require_compare(); - var rcompare = (a, b, loose) => compare(b, a, loose); - module.exports = rcompare; - } -}); - -// node_modules/semver/functions/compare-loose.js -var require_compare_loose = __commonJS({ - "node_modules/semver/functions/compare-loose.js"(exports, module) { - var compare = require_compare(); - var compareLoose = (a, b) => compare(a, b, true); - module.exports = compareLoose; - } -}); - -// node_modules/semver/functions/compare-build.js -var require_compare_build = __commonJS({ - "node_modules/semver/functions/compare-build.js"(exports, module) { - var SemVer = require_semver(); - var compareBuild = (a, b, loose) => { - const versionA = new SemVer(a, loose); - const versionB = new SemVer(b, loose); - return versionA.compare(versionB) || versionA.compareBuild(versionB); - }; - module.exports = compareBuild; - } -}); - -// node_modules/semver/functions/sort.js -var require_sort = __commonJS({ - "node_modules/semver/functions/sort.js"(exports, module) { - var compareBuild = require_compare_build(); - var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); - module.exports = sort; - } -}); - -// node_modules/semver/functions/rsort.js -var require_rsort = __commonJS({ - "node_modules/semver/functions/rsort.js"(exports, module) { - var compareBuild = require_compare_build(); - var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); - module.exports = rsort; - } -}); - -// node_modules/semver/functions/gt.js -var require_gt = __commonJS({ - "node_modules/semver/functions/gt.js"(exports, module) { - var compare = require_compare(); - var gt = (a, b, loose) => compare(a, b, loose) > 0; - module.exports = gt; - } -}); - -// node_modules/semver/functions/lt.js -var require_lt = __commonJS({ - "node_modules/semver/functions/lt.js"(exports, module) { - var compare = require_compare(); - var lt = (a, b, loose) => compare(a, b, loose) < 0; - module.exports = lt; - } -}); - -// node_modules/semver/functions/eq.js -var require_eq = __commonJS({ - "node_modules/semver/functions/eq.js"(exports, module) { - var compare = require_compare(); - var eq = (a, b, loose) => compare(a, b, loose) === 0; - module.exports = eq; - } -}); - -// node_modules/semver/functions/neq.js -var require_neq = __commonJS({ - "node_modules/semver/functions/neq.js"(exports, module) { - var compare = require_compare(); - var neq = (a, b, loose) => compare(a, b, loose) !== 0; - module.exports = neq; - } -}); - -// node_modules/semver/functions/gte.js -var require_gte = __commonJS({ - "node_modules/semver/functions/gte.js"(exports, module) { - var compare = require_compare(); - var gte = (a, b, loose) => compare(a, b, loose) >= 0; - module.exports = gte; - } -}); - -// node_modules/semver/functions/lte.js -var require_lte = __commonJS({ - "node_modules/semver/functions/lte.js"(exports, module) { - var compare = require_compare(); - var lte = (a, b, loose) => compare(a, b, loose) <= 0; - module.exports = lte; - } -}); - -// node_modules/semver/functions/cmp.js -var require_cmp = __commonJS({ - "node_modules/semver/functions/cmp.js"(exports, module) { - var eq = require_eq(); - var neq = require_neq(); - var gt = require_gt(); - var gte = require_gte(); - var lt = require_lt(); - var lte = require_lte(); - var cmp = (a, op, b, loose) => { - switch (op) { - case "===": - if (typeof a === "object") { - a = a.version; - } - if (typeof b === "object") { - b = b.version; - } - return a === b; - case "!==": - if (typeof a === "object") { - a = a.version; - } - if (typeof b === "object") { - b = b.version; - } - return a !== b; - case "": - case "=": - case "==": - return eq(a, b, loose); - case "!=": - return neq(a, b, loose); - case ">": - return gt(a, b, loose); - case ">=": - return gte(a, b, loose); - case "<": - return lt(a, b, loose); - case "<=": - return lte(a, b, loose); - default: - throw new TypeError(`Invalid operator: ${op}`); - } - }; - module.exports = cmp; - } -}); - -// node_modules/semver/functions/coerce.js -var require_coerce = __commonJS({ - "node_modules/semver/functions/coerce.js"(exports, module) { - var SemVer = require_semver(); - var parse2 = require_parse(); - var { safeRe: re, t } = require_re(); - var coerce = (version, options) => { - if (version instanceof SemVer) { - return version; - } - if (typeof version === "number") { - version = String(version); - } - if (typeof version !== "string") { - return null; - } - options = options || {}; - let match = null; - if (!options.rtl) { - match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); - } else { - const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; - let next; - while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) { - if (!match || next.index + next[0].length !== match.index + match[0].length) { - match = next; - } - coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; - } - coerceRtlRegex.lastIndex = -1; - } - if (match === null) { - return null; - } - const major = match[2]; - const minor = match[3] || "0"; - const patch = match[4] || "0"; - const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ""; - const build = options.includePrerelease && match[6] ? `+${match[6]}` : ""; - return parse2(`${major}.${minor}.${patch}${prerelease}${build}`, options); - }; - module.exports = coerce; - } -}); - -// node_modules/semver/internal/lrucache.js -var require_lrucache = __commonJS({ - "node_modules/semver/internal/lrucache.js"(exports, module) { - var LRUCache = class { - constructor() { - this.max = 1e3; - this.map = /* @__PURE__ */ new Map(); - } - get(key) { - const value = this.map.get(key); - if (value === void 0) { - return void 0; - } else { - this.map.delete(key); - this.map.set(key, value); - return value; - } - } - delete(key) { - return this.map.delete(key); - } - set(key, value) { - const deleted = this.delete(key); - if (!deleted && value !== void 0) { - if (this.map.size >= this.max) { - const firstKey = this.map.keys().next().value; - this.delete(firstKey); - } - this.map.set(key, value); - } - return this; - } - }; - module.exports = LRUCache; - } -}); - -// node_modules/semver/classes/range.js -var require_range = __commonJS({ - "node_modules/semver/classes/range.js"(exports, module) { - var SPACE_CHARACTERS = /\s+/g; - var Range = class { - constructor(range, options) { - options = parseOptions(options); - if (range instanceof Range) { - if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { - return range; - } else { - return new Range(range.raw, options); - } - } - if (range instanceof Comparator) { - this.raw = range.value; - this.set = [[range]]; - this.formatted = void 0; - return this; - } - this.options = options; - this.loose = !!options.loose; - this.includePrerelease = !!options.includePrerelease; - this.raw = range.trim().replace(SPACE_CHARACTERS, " "); - this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length); - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${this.raw}`); - } - if (this.set.length > 1) { - const first = this.set[0]; - this.set = this.set.filter((c) => !isNullSet(c[0])); - if (this.set.length === 0) { - this.set = [first]; - } else if (this.set.length > 1) { - for (const c of this.set) { - if (c.length === 1 && isAny(c[0])) { - this.set = [c]; - break; - } - } - } - } - this.formatted = void 0; - } - get range() { - if (this.formatted === void 0) { - this.formatted = ""; - for (let i = 0; i < this.set.length; i++) { - if (i > 0) { - this.formatted += "||"; - } - const comps = this.set[i]; - for (let k = 0; k < comps.length; k++) { - if (k > 0) { - this.formatted += " "; - } - this.formatted += comps[k].toString().trim(); - } - } - } - return this.formatted; - } - format() { - return this.range; - } - toString() { - return this.range; - } - parseRange(range) { - const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE); - const memoKey = memoOpts + ":" + range; - const cached = cache.get(memoKey); - if (cached) { - return cached; - } - const loose = this.options.loose; - const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; - range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); - debug2("hyphen replace", range); - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); - debug2("comparator trim", range); - range = range.replace(re[t.TILDETRIM], tildeTrimReplace); - debug2("tilde trim", range); - range = range.replace(re[t.CARETTRIM], caretTrimReplace); - debug2("caret trim", range); - let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); - if (loose) { - rangeList = rangeList.filter((comp) => { - debug2("loose invalid filter", comp, this.options); - return !!comp.match(re[t.COMPARATORLOOSE]); - }); - } - debug2("range list", rangeList); - const rangeMap = /* @__PURE__ */ new Map(); - const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); - for (const comp of comparators) { - if (isNullSet(comp)) { - return [comp]; - } - rangeMap.set(comp.value, comp); - } - if (rangeMap.size > 1 && rangeMap.has("")) { - rangeMap.delete(""); - } - const result = [...rangeMap.values()]; - cache.set(memoKey, result); - return result; - } - intersects(range, options) { - if (!(range instanceof Range)) { - throw new TypeError("a Range is required"); - } - return this.set.some((thisComparators) => { - return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => { - return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => { - return rangeComparators.every((rangeComparator) => { - return thisComparator.intersects(rangeComparator, options); - }); - }); - }); - }); - } - test(version) { - if (!version) { - return false; - } - if (typeof version === "string") { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false; - } - } - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true; - } - } - return false; - } - }; - module.exports = Range; - var LRU = require_lrucache(); - var cache = new LRU(); - var parseOptions = require_parse_options(); - var Comparator = require_comparator(); - var debug2 = require_debug(); - var SemVer = require_semver(); - var { - safeRe: re, - t, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace - } = require_re(); - var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants(); - var isNullSet = (c) => c.value === "<0.0.0-0"; - var isAny = (c) => c.value === ""; - var isSatisfiable = (comparators, options) => { - let result = true; - const remainingComparators = comparators.slice(); - let testComparator = remainingComparators.pop(); - while (result && remainingComparators.length) { - result = remainingComparators.every((otherComparator) => { - return testComparator.intersects(otherComparator, options); - }); - testComparator = remainingComparators.pop(); - } - return result; - }; - var parseComparator = (comp, options) => { - debug2("comp", comp, options); - comp = replaceCarets(comp, options); - debug2("caret", comp); - comp = replaceTildes(comp, options); - debug2("tildes", comp); - comp = replaceXRanges(comp, options); - debug2("xrange", comp); - comp = replaceStars(comp, options); - debug2("stars", comp); - return comp; - }; - var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; - var replaceTildes = (comp, options) => { - return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" "); - }; - var replaceTilde = (comp, options) => { - const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; - return comp.replace(r, (_, M, m, p, pr) => { - debug2("tilde", comp, _, M, m, p, pr); - let ret; - if (isX(M)) { - ret = ""; - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; - } else if (isX(p)) { - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; - } else if (pr) { - debug2("replaceTilde pr", pr); - ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; - } else { - ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; - } - debug2("tilde return", ret); - return ret; - }); - }; - var replaceCarets = (comp, options) => { - return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); - }; - var replaceCaret = (comp, options) => { - debug2("caret", comp, options); - const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; - const z = options.includePrerelease ? "-0" : ""; - return comp.replace(r, (_, M, m, p, pr) => { - debug2("caret", comp, _, M, m, p, pr); - let ret; - if (isX(M)) { - ret = ""; - } else if (isX(m)) { - ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; - } else if (isX(p)) { - if (M === "0") { - ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; - } else { - ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; - } - } else if (pr) { - debug2("replaceCaret pr", pr); - if (M === "0") { - if (m === "0") { - ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; - } else { - ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; - } - } else { - ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; - } - } else { - debug2("no pr"); - if (M === "0") { - if (m === "0") { - ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; - } else { - ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; - } - } else { - ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; - } - } - debug2("caret return", ret); - return ret; - }); - }; - var replaceXRanges = (comp, options) => { - debug2("replaceXRanges", comp, options); - return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); - }; - var replaceXRange = (comp, options) => { - comp = comp.trim(); - const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug2("xRange", comp, ret, gtlt, M, m, p, pr); - const xM = isX(M); - const xm = xM || isX(m); - const xp = xm || isX(p); - const anyX = xp; - if (gtlt === "=" && anyX) { - gtlt = ""; - } - pr = options.includePrerelease ? "-0" : ""; - if (xM) { - if (gtlt === ">" || gtlt === "<") { - ret = "<0.0.0-0"; - } else { - ret = "*"; - } - } else if (gtlt && anyX) { - if (xm) { - m = 0; - } - p = 0; - if (gtlt === ">") { - gtlt = ">="; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else { - m = +m + 1; - p = 0; - } - } else if (gtlt === "<=") { - gtlt = "<"; - if (xm) { - M = +M + 1; - } else { - m = +m + 1; - } - } - if (gtlt === "<") { - pr = "-0"; - } - ret = `${gtlt + M}.${m}.${p}${pr}`; - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; - } else if (xp) { - ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; - } - debug2("xRange return", ret); - return ret; - }); - }; - var replaceStars = (comp, options) => { - debug2("replaceStars", comp, options); - return comp.trim().replace(re[t.STAR], ""); - }; - var replaceGTE0 = (comp, options) => { - debug2("replaceGTE0", comp, options); - return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); - }; - var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { - if (isX(fM)) { - from = ""; - } else if (isX(fm)) { - from = `>=${fM}.0.0${incPr ? "-0" : ""}`; - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; - } else if (fpr) { - from = `>=${from}`; - } else { - from = `>=${from}${incPr ? "-0" : ""}`; - } - if (isX(tM)) { - to = ""; - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0-0`; - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0-0`; - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}`; - } else if (incPr) { - to = `<${tM}.${tm}.${+tp + 1}-0`; - } else { - to = `<=${to}`; - } - return `${from} ${to}`.trim(); - }; - var testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false; - } - } - if (version.prerelease.length && !options.includePrerelease) { - for (let i = 0; i < set.length; i++) { - debug2(set[i].semver); - if (set[i].semver === Comparator.ANY) { - continue; - } - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver; - if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) { - return true; - } - } - } - return false; - } - return true; - }; - } -}); - -// node_modules/semver/classes/comparator.js -var require_comparator = __commonJS({ - "node_modules/semver/classes/comparator.js"(exports, module) { - var ANY = Symbol("SemVer ANY"); - var Comparator = class { - static get ANY() { - return ANY; - } - constructor(comp, options) { - options = parseOptions(options); - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp; - } else { - comp = comp.value; - } - } - comp = comp.trim().split(/\s+/).join(" "); - debug2("comparator", comp, options); - this.options = options; - this.loose = !!options.loose; - this.parse(comp); - if (this.semver === ANY) { - this.value = ""; - } else { - this.value = this.operator + this.semver.version; - } - debug2("comp", this); - } - parse(comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; - const m = comp.match(r); - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`); - } - this.operator = m[1] !== void 0 ? m[1] : ""; - if (this.operator === "=") { - this.operator = ""; - } - if (!m[2]) { - this.semver = ANY; - } else { - this.semver = new SemVer(m[2], this.options.loose); - } - } - toString() { - return this.value; - } - test(version) { - debug2("Comparator.test", version, this.options.loose); - if (this.semver === ANY || version === ANY) { - return true; - } - if (typeof version === "string") { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false; - } - } - return cmp(version, this.operator, this.semver, this.options); - } - intersects(comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError("a Comparator is required"); - } - if (this.operator === "") { - if (this.value === "") { - return true; - } - return new Range(comp.value, options).test(this.value); - } else if (comp.operator === "") { - if (comp.value === "") { - return true; - } - return new Range(this.value, options).test(comp.semver); - } - options = parseOptions(options); - if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) { - return false; - } - if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) { - return false; - } - if (this.operator.startsWith(">") && comp.operator.startsWith(">")) { - return true; - } - if (this.operator.startsWith("<") && comp.operator.startsWith("<")) { - return true; - } - if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) { - return true; - } - if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) { - return true; - } - if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) { - return true; - } - return false; - } - }; - module.exports = Comparator; - var parseOptions = require_parse_options(); - var { safeRe: re, t } = require_re(); - var cmp = require_cmp(); - var debug2 = require_debug(); - var SemVer = require_semver(); - var Range = require_range(); - } -}); - -// node_modules/semver/functions/satisfies.js -var require_satisfies = __commonJS({ - "node_modules/semver/functions/satisfies.js"(exports, module) { - var Range = require_range(); - var satisfies = (version, range, options) => { - try { - range = new Range(range, options); - } catch (er) { - return false; - } - return range.test(version); - }; - module.exports = satisfies; - } -}); - -// node_modules/semver/ranges/to-comparators.js -var require_to_comparators = __commonJS({ - "node_modules/semver/ranges/to-comparators.js"(exports, module) { - var Range = require_range(); - var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); - module.exports = toComparators; - } -}); - -// node_modules/semver/ranges/max-satisfying.js -var require_max_satisfying = __commonJS({ - "node_modules/semver/ranges/max-satisfying.js"(exports, module) { - var SemVer = require_semver(); - var Range = require_range(); - var maxSatisfying = (versions, range, options) => { - let max = null; - let maxSV = null; - let rangeObj = null; - try { - rangeObj = new Range(range, options); - } catch (er) { - return null; - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - if (!max || maxSV.compare(v) === -1) { - max = v; - maxSV = new SemVer(max, options); - } - } - }); - return max; - }; - module.exports = maxSatisfying; - } -}); - -// node_modules/semver/ranges/min-satisfying.js -var require_min_satisfying = __commonJS({ - "node_modules/semver/ranges/min-satisfying.js"(exports, module) { - var SemVer = require_semver(); - var Range = require_range(); - var minSatisfying = (versions, range, options) => { - let min = null; - let minSV = null; - let rangeObj = null; - try { - rangeObj = new Range(range, options); - } catch (er) { - return null; - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - if (!min || minSV.compare(v) === 1) { - min = v; - minSV = new SemVer(min, options); - } - } - }); - return min; - }; - module.exports = minSatisfying; - } -}); - -// node_modules/semver/ranges/min-version.js -var require_min_version = __commonJS({ - "node_modules/semver/ranges/min-version.js"(exports, module) { - var SemVer = require_semver(); - var Range = require_range(); - var gt = require_gt(); - var minVersion = (range, loose) => { - range = new Range(range, loose); - let minver = new SemVer("0.0.0"); - if (range.test(minver)) { - return minver; - } - minver = new SemVer("0.0.0-0"); - if (range.test(minver)) { - return minver; - } - minver = null; - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i]; - let setMin = null; - comparators.forEach((comparator) => { - const compver = new SemVer(comparator.semver.version); - switch (comparator.operator) { - case ">": - if (compver.prerelease.length === 0) { - compver.patch++; - } else { - compver.prerelease.push(0); - } - compver.raw = compver.format(); - case "": - case ">=": - if (!setMin || gt(compver, setMin)) { - setMin = compver; - } - break; - case "<": - case "<=": - break; - default: - throw new Error(`Unexpected operation: ${comparator.operator}`); - } - }); - if (setMin && (!minver || gt(minver, setMin))) { - minver = setMin; - } - } - if (minver && range.test(minver)) { - return minver; - } - return null; - }; - module.exports = minVersion; - } -}); - -// node_modules/semver/ranges/valid.js -var require_valid2 = __commonJS({ - "node_modules/semver/ranges/valid.js"(exports, module) { - var Range = require_range(); - var validRange = (range, options) => { - try { - return new Range(range, options).range || "*"; - } catch (er) { - return null; - } - }; - module.exports = validRange; - } -}); - -// node_modules/semver/ranges/outside.js -var require_outside = __commonJS({ - "node_modules/semver/ranges/outside.js"(exports, module) { - var SemVer = require_semver(); - var Comparator = require_comparator(); - var { ANY } = Comparator; - var Range = require_range(); - var satisfies = require_satisfies(); - var gt = require_gt(); - var lt = require_lt(); - var lte = require_lte(); - var gte = require_gte(); - var outside = (version, range, hilo, options) => { - version = new SemVer(version, options); - range = new Range(range, options); - let gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case ">": - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = ">"; - ecomp = ">="; - break; - case "<": - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = "<"; - ecomp = "<="; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - if (satisfies(version, range, options)) { - return false; - } - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i]; - let high = null; - let low = null; - comparators.forEach((comparator) => { - if (comparator.semver === ANY) { - comparator = new Comparator(">=0.0.0"); - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator; - } - }); - if (high.operator === comp || high.operator === ecomp) { - return false; - } - if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; - }; - module.exports = outside; - } -}); - -// node_modules/semver/ranges/gtr.js -var require_gtr = __commonJS({ - "node_modules/semver/ranges/gtr.js"(exports, module) { - var outside = require_outside(); - var gtr = (version, range, options) => outside(version, range, ">", options); - module.exports = gtr; - } -}); - -// node_modules/semver/ranges/ltr.js -var require_ltr = __commonJS({ - "node_modules/semver/ranges/ltr.js"(exports, module) { - var outside = require_outside(); - var ltr = (version, range, options) => outside(version, range, "<", options); - module.exports = ltr; - } -}); - -// node_modules/semver/ranges/intersects.js -var require_intersects = __commonJS({ - "node_modules/semver/ranges/intersects.js"(exports, module) { - var Range = require_range(); - var intersects = (r1, r2, options) => { - r1 = new Range(r1, options); - r2 = new Range(r2, options); - return r1.intersects(r2, options); - }; - module.exports = intersects; - } -}); - -// node_modules/semver/ranges/simplify.js -var require_simplify = __commonJS({ - "node_modules/semver/ranges/simplify.js"(exports, module) { - var satisfies = require_satisfies(); - var compare = require_compare(); - module.exports = (versions, range, options) => { - const set = []; - let first = null; - let prev = null; - const v = versions.sort((a, b) => compare(a, b, options)); - for (const version of v) { - const included = satisfies(version, range, options); - if (included) { - prev = version; - if (!first) { - first = version; - } - } else { - if (prev) { - set.push([first, prev]); - } - prev = null; - first = null; - } - } - if (first) { - set.push([first, null]); - } - const ranges = []; - for (const [min, max] of set) { - if (min === max) { - ranges.push(min); - } else if (!max && min === v[0]) { - ranges.push("*"); - } else if (!max) { - ranges.push(`>=${min}`); - } else if (min === v[0]) { - ranges.push(`<=${max}`); - } else { - ranges.push(`${min} - ${max}`); - } - } - const simplified = ranges.join(" || "); - const original = typeof range.raw === "string" ? range.raw : String(range); - return simplified.length < original.length ? simplified : range; - }; - } -}); - -// node_modules/semver/ranges/subset.js -var require_subset = __commonJS({ - "node_modules/semver/ranges/subset.js"(exports, module) { - var Range = require_range(); - var Comparator = require_comparator(); - var { ANY } = Comparator; - var satisfies = require_satisfies(); - var compare = require_compare(); - var subset = (sub, dom, options = {}) => { - if (sub === dom) { - return true; - } - sub = new Range(sub, options); - dom = new Range(dom, options); - let sawNonNull = false; - OUTER: - for (const simpleSub of sub.set) { - for (const simpleDom of dom.set) { - const isSub = simpleSubset(simpleSub, simpleDom, options); - sawNonNull = sawNonNull || isSub !== null; - if (isSub) { - continue OUTER; - } - } - if (sawNonNull) { - return false; - } - } - return true; - }; - var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; - var minimumVersion = [new Comparator(">=0.0.0")]; - var simpleSubset = (sub, dom, options) => { - if (sub === dom) { - return true; - } - if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) { - return true; - } else if (options.includePrerelease) { - sub = minimumVersionWithPreRelease; - } else { - sub = minimumVersion; - } - } - if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) { - return true; - } else { - dom = minimumVersion; - } - } - const eqSet = /* @__PURE__ */ new Set(); - let gt, lt; - for (const c of sub) { - if (c.operator === ">" || c.operator === ">=") { - gt = higherGT(gt, c, options); - } else if (c.operator === "<" || c.operator === "<=") { - lt = lowerLT(lt, c, options); - } else { - eqSet.add(c.semver); - } - } - if (eqSet.size > 1) { - return null; - } - let gtltComp; - if (gt && lt) { - gtltComp = compare(gt.semver, lt.semver, options); - if (gtltComp > 0) { - return null; - } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) { - return null; - } - } - for (const eq of eqSet) { - if (gt && !satisfies(eq, String(gt), options)) { - return null; - } - if (lt && !satisfies(eq, String(lt), options)) { - return null; - } - for (const c of dom) { - if (!satisfies(eq, String(c), options)) { - return false; - } - } - return true; - } - let higher, lower; - let hasDomLT, hasDomGT; - let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; - let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; - if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) { - needDomLTPre = false; - } - for (const c of dom) { - hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; - hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; - if (gt) { - if (needDomGTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) { - needDomGTPre = false; - } - } - if (c.operator === ">" || c.operator === ">=") { - higher = higherGT(gt, c, options); - if (higher === c && higher !== gt) { - return false; - } - } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) { - return false; - } - } - if (lt) { - if (needDomLTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) { - needDomLTPre = false; - } - } - if (c.operator === "<" || c.operator === "<=") { - lower = lowerLT(lt, c, options); - if (lower === c && lower !== lt) { - return false; - } - } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) { - return false; - } - } - if (!c.operator && (lt || gt) && gtltComp !== 0) { - return false; - } - } - if (gt && hasDomLT && !lt && gtltComp !== 0) { - return false; - } - if (lt && hasDomGT && !gt && gtltComp !== 0) { - return false; - } - if (needDomGTPre || needDomLTPre) { - return false; - } - return true; - }; - var higherGT = (a, b, options) => { - if (!a) { - return b; - } - const comp = compare(a.semver, b.semver, options); - return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; - }; - var lowerLT = (a, b, options) => { - if (!a) { - return b; - } - const comp = compare(a.semver, b.semver, options); - return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; - }; - module.exports = subset; - } -}); - -// node_modules/semver/index.js -var require_semver2 = __commonJS({ - "node_modules/semver/index.js"(exports, module) { - var internalRe = require_re(); - var constants = require_constants(); - var SemVer = require_semver(); - var identifiers = require_identifiers(); - var parse2 = require_parse(); - var valid = require_valid(); - var clean = require_clean(); - var inc = require_inc(); - var diff = require_diff(); - var major = require_major(); - var minor = require_minor(); - var patch = require_patch(); - var prerelease = require_prerelease(); - var compare = require_compare(); - var rcompare = require_rcompare(); - var compareLoose = require_compare_loose(); - var compareBuild = require_compare_build(); - var sort = require_sort(); - var rsort = require_rsort(); - var gt = require_gt(); - var lt = require_lt(); - var eq = require_eq(); - var neq = require_neq(); - var gte = require_gte(); - var lte = require_lte(); - var cmp = require_cmp(); - var coerce = require_coerce(); - var Comparator = require_comparator(); - var Range = require_range(); - var satisfies = require_satisfies(); - var toComparators = require_to_comparators(); - var maxSatisfying = require_max_satisfying(); - var minSatisfying = require_min_satisfying(); - var minVersion = require_min_version(); - var validRange = require_valid2(); - var outside = require_outside(); - var gtr = require_gtr(); - var ltr = require_ltr(); - var intersects = require_intersects(); - var simplifyRange = require_simplify(); - var subset = require_subset(); - module.exports = { - parse: parse2, - valid, - clean, - inc, - diff, - major, - minor, - patch, - prerelease, - compare, - rcompare, - compareLoose, - compareBuild, - sort, - rsort, - gt, - lt, - eq, - neq, - gte, - lte, - cmp, - coerce, - Comparator, - Range, - satisfies, - toComparators, - maxSatisfying, - minSatisfying, - minVersion, - validRange, - outside, - gtr, - ltr, - intersects, - simplifyRange, - subset, - SemVer, - re: internalRe.re, - src: internalRe.src, - tokens: internalRe.t, - SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, - RELEASE_TYPES: constants.RELEASE_TYPES, - compareIdentifiers: identifiers.compareIdentifiers, - rcompareIdentifiers: identifiers.rcompareIdentifiers - }; - } -}); - -// node_modules/universal-user-agent/index.js -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } - if (typeof process === "object" && process.version !== void 0) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } - return ""; -} - -// node_modules/@octokit/core/node_modules/before-after-hook/lib/register.js -function register(state, name, method, options) { - if (typeof method !== "function") { - throw new Error("method for before hook must be a function"); - } - if (!options) { - options = {}; - } - if (Array.isArray(name)) { - return name.reverse().reduce((callback, name2) => { - return register.bind(null, state, name2, callback, options); - }, method)(); - } - return Promise.resolve().then(() => { - if (!state.registry[name]) { - return method(options); - } - return state.registry[name].reduce((method2, registered) => { - return registered.hook.bind(null, method2, options); - }, method)(); - }); -} - -// node_modules/@octokit/core/node_modules/before-after-hook/lib/add.js -function addHook(state, kind, name, hook2) { - const orig = hook2; - if (!state.registry[name]) { - state.registry[name] = []; - } - if (kind === "before") { - hook2 = (method, options) => { - return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); - }; - } - if (kind === "after") { - hook2 = (method, options) => { - let result; - return Promise.resolve().then(method.bind(null, options)).then((result_) => { - result = result_; - return orig(result, options); - }).then(() => { - return result; - }); - }; - } - if (kind === "error") { - hook2 = (method, options) => { - return Promise.resolve().then(method.bind(null, options)).catch((error) => { - return orig(error, options); - }); - }; - } - state.registry[name].push({ - hook: hook2, - orig - }); -} - -// node_modules/@octokit/core/node_modules/before-after-hook/lib/remove.js -function removeHook(state, name, method) { - if (!state.registry[name]) { - return; - } - const index = state.registry[name].map((registered) => { - return registered.orig; - }).indexOf(method); - if (index === -1) { - return; - } - state.registry[name].splice(index, 1); -} - -// node_modules/@octokit/core/node_modules/before-after-hook/index.js -var bind = Function.bind; -var bindable = bind.bind(bind); -function bindApi(hook2, state, name) { - const removeHookRef = bindable(removeHook, null).apply( - null, - name ? [state, name] : [state] - ); - hook2.api = { remove: removeHookRef }; - hook2.remove = removeHookRef; - ["before", "error", "after", "wrap"].forEach((kind) => { - const args = name ? [state, kind, name] : [state, kind]; - hook2[kind] = hook2.api[kind] = bindable(addHook, null).apply(null, args); - }); -} -function Singular() { - const singularHookName = Symbol("Singular"); - const singularHookState = { - registry: {} - }; - const singularHook = register.bind(null, singularHookState, singularHookName); - bindApi(singularHook, singularHookState, singularHookName); - return singularHook; -} -function Collection() { - const state = { - registry: {} - }; - const hook2 = register.bind(null, state); - bindApi(hook2, state); - return hook2; -} -var before_after_hook_default = { Singular, Collection }; - -// node_modules/@octokit/request/node_modules/@octokit/endpoint/dist-bundle/index.js -var VERSION = "0.0.0-development"; -var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; -var DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "" - } -}; -function lowercaseKeys(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} -function isPlainObject(value) { - if (typeof value !== "object" || value === null) - return false; - if (Object.prototype.toString.call(value) !== "[object Object]") - return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) - return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); -} -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach((key) => { - if (isPlainObject(options[key])) { - if (!(key in defaults)) - Object.assign(result, { [key]: options[key] }); - else - result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { [key]: options[key] }); - } - }); - return result; -} -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === void 0) { - delete obj[key]; - } - } - return obj; -} -function merge(defaults, route, options) { - var _a; - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { method, url } : { url: method }, options); - } else { - options = Object.assign({}, route); - } - options.headers = lowercaseKeys(options.headers); - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - if (options.url === "/graphql") { - if (defaults && ((_a = defaults.mediaType.previews) == null ? void 0 : _a.length)) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter( - (preview) => !mergedOptions.mediaType.previews.includes(preview) - ).concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); - } - return mergedOptions; -} -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return url + separator + names.map((name) => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} -var urlVariableRegex = /\{[^}]+\}/g; -function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); -} -function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - if (!matches) { - return []; - } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); -} -function omit(object, keysToOmit) { - const result = { __proto__: null }; - for (const key of Object.keys(object)) { - if (keysToOmit.indexOf(key) === -1) { - result[key] = object[key]; - } - } - return result; -} -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - return part; - }).join(""); -} -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } -} -function isDefined(value) { - return value !== void 0 && value !== null; -} -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} -function getValues(context, operator, key, modifier) { - var value = context[key], result = []; - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { - value = value.toString(); - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push( - encodeValue(operator, value, isKeyOperator(operator) ? key : "") - ); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function(value2) { - result.push( - encodeValue(operator, value2, isKeyOperator(operator) ? key : "") - ); - }); - } else { - Object.keys(value).forEach(function(k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function(value2) { - tmp.push(encodeValue(operator, value2)); - }); - } else { - Object.keys(value).forEach(function(k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - return result; -} -function parseUrl(template) { - return { - expand: expand.bind(null, template) - }; -} -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - template = template.replace( - /\{([^\{\}]+)\}|([^\{\}]+)/g, - function(_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function(variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== "+") { - var separator = ","; - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - } - ); - if (template === "/") { - return template; - } else { - return template.replace(/\/$/, ""); - } -} -function parse(options) { - var _a; - let method = options.method.toUpperCase(); - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, [ - "method", - "baseUrl", - "url", - "headers", - "request", - "mediaType" - ]); - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - headers.accept = headers.accept.split(/,/).map( - (format) => format.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}` - ) - ).join(","); - } - if (url.endsWith("/graphql")) { - if ((_a = options.mediaType.previews) == null ? void 0 : _a.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); - } - } - } - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } - return Object.assign( - { method, url, headers }, - typeof body !== "undefined" ? { body } : null, - options.request ? { request: options.request } : null - ); -} -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS2 = merge(oldDefaults, newDefaults); - const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); - return Object.assign(endpoint2, { - DEFAULTS: DEFAULTS2, - defaults: withDefaults.bind(null, DEFAULTS2), - merge: merge.bind(null, DEFAULTS2), - parse - }); -} -var endpoint = withDefaults(null, DEFAULTS); - -// node_modules/@octokit/request/dist-bundle/index.js -var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1); - -// node_modules/@octokit/request-error/dist-src/index.js -var RequestError = class extends Error { - name; - status; - request; - response; - constructor(message, statusCode, options) { - super(message); - this.name = "HttpError"; - this.status = Number.parseInt(statusCode); - if (Number.isNaN(this.status)) { - this.status = 0; - } - if ("response" in options) { - this.response = options.response; - } - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace( - / .*$/, - " [REDACTED]" - ) - }); - } - requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; - } -}; - -// node_modules/@octokit/request/dist-bundle/index.js -var VERSION2 = "0.0.0-development"; -var defaults_default = { - headers: { - "user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}` - } -}; -function isPlainObject2(value) { - if (typeof value !== "object" || value === null) - return false; - if (Object.prototype.toString.call(value) !== "[object Object]") - return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) - return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); -} -async function fetchWrapper(requestOptions) { - var _a, _b, _c, _d, _e; - const fetch2 = ((_a = requestOptions.request) == null ? void 0 : _a.fetch) || globalThis.fetch; - if (!fetch2) { - throw new Error( - "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" - ); - } - const log = ((_b = requestOptions.request) == null ? void 0 : _b.log) || console; - const parseSuccessResponseBody = ((_c = requestOptions.request) == null ? void 0 : _c.parseSuccessResponseBody) !== false; - const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body; - const requestHeaders = Object.fromEntries( - Object.entries(requestOptions.headers).map(([name, value]) => [ - name, - String(value) - ]) - ); - let fetchResponse; - try { - fetchResponse = await fetch2(requestOptions.url, { - method: requestOptions.method, - body, - redirect: (_d = requestOptions.request) == null ? void 0 : _d.redirect, - headers: requestHeaders, - signal: (_e = requestOptions.request) == null ? void 0 : _e.signal, - ...requestOptions.body && { duplex: "half" } - }); - } catch (error) { - let message = "Unknown Error"; - if (error instanceof Error) { - if (error.name === "AbortError") { - error.status = 500; - throw error; - } - message = error.message; - if (error.name === "TypeError" && "cause" in error) { - if (error.cause instanceof Error) { - message = error.cause.message; - } else if (typeof error.cause === "string") { - message = error.cause; - } - } - } - const requestError = new RequestError(message, 500, { - request: requestOptions - }); - requestError.cause = error; - throw requestError; - } - const status = fetchResponse.status; - const url = fetchResponse.url; - const responseHeaders = {}; - for (const [key, value] of fetchResponse.headers) { - responseHeaders[key] = value; - } - const octokitResponse = { - url, - status, - headers: responseHeaders, - data: "" - }; - if ("deprecation" in responseHeaders) { - const matches = responseHeaders.link && responseHeaders.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn( - `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` - ); - } - if (status === 204 || status === 205) { - return octokitResponse; - } - if (requestOptions.method === "HEAD") { - if (status < 400) { - return octokitResponse; - } - throw new RequestError(fetchResponse.statusText, status, { - response: octokitResponse, - request: requestOptions - }); - } - if (status === 304) { - octokitResponse.data = await getResponseData(fetchResponse); - throw new RequestError("Not modified", status, { - response: octokitResponse, - request: requestOptions - }); - } - if (status >= 400) { - octokitResponse.data = await getResponseData(fetchResponse); - throw new RequestError(toErrorMessage(octokitResponse.data), status, { - response: octokitResponse, - request: requestOptions - }); - } - octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body; - return octokitResponse; -} -async function getResponseData(response) { - var _a; - const contentType = response.headers.get("content-type"); - if (!contentType) { - return response.text().catch(() => ""); - } - const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType); - if (mimetype.type === "application/json") { - let text = ""; - try { - text = await response.text(); - return JSON.parse(text); - } catch (err) { - return text; - } - } else if (mimetype.type.startsWith("text/") || ((_a = mimetype.parameters.charset) == null ? void 0 : _a.toLowerCase()) === "utf-8") { - return response.text().catch(() => ""); - } else { - return response.arrayBuffer().catch(() => new ArrayBuffer(0)); - } -} -function toErrorMessage(data) { - if (typeof data === "string") { - return data; - } - if (data instanceof ArrayBuffer) { - return "Unknown error"; - } - if ("message" in data) { - const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : ""; - return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`; - } - return `Unknown error: ${JSON.stringify(data)}`; -} -function withDefaults2(oldEndpoint, newDefaults) { - const endpoint2 = oldEndpoint.defaults(newDefaults); - const newApi = function(route, parameters) { - const endpointOptions = endpoint2.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint2.parse(endpointOptions)); - } - const request2 = (route2, parameters2) => { - return fetchWrapper( - endpoint2.parse(endpoint2.merge(route2, parameters2)) - ); - }; - Object.assign(request2, { - endpoint: endpoint2, - defaults: withDefaults2.bind(null, endpoint2) - }); - return endpointOptions.request.hook(request2, endpointOptions); - }; - return Object.assign(newApi, { - endpoint: endpoint2, - defaults: withDefaults2.bind(null, endpoint2) - }); -} -var request = withDefaults2(endpoint, defaults_default); - -// node_modules/@octokit/graphql/dist-bundle/index.js -var VERSION3 = "0.0.0-development"; -function _buildMessageForResponseErrors(data) { - return `Request failed due to following response errors: -` + data.errors.map((e) => ` - ${e.message}`).join("\n"); -} -var GraphqlResponseError = class extends Error { - constructor(request2, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request2; - this.headers = headers; - this.response = response; - this.errors = response.errors; - this.data = response.data; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - name = "GraphqlResponseError"; - errors; - data; -}; -var NON_VARIABLE_OPTIONS = [ - "method", - "baseUrl", - "url", - "headers", - "request", - "query", - "mediaType" -]; -var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; -var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request2, query2, options) { - if (options) { - if (typeof query2 === "string" && "query" in options) { - return Promise.reject( - new Error(`[@octokit/graphql] "query" cannot be used as variable name`) - ); - } - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) - continue; - return Promise.reject( - new Error( - `[@octokit/graphql] "${key}" cannot be used as variable name` - ) - ); - } - } - const parsedOptions = typeof query2 === "string" ? Object.assign({ query: query2 }, options) : query2; - const requestOptions = Object.keys( - parsedOptions - ).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request2(requestOptions).then((response) => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - throw new GraphqlResponseError( - requestOptions, - headers, - response.data - ); - } - return response.data.data; - }); -} -function withDefaults3(request2, newDefaults) { - const newRequest = request2.defaults(newDefaults); - const newApi = (query2, options) => { - return graphql(newRequest, query2, options); - }; - return Object.assign(newApi, { - defaults: withDefaults3.bind(null, newRequest), - endpoint: newRequest.endpoint - }); -} -var graphql2 = withDefaults3(request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION3} ${getUserAgent()}` - }, - method: "POST", - url: "/graphql" -}); -function withCustomRequest(customRequest) { - return withDefaults3(customRequest, { - method: "POST", - url: "/graphql" - }); -} - -// node_modules/@octokit/core/node_modules/@octokit/auth-token/dist-bundle/index.js -var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; -var REGEX_IS_INSTALLATION = /^ghs_/; -var REGEX_IS_USER_TO_SERVER = /^ghu_/; -async function auth(token) { - const isApp = token.split(/\./).length === 3; - const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); - const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); - const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; - return { - type: "token", - token, - tokenType - }; -} -function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - return `token ${token}`; -} -async function hook(token, request2, route, parameters) { - const endpoint2 = request2.endpoint.merge( - route, - parameters - ); - endpoint2.headers.authorization = withAuthorizationPrefix(token); - return request2(endpoint2); -} -var createTokenAuth = function createTokenAuth2(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - if (typeof token !== "string") { - throw new Error( - "[@octokit/auth-token] Token passed to createTokenAuth is not a string" - ); - } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; - -// node_modules/@octokit/core/dist-src/version.js -var VERSION4 = "6.1.3"; - -// node_modules/@octokit/core/dist-src/index.js -var noop = () => { -}; -var consoleWarn = console.warn.bind(console); -var consoleError = console.error.bind(console); -var userAgentTrail = `octokit-core.js/${VERSION4} ${getUserAgent()}`; -var Octokit = class { - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - super( - Object.assign( - {}, - defaults, - options, - options.userAgent && defaults.userAgent ? { - userAgent: `${options.userAgent} ${defaults.userAgent}` - } : null - ) - ); - } - }; - return OctokitWithDefaults; - } - static plugin(...newPlugins) { - const currentPlugins = this.plugins; - const NewOctokit = class extends this { - static plugins = currentPlugins.concat( - newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) - ); - }; - return NewOctokit; - } - constructor(options = {}) { - const hook2 = new before_after_hook_default.Collection(); - const requestDefaults = { - baseUrl: request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - hook: hook2.bind(null, "request") - }), - mediaType: { - previews: [], - format: "" - } - }; - requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - this.request = request.defaults(requestDefaults); - this.graphql = withCustomRequest(this.request).defaults(requestDefaults); - this.log = Object.assign( - { - debug: noop, - info: noop, - warn: consoleWarn, - error: consoleError - }, - options.log - ); - this.hook = hook2; - if (!options.authStrategy) { - if (!options.auth) { - this.auth = async () => ({ - type: "unauthenticated" - }); - } else { - const auth2 = createTokenAuth(options.auth); - hook2.wrap("request", auth2.hook); - this.auth = auth2; - } - } else { - const { authStrategy, ...otherOptions } = options; - const auth2 = authStrategy( - Object.assign( - { - request: this.request, - log: this.log, - octokit: this, - octokitOptions: otherOptions - }, - options.auth - ) - ); - hook2.wrap("request", auth2.hook); - this.auth = auth2; - } - const classConstructor = this.constructor; - for (let i = 0; i < classConstructor.plugins.length; ++i) { - Object.assign(this, classConstructor.plugins[i](this, options)); - } - } - request; - graphql; - log; - hook; - auth; -}; -__publicField(Octokit, "VERSION", VERSION4); -__publicField(Octokit, "plugins", []); - -// node_modules/@octokit/plugin-request-log/dist-src/version.js -var VERSION5 = "5.3.1"; - -// node_modules/@octokit/plugin-request-log/dist-src/index.js -function requestLog(octokit) { - octokit.hook.wrap("request", (request2, options) => { - octokit.log.debug("request", options); - const start = Date.now(); - const requestOptions = octokit.request.endpoint.parse(options); - const path = requestOptions.url.replace(options.baseUrl, ""); - return request2(options).then((response) => { - const requestId = response.headers["x-github-request-id"]; - octokit.log.info( - `${requestOptions.method} ${path} - ${response.status} with id ${requestId} in ${Date.now() - start}ms` - ); - return response; - }).catch((error) => { - var _a; - const requestId = ((_a = error.response) == null ? void 0 : _a.headers["x-github-request-id"]) || "UNKNOWN"; - octokit.log.error( - `${requestOptions.method} ${path} - ${error.status} with id ${requestId} in ${Date.now() - start}ms` - ); - throw error; - }); - }); -} -requestLog.VERSION = VERSION5; - -// node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js -var VERSION6 = "0.0.0-development"; -function normalizePaginatedListResponse(response) { - if (!response.data) { - return { - ...response, - data: [] - }; - } - const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) - return response; - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - return response; -} -function iterator(octokit, route, parameters) { - const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) - return { done: true }; - try { - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - url = ((normalizedResponse.headers.link || "").match( - /<([^>]+)>;\s*rel="next"/ - ) || [])[1]; - return { value: normalizedResponse }; - } catch (error) { - if (error.status !== 409) - throw error; - url = ""; - return { - value: { - status: 200, - headers: {}, - data: [] - } - }; - } - } - }) - }; -} -function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = void 0; - } - return gather( - octokit, - [], - iterator(octokit, route, parameters)[Symbol.asyncIterator](), - mapFn - ); -} -function gather(octokit, results, iterator2, mapFn) { - return iterator2.next().then((result) => { - if (result.done) { - return results; - } - let earlyExit = false; - function done() { - earlyExit = true; - } - results = results.concat( - mapFn ? mapFn(result.value, done) : result.value.data - ); - if (earlyExit) { - return results; - } - return gather(octokit, results, iterator2, mapFn); - }); -} -var composePaginateRest = Object.assign(paginate, { - iterator -}); -function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit) - }) - }; -} -paginateRest.VERSION = VERSION6; - -// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js -var VERSION7 = "13.3.0"; - -// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js -var Endpoints = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: [ - "POST /orgs/{org}/actions/runners/{runner_id}/labels" - ], - addCustomLabelsToSelfHostedRunnerForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - addRepoAccessToSelfHostedRunnerGroupInOrg: [ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}" - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" - ], - addSelectedRepoToOrgVariable: [ - "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" - ], - approveWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" - ], - cancelWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" - ], - createEnvironmentVariable: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/variables" - ], - createOrUpdateEnvironmentSecret: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" - ], - createOrgVariable: ["POST /orgs/{org}/actions/variables"], - createRegistrationTokenForOrg: [ - "POST /orgs/{org}/actions/runners/registration-token" - ], - createRegistrationTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/registration-token" - ], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/remove-token" - ], - createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], - createWorkflowDispatch: [ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" - ], - deleteActionsCacheById: [ - "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" - ], - deleteActionsCacheByKey: [ - "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" - ], - deleteArtifact: [ - "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" - ], - deleteEnvironmentSecret: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" - ], - deleteEnvironmentVariable: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" - ], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" - ], - deleteRepoVariable: [ - "DELETE /repos/{owner}/{repo}/actions/variables/{name}" - ], - deleteSelfHostedRunnerFromOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}" - ], - deleteSelfHostedRunnerFromRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" - ], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: [ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" - ], - disableSelectedRepositoryGithubActionsOrganization: [ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" - ], - disableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" - ], - downloadArtifact: [ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" - ], - downloadJobLogsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" - ], - downloadWorkflowRunAttemptLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" - ], - downloadWorkflowRunLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" - ], - enableSelectedRepositoryGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" - ], - enableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" - ], - forceCancelWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel" - ], - generateRunnerJitconfigForOrg: [ - "POST /orgs/{org}/actions/runners/generate-jitconfig" - ], - generateRunnerJitconfigForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" - ], - getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], - getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], - getActionsCacheUsageByRepoForOrg: [ - "GET /orgs/{org}/actions/cache/usage-by-repository" - ], - getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], - getAllowedActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/selected-actions" - ], - getAllowedActionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/selected-actions" - ], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getCustomOidcSubClaimForRepo: [ - "GET /repos/{owner}/{repo}/actions/oidc/customization/sub" - ], - getEnvironmentPublicKey: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key" - ], - getEnvironmentSecret: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" - ], - getEnvironmentVariable: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" - ], - getGithubActionsDefaultWorkflowPermissionsOrganization: [ - "GET /orgs/{org}/actions/permissions/workflow" - ], - getGithubActionsDefaultWorkflowPermissionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/workflow" - ], - getGithubActionsPermissionsOrganization: [ - "GET /orgs/{org}/actions/permissions" - ], - getGithubActionsPermissionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions" - ], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], - getPendingDeploymentsForRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" - ], - getRepoPermissions: [ - "GET /repos/{owner}/{repo}/actions/permissions", - {}, - { renamed: ["actions", "getGithubActionsPermissionsRepository"] } - ], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], - getReviewsForRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals" - ], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}" - ], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowAccessToRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/access" - ], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunAttempt: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}" - ], - getWorkflowRunUsage: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing" - ], - getWorkflowUsage: [ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing" - ], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listEnvironmentSecrets: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets" - ], - listEnvironmentVariables: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/variables" - ], - listJobsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" - ], - listJobsForWorkflowRunAttempt: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs" - ], - listLabelsForSelfHostedRunnerForOrg: [ - "GET /orgs/{org}/actions/runners/{runner_id}/labels" - ], - listLabelsForSelfHostedRunnerForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listOrgVariables: ["GET /orgs/{org}/actions/variables"], - listRepoOrganizationSecrets: [ - "GET /repos/{owner}/{repo}/actions/organization-secrets" - ], - listRepoOrganizationVariables: [ - "GET /repos/{owner}/{repo}/actions/organization-variables" - ], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/downloads" - ], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories" - ], - listSelectedReposForOrgVariable: [ - "GET /orgs/{org}/actions/variables/{name}/repositories" - ], - listSelectedRepositoriesEnabledGithubActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/repositories" - ], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts" - ], - listWorkflowRuns: [ - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs" - ], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunJobForWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun" - ], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - reRunWorkflowFailedJobs: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs" - ], - removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels" - ], - removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - removeCustomLabelFromSelfHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}" - ], - removeCustomLabelFromSelfHostedRunnerForRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}" - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" - ], - removeSelectedRepoFromOrgVariable: [ - "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" - ], - reviewCustomGatesForRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule" - ], - reviewPendingDeploymentsForRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" - ], - setAllowedActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/selected-actions" - ], - setAllowedActionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions" - ], - setCustomLabelsForSelfHostedRunnerForOrg: [ - "PUT /orgs/{org}/actions/runners/{runner_id}/labels" - ], - setCustomLabelsForSelfHostedRunnerForRepo: [ - "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - setCustomOidcSubClaimForRepo: [ - "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub" - ], - setGithubActionsDefaultWorkflowPermissionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/workflow" - ], - setGithubActionsDefaultWorkflowPermissionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/workflow" - ], - setGithubActionsPermissionsOrganization: [ - "PUT /orgs/{org}/actions/permissions" - ], - setGithubActionsPermissionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions" - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories" - ], - setSelectedReposForOrgVariable: [ - "PUT /orgs/{org}/actions/variables/{name}/repositories" - ], - setSelectedRepositoriesEnabledGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories" - ], - setWorkflowAccessToRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/access" - ], - updateEnvironmentVariable: [ - "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" - ], - updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], - updateRepoVariable: [ - "PATCH /repos/{owner}/{repo}/actions/variables/{name}" - ] - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: [ - "DELETE /notifications/threads/{thread_id}/subscription" - ], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: [ - "GET /notifications/threads/{thread_id}/subscription" - ], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: [ - "GET /users/{username}/events/orgs/{org}" - ], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: [ - "GET /users/{username}/received_events/public" - ], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/notifications" - ], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: [ - "PUT /notifications/threads/{thread_id}/subscription" - ], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] - }, - apps: { - addRepoToInstallation: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}", - {}, - { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] } - ], - addRepoToInstallationForAuthenticatedUser: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}" - ], - checkToken: ["POST /applications/{client_id}/token"], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: [ - "POST /app/installations/{installation_id}/access_tokens" - ], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: [ - "GET /marketplace_listing/accounts/{account_id}" - ], - getSubscriptionPlanForAccountStubbed: [ - "GET /marketplace_listing/stubbed/accounts/{account_id}" - ], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: [ - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts" - ], - listInstallationReposForAuthenticatedUser: [ - "GET /user/installations/{installation_id}/repositories" - ], - listInstallationRequestsForAuthenticatedApp: [ - "GET /app/installation-requests" - ], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: [ - "GET /user/marketplace_purchases/stubbed" - ], - listWebhookDeliveries: ["GET /app/hook/deliveries"], - redeliverWebhookDelivery: [ - "POST /app/hook/deliveries/{delivery_id}/attempts" - ], - removeRepoFromInstallation: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}", - {}, - { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] } - ], - removeRepoFromInstallationForAuthenticatedUser: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}" - ], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - scopeToken: ["POST /applications/{client_id}/token/scoped"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: [ - "DELETE /app/installations/{installation_id}/suspended" - ], - updateWebhookConfigForApp: ["PATCH /app/hook/config"] - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: [ - "GET /users/{username}/settings/billing/actions" - ], - getGithubBillingUsageReportOrg: [ - "GET /organizations/{org}/settings/billing/usage" - ], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: [ - "GET /users/{username}/settings/billing/packages" - ], - getSharedStorageBillingOrg: [ - "GET /orgs/{org}/settings/billing/shared-storage" - ], - getSharedStorageBillingUser: [ - "GET /users/{username}/settings/billing/shared-storage" - ] - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: [ - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations" - ], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: [ - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs" - ], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestRun: [ - "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest" - ], - rerequestSuite: [ - "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest" - ], - setSuitesPreferences: [ - "PATCH /repos/{owner}/{repo}/check-suites/preferences" - ], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] - }, - codeScanning: { - commitAutofix: [ - "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits" - ], - createAutofix: [ - "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix" - ], - createVariantAnalysis: [ - "POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses" - ], - deleteAnalysis: [ - "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}" - ], - deleteCodeqlDatabase: [ - "DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" - ], - getAlert: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", - {}, - { renamedParameters: { alert_id: "alert_number" } } - ], - getAnalysis: [ - "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}" - ], - getAutofix: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix" - ], - getCodeqlDatabase: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" - ], - getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], - getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], - getVariantAnalysis: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}" - ], - getVariantAnalysisRepoTask: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}" - ], - listAlertInstances: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances" - ], - listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listAlertsInstances: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - {}, - { renamed: ["codeScanning", "listAlertInstances"] } - ], - listCodeqlDatabases: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/databases" - ], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}" - ], - updateDefaultSetup: [ - "PATCH /repos/{owner}/{repo}/code-scanning/default-setup" - ], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] - }, - codeSecurity: { - attachConfiguration: [ - "POST /orgs/{org}/code-security/configurations/{configuration_id}/attach" - ], - attachEnterpriseConfiguration: [ - "POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach" - ], - createConfiguration: ["POST /orgs/{org}/code-security/configurations"], - createConfigurationForEnterprise: [ - "POST /enterprises/{enterprise}/code-security/configurations" - ], - deleteConfiguration: [ - "DELETE /orgs/{org}/code-security/configurations/{configuration_id}" - ], - deleteConfigurationForEnterprise: [ - "DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}" - ], - detachConfiguration: [ - "DELETE /orgs/{org}/code-security/configurations/detach" - ], - getConfiguration: [ - "GET /orgs/{org}/code-security/configurations/{configuration_id}" - ], - getConfigurationForRepository: [ - "GET /repos/{owner}/{repo}/code-security-configuration" - ], - getConfigurationsForEnterprise: [ - "GET /enterprises/{enterprise}/code-security/configurations" - ], - getConfigurationsForOrg: ["GET /orgs/{org}/code-security/configurations"], - getDefaultConfigurations: [ - "GET /orgs/{org}/code-security/configurations/defaults" - ], - getDefaultConfigurationsForEnterprise: [ - "GET /enterprises/{enterprise}/code-security/configurations/defaults" - ], - getRepositoriesForConfiguration: [ - "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories" - ], - getRepositoriesForEnterpriseConfiguration: [ - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories" - ], - getSingleConfigurationForEnterprise: [ - "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}" - ], - setConfigurationAsDefault: [ - "PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults" - ], - setConfigurationAsDefaultForEnterprise: [ - "PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults" - ], - updateConfiguration: [ - "PATCH /orgs/{org}/code-security/configurations/{configuration_id}" - ], - updateEnterpriseConfiguration: [ - "PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}" - ] - }, - codesOfConduct: { - getAllCodesOfConduct: ["GET /codes_of_conduct"], - getConductCode: ["GET /codes_of_conduct/{key}"] - }, - codespaces: { - addRepositoryForSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" - ], - checkPermissionsForDevcontainer: [ - "GET /repos/{owner}/{repo}/codespaces/permissions_check" - ], - codespaceMachinesForAuthenticatedUser: [ - "GET /user/codespaces/{codespace_name}/machines" - ], - createForAuthenticatedUser: ["POST /user/codespaces"], - createOrUpdateOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}" - ], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" - ], - createOrUpdateSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}" - ], - createWithPrForAuthenticatedUser: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces" - ], - createWithRepoForAuthenticatedUser: [ - "POST /repos/{owner}/{repo}/codespaces" - ], - deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], - deleteFromOrganization: [ - "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}" - ], - deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" - ], - deleteSecretForAuthenticatedUser: [ - "DELETE /user/codespaces/secrets/{secret_name}" - ], - exportForAuthenticatedUser: [ - "POST /user/codespaces/{codespace_name}/exports" - ], - getCodespacesForUserInOrg: [ - "GET /orgs/{org}/members/{username}/codespaces" - ], - getExportDetailsForAuthenticatedUser: [ - "GET /user/codespaces/{codespace_name}/exports/{export_id}" - ], - getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], - getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], - getPublicKeyForAuthenticatedUser: [ - "GET /user/codespaces/secrets/public-key" - ], - getRepoPublicKey: [ - "GET /repos/{owner}/{repo}/codespaces/secrets/public-key" - ], - getRepoSecret: [ - "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" - ], - getSecretForAuthenticatedUser: [ - "GET /user/codespaces/secrets/{secret_name}" - ], - listDevcontainersInRepositoryForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces/devcontainers" - ], - listForAuthenticatedUser: ["GET /user/codespaces"], - listInOrganization: [ - "GET /orgs/{org}/codespaces", - {}, - { renamedParameters: { org_id: "org" } } - ], - listInRepositoryForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces" - ], - listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], - listRepositoriesForSecretForAuthenticatedUser: [ - "GET /user/codespaces/secrets/{secret_name}/repositories" - ], - listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories" - ], - preFlightWithRepoForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces/new" - ], - publishForAuthenticatedUser: [ - "POST /user/codespaces/{codespace_name}/publish" - ], - removeRepositoryForSecretForAuthenticatedUser: [ - "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" - ], - repoMachinesForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces/machines" - ], - setRepositoriesForSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}/repositories" - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories" - ], - startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], - stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], - stopInOrganization: [ - "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop" - ], - updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] - }, - copilot: { - addCopilotSeatsForTeams: [ - "POST /orgs/{org}/copilot/billing/selected_teams" - ], - addCopilotSeatsForUsers: [ - "POST /orgs/{org}/copilot/billing/selected_users" - ], - cancelCopilotSeatAssignmentForTeams: [ - "DELETE /orgs/{org}/copilot/billing/selected_teams" - ], - cancelCopilotSeatAssignmentForUsers: [ - "DELETE /orgs/{org}/copilot/billing/selected_users" - ], - copilotMetricsForOrganization: ["GET /orgs/{org}/copilot/metrics"], - copilotMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/metrics"], - getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], - getCopilotSeatDetailsForUser: [ - "GET /orgs/{org}/members/{username}/copilot" - ], - listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"], - usageMetricsForOrg: ["GET /orgs/{org}/copilot/usage"], - usageMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/usage"] - }, - dependabot: { - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" - ], - createOrUpdateOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}" - ], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" - ], - deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" - ], - getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], - getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], - getRepoPublicKey: [ - "GET /repos/{owner}/{repo}/dependabot/secrets/public-key" - ], - getRepoSecret: [ - "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" - ], - listAlertsForEnterprise: [ - "GET /enterprises/{enterprise}/dependabot/alerts" - ], - listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], - listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories" - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories" - ], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}" - ] - }, - dependencyGraph: { - createRepositorySnapshot: [ - "POST /repos/{owner}/{repo}/dependency-graph/snapshots" - ], - diffRange: [ - "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}" - ], - exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"] - }, - emojis: { get: ["GET /emojis"] }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"] - }, - interactions: { - getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: [ - "GET /user/interaction-limits", - {}, - { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] } - ], - removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: [ - "DELETE /repos/{owner}/{repo}/interaction-limits" - ], - removeRestrictionsForYourPublicRepos: [ - "DELETE /user/interaction-limits", - {}, - { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] } - ], - setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: [ - "PUT /user/interaction-limits", - {}, - { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] } - ] - }, - issues: { - addAssignees: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees" - ], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - addSubIssue: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues" - ], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - checkUserCanBeAssignedToIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}" - ], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/comments" - ], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}" - ], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: [ - "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}" - ], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline" - ], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: [ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels" - ], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels" - ], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - listSubIssues: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues" - ], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels" - ], - removeAssignees: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees" - ], - removeLabel: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}" - ], - removeSubIssue: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue" - ], - reprioritizeSubIssue: [ - "PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority" - ], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: [ - "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}" - ] - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"] - }, - markdown: { - render: ["POST /markdown"], - renderRaw: [ - "POST /markdown/raw", - { headers: { "content-type": "text/plain; charset=utf-8" } } - ] - }, - meta: { - get: ["GET /meta"], - getAllVersions: ["GET /versions"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"] - }, - migrations: { - deleteArchiveForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/archive" - ], - deleteArchiveForOrg: [ - "DELETE /orgs/{org}/migrations/{migration_id}/archive" - ], - downloadArchiveForOrg: [ - "GET /orgs/{org}/migrations/{migration_id}/archive" - ], - getArchiveForAuthenticatedUser: [ - "GET /user/migrations/{migration_id}/archive" - ], - getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], - getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], - listForAuthenticatedUser: ["GET /user/migrations"], - listForOrg: ["GET /orgs/{org}/migrations"], - listReposForAuthenticatedUser: [ - "GET /user/migrations/{migration_id}/repositories" - ], - listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], - listReposForUser: [ - "GET /user/migrations/{migration_id}/repositories", - {}, - { renamed: ["migrations", "listReposForAuthenticatedUser"] } - ], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - unlockRepoForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock" - ], - unlockRepoForOrg: [ - "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock" - ] - }, - oidc: { - getOidcCustomSubTemplateForOrg: [ - "GET /orgs/{org}/actions/oidc/customization/sub" - ], - updateOidcCustomSubTemplateForOrg: [ - "PUT /orgs/{org}/actions/oidc/customization/sub" - ] - }, - orgs: { - addSecurityManagerTeam: [ - "PUT /orgs/{org}/security-managers/teams/{team_slug}", - {}, - { - deprecated: "octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team" - } - ], - assignTeamToOrgRole: [ - "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}" - ], - assignUserToOrgRole: [ - "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}" - ], - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: [ - "PUT /orgs/{org}/outside_collaborators/{username}" - ], - createInvitation: ["POST /orgs/{org}/invitations"], - createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"], - createOrUpdateCustomPropertiesValuesForRepos: [ - "PATCH /orgs/{org}/properties/values" - ], - createOrUpdateCustomProperty: [ - "PUT /orgs/{org}/properties/schema/{custom_property_name}" - ], - createWebhook: ["POST /orgs/{org}/hooks"], - delete: ["DELETE /orgs/{org}"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - enableOrDisableSecurityProductOnAllOrgRepos: [ - "POST /orgs/{org}/{security_product}/{enablement}", - {}, - { - deprecated: "octokit.rest.orgs.enableOrDisableSecurityProductOnAllOrgRepos() is deprecated, see https://docs.github.com/rest/orgs/orgs#enable-or-disable-a-security-feature-for-an-organization" - } - ], - get: ["GET /orgs/{org}"], - getAllCustomProperties: ["GET /orgs/{org}/properties/schema"], - getCustomProperty: [ - "GET /orgs/{org}/properties/schema/{custom_property_name}" - ], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - getWebhookDelivery: [ - "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}" - ], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listAttestations: ["GET /orgs/{org}/attestations/{subject_digest}"], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"], - listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"], - listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"], - listOrgRoles: ["GET /orgs/{org}/organization-roles"], - listOrganizationFineGrainedPermissions: [ - "GET /orgs/{org}/organization-fine-grained-permissions" - ], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPatGrantRepositories: [ - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories" - ], - listPatGrantRequestRepositories: [ - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories" - ], - listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], - listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listSecurityManagerTeams: [ - "GET /orgs/{org}/security-managers", - {}, - { - deprecated: "octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams" - } - ], - listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: [ - "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" - ], - removeCustomProperty: [ - "DELETE /orgs/{org}/properties/schema/{custom_property_name}" - ], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: [ - "DELETE /orgs/{org}/outside_collaborators/{username}" - ], - removePublicMembershipForAuthenticatedUser: [ - "DELETE /orgs/{org}/public_members/{username}" - ], - removeSecurityManagerTeam: [ - "DELETE /orgs/{org}/security-managers/teams/{team_slug}", - {}, - { - deprecated: "octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team" - } - ], - reviewPatGrantRequest: [ - "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}" - ], - reviewPatGrantRequestsInBulk: [ - "POST /orgs/{org}/personal-access-token-requests" - ], - revokeAllOrgRolesTeam: [ - "DELETE /orgs/{org}/organization-roles/teams/{team_slug}" - ], - revokeAllOrgRolesUser: [ - "DELETE /orgs/{org}/organization-roles/users/{username}" - ], - revokeOrgRoleTeam: [ - "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}" - ], - revokeOrgRoleUser: [ - "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}" - ], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: [ - "PUT /orgs/{org}/public_members/{username}" - ], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateMembershipForAuthenticatedUser: [ - "PATCH /user/memberships/orgs/{org}" - ], - updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], - updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] - }, - packages: { - deletePackageForAuthenticatedUser: [ - "DELETE /user/packages/{package_type}/{package_name}" - ], - deletePackageForOrg: [ - "DELETE /orgs/{org}/packages/{package_type}/{package_name}" - ], - deletePackageForUser: [ - "DELETE /users/{username}/packages/{package_type}/{package_name}" - ], - deletePackageVersionForAuthenticatedUser: [ - "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - deletePackageVersionForOrg: [ - "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - deletePackageVersionForUser: [ - "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - getAllPackageVersionsForAPackageOwnedByAnOrg: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - {}, - { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] } - ], - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions", - {}, - { - renamed: [ - "packages", - "getAllPackageVersionsForPackageOwnedByAuthenticatedUser" - ] - } - ], - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions" - ], - getAllPackageVersionsForPackageOwnedByOrg: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions" - ], - getAllPackageVersionsForPackageOwnedByUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}/versions" - ], - getPackageForAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}" - ], - getPackageForOrganization: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}" - ], - getPackageForUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}" - ], - getPackageVersionForAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - getPackageVersionForOrganization: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - getPackageVersionForUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" - ], - listDockerMigrationConflictingPackagesForAuthenticatedUser: [ - "GET /user/docker/conflicts" - ], - listDockerMigrationConflictingPackagesForOrganization: [ - "GET /orgs/{org}/docker/conflicts" - ], - listDockerMigrationConflictingPackagesForUser: [ - "GET /users/{username}/docker/conflicts" - ], - listPackagesForAuthenticatedUser: ["GET /user/packages"], - listPackagesForOrganization: ["GET /orgs/{org}/packages"], - listPackagesForUser: ["GET /users/{username}/packages"], - restorePackageForAuthenticatedUser: [ - "POST /user/packages/{package_type}/{package_name}/restore{?token}" - ], - restorePackageForOrg: [ - "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}" - ], - restorePackageForUser: [ - "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}" - ], - restorePackageVersionForAuthenticatedUser: [ - "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" - ], - restorePackageVersionForOrg: [ - "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" - ], - restorePackageVersionForUser: [ - "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" - ] - }, - privateRegistries: { - createOrgPrivateRegistry: ["POST /orgs/{org}/private-registries"], - deleteOrgPrivateRegistry: [ - "DELETE /orgs/{org}/private-registries/{secret_name}" - ], - getOrgPrivateRegistry: ["GET /orgs/{org}/private-registries/{secret_name}"], - getOrgPublicKey: ["GET /orgs/{org}/private-registries/public-key"], - listOrgPrivateRegistries: ["GET /orgs/{org}/private-registries"], - updateOrgPrivateRegistry: [ - "PATCH /orgs/{org}/private-registries/{secret_name}" - ] - }, - projects: { - addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], - createCard: ["POST /projects/columns/{column_id}/cards"], - createColumn: ["POST /projects/{project_id}/columns"], - createForAuthenticatedUser: ["POST /user/projects"], - createForOrg: ["POST /orgs/{org}/projects"], - createForRepo: ["POST /repos/{owner}/{repo}/projects"], - delete: ["DELETE /projects/{project_id}"], - deleteCard: ["DELETE /projects/columns/cards/{card_id}"], - deleteColumn: ["DELETE /projects/columns/{column_id}"], - get: ["GET /projects/{project_id}"], - getCard: ["GET /projects/columns/cards/{card_id}"], - getColumn: ["GET /projects/columns/{column_id}"], - getPermissionForUser: [ - "GET /projects/{project_id}/collaborators/{username}/permission" - ], - listCards: ["GET /projects/columns/{column_id}/cards"], - listCollaborators: ["GET /projects/{project_id}/collaborators"], - listColumns: ["GET /projects/{project_id}/columns"], - listForOrg: ["GET /orgs/{org}/projects"], - listForRepo: ["GET /repos/{owner}/{repo}/projects"], - listForUser: ["GET /users/{username}/projects"], - moveCard: ["POST /projects/columns/cards/{card_id}/moves"], - moveColumn: ["POST /projects/columns/{column_id}/moves"], - removeCollaborator: [ - "DELETE /projects/{project_id}/collaborators/{username}" - ], - update: ["PATCH /projects/{project_id}"], - updateCard: ["PATCH /projects/columns/cards/{card_id}"], - updateColumn: ["PATCH /projects/columns/{column_id}"] - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies" - ], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments" - ], - deletePendingReview: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" - ], - deleteReviewComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}" - ], - dismissReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals" - ], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" - ], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments" - ], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" - ], - listReviewComments: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments" - ], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" - ], - requestReviewers: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" - ], - submitReview: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events" - ], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch" - ], - updateReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" - ], - updateReviewComment: [ - "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}" - ] - }, - rateLimit: { get: ["GET /rate_limit"] }, - reactions: { - createForCommitComment: [ - "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions" - ], - createForIssue: [ - "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions" - ], - createForIssueComment: [ - "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" - ], - createForPullRequestReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" - ], - createForRelease: [ - "POST /repos/{owner}/{repo}/releases/{release_id}/reactions" - ], - createForTeamDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" - ], - createForTeamDiscussionInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" - ], - deleteForCommitComment: [ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}" - ], - deleteForIssue: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}" - ], - deleteForIssueComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}" - ], - deleteForPullRequestComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}" - ], - deleteForRelease: [ - "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}" - ], - deleteForTeamDiscussion: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}" - ], - deleteForTeamDiscussionComment: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}" - ], - listForCommitComment: [ - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions" - ], - listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - listForIssueComment: [ - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" - ], - listForPullRequestReviewComment: [ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" - ], - listForRelease: [ - "GET /repos/{owner}/{repo}/releases/{release_id}/reactions" - ], - listForTeamDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" - ], - listForTeamDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" - ] - }, - repos: { - acceptInvitation: [ - "PATCH /user/repository_invitations/{invitation_id}", - {}, - { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] } - ], - acceptInvitationForAuthenticatedUser: [ - "PATCH /user/repository_invitations/{invitation_id}" - ], - addAppAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" } - ], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" } - ], - addTeamAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" } - ], - addUserAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" } - ], - cancelPagesDeployment: [ - "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel" - ], - checkAutomatedSecurityFixes: [ - "GET /repos/{owner}/{repo}/automated-security-fixes" - ], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkPrivateVulnerabilityReporting: [ - "GET /repos/{owner}/{repo}/private-vulnerability-reporting" - ], - checkVulnerabilityAlerts: [ - "GET /repos/{owner}/{repo}/vulnerability-alerts" - ], - codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - compareCommitsWithBasehead: [ - "GET /repos/{owner}/{repo}/compare/{basehead}" - ], - createAttestation: ["POST /repos/{owner}/{repo}/attestations"], - createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], - createCommitComment: [ - "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments" - ], - createCommitSignatureProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" - ], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentBranchPolicy: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" - ], - createDeploymentProtectionRule: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" - ], - createDeploymentStatus: [ - "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" - ], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateCustomPropertiesValues: [ - "PATCH /repos/{owner}/{repo}/properties/values" - ], - createOrUpdateEnvironment: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}" - ], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createOrgRuleset: ["POST /orgs/{org}/rulesets"], - createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"], - createPagesSite: ["POST /repos/{owner}/{repo}/pages"], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], - createUsingTemplate: [ - "POST /repos/{template_owner}/{template_repo}/generate" - ], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: [ - "DELETE /user/repository_invitations/{invitation_id}", - {}, - { renamed: ["repos", "declineInvitationForAuthenticatedUser"] } - ], - declineInvitationForAuthenticatedUser: [ - "DELETE /user/repository_invitations/{invitation_id}" - ], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" - ], - deleteAdminBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" - ], - deleteAnEnvironment: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}" - ], - deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], - deleteBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection" - ], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" - ], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: [ - "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}" - ], - deleteDeploymentBranchPolicy: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" - ], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: [ - "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}" - ], - deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], - deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], - deletePullRequestReviewProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" - ], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: [ - "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}" - ], - deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: [ - "DELETE /repos/{owner}/{repo}/automated-security-fixes" - ], - disableDeploymentProtectionRule: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" - ], - disablePrivateVulnerabilityReporting: [ - "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting" - ], - disableVulnerabilityAlerts: [ - "DELETE /repos/{owner}/{repo}/vulnerability-alerts" - ], - downloadArchive: [ - "GET /repos/{owner}/{repo}/zipball/{ref}", - {}, - { renamed: ["repos", "downloadZipballArchive"] } - ], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: [ - "PUT /repos/{owner}/{repo}/automated-security-fixes" - ], - enablePrivateVulnerabilityReporting: [ - "PUT /repos/{owner}/{repo}/private-vulnerability-reporting" - ], - enableVulnerabilityAlerts: [ - "PUT /repos/{owner}/{repo}/vulnerability-alerts" - ], - generateReleaseNotes: [ - "POST /repos/{owner}/{repo}/releases/generate-notes" - ], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" - ], - getAdminBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" - ], - getAllDeploymentProtectionRules: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" - ], - getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], - getAllStatusCheckContexts: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts" - ], - getAllTopics: ["GET /repos/{owner}/{repo}/topics"], - getAppsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps" - ], - getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection" - ], - getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: [ - "GET /repos/{owner}/{repo}/collaborators/{username}/permission" - ], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" - ], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getCustomDeploymentProtectionRule: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" - ], - getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentBranchPolicy: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" - ], - getDeploymentStatus: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}" - ], - getEnvironment: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}" - ], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"], - getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"], - getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], - getOrgRulesets: ["GET /orgs/{org}/rulesets"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getPagesDeployment: [ - "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}" - ], - getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" - ], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getRepoRuleSuite: [ - "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}" - ], - getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], - getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], - getStatusChecksProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" - ], - getTeamsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams" - ], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users" - ], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/config" - ], - getWebhookDelivery: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}" - ], - listActivities: ["GET /repos/{owner}/{repo}/activity"], - listAttestations: [ - "GET /repos/{owner}/{repo}/attestations/{subject_digest}" - ], - listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head" - ], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments" - ], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: [ - "GET /repos/{owner}/{repo}/commits/{ref}/statuses" - ], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listCustomDeploymentRuleIntegrations: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps" - ], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentBranchPolicies: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" - ], - listDeploymentStatuses: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" - ], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls" - ], - listReleaseAssets: [ - "GET /repos/{owner}/{repo}/releases/{release_id}/assets" - ], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhookDeliveries: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries" - ], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: [ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" - ], - removeAppAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" } - ], - removeCollaborator: [ - "DELETE /repos/{owner}/{repo}/collaborators/{username}" - ], - removeStatusCheckContexts: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" } - ], - removeStatusCheckProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" - ], - removeTeamAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" } - ], - removeUserAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" } - ], - renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], - replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" - ], - setAppAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" } - ], - setStatusCheckContexts: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" } - ], - setTeamAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" } - ], - setUserAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" } - ], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection" - ], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateDeploymentBranchPolicy: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" - ], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: [ - "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}" - ], - updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], - updatePullRequestReviewProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" - ], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: [ - "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}" - ], - updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - updateStatusCheckPotection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - {}, - { renamed: ["repos", "updateStatusCheckProtection"] } - ], - updateStatusCheckProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" - ], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: [ - "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config" - ], - uploadReleaseAsset: [ - "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", - { baseUrl: "https://uploads.github.com" } - ] - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits"], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics"], - users: ["GET /search/users"] - }, - secretScanning: { - createPushProtectionBypass: [ - "POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses" - ], - getAlert: [ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" - ], - getScanHistory: ["GET /repos/{owner}/{repo}/secret-scanning/scan-history"], - listAlertsForEnterprise: [ - "GET /enterprises/{enterprise}/secret-scanning/alerts" - ], - listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - listLocationsForAlert: [ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations" - ], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" - ] - }, - securityAdvisories: { - createFork: [ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks" - ], - createPrivateVulnerabilityReport: [ - "POST /repos/{owner}/{repo}/security-advisories/reports" - ], - createRepositoryAdvisory: [ - "POST /repos/{owner}/{repo}/security-advisories" - ], - createRepositoryAdvisoryCveRequest: [ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" - ], - getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], - getRepositoryAdvisory: [ - "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" - ], - listGlobalAdvisories: ["GET /advisories"], - listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], - listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], - updateRepositoryAdvisory: [ - "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" - ] - }, - teams: { - addOrUpdateMembershipForUserInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - addOrUpdateProjectPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}" - ], - addOrUpdateRepoPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - checkPermissionsForProjectInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}" - ], - checkPermissionsForRepoInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" - ], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - deleteDiscussionInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - getDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - getMembershipForUserInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" - ], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/invitations" - ], - listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - removeProjectInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}" - ], - removeRepoInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - updateDiscussionCommentInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - updateDiscussionInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] - }, - users: { - addEmailForAuthenticated: [ - "POST /user/emails", - {}, - { renamed: ["users", "addEmailForAuthenticatedUser"] } - ], - addEmailForAuthenticatedUser: ["POST /user/emails"], - addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: [ - "POST /user/gpg_keys", - {}, - { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } - ], - createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: [ - "POST /user/keys", - {}, - { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } - ], - createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], - createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], - deleteEmailForAuthenticated: [ - "DELETE /user/emails", - {}, - { renamed: ["users", "deleteEmailForAuthenticatedUser"] } - ], - deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: [ - "DELETE /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } - ], - deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: [ - "DELETE /user/keys/{key_id}", - {}, - { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } - ], - deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], - deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], - deleteSshSigningKeyForAuthenticatedUser: [ - "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" - ], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getById: ["GET /user/{account_id}"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: [ - "GET /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } - ], - getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: [ - "GET /user/keys/{key_id}", - {}, - { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } - ], - getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], - getSshSigningKeyForAuthenticatedUser: [ - "GET /user/ssh_signing_keys/{ssh_signing_key_id}" - ], - list: ["GET /users"], - listAttestations: ["GET /users/{username}/attestations/{subject_digest}"], - listBlockedByAuthenticated: [ - "GET /user/blocks", - {}, - { renamed: ["users", "listBlockedByAuthenticatedUser"] } - ], - listBlockedByAuthenticatedUser: ["GET /user/blocks"], - listEmailsForAuthenticated: [ - "GET /user/emails", - {}, - { renamed: ["users", "listEmailsForAuthenticatedUser"] } - ], - listEmailsForAuthenticatedUser: ["GET /user/emails"], - listFollowedByAuthenticated: [ - "GET /user/following", - {}, - { renamed: ["users", "listFollowedByAuthenticatedUser"] } - ], - listFollowedByAuthenticatedUser: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: [ - "GET /user/gpg_keys", - {}, - { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } - ], - listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: [ - "GET /user/public_emails", - {}, - { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } - ], - listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: [ - "GET /user/keys", - {}, - { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } - ], - listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], - listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], - listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], - listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], - setPrimaryEmailVisibilityForAuthenticated: [ - "PATCH /user/email/visibility", - {}, - { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } - ], - setPrimaryEmailVisibilityForAuthenticatedUser: [ - "PATCH /user/email/visibility" - ], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"] - } -}; -var endpoints_default = Endpoints; - -// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js -var endpointMethodsMap = /* @__PURE__ */ new Map(); -for (const [scope, endpoints] of Object.entries(endpoints_default)) { - for (const [methodName, endpoint2] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint2; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign( - { - method, - url - }, - defaults - ); - if (!endpointMethodsMap.has(scope)) { - endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); - } - endpointMethodsMap.get(scope).set(methodName, { - scope, - methodName, - endpointDefaults, - decorations - }); - } -} -var handler = { - has({ scope }, methodName) { - return endpointMethodsMap.get(scope).has(methodName); - }, - getOwnPropertyDescriptor(target, methodName) { - return { - value: this.get(target, methodName), - configurable: true, - writable: true, - enumerable: true - }; - }, - defineProperty(target, methodName, descriptor) { - Object.defineProperty(target.cache, methodName, descriptor); - return true; - }, - deleteProperty(target, methodName) { - delete target.cache[methodName]; - return true; - }, - ownKeys({ scope }) { - return [...endpointMethodsMap.get(scope).keys()]; - }, - set(target, methodName, value) { - return target.cache[methodName] = value; - }, - get({ octokit, scope, cache }, methodName) { - if (cache[methodName]) { - return cache[methodName]; - } - const method = endpointMethodsMap.get(scope).get(methodName); - if (!method) { - return void 0; - } - const { endpointDefaults, decorations } = method; - if (decorations) { - cache[methodName] = decorate( - octokit, - scope, - methodName, - endpointDefaults, - decorations - ); - } else { - cache[methodName] = octokit.request.defaults(endpointDefaults); - } - return cache[methodName]; - } -}; -function endpointsToMethods(octokit) { - const newMethods = {}; - for (const scope of endpointMethodsMap.keys()) { - newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); - } - return newMethods; -} -function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - function withDecorations(...args) { - let options = requestWithDefaults.endpoint.merge(...args); - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: void 0 - }); - return requestWithDefaults(options); - } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn( - `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` - ); - } - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - if (decorations.renamedParameters) { - const options2 = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries( - decorations.renamedParameters - )) { - if (name in options2) { - octokit.log.warn( - `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` - ); - if (!(alias in options2)) { - options2[alias] = options2[name]; - } - delete options2[name]; - } - } - return requestWithDefaults(options2); - } - return requestWithDefaults(...args); - } - return Object.assign(withDecorations, requestWithDefaults); -} - -// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js -function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - rest: api - }; -} -restEndpointMethods.VERSION = VERSION7; -function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - ...api, - rest: api - }; -} -legacyRestEndpointMethods.VERSION = VERSION7; - -// node_modules/@octokit/rest/dist-src/version.js -var VERSION8 = "21.1.0"; - -// node_modules/@octokit/rest/dist-src/index.js -var Octokit2 = Octokit.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults( - { - userAgent: `octokit-rest.js/${VERSION8}` - } -); - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/github.js -var import_typed_graphqlify = __toESM(require_dist()); -var GithubClient = class { - constructor(_octokitOptions) { - this._octokitOptions = _octokitOptions; - this._octokit = new Octokit2({ ...this._octokitOptions }); - this.pulls = this._octokit.pulls; - this.orgs = this._octokit.orgs; - this.repos = this._octokit.repos; - this.issues = this._octokit.issues; - this.git = this._octokit.git; - this.rateLimit = this._octokit.rateLimit; - this.teams = this._octokit.teams; - this.search = this._octokit.search; - this.rest = this._octokit.rest; - this.paginate = this._octokit.paginate; - this.checks = this._octokit.checks; - } -}; -var AuthenticatedGithubClient = class extends GithubClient { - constructor(_token) { - super({ auth: _token }); - this._token = _token; - this._graphql = this._octokit.graphql.defaults({ - headers: { authorization: `token ${this._token}` } - }); - } - async graphql(queryObject, params2 = {}) { - return await this._graphql((0, import_typed_graphqlify.query)(queryObject).toString(), params2); - } -}; -function isGithubApiError(obj) { - return obj instanceof Error && obj.constructor.name === "RequestError" && obj.request !== void 0; -} - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/dry-run.js -function addDryRunFlag(args) { - return args.option("dry-run", { - type: "boolean", - default: false, - description: "Whether to do a dry run", - coerce: (dryRun) => { - if (dryRun) { - process.env["DRY_RUN"] = "1"; - } - return dryRun; - } - }); -} -function isDryRun() { - return process.env["DRY_RUN"] !== void 0; -} -var DryRunError = class extends Error { - constructor() { - super("Cannot call this function in dryRun mode."); - } -}; - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/git-client.js -import { spawnSync } from "child_process"; - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/github-urls.js -import { URL } from "url"; -var GITHUB_TOKEN_SETTINGS_URL = "https://github.com/settings/tokens"; -var GITHUB_TOKEN_GENERATE_URL = "https://github.com/settings/tokens/new"; -function addTokenToGitHttpsUrl(githubHttpsUrl, token) { - const url = new URL(githubHttpsUrl); - url.password = token; - url.username = "x-access-token"; - return url.href; -} -function getRepositoryGitUrl(config, githubToken) { - if (config.useSsh) { - return `git@github.com:${config.owner}/${config.name}.git`; - } - const baseHttpUrl = `https://github.com/${config.owner}/${config.name}.git`; - if (githubToken !== void 0) { - return addTokenToGitHttpsUrl(baseHttpUrl, githubToken); - } - return baseHttpUrl; -} -function getListCommitsInBranchUrl(client, branchName) { - const { owner, repo } = client.remoteParams; - return `https://github.com/${owner}/${repo}/commits/${branchName}`; -} -function getFileContentsUrl(client, ref, relativeFilePath) { - const { owner, repo } = client.remoteParams; - return `https://github.com/${owner}/${repo}/blob/${ref}/${relativeFilePath}`; -} - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/git-client.js -var GitCommandError = class extends Error { - constructor(client, unsanitizedArgs) { - super(`Command failed: git ${client.sanitizeConsoleOutput(unsanitizedArgs.join(" "))}`); - } -}; -var GitClient = class { - constructor(config, baseDir = determineRepoBaseDirFromCwd()) { - this.baseDir = baseDir; - this.github = new GithubClient(); - this.gitBinPath = "git"; - this.config = config; - this.remoteConfig = config.github; - this.remoteParams = { owner: config.github.owner, repo: config.github.name }; - this.mainBranchName = config.github.mainBranchName; - } - run(args, options) { - const result = this.runGraceful(args, options); - if (result.status !== 0) { - throw new GitCommandError(this, args); - } - return result; - } - runGraceful(args, options = {}) { - const gitCommand = args[0]; - if (isDryRun() && gitCommand === "push") { - Log.debug(`"git push" is not able to be run in dryRun mode.`); - throw new DryRunError(); - } - args = ["-c", "credential.helper=", ...args]; - Log.debug("Executing: git", this.sanitizeConsoleOutput(args.join(" "))); - const result = spawnSync(this.gitBinPath, args, { - cwd: this.baseDir, - stdio: "pipe", - ...options, - encoding: "utf8" - }); - Log.debug(`Status: ${result.status}, Error: ${!!result.error}, Signal: ${result.signal}`); - if (result.status !== 0 && result.stderr !== null) { - process.stderr.write(this.sanitizeConsoleOutput(result.stderr)); - } - Log.debug("Stdout:", result.stdout); - Log.debug("Stderr:", result.stderr); - Log.debug("Process Error:", result.error); - if (result.error !== void 0) { - process.stderr.write(this.sanitizeConsoleOutput(result.error.message)); - } - return result; - } - getRepoGitUrl() { - return getRepositoryGitUrl(this.remoteConfig); - } - hasCommit(branchName, sha) { - return this.run(["branch", branchName, "--contains", sha]).stdout !== ""; - } - isShallowRepo() { - return this.run(["rev-parse", "--is-shallow-repository"]).stdout.trim() === "true"; - } - getCurrentBranchOrRevision() { - const branchName = this.run(["rev-parse", "--abbrev-ref", "HEAD"]).stdout.trim(); - if (branchName === "HEAD") { - return this.run(["rev-parse", "HEAD"]).stdout.trim(); - } - return branchName; - } - hasUncommittedChanges() { - this.runGraceful(["update-index", "-q", "--refresh"]); - return this.runGraceful(["diff-index", "--quiet", "HEAD"]).status !== 0; - } - checkout(branchOrRevision, cleanState) { - if (cleanState) { - this.runGraceful(["am", "--abort"], { stdio: "ignore" }); - this.runGraceful(["cherry-pick", "--abort"], { stdio: "ignore" }); - this.runGraceful(["rebase", "--abort"], { stdio: "ignore" }); - this.runGraceful(["reset", "--hard"], { stdio: "ignore" }); - } - return this.runGraceful(["checkout", branchOrRevision], { stdio: "ignore" }).status === 0; - } - allChangesFilesSince(shaOrRef = "HEAD") { - return Array.from(/* @__PURE__ */ new Set([ - ...gitOutputAsArray(this.runGraceful(["diff", "--name-only", "--diff-filter=d", shaOrRef])), - ...gitOutputAsArray(this.runGraceful(["ls-files", "--others", "--exclude-standard"])) - ])); - } - allStagedFiles() { - return gitOutputAsArray(this.runGraceful(["diff", "--name-only", "--diff-filter=ACM", "--staged"])); - } - allFiles() { - return gitOutputAsArray(this.runGraceful(["ls-files"])); - } - sanitizeConsoleOutput(value) { - return value; - } - static async get() { - if (GitClient._unauthenticatedInstance === null) { - GitClient._unauthenticatedInstance = (async () => { - return new GitClient(await getConfig([assertValidGithubConfig])); - })(); - } - return GitClient._unauthenticatedInstance; - } -}; -GitClient._unauthenticatedInstance = null; -function gitOutputAsArray(gitCommandResult) { - return gitCommandResult.stdout.split("\n").map((x) => x.trim()).filter((x) => !!x); -} - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/graphql-queries.js -var import_typed_graphqlify2 = __toESM(require_dist()); -var findOwnedForksOfRepoQuery = (0, import_typed_graphqlify2.params)({ - $owner: "String!", - $name: "String!" -}, { - repository: (0, import_typed_graphqlify2.params)({ owner: "$owner", name: "$name" }, { - forks: (0, import_typed_graphqlify2.params)({ affiliations: "OWNER", first: 1, orderBy: { field: "NAME", direction: "ASC" } }, { - nodes: [ - { - owner: { - login: import_typed_graphqlify2.types.string - }, - name: import_typed_graphqlify2.types.string - } - ] - }) - }) -}); - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/authenticated-git-client.js -var AuthenticatedGitClient = class extends GitClient { - constructor(githubToken, userType, config, baseDir) { - super(config, baseDir); - this.githubToken = githubToken; - this.userType = userType; - this._githubTokenRegex = new RegExp(this.githubToken, "g"); - this._cachedOauthScopes = null; - this._cachedForkRepositories = null; - this.github = new AuthenticatedGithubClient(this.githubToken); - } - sanitizeConsoleOutput(value) { - return value.replace(this._githubTokenRegex, ""); - } - getRepoGitUrl() { - return getRepositoryGitUrl(this.remoteConfig, this.githubToken); - } - async hasOauthScopes(testFn) { - if (this.userType === "bot") { - return true; - } - const scopes = await this._fetchAuthScopesForToken(); - const missingScopes = []; - testFn(scopes, missingScopes); - if (missingScopes.length === 0) { - return true; - } - const error = `The provided does not have required permissions due to missing scope(s): ${yellow(missingScopes.join(", "))} - -Update the token in use at: - ${GITHUB_TOKEN_SETTINGS_URL} - -Alternatively, a new token can be created at: ${GITHUB_TOKEN_GENERATE_URL} -`; - return { error }; - } - async getForkOfAuthenticatedUser() { - const forks = await this.getAllForksOfAuthenticatedUser(); - if (forks.length === 0) { - throw Error("Unable to find fork a for currently authenticated user."); - } - return forks[0]; - } - async getAllForksOfAuthenticatedUser() { - if (this._cachedForkRepositories !== null) { - return this._cachedForkRepositories; - } - const { owner, name } = this.remoteConfig; - const result = await this.github.graphql(findOwnedForksOfRepoQuery, { owner, name }); - return this._cachedForkRepositories = result.repository.forks.nodes.map((node) => ({ - owner: node.owner.login, - name: node.name - })); - } - _fetchAuthScopesForToken() { - if (this._cachedOauthScopes !== null) { - return this._cachedOauthScopes; - } - return this._cachedOauthScopes = this.github.rateLimit.get().then((response) => { - const scopes = response.headers["x-oauth-scopes"]; - if (scopes === void 0) { - throw Error("Unable to retrieve OAuth scopes for token provided to Git client."); - } - return scopes.split(",").map((scope) => scope.trim()).filter((scope) => scope !== ""); - }); - } - static async get() { - if (AuthenticatedGitClient._token === null) { - throw new Error("No instance of `AuthenticatedGitClient` has been configured."); - } - if (AuthenticatedGitClient._authenticatedInstance === null) { - AuthenticatedGitClient._authenticatedInstance = (async (token, userType) => { - return new AuthenticatedGitClient(token, userType, await getConfig([assertValidGithubConfig])); - })(AuthenticatedGitClient._token, AuthenticatedGitClient._userType); - } - return AuthenticatedGitClient._authenticatedInstance; - } - static configure(token, userType = "user") { - if (AuthenticatedGitClient._token) { - throw Error("Unable to configure `AuthenticatedGitClient` as it has been configured already."); - } - AuthenticatedGitClient._token = token; - AuthenticatedGitClient._userType = userType; - } -}; -AuthenticatedGitClient._token = null; -AuthenticatedGitClient._authenticatedInstance = null; - -// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/release-trains.js -var ReleaseTrain = class { - constructor(branchName, version) { - this.branchName = branchName; - this.version = version; - this.isMajor = this.version.minor === 0 && this.version.patch === 0; - } -}; - -// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/version-branches.js -var import_semver = __toESM(require_semver2()); -var versionBranchNameRegex = /^(\d+)\.(\d+)\.x$/; -var exceptionalMinorPackageIndicator = "__ngDevExceptionalMinor__"; -function getNextBranchName(github) { - return github.mainBranchName; -} -async function getVersionInfoForBranch(repo, branchName) { - const { data } = await repo.api.repos.getContent({ - owner: repo.owner, - repo: repo.name, - path: "/package.json", - ref: branchName - }); - const content = data.content; - if (!content) { - throw Error(`Unable to read "package.json" file from repository.`); - } - const pkgJson = JSON.parse(Buffer.from(content, "base64").toString()); - const parsedVersion = import_semver.default.parse(pkgJson.version); - if (parsedVersion === null) { - throw Error(`Invalid version detected in following branch: ${branchName}.`); - } - return { - version: parsedVersion, - isExceptionalMinor: pkgJson[exceptionalMinorPackageIndicator] === true - }; -} -function isVersionBranch(branchName) { - return versionBranchNameRegex.test(branchName); -} -async function getBranchesForMajorVersions(repo, majorVersions) { - const branchData = await repo.api.paginate(repo.api.repos.listBranches, { - owner: repo.owner, - repo: repo.name, - protected: true - }); - const branches = []; - for (const { name } of branchData) { - if (!isVersionBranch(name)) { - continue; - } - const parsed = convertVersionBranchToSemVer(name); - if (parsed !== null && majorVersions.includes(parsed.major)) { - branches.push({ name, parsed }); - } - } - return branches.sort((a, b) => import_semver.default.rcompare(a.parsed, b.parsed)); -} -function convertVersionBranchToSemVer(branchName) { - return import_semver.default.parse(branchName.replace(versionBranchNameRegex, "$1.$2.0")); -} - -// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/active-release-trains.js -var import_semver2 = __toESM(require_semver2()); -var ActiveReleaseTrains = class { - constructor(trains) { - this.trains = trains; - this.releaseCandidate = this.trains.releaseCandidate; - this.next = this.trains.next; - this.latest = this.trains.latest; - this.exceptionalMinor = this.trains.exceptionalMinor; - } - isFeatureFreeze() { - return this.releaseCandidate !== null && this.releaseCandidate.version.prerelease[0] === "next"; - } - static async fetch(repo) { - return fetchActiveReleaseTrains(repo); - } -}; -async function fetchActiveReleaseTrains(repo) { - const nextBranchName = repo.nextBranchName; - const { version: nextVersion } = await getVersionInfoForBranch(repo, nextBranchName); - const next = new ReleaseTrain(nextBranchName, nextVersion); - const majorVersionsToFetch = []; - const checks = { - canHaveExceptionalMinor: () => false, - isValidReleaseCandidateVersion: () => false, - isValidExceptionalMinorVersion: () => false - }; - if (nextVersion.minor === 0) { - majorVersionsToFetch.push(nextVersion.major - 1, nextVersion.major - 2); - checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major - 1; - checks.canHaveExceptionalMinor = (rc) => rc === null || rc.isMajor; - checks.isValidExceptionalMinorVersion = (v, rc) => v.major === (rc === null ? nextVersion.major : rc.version.major) - 1; - } else if (nextVersion.minor === 1) { - majorVersionsToFetch.push(nextVersion.major, nextVersion.major - 1); - checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major; - checks.canHaveExceptionalMinor = (rc) => rc !== null && rc.isMajor; - checks.isValidExceptionalMinorVersion = (v, rc) => v.major === rc.version.major - 1; - } else { - majorVersionsToFetch.push(nextVersion.major); - checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major; - checks.canHaveExceptionalMinor = () => false; - } - const branches = await getBranchesForMajorVersions(repo, majorVersionsToFetch); - const { latest, releaseCandidate, exceptionalMinor } = await findActiveReleaseTrainsFromVersionBranches(repo, next, branches, checks); - if (latest === null) { - throw Error(`Unable to determine the latest release-train. The following branches have been considered: [${branches.map((b) => b.name).join(", ")}]`); - } - return new ActiveReleaseTrains({ releaseCandidate, next, latest, exceptionalMinor }); -} -async function findActiveReleaseTrainsFromVersionBranches(repo, next, branches, checks) { - const nextReleaseTrainVersion = import_semver2.default.parse(`${next.version.major}.${next.version.minor}.0`); - const nextBranchName = repo.nextBranchName; - let latest = null; - let releaseCandidate = null; - let exceptionalMinor = null; - for (const { name, parsed } of branches) { - if (import_semver2.default.gt(parsed, nextReleaseTrainVersion)) { - throw Error(`Discovered unexpected version-branch "${name}" for a release-train that is more recent than the release-train currently in the "${nextBranchName}" branch. Please either delete the branch if created by accident, or update the outdated version in the next branch (${nextBranchName}).`); - } else if (import_semver2.default.eq(parsed, nextReleaseTrainVersion)) { - throw Error(`Discovered unexpected version-branch "${name}" for a release-train that is already active in the "${nextBranchName}" branch. Please either delete the branch if created by accident, or update the version in the next branch (${nextBranchName}).`); - } - const { version, isExceptionalMinor } = await getVersionInfoForBranch(repo, name); - const releaseTrain = new ReleaseTrain(name, version); - const isPrerelease = version.prerelease[0] === "rc" || version.prerelease[0] === "next"; - if (isExceptionalMinor) { - if (exceptionalMinor !== null) { - throw Error(`Unable to determine latest release-train. Found an additional exceptional minor version branch: "${name}". Already discovered: ${exceptionalMinor.branchName}.`); - } - if (!checks.canHaveExceptionalMinor(releaseCandidate)) { - throw Error(`Unable to determine latest release-train. Found an unexpected exceptional minor version branch: "${name}". No exceptional minor is currently allowed.`); - } - if (!checks.isValidExceptionalMinorVersion(version, releaseCandidate)) { - throw Error(`Unable to determine latest release-train. Found an invalid exceptional minor version branch: "${name}". Invalid version: ${version}.`); - } - exceptionalMinor = releaseTrain; - continue; - } - if (isPrerelease) { - if (exceptionalMinor !== null) { - throw Error(`Unable to determine latest release-train. Discovered a feature-freeze/release-candidate version branch (${name}) that is older than an in-progress exceptional minor (${exceptionalMinor.branchName}).`); - } - if (releaseCandidate !== null) { - throw Error(`Unable to determine latest release-train. Found two consecutive pre-release version branches. No exceptional minors are allowed currently, and there cannot be multiple feature-freeze/release-candidate branches: "${name}".`); - } - if (!checks.isValidReleaseCandidateVersion(version)) { - throw Error(`Discovered unexpected old feature-freeze/release-candidate branch. Expected no version-branch in feature-freeze/release-candidate mode for v${version.major}.`); - } - releaseCandidate = releaseTrain; - continue; - } - latest = releaseTrain; - break; - } - return { releaseCandidate, exceptionalMinor, latest }; -} - -// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/npm-registry.js -var _npmPackageInfoCache = {}; -async function fetchProjectNpmPackageInfo(config) { - return await fetchPackageInfoFromNpmRegistry(config.representativeNpmPackage); -} -async function isVersionPublishedToNpm(version, config) { - const { versions } = await fetchProjectNpmPackageInfo(config); - return versions[version.format()] !== void 0; -} -async function fetchPackageInfoFromNpmRegistry(pkgName) { - if (_npmPackageInfoCache[pkgName] === void 0) { - _npmPackageInfoCache[pkgName] = fetch(`https://registry.npmjs.org/${pkgName}`).then((r) => r.json()); - } - return await _npmPackageInfoCache[pkgName]; -} - -// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/long-term-support.js -var import_semver3 = __toESM(require_semver2()); -var majorActiveSupportDuration = 6; -var majorLongTermSupportDuration = 12; -var ltsNpmDistTagRegex = /^v(\d+)-lts$/; -async function fetchLongTermSupportBranchesFromNpm(config) { - const { "dist-tags": distTags, time } = await fetchProjectNpmPackageInfo(config); - const today = new Date(); - const active = []; - const inactive = []; - for (const npmDistTag in distTags) { - if (isLtsDistTag(npmDistTag)) { - const version = import_semver3.default.parse(distTags[npmDistTag]); - const branchName = `${version.major}.${version.minor}.x`; - const majorReleaseDate = new Date(time[`${version.major}.0.0`]); - const ltsEndDate = computeLtsEndDateOfMajor(majorReleaseDate); - const ltsBranch = { name: branchName, version, npmDistTag }; - if (today <= ltsEndDate) { - active.push(ltsBranch); - } else { - inactive.push(ltsBranch); - } - } - } - active.sort((a, b) => import_semver3.default.rcompare(a.version, b.version)); - inactive.sort((a, b) => import_semver3.default.rcompare(a.version, b.version)); - return { active, inactive }; -} -function isLtsDistTag(tagName) { - return ltsNpmDistTagRegex.test(tagName); -} -function computeLtsEndDateOfMajor(majorReleaseDate) { - return new Date(majorReleaseDate.getFullYear(), majorReleaseDate.getMonth() + majorActiveSupportDuration + majorLongTermSupportDuration, majorReleaseDate.getDate(), majorReleaseDate.getHours(), majorReleaseDate.getMinutes(), majorReleaseDate.getSeconds(), majorReleaseDate.getMilliseconds()); -} -function getLtsNpmDistTagOfMajor(major) { - return `v${major}-lts`; -} - -// bazel-out/k8-fastbuild/bin/ng-dev/commit-message/config.js -function assertValidCommitMessageConfig(config) { - if (config.commitMessage === void 0) { - throw new ConfigValidationError(`No configuration defined for "commitMessage"`); - } -} -var ScopeRequirement; -(function(ScopeRequirement2) { - ScopeRequirement2[ScopeRequirement2["Required"] = 0] = "Required"; - ScopeRequirement2[ScopeRequirement2["Optional"] = 1] = "Optional"; - ScopeRequirement2[ScopeRequirement2["Forbidden"] = 2] = "Forbidden"; -})(ScopeRequirement || (ScopeRequirement = {})); -var ReleaseNotesLevel; -(function(ReleaseNotesLevel2) { - ReleaseNotesLevel2[ReleaseNotesLevel2["Hidden"] = 0] = "Hidden"; - ReleaseNotesLevel2[ReleaseNotesLevel2["Visible"] = 1] = "Visible"; -})(ReleaseNotesLevel || (ReleaseNotesLevel = {})); -var COMMIT_TYPES = { - build: { - name: "build", - description: "Changes to local repository build system and tooling", - scope: ScopeRequirement.Optional, - releaseNotesLevel: ReleaseNotesLevel.Hidden - }, - ci: { - name: "ci", - description: "Changes to CI configuration and CI specific tooling", - scope: ScopeRequirement.Forbidden, - releaseNotesLevel: ReleaseNotesLevel.Hidden - }, - docs: { - name: "docs", - description: "Changes which exclusively affects documentation.", - scope: ScopeRequirement.Optional, - releaseNotesLevel: ReleaseNotesLevel.Hidden - }, - feat: { - name: "feat", - description: "Creates a new feature", - scope: ScopeRequirement.Required, - releaseNotesLevel: ReleaseNotesLevel.Visible - }, - fix: { - name: "fix", - description: "Fixes a previously discovered failure/bug", - scope: ScopeRequirement.Required, - releaseNotesLevel: ReleaseNotesLevel.Visible - }, - perf: { - name: "perf", - description: "Improves performance without any change in functionality or API", - scope: ScopeRequirement.Required, - releaseNotesLevel: ReleaseNotesLevel.Visible - }, - refactor: { - name: "refactor", - description: "Refactor without any change in functionality or API (includes style changes)", - scope: ScopeRequirement.Optional, - releaseNotesLevel: ReleaseNotesLevel.Hidden - }, - release: { - name: "release", - description: "A release point in the repository", - scope: ScopeRequirement.Forbidden, - releaseNotesLevel: ReleaseNotesLevel.Hidden - }, - test: { - name: "test", - description: "Improvements or corrections made to the project's test suite", - scope: ScopeRequirement.Optional, - releaseNotesLevel: ReleaseNotesLevel.Hidden - } -}; - -// bazel-out/k8-fastbuild/bin/ng-dev/format/config.js -function assertValidFormatConfig(config) { - const errors = []; - if (config.format === void 0) { - throw new ConfigValidationError(`No configuration defined for "format"`); - } - for (const [key, value] of Object.entries(config.format)) { - switch (typeof value) { - case "boolean": - break; - case "object": - checkFormatterConfig(key, value, errors); - break; - default: - errors.push(`"format.${key}" is not a boolean or Formatter object`); - } - } - if (errors.length) { - throw new ConfigValidationError('Invalid "format" configuration', errors); - } -} -function checkFormatterConfig(key, config, errors) { - if (config.matchers === void 0) { - errors.push(`Missing "format.${key}.matchers" value`); - } -} - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/config/index.js -function assertValidPullRequestConfig(config) { - const errors = []; - if (config.pullRequest === void 0) { - throw new ConfigValidationError("No pullRequest configuration found. Set the `pullRequest` configuration."); - } - if (config.pullRequest.githubApiMerge === void 0) { - errors.push("No explicit choice of merge strategy. Please set `githubApiMerge`."); - } - if (errors.length) { - throw new ConfigValidationError("Invalid `pullRequest` configuration", errors); - } -} - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/base.js -var createTypedObject = (LabelConstructor) => { - return (val) => { - for (const key in val) { - val[key] = new LabelConstructor(val[key]); - } - return val; - }; -}; -var Label = class { - constructor(params2) { - this.params = params2; - this.repositories = this.params.repositories || [ - ManagedRepositories.ANGULAR, - ManagedRepositories.ANGULAR_CLI, - ManagedRepositories.COMPONENTS, - ManagedRepositories.DEV_INFRA - ]; - this.name = this.params.name; - this.description = this.params.description; - this.color = this.params.color; - } -}; -var ManagedRepositories; -(function(ManagedRepositories2) { - ManagedRepositories2["COMPONENTS"] = "components"; - ManagedRepositories2["ANGULAR"] = "angular"; - ManagedRepositories2["ANGULAR_CLI"] = "angular-cli"; - ManagedRepositories2["DEV_INFRA"] = "dev-infra"; -})(ManagedRepositories || (ManagedRepositories = {})); - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/target.js -var TargetLabel = class extends Label { - constructor() { - super(...arguments); - this.__hasTargetLabelMarker__ = true; - } -}; -var targetLabels = createTypedObject(TargetLabel)({ - TARGET_FEATURE: { - description: "This PR is targeted for a feature branch (outside of main and semver branches)", - name: "target: feature" - }, - TARGET_LTS: { - description: "This PR is targeting a version currently in long-term support", - name: "target: lts" - }, - TARGET_MAJOR: { - description: "This PR is targeted for the next major release", - name: "target: major" - }, - TARGET_MINOR: { - description: "This PR is targeted for the next minor release", - name: "target: minor" - }, - TARGET_PATCH: { - description: "This PR is targeted for the next patch release", - name: "target: patch" - }, - TARGET_RC: { - description: "This PR is targeted for the next release-candidate", - name: "target: rc" - } -}); - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/managed.js -var ManagedLabel = class extends Label { - constructor() { - super(...arguments); - this.commitCheck = this.params.commitCheck; - } -}; -var managedLabels = createTypedObject(ManagedLabel)({ - DETECTED_BREAKING_CHANGE: { - description: "PR contains a commit with a breaking change", - name: "detected: breaking change", - commitCheck: (c) => c.breakingChanges.length !== 0 - }, - DETECTED_DEPRECATION: { - description: "PR contains a commit with a deprecation", - name: "detected: deprecation", - commitCheck: (c) => c.deprecations.length !== 0 - }, - DETECTED_FEATURE: { - description: "PR contains a feature commit", - name: "detected: feature", - commitCheck: (c) => c.type === "feat" - }, - DETECTED_DOCS_CHANGE: { - description: "Related to the documentation", - name: "area: docs", - commitCheck: (c) => c.type === "docs" - }, - DETECTED_INFRA_CHANGE: { - description: "Related the build and CI infrastructure of the project", - name: "area: build & ci", - commitCheck: (c) => c.type === "build" || c.type === "ci" - }, - DETECTED_PERF_CHANGE: { - description: "Issues related to performance", - name: "area: performance", - commitCheck: (c) => c.type === "perf" - }, - DETECTED_HTTP_CHANGE: { - description: "Issues related to HTTP and HTTP Client", - name: "area: common/http", - commitCheck: (c) => c.scope === "common/http" || c.scope === "http", - repositories: [ManagedRepositories.ANGULAR] - }, - DETECTED_COMPILER_CHANGE: { - description: "Issues related to `ngc`, Angular's template compiler", - name: "area: compiler", - commitCheck: (c) => c.scope === "compiler" || c.scope === "compiler-cli", - repositories: [ManagedRepositories.ANGULAR] - }, - DETECTED_PLATFORM_BROWSER_CHANGE: { - description: "Issues related to the framework runtime", - name: "area: core", - commitCheck: (c) => c.scope === "platform-browser" || c.scope === "core" || c.scope === "platform-browser-dynamic", - repositories: [ManagedRepositories.ANGULAR] - }, - DETECTED_PLATFORM_SERVER_CHANGE: { - description: "Issues related to server-side rendering", - name: "area: server", - commitCheck: (c) => c.scope === "platform-server", - repositories: [ManagedRepositories.ANGULAR] - }, - DETECTED_ZONES_CHANGE: { - description: "Issues related to zone.js", - name: "area: zones", - commitCheck: (c) => c.scope === "zone.js", - repositories: [ManagedRepositories.ANGULAR] - }, - DETECTED_LOCALIZE_CHANGE: { - description: "Issues related to localization and internationalization", - name: "area: i18n", - commitCheck: (c) => c.scope === "localize", - repositories: [ManagedRepositories.ANGULAR] - } -}); - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/action.js -var ActionLabel = class extends Label { -}; -var actionLabels = createTypedObject(ActionLabel)({ - ACTION_MERGE: { - description: "The PR is ready for merge by the caretaker", - name: "action: merge" - }, - ACTION_CLEANUP: { - description: "The PR is in need of cleanup, either due to needing a rebase or in response to comments from reviews", - name: "action: cleanup" - }, - ACTION_PRESUBMIT: { - description: "The PR is in need of a google3 presubmit", - name: "action: presubmit" - }, - ACTION_GLOBAL_PRESUBMIT: { - description: "The PR is in need of a google3 global presubmit", - name: "action: global presubmit" - }, - ACTION_REVIEW: { - description: "The PR is still awaiting reviews from at least one requested reviewer", - name: "action: review" - } -}); - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/merge.js -var MergeLabel = class extends Label { -}; -var mergeLabels = createTypedObject(MergeLabel)({ - MERGE_PRESERVE_COMMITS: { - description: "When the PR is merged, a rebase and merge should be performed", - name: "merge: preserve commits" - }, - MERGE_SQUASH_COMMITS: { - description: "When the PR is merged, a squash and merge should be performed", - name: "merge: squash commits" - }, - MERGE_FIX_COMMIT_MESSAGE: { - description: "When the PR is merged, rewrites/fixups of the commit messages are needed", - name: "merge: fix commit message" - }, - MERGE_CARETAKER_NOTE: { - description: "Alert the caretaker performing the merge to check the PR for an out of normal action needed or note", - name: "merge: caretaker note" - } -}); - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/priority.js -var PriorityLabel = class extends Label { -}; -var priorityLabels = createTypedObject(PriorityLabel)({ - P0: { - name: "P0", - description: "Issue that causes an outage, breakage, or major function to be unusable, with no known workarounds" - }, - P1: { - name: "P1", - description: "Impacts a large percentage of users; if a workaround exists it is partial or overly painful" - }, - P2: { - name: "P2", - description: "The issue is important to a large percentage of users, with a workaround" - }, - P3: { - name: "P3", - description: "An issue that is relevant to core functions, but does not impede progress. Important, but not urgent" - }, - P4: { - name: "P4", - description: "A relatively minor issue that is not relevant to core functions" - }, - P5: { - name: "P5", - description: "The team acknowledges the request but does not plan to address it, it remains open for discussion" - } -}); - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/requires.js -var RequiresLabel = class extends Label { -}; -var requiresLabels = createTypedObject(RequiresLabel)({ - REQUIRES_TGP: { - name: "requires: TGP", - description: "This PR requires a passing TGP before merging is allowed" - } -}); - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/feature.js -var FeatureLabel = class extends Label { -}; -var featureLabels = createTypedObject(FeatureLabel)({ - FEATURE_IN_BACKLOG: { - name: "feature: in backlog", - description: "Feature request for which voting has completed and is now in the backlog" - }, - FEATURE_VOTES_REQUIRED: { - name: "feature: votes required", - description: "Feature request which is currently still in the voting phase" - }, - FEATURE_UNDER_CONSIDERATION: { - name: "feature: under consideration", - description: "Feature request for which voting has completed and the request is now under consideration" - }, - FEATURE_INSUFFICIENT_VOTES: { - name: "feature: insufficient votes", - description: "Label to add when the not a sufficient number of votes or comments from unique authors" - } -}); - -// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/index.js -var allLabels = { - ...managedLabels, - ...actionLabels, - ...mergeLabels, - ...targetLabels, - ...priorityLabels, - ...featureLabels, - ...requiresLabels -}; - -// bazel-out/k8-fastbuild/bin/ng-dev/release/precheck/index.js -import { debug } from "console"; -var ReleasePrecheckError = class extends Error { -}; -async function assertPassingReleasePrechecks(config, newVersion, builtPackagesWithInfo) { - if (config.prereleaseCheck === void 0) { - Log.warn(" \u26A0 Skipping release pre-checks. No checks configured."); - return true; - } - try { - await config.prereleaseCheck(newVersion.format(), builtPackagesWithInfo); - Log.info(green(" \u2713 Release pre-checks passing.")); - return true; - } catch (e) { - if (e instanceof ReleasePrecheckError) { - debug(e.message); - Log.error(` \u2718 Release pre-checks failed. Please check the output above.`); - } else { - Log.error(e, "\n"); - Log.error(` \u2718 Release pre-checks errored with unexpected runtime error.`); - } - return false; - } -} - -export { - require_dist, - addDryRunFlag, - GraphqlResponseError, - GithubClient, - AuthenticatedGithubClient, - isGithubApiError, - GITHUB_TOKEN_GENERATE_URL, - addTokenToGitHttpsUrl, - getRepositoryGitUrl, - getListCommitsInBranchUrl, - getFileContentsUrl, - GitCommandError, - GitClient, - AuthenticatedGitClient, - require_semver2 as require_semver, - ReleaseTrain, - exceptionalMinorPackageIndicator, - getNextBranchName, - getVersionInfoForBranch, - isVersionBranch, - getBranchesForMajorVersions, - convertVersionBranchToSemVer, - ActiveReleaseTrains, - _npmPackageInfoCache, - fetchProjectNpmPackageInfo, - isVersionPublishedToNpm, - fetchLongTermSupportBranchesFromNpm, - isLtsDistTag, - computeLtsEndDateOfMajor, - getLtsNpmDistTagOfMajor, - assertValidCommitMessageConfig, - ScopeRequirement, - ReleaseNotesLevel, - COMMIT_TYPES, - assertValidFormatConfig, - assertValidPullRequestConfig, - Label, - targetLabels, - managedLabels, - actionLabels, - mergeLabels, - priorityLabels, - requiresLabels, - allLabels, - ReleasePrecheckError, - assertPassingReleasePrechecks -}; -/** - * @license - * Copyright Google LLC - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -//# sourceMappingURL=chunk-IPKBAWYB.mjs.map diff --git a/bundles/chunk-IPKBAWYB.mjs.map b/bundles/chunk-IPKBAWYB.mjs.map deleted file mode 100755 index 5d12207..0000000 --- a/bundles/chunk-IPKBAWYB.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/fast-content-type-parse/index.js", "../../../../../node_modules/typed-graphqlify/src/render.ts", "../../../../../node_modules/typed-graphqlify/src/graphqlify.ts", "../../../../../node_modules/typed-graphqlify/src/types.ts", "../../../../../node_modules/semver/internal/constants.js", "../../../../../node_modules/semver/internal/debug.js", "../../../../../node_modules/semver/internal/re.js", "../../../../../node_modules/semver/internal/parse-options.js", "../../../../../node_modules/semver/internal/identifiers.js", "../../../../../node_modules/semver/classes/semver.js", "../../../../../node_modules/semver/functions/parse.js", "../../../../../node_modules/semver/functions/valid.js", "../../../../../node_modules/semver/functions/clean.js", "../../../../../node_modules/semver/functions/inc.js", "../../../../../node_modules/semver/functions/diff.js", "../../../../../node_modules/semver/functions/major.js", "../../../../../node_modules/semver/functions/minor.js", "../../../../../node_modules/semver/functions/patch.js", "../../../../../node_modules/semver/functions/prerelease.js", "../../../../../node_modules/semver/functions/compare.js", "../../../../../node_modules/semver/functions/rcompare.js", "../../../../../node_modules/semver/functions/compare-loose.js", "../../../../../node_modules/semver/functions/compare-build.js", "../../../../../node_modules/semver/functions/sort.js", "../../../../../node_modules/semver/functions/rsort.js", "../../../../../node_modules/semver/functions/gt.js", "../../../../../node_modules/semver/functions/lt.js", "../../../../../node_modules/semver/functions/eq.js", "../../../../../node_modules/semver/functions/neq.js", "../../../../../node_modules/semver/functions/gte.js", "../../../../../node_modules/semver/functions/lte.js", "../../../../../node_modules/semver/functions/cmp.js", "../../../../../node_modules/semver/functions/coerce.js", "../../../../../node_modules/semver/internal/lrucache.js", "../../../../../node_modules/semver/classes/range.js", "../../../../../node_modules/semver/classes/comparator.js", "../../../../../node_modules/semver/functions/satisfies.js", "../../../../../node_modules/semver/ranges/to-comparators.js", "../../../../../node_modules/semver/ranges/max-satisfying.js", "../../../../../node_modules/semver/ranges/min-satisfying.js", "../../../../../node_modules/semver/ranges/min-version.js", "../../../../../node_modules/semver/ranges/valid.js", "../../../../../node_modules/semver/ranges/outside.js", "../../../../../node_modules/semver/ranges/gtr.js", "../../../../../node_modules/semver/ranges/ltr.js", "../../../../../node_modules/semver/ranges/intersects.js", "../../../../../node_modules/semver/ranges/simplify.js", "../../../../../node_modules/semver/ranges/subset.js", "../../../../../node_modules/semver/index.js", "../../../../../node_modules/universal-user-agent/index.js", "../../../../../node_modules/@octokit/core/node_modules/before-after-hook/lib/register.js", "../../../../../node_modules/@octokit/core/node_modules/before-after-hook/lib/add.js", "../../../../../node_modules/@octokit/core/node_modules/before-after-hook/lib/remove.js", "../../../../../node_modules/@octokit/core/node_modules/before-after-hook/index.js", "../../../../../node_modules/@octokit/request/node_modules/@octokit/endpoint/dist-bundle/index.js", "../../../../../node_modules/@octokit/request/dist-bundle/index.js", "../../../../../node_modules/@octokit/request-error/dist-src/index.js", "../../../../../node_modules/@octokit/graphql/dist-bundle/index.js", "../../../../../node_modules/@octokit/core/node_modules/@octokit/auth-token/dist-bundle/index.js", "../../../../../node_modules/@octokit/core/dist-src/version.js", "../../../../../node_modules/@octokit/core/dist-src/index.js", "../../../../../node_modules/@octokit/plugin-request-log/dist-src/version.js", "../../../../../node_modules/@octokit/plugin-request-log/dist-src/index.js", "../../../../../node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js", "../../../../../node_modules/@octokit/src/version.ts", "../../../../../node_modules/@octokit/src/generated/endpoints.ts", "../../../../../node_modules/@octokit/src/endpoints-to-methods.ts", "../../../../../node_modules/@octokit/src/index.ts", "../../../../../node_modules/@octokit/rest/dist-src/version.js", "../../../../../node_modules/@octokit/rest/dist-src/index.js", "../../../../../ng-dev/utils/git/github.ts", "../../../../../ng-dev/utils/dry-run.ts", "../../../../../ng-dev/utils/git/git-client.ts", "../../../../../ng-dev/utils/git/github-urls.ts", "../../../../../ng-dev/utils/git/graphql-queries.ts", "../../../../../ng-dev/utils/git/authenticated-git-client.ts", "../../../../../ng-dev/release/versioning/release-trains.ts", "../../../../../ng-dev/release/versioning/version-branches.ts", "../../../../../ng-dev/release/versioning/active-release-trains.ts", "../../../../../ng-dev/release/versioning/npm-registry.ts", "../../../../../ng-dev/release/versioning/long-term-support.ts", "../../../../../ng-dev/commit-message/config.ts", "../../../../../ng-dev/format/config.ts", "../../../../../ng-dev/pr/config/index.ts", "../../../../../ng-dev/pr/common/labels/base.ts", "../../../../../ng-dev/pr/common/labels/target.ts", "../../../../../ng-dev/pr/common/labels/managed.ts", "../../../../../ng-dev/pr/common/labels/action.ts", "../../../../../ng-dev/pr/common/labels/merge.ts", "../../../../../ng-dev/pr/common/labels/priority.ts", "../../../../../ng-dev/pr/common/labels/requires.ts", "../../../../../ng-dev/pr/common/labels/feature.ts", "../../../../../ng-dev/pr/common/labels/index.ts", "../../../../../ng-dev/release/precheck/index.ts"], - "sourcesContent": ["'use strict'\n\nconst NullObject = function NullObject () { }\nNullObject.prototype = Object.create(null)\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nconst paramRE = /; *([!#$%&'*+.^\\w`|~-]+)=(\"(?:[\\v\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\v\\u0020-\\u00ff])*\"|[!#$%&'*+.^\\w`|~-]+) */gu\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nconst quotedPairRE = /\\\\([\\v\\u0020-\\u00ff])/gu\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nconst mediaTypeRE = /^[!#$%&'*+.^\\w|~-]+\\/[!#$%&'*+.^\\w|~-]+$/u\n\n// default ContentType to prevent repeated object creation\nconst defaultContentType = { type: '', parameters: new NullObject() }\nObject.freeze(defaultContentType.parameters)\nObject.freeze(defaultContentType)\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} header\n * @return {Object}\n * @public\n */\n\nfunction parse (header) {\n if (typeof header !== 'string') {\n throw new TypeError('argument header is required and must be a string')\n }\n\n let index = header.indexOf(';')\n const type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (mediaTypeRE.test(type) === false) {\n throw new TypeError('invalid media type')\n }\n\n const result = {\n type: type.toLowerCase(),\n parameters: new NullObject()\n }\n\n // parse parameters\n if (index === -1) {\n return result\n }\n\n let key\n let match\n let value\n\n paramRE.lastIndex = index\n\n while ((match = paramRE.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .slice(1, value.length - 1)\n\n quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1'))\n }\n\n result.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n\n return result\n}\n\nfunction safeParse (header) {\n if (typeof header !== 'string') {\n return defaultContentType\n }\n\n let index = header.indexOf(';')\n const type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (mediaTypeRE.test(type) === false) {\n return defaultContentType\n }\n\n const result = {\n type: type.toLowerCase(),\n parameters: new NullObject()\n }\n\n // parse parameters\n if (index === -1) {\n return result\n }\n\n let key\n let match\n let value\n\n paramRE.lastIndex = index\n\n while ((match = paramRE.exec(header))) {\n if (match.index !== index) {\n return defaultContentType\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .slice(1, value.length - 1)\n\n quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1'))\n }\n\n result.parameters[key] = value\n }\n\n if (index !== header.length) {\n return defaultContentType\n }\n\n return result\n}\n\nmodule.exports.default = { parse, safeParse }\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.defaultContentType = defaultContentType\n", "/**\n * Defines the type of the object\n */\nexport enum GraphQLType {\n SCALAR,\n INLINE_FRAGMENT,\n FRAGMENT,\n}\n\n/**\n * The symbol to use to store the object GQL type\n */\nexport const typeSymbol = Symbol('GraphQL Type')\n\n/**\n * The symbol to use to store the object parameters.\n */\nexport const paramsSymbol = Symbol('GraphQL Params')\n\n/**\n * The parameters type.\n */\nexport interface Params {\n [key: string]: string | boolean | number | null | Params | Array\n}\n\n/**\n * A GQL inline fragment.\n */\nexport interface GraphQLInlineFragment {\n [typeSymbol]: GraphQLType.INLINE_FRAGMENT\n typeName: string\n internal: Record\n}\n\n/**\n * Checks whether an object is a fragment object.\n */\nfunction isInlineFragmentObject(value: unknown): value is GraphQLInlineFragment {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as any)[typeSymbol] === GraphQLType.INLINE_FRAGMENT\n )\n}\n\n/**\n * A GQL fragment.\n */\nexport interface GraphQLFragment {\n [typeSymbol]: GraphQLType.FRAGMENT\n name: string\n typeName: string\n internal: Record\n}\n\n/**\n * Checks whether an object is a fragment object.\n */\nfunction isFragmentObject(value: unknown): value is GraphQLFragment {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as any)[typeSymbol] === GraphQLType.FRAGMENT\n )\n}\n\n/**\n * A GQL scalar object.\n * Stores the params of the scalar if any were given.\n */\nexport interface GraphQLScalar {\n [typeSymbol]: GraphQLType.SCALAR\n [paramsSymbol]?: Params\n}\n\n/**\n * Checks whether an object is a scalar object.\n */\nfunction isScalarObject(value: unknown): value is GraphQLScalar {\n return (\n typeof value === 'object' && value !== null && (value as any)[typeSymbol] === GraphQLType.SCALAR\n )\n}\n\n/**\n * Provides the context for the current render.\n */\ninterface RenderContext {\n fragments: Map\n}\n\n/**\n * Renders the name if it was given.\n */\nfunction renderName(name: string | undefined): string {\n return name === undefined ? '' : name\n}\n\n/**\n * Renders the parameters if they were given.\n * @param params The query parameters\n * @param brackets Whether to surround the rendered parameter with parentheses (default: true)\n * @param array Whether to exclude the array index from the rendered parameter (default: false)\n * @returns The rendered parameter(s)\n */\nfunction renderParams(\n params?: Params | Array | null,\n brackets: boolean = true,\n array: boolean = false,\n): string {\n if (!params) {\n // If no params are given, don't render anything.\n return ''\n }\n\n const builder: string[] = []\n for (const [key, value] of Object.entries(params)) {\n let params: string\n if (value === null) {\n params = `null`\n } else if (Array.isArray(value)) {\n params = `[${renderParams(value as Array, false, true)}]`\n } else if (typeof value === 'object') {\n params = `{${renderParams(value as Params, false)}}`\n } else {\n params = `${value}`\n }\n builder.push(array ? `${params}` : `${key}:${params}`)\n }\n\n let built = builder.join(',')\n if (brackets) {\n built = `(${built})`\n }\n return built\n}\n\n/**\n * Renders a GQL scalar.\n */\nfunction renderScalar(name: string | undefined, params?: Params): string {\n // Scalars have no content, just a name.\n return renderName(name) + renderParams(params)\n}\n\n/**\n * Renders a GQL inline fragment.\n */\nfunction renderInlineFragment(fragment: GraphQLInlineFragment, context: RenderContext): string {\n return `...on ${fragment.typeName}${renderObject(undefined, fragment.internal, context)}`\n}\n\n/**\n * Renders a GQL fragment.\n */\nfunction renderFragment(fragment: GraphQLFragment, context: RenderContext): string {\n return `fragment ${fragment.name} on ${fragment.typeName}${renderObject(\n undefined,\n fragment.internal,\n context,\n )}`\n}\n\n/**\n * Renders a GQL array.\n */\nfunction renderArray(name: string | undefined, arr: unknown[], context: RenderContext): string {\n // Get first item.\n const first = arr[0]\n\n // Ensure we have something.\n if (first === undefined || first === null) {\n throw new Error('Cannot render array with no first value')\n }\n\n // Move params onto rendered item.\n ;(first as any)[paramsSymbol] = (arr as any)[paramsSymbol]\n\n // Render type normally.\n return renderType(name, first, context)\n}\n\n/**\n * Renders the given value into its given GQL.\n */\nfunction renderType(name: string | undefined, value: unknown, context: RenderContext): string {\n switch (typeof value) {\n case 'bigint':\n case 'boolean':\n case 'number':\n case 'string':\n throw new Error(`Rendering type ${typeof value} directly is disallowed`)\n case 'object':\n // Ignore null fields.\n if (value === null) {\n throw new Error('Cannot render null')\n }\n if (isScalarObject(value)) {\n return `${renderScalar(name, value[paramsSymbol])} `\n } else if (Array.isArray(value)) {\n return renderArray(name, value, context)\n } else {\n return renderObject(name, value, context)\n }\n case 'undefined':\n // Ignore undefined values.\n return ''\n default:\n throw new Error(`Cannot render type ${typeof value}`)\n }\n}\n\n/**\n * Renders a object to GQL.\n */\nfunction renderObject(name: string | undefined, obj: object, context: RenderContext): string {\n const fields: string[] = []\n\n // Iterate normal properties and render them accordingly.\n for (const [key, value] of Object.entries(obj)) {\n fields.push(renderType(key, value, context))\n }\n\n // Search for fragment & inline fragment symbols and render them.\n for (const sym of Object.getOwnPropertySymbols(obj)) {\n const value = (obj as any)[sym]\n if (isInlineFragmentObject(value)) {\n fields.push(renderInlineFragment(value, context))\n } else if (isFragmentObject(value)) {\n context.fragments.set(sym, value)\n fields.push(`...${value.name}`)\n }\n }\n\n // Validate that we have fields to render.\n if (fields.length === 0) {\n throw new Error('Object cannot have no fields')\n }\n\n // Render function object.\n return `${renderName(name)}${renderParams((obj as any)[paramsSymbol])}{${fields.join('').trim()}}`\n}\n\n/**\n * Performs a complete render of a given object.\n */\nexport function render(value: Record): string {\n // Construct main render context.\n const context: RenderContext = {\n fragments: new Map(),\n }\n\n // Render main body.\n let rend = renderObject(undefined, value, context)\n\n // Render the fragments defined in each context until we have no more to render.\n const rendered = new Map()\n let executingContext = context // The context we're currently executing over.\n let currentContext: RenderContext = {\n // The current context for execution.\n fragments: new Map(),\n }\n while (executingContext.fragments.size > 0) {\n // Use Array.from due to ES5 target without downLevelIteration enabled.\n for (const [sym, fragment] of Array.from(executingContext.fragments.entries())) {\n // We only need to render the fragment once, even if it's used multiple times.\n if (!rendered.has(sym)) {\n rendered.set(sym, renderFragment(fragment, currentContext))\n }\n }\n\n // Set the next context to execute to the one we just used.\n executingContext = currentContext\n currentContext = {\n // Reset current context.\n fragments: new Map(),\n }\n }\n\n return rend + Array.from(rendered.values()).join('')\n}\n\nexport function fragmentToString(value: Record): string {\n // Construct main render context.\n const context: RenderContext = {\n fragments: new Map(),\n }\n\n // Render main body.\n renderObject(undefined, value, context)\n\n // Render the fragments defined in each context until we have no more to render.\n const currentContext: RenderContext = {\n // The current context for execution.\n fragments: new Map(),\n }\n\n let output = ''\n for (const [, fragment] of Array.from(context.fragments.entries())) {\n output = output + renderFragment(fragment, currentContext)\n }\n\n return output\n}\n", "import { GraphQLFragment, GraphQLType, Params, paramsSymbol, render, typeSymbol } from './render'\n\nexport interface QueryObject {\n [x: string]: any\n}\n\n/**\n * Create a typed-graphqlify instance which contains GraphQL query.\n * To convert the instance to GraphQL string, run `.toString()` method.\n * To convert the instance to TypeScript type, refer `.data` property.\n *\n * ```typescript\n * const data: typeof getUserQuery.data = await executeGraphql(getUserQuery.toString())\n * ```\n */\nexport interface CompiledResult {\n toString: () => string\n data: D\n variable: V\n result: { data: D }\n}\n\nfunction createOperate(operateType: string) {\n function operate(queryObject: T): CompiledResult\n function operate(\n operationName: string,\n queryObject: T,\n ): CompiledResult\n function operate(\n opNameOrQueryObject: string | T,\n queryObject?: T,\n ): CompiledResult {\n if (typeof opNameOrQueryObject === 'string') {\n if (!queryObject) {\n throw new Error('queryObject is not set')\n }\n return {\n toString: () => `${operateType} ${opNameOrQueryObject}${render(queryObject)}`,\n } as any\n }\n return {\n toString: () => `${operateType}${render(opNameOrQueryObject)}`,\n } as any\n }\n return operate\n}\n\n/**\n * Create a typed-graphqlify instance which contains GraphQL query.\n */\nexport const query = createOperate('query')\n\n/**\n * Create a typed-graphqlify instance which contains GraphQL mutation.\n */\nexport const mutation = createOperate('mutation')\n\n/**\n * Create a typed-graphqlify instance which contains GraphQL subscription.\n */\nexport const subscription = createOperate('subscription')\n\n/**\n * You can also use `params` helper which is useful for inline arguments.\n *\n * ```typescript\n * import { mutation, params, rawString } from 'typed-graphqlify'\n *\n * mutation('updateUserMutation', {\n * updateUser: params(\n * {\n * input: {\n * name: rawString('Ben'),\n * slug: rawString('/ben'),\n * },\n * },\n * {\n * id: types.number,\n * name: types.string,\n * },\n * ),\n * })\n * ```\n */\nexport function params(params: Params, input: T): T {\n if (typeof params !== 'object') {\n throw new Error('Params have to be an object')\n }\n if (typeof input !== 'object') {\n throw new Error(`Cannot apply params to JS ${typeof params}`)\n }\n\n ;(input as any)[paramsSymbol] = params\n return input\n}\n\n/**\n * Use `alias` to write GraphQL alias. It should be placed as a dynamic property.\n *\n * ```graphql\n * query getMaleUser {\n * maleUser: user {\n * id\n * name\n * }\n * }\n * ```\n * import { alias, query, types } from 'typed-graphqlify'\n *\n * query('getMaleUser', {\n * [alias('maleUser', 'user')]: {\n * id: types.number,\n * name: types.string,\n * },\n * }\n */\nexport function alias(alias: T, target: string): T {\n return `${alias}:${target}` as T\n}\n\n/**\n * Use the `fragment` helper to create GraphQL Fragment, and spread the result into places the fragment is used.\n *\n * ```typescript\n * import { alias, fragment, query } from 'typed-graphqlify'\n *\n * const bankAccountFragment = fragment('bankAccountFragment', 'BankAccount', {\n * id: types.number,\n * branch: types.string,\n * })\n *\n * const userFragment = fragment('userFragment', 'User', {\n * id: types.number,\n * name: types.string,\n * bankAccount: {\n * ...bankAccountFragment,\n * },\n * })\n *\n * query({\n * [alias('user', 'user(id: 1)')], {\n * ...userFragment,\n * },\n * [alias('maleUsers', 'users(sex: MALE)')], {\n * ...userFragment,\n * },\n * }\n * ```\n */\nexport function fragment>(\n name: string,\n typeName: string,\n input: T,\n): T {\n const fragment: GraphQLFragment = {\n [typeSymbol]: GraphQLType.FRAGMENT,\n name,\n typeName,\n internal: input,\n }\n\n return { [Symbol(`Fragment(${name} on ${typeName})`)]: fragment } as any\n}\n\n/**\n * prevent `String` param being rendered as enum.\n */\nexport function rawString(input: string) {\n return JSON.stringify(input)\n}\n", "import { typeSymbol, GraphQLType, GraphQLScalar, GraphQLInlineFragment } from './render'\n\n// Utility type\ntype ValueOf = T[keyof T]\ntype ElementType> = T extends ReadonlyArray\n ? ElementType\n : never\n\n/**\n * Add `types.optional` or `optional` helper method to define optional field.\n *\n * ```typescript\n * import { optional, query, types } from 'typed-graphqlify'\n *\n * query('getUser', {\n * user: {\n * id: types.number,\n * name: types.optional.string, // <-- user.name is `string | undefined`\n * bankAccount: optional({ // <-- user.bankAccount is `{ id: number } | undefined`\n * id: types.number,\n * }),\n * },\n * }\n * ```\n */\nexport function optional(obj: T): T | undefined | null {\n return obj\n}\n\nexport function on(typeName: string, internal: T): Partial {\n const fragment: GraphQLInlineFragment = {\n [typeSymbol]: GraphQLType.INLINE_FRAGMENT,\n typeName,\n internal,\n }\n return { [Symbol(`InlineFragment(${typeName})`)]: fragment } as any\n}\n\nexport function onUnion(types: Record): T {\n let fragments: Record = {}\n for (const [typeName, internal] of Object.entries(types)) {\n fragments = {\n ...fragments,\n ...on(typeName, internal),\n }\n }\n return fragments as any\n}\n\nfunction scalarType(): any {\n const scalar: GraphQLScalar = {\n [typeSymbol]: GraphQLType.SCALAR,\n }\n return scalar\n}\n\nexport class types {\n static get number(): number {\n return scalarType()\n }\n\n static get string(): string {\n return scalarType()\n }\n\n static get boolean(): boolean {\n return scalarType()\n }\n\n static constant(_c: T): T {\n return scalarType()\n }\n\n static oneOf>(_e: T): ElementType\n static oneOf(_e: T): ValueOf | keyof T\n static oneOf>(_e: T) {\n return scalarType()\n }\n\n static custom(): T {\n return scalarType()\n }\n\n static optional: {\n number?: number\n string?: string\n boolean?: boolean\n constant: (_c: T) => T | undefined\n oneOf: (_e: T) => ValueOf | undefined\n custom: () => T | undefined\n } = types\n}\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n", "class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n", "const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${\n process.arch\n })`;\n }\n\n return \"\";\n}\n", "// @ts-check\n\nexport function register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce((callback, name) => {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(() => {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce((method, registered) => {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n", "// @ts-check\n\nexport function addHook(state, kind, name, hook) {\n const orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = (method, options) => {\n let result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then((result_) => {\n result = result_;\n return orig(result, options);\n })\n .then(() => {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch((error) => {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n", "// @ts-check\n\nexport function removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n const index = state.registry[name]\n .map((registered) => {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n", "// @ts-check\n\nimport { register } from \"./lib/register.js\";\nimport { addHook } from \"./lib/add.js\";\nimport { removeHook } from \"./lib/remove.js\";\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nconst bind = Function.bind;\nconst bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n const removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach((kind) => {\n const args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction Singular() {\n const singularHookName = Symbol(\"Singular\");\n const singularHookState = {\n registry: {},\n };\n const singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction Collection() {\n const state = {\n registry: {},\n };\n\n const hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nexport default { Singular, Collection };\n", "// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, { [key]: options[key] });\n else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\nexport {\n endpoint\n};\n", "// pkg/dist-src/index.js\nimport { endpoint } from \"@octokit/endpoint\";\n\n// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/defaults.js\nvar defaults_default = {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n }\n};\n\n// pkg/dist-src/fetch-wrapper.js\nimport { safeParse } from \"fast-content-type-parse\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nimport { RequestError } from \"@octokit/request-error\";\nasync function fetchWrapper(requestOptions) {\n const fetch = requestOptions.request?.fetch || globalThis.fetch;\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n const log = requestOptions.request?.log || console;\n const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;\n const requestHeaders = Object.fromEntries(\n Object.entries(requestOptions.headers).map(([name, value]) => [\n name,\n String(value)\n ])\n );\n let fetchResponse;\n try {\n fetchResponse = await fetch(requestOptions.url, {\n method: requestOptions.method,\n body,\n redirect: requestOptions.request?.redirect,\n headers: requestHeaders,\n signal: requestOptions.request?.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n });\n } catch (error) {\n let message = \"Unknown Error\";\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n error.status = 500;\n throw error;\n }\n message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n }\n const requestError = new RequestError(message, 500, {\n request: requestOptions\n });\n requestError.cause = error;\n throw requestError;\n }\n const status = fetchResponse.status;\n const url = fetchResponse.url;\n const responseHeaders = {};\n for (const [key, value] of fetchResponse.headers) {\n responseHeaders[key] = value;\n }\n const octokitResponse = {\n url,\n status,\n headers: responseHeaders,\n data: \"\"\n };\n if (\"deprecation\" in responseHeaders) {\n const matches = responseHeaders.link && responseHeaders.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return octokitResponse;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return octokitResponse;\n }\n throw new RequestError(fetchResponse.statusText, status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status === 304) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(\"Not modified\", status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status >= 400) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(toErrorMessage(octokitResponse.data), status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;\n return octokitResponse;\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n return response.text().catch(() => \"\");\n }\n const mimetype = safeParse(contentType);\n if (mimetype.type === \"application/json\") {\n let text = \"\";\n try {\n text = await response.text();\n return JSON.parse(text);\n } catch (err) {\n return text;\n }\n } else if (mimetype.type.startsWith(\"text/\") || mimetype.parameters.charset?.toLowerCase() === \"utf-8\") {\n return response.text().catch(() => \"\");\n } else {\n return response.arrayBuffer().catch(() => new ArrayBuffer(0));\n }\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return \"Unknown error\";\n }\n if (\"message\" in data) {\n const suffix = \"documentation_url\" in data ? ` - ${data.documentation_url}` : \"\";\n return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(\", \")}${suffix}` : `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(endpoint, defaults_default);\nexport {\n request\n};\n", "class RequestError extends Error {\n name;\n /**\n * http status code\n */\n status;\n /**\n * Request options that lead to the error.\n */\n request;\n /**\n * Response object if a response was received\n */\n response;\n constructor(message, statusCode, options) {\n super(message);\n this.name = \"HttpError\";\n this.status = Number.parseInt(statusCode);\n if (Number.isNaN(this.status)) {\n this.status = 0;\n }\n if (\"response\" in options) {\n this.response = options.response;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n / .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n }\n}\nexport {\n RequestError\n};\n", "// pkg/dist-src/index.js\nimport { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/with-defaults.js\nimport { request as Request2 } from \"@octokit/request\";\n\n// pkg/dist-src/graphql.js\nimport { request as Request } from \"@octokit/request\";\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n name = \"GraphqlResponseError\";\n errors;\n data;\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\nexport {\n GraphqlResponseError,\n graphql2 as graphql,\n withCustomRequest\n};\n", "// pkg/dist-src/auth.js\nvar REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nvar REGEX_IS_INSTALLATION = /^ghs_/;\nvar REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\nexport {\n createTokenAuth\n};\n", "const VERSION = \"6.1.3\";\nexport {\n VERSION\n};\n", "import { getUserAgent } from \"universal-user-agent\";\nimport Hook from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version.js\";\nconst noop = () => {\n};\nconst consoleWarn = console.warn.bind(console);\nconst consoleError = console.error.bind(console);\nconst userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;\nclass Octokit {\n static VERSION = VERSION;\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static plugins = [];\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new Hook.Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: consoleWarn,\n error: consoleError\n },\n options.log\n );\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = createTokenAuth(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n // assigned during constructor\n request;\n graphql;\n log;\n hook;\n // TODO: type `octokit.auth` based on passed options.authStrategy\n auth;\n}\nexport {\n Octokit\n};\n", "const VERSION = \"5.3.1\";\nexport {\n VERSION\n};\n", "import { VERSION } from \"./version.js\";\nfunction requestLog(octokit) {\n octokit.hook.wrap(\"request\", (request, options) => {\n octokit.log.debug(\"request\", options);\n const start = Date.now();\n const requestOptions = octokit.request.endpoint.parse(options);\n const path = requestOptions.url.replace(options.baseUrl, \"\");\n return request(options).then((response) => {\n const requestId = response.headers[\"x-github-request-id\"];\n octokit.log.info(\n `${requestOptions.method} ${path} - ${response.status} with id ${requestId} in ${Date.now() - start}ms`\n );\n return response;\n }).catch((error) => {\n const requestId = error.response?.headers[\"x-github-request-id\"] || \"UNKNOWN\";\n octokit.log.error(\n `${requestOptions.method} ${path} - ${error.status} with id ${requestId} in ${Date.now() - start}ms`\n );\n throw error;\n });\n });\n}\nrequestLog.VERSION = VERSION;\nexport {\n requestLog\n};\n", "// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/normalize-paginated-list-response.js\nfunction normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization) return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n\n// pkg/dist-src/iterator.js\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url) return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409) throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\n\n// pkg/dist-src/paginate.js\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\n\n// pkg/dist-src/compose-paginate.js\nvar composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\n// pkg/dist-src/generated/paginating-endpoints.js\nvar paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/code-security/configurations\",\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runner-groups\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/attestations/{subject_digest}\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/code-security/configurations\",\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/copilot/metrics\",\n \"GET /orgs/{org}/copilot/usage\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}\",\n \"GET /orgs/{org}/insights/api/subject-stats\",\n \"GET /orgs/{org}/insights/api/user-stats/{user_id}\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/private-registries\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/team/{team_slug}/copilot/metrics\",\n \"GET /orgs/{org}/team/{team_slug}/copilot/usage\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/attestations/{subject_digest}\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/attestations/{subject_digest}\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\n\n// pkg/dist-src/paginating-endpoints.js\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n// pkg/dist-src/index.js\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\nexport {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n};\n", "export const VERSION = \"13.3.0\";\n", "import type { EndpointsDefaultsAndDecorations } from \"../types.js\";\nconst Endpoints: EndpointsDefaultsAndDecorations = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n addRepoAccessToSelfHostedRunnerGroupInOrg: [\n \"PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\",\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\",\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\",\n ],\n createEnvironmentVariable: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\",\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\",\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\",\n ],\n createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\",\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\",\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\",\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\",\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n deleteEnvironmentVariable: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n deleteRepoVariable: [\n \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\",\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\",\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\",\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\",\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\",\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\",\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\",\n ],\n forceCancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\",\n ],\n generateRunnerJitconfigForOrg: [\n \"POST /orgs/{org}/actions/runners/generate-jitconfig\",\n ],\n generateRunnerJitconfigForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\",\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\",\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getCustomOidcSubClaimForRepo: [\n \"GET /repos/{owner}/{repo}/actions/oidc/customization/sub\",\n ],\n getEnvironmentPublicKey: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key\",\n ],\n getEnvironmentSecret: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n getEnvironmentVariable: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\",\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] },\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\",\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\",\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\",\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\",\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets\",\n ],\n listEnvironmentVariables: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n listRepoOrganizationSecrets: [\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n ],\n listRepoOrganizationVariables: [\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\",\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n listSelectedReposForOrgVariable: [\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\",\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\",\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n removeSelectedRepoFromOrgVariable: [\n \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\",\n ],\n reviewCustomGatesForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\",\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\",\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n setCustomOidcSubClaimForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/oidc/customization/sub\",\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\",\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n setSelectedReposForOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories\",\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\",\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n updateEnvironmentVariable: [\n \"PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n updateRepoVariable: [\n \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\",\n ],\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\",\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\",\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\",\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\",\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\",\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsDone: [\"DELETE /notifications/threads/{thread_id}\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\",\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"],\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] },\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\",\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\",\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\",\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\",\n ],\n listInstallationRequestsForAuthenticatedApp: [\n \"GET /app/installation-requests\",\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\",\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\",\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] },\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\",\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"],\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\",\n ],\n getGithubBillingUsageReportOrg: [\n \"GET /organizations/{org}/settings/billing/usage\",\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\",\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\",\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\",\n ],\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\",\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\",\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n },\n codeScanning: {\n commitAutofix: [\n \"POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits\",\n ],\n createAutofix: [\n \"POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix\",\n ],\n createVariantAnalysis: [\n \"POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses\",\n ],\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\",\n ],\n deleteCodeqlDatabase: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } },\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\",\n ],\n getAutofix: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix\",\n ],\n getCodeqlDatabase: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\",\n ],\n getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n getVariantAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}\",\n ],\n getVariantAnalysisRepoTask: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}\",\n ],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] },\n ],\n listCodeqlDatabases: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\",\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n ],\n updateDefaultSetup: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\",\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"],\n },\n codeSecurity: {\n attachConfiguration: [\n \"POST /orgs/{org}/code-security/configurations/{configuration_id}/attach\",\n ],\n attachEnterpriseConfiguration: [\n \"POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach\",\n ],\n createConfiguration: [\"POST /orgs/{org}/code-security/configurations\"],\n createConfigurationForEnterprise: [\n \"POST /enterprises/{enterprise}/code-security/configurations\",\n ],\n deleteConfiguration: [\n \"DELETE /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n deleteConfigurationForEnterprise: [\n \"DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n detachConfiguration: [\n \"DELETE /orgs/{org}/code-security/configurations/detach\",\n ],\n getConfiguration: [\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n getConfigurationForRepository: [\n \"GET /repos/{owner}/{repo}/code-security-configuration\",\n ],\n getConfigurationsForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations\",\n ],\n getConfigurationsForOrg: [\"GET /orgs/{org}/code-security/configurations\"],\n getDefaultConfigurations: [\n \"GET /orgs/{org}/code-security/configurations/defaults\",\n ],\n getDefaultConfigurationsForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations/defaults\",\n ],\n getRepositoriesForConfiguration: [\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories\",\n ],\n getRepositoriesForEnterpriseConfiguration: [\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories\",\n ],\n getSingleConfigurationForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n setConfigurationAsDefault: [\n \"PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults\",\n ],\n setConfigurationAsDefaultForEnterprise: [\n \"PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults\",\n ],\n updateConfiguration: [\n \"PATCH /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n updateEnterpriseConfiguration: [\n \"PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"],\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n checkPermissionsForDevcontainer: [\n \"GET /repos/{owner}/{repo}/codespaces/permissions_check\",\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\",\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\",\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\",\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\",\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\",\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\",\n ],\n getCodespacesForUserInOrg: [\n \"GET /orgs/{org}/members/{username}/codespaces\",\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\",\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\",\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\",\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } },\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n ],\n preFlightWithRepoForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/new\",\n ],\n publishForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/publish\",\n ],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\",\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\",\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"],\n },\n copilot: {\n addCopilotSeatsForTeams: [\n \"POST /orgs/{org}/copilot/billing/selected_teams\",\n ],\n addCopilotSeatsForUsers: [\n \"POST /orgs/{org}/copilot/billing/selected_users\",\n ],\n cancelCopilotSeatAssignmentForTeams: [\n \"DELETE /orgs/{org}/copilot/billing/selected_teams\",\n ],\n cancelCopilotSeatAssignmentForUsers: [\n \"DELETE /orgs/{org}/copilot/billing/selected_users\",\n ],\n copilotMetricsForOrganization: [\"GET /orgs/{org}/copilot/metrics\"],\n copilotMetricsForTeam: [\"GET /orgs/{org}/team/{team_slug}/copilot/metrics\"],\n getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n getCopilotSeatDetailsForUser: [\n \"GET /orgs/{org}/members/{username}/copilot\",\n ],\n listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"],\n usageMetricsForOrg: [\"GET /orgs/{org}/copilot/usage\"],\n usageMetricsForTeam: [\"GET /orgs/{org}/team/{team_slug}/copilot/usage\"],\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\",\n ],\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\",\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\",\n ],\n exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"],\n },\n emojis: { get: [\"GET /emojis\"] },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"],\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"],\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"],\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] },\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\",\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] },\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] },\n ],\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n addSubIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n ],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n checkUserCanBeAssignedToIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\",\n ],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\",\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n listSubIssues: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n ],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\",\n ],\n removeSubIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue\",\n ],\n reprioritizeSubIssue: [\n \"PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority\",\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"],\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } },\n ],\n },\n meta: {\n get: [\"GET /meta\"],\n getAllVersions: [\"GET /versions\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"],\n },\n migrations: {\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\",\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\",\n ],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] },\n ],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n },\n oidc: {\n getOidcCustomSubTemplateForOrg: [\n \"GET /orgs/{org}/actions/oidc/customization/sub\",\n ],\n updateOidcCustomSubTemplateForOrg: [\n \"PUT /orgs/{org}/actions/oidc/customization/sub\",\n ],\n },\n orgs: {\n addSecurityManagerTeam: [\n \"PUT /orgs/{org}/security-managers/teams/{team_slug}\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team\",\n },\n ],\n assignTeamToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\",\n ],\n assignUserToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/users/{username}/{role_id}\",\n ],\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\",\n ],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n createOrUpdateCustomPropertiesValuesForRepos: [\n \"PATCH /orgs/{org}/properties/values\",\n ],\n createOrUpdateCustomProperty: [\n \"PUT /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n delete: [\"DELETE /orgs/{org}\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n enableOrDisableSecurityProductOnAllOrgRepos: [\n \"POST /orgs/{org}/{security_product}/{enablement}\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.enableOrDisableSecurityProductOnAllOrgRepos() is deprecated, see https://docs.github.com/rest/orgs/orgs#enable-or-disable-a-security-feature-for-an-organization\",\n },\n ],\n get: [\"GET /orgs/{org}\"],\n getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n getCustomProperty: [\n \"GET /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getOrgRole: [\"GET /orgs/{org}/organization-roles/{role_id}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listAttestations: [\"GET /orgs/{org}/attestations/{subject_digest}\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOrgRoleTeams: [\"GET /orgs/{org}/organization-roles/{role_id}/teams\"],\n listOrgRoleUsers: [\"GET /orgs/{org}/organization-roles/{role_id}/users\"],\n listOrgRoles: [\"GET /orgs/{org}/organization-roles\"],\n listOrganizationFineGrainedPermissions: [\n \"GET /orgs/{org}/organization-fine-grained-permissions\",\n ],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPatGrantRepositories: [\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n ],\n listPatGrantRequestRepositories: [\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n ],\n listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listSecurityManagerTeams: [\n \"GET /orgs/{org}/security-managers\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams\",\n },\n ],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeCustomProperty: [\n \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\",\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\",\n ],\n removeSecurityManagerTeam: [\n \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team\",\n },\n ],\n reviewPatGrantRequest: [\n \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\",\n ],\n reviewPatGrantRequestsInBulk: [\n \"POST /orgs/{org}/personal-access-token-requests\",\n ],\n revokeAllOrgRolesTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}\",\n ],\n revokeAllOrgRolesUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}\",\n ],\n revokeOrgRoleTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\",\n ],\n revokeOrgRoleUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}\",\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\",\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\",\n ],\n updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"],\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\",\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\",\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] },\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\",\n ],\n },\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\",\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\",\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\",\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n \"GET /user/docker/conflicts\",\n ],\n listDockerMigrationConflictingPackagesForOrganization: [\n \"GET /orgs/{org}/docker/conflicts\",\n ],\n listDockerMigrationConflictingPackagesForUser: [\n \"GET /users/{username}/docker/conflicts\",\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n },\n privateRegistries: {\n createOrgPrivateRegistry: [\"POST /orgs/{org}/private-registries\"],\n deleteOrgPrivateRegistry: [\n \"DELETE /orgs/{org}/private-registries/{secret_name}\",\n ],\n getOrgPrivateRegistry: [\"GET /orgs/{org}/private-registries/{secret_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/private-registries/public-key\"],\n listOrgPrivateRegistries: [\"GET /orgs/{org}/private-registries\"],\n updateOrgPrivateRegistry: [\n \"PATCH /orgs/{org}/private-registries/{secret_name}\",\n ],\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\",\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\",\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"],\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\",\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\",\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\",\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\",\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] },\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n cancelPagesDeployment: [\n \"POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel\",\n ],\n checkAutomatedSecurityFixes: [\n \"GET /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkPrivateVulnerabilityReporting: [\n \"GET /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\",\n ],\n createAttestation: [\"POST /repos/{owner}/{repo}/attestations\"],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentBranchPolicy: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n ],\n createDeploymentProtectionRule: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\",\n ],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateCustomPropertiesValues: [\n \"PATCH /repos/{owner}/{repo}/properties/values\",\n ],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployments\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\",\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] },\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\",\n ],\n deleteDeploymentBranchPolicy: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n disableDeploymentProtectionRule: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\",\n ],\n disablePrivateVulnerabilityReporting: [\n \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] },\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n enablePrivateVulnerabilityReporting: [\n \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\",\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n getAllDeploymentProtectionRules: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\",\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\",\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getCustomDeploymentProtectionRule: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\",\n ],\n getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentBranchPolicy: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\",\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesDeployment: [\n \"GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}\",\n ],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getRepoRuleSuite: [\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\",\n ],\n getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n listAttestations: [\n \"GET /repos/{owner}/{repo}/attestations/{subject_digest}\",\n ],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\",\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listCustomDeploymentRuleIntegrations: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n ],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentBranchPolicies: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n ],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\",\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateDeploymentBranchPolicy: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] },\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" },\n ],\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"],\n },\n secretScanning: {\n createPushProtectionBypass: [\n \"POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n getScanHistory: [\"GET /repos/{owner}/{repo}/secret-scanning/scan-history\"],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n },\n securityAdvisories: {\n createFork: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks\",\n ],\n createPrivateVulnerabilityReport: [\n \"POST /repos/{owner}/{repo}/security-advisories/reports\",\n ],\n createRepositoryAdvisory: [\n \"POST /repos/{owner}/{repo}/security-advisories\",\n ],\n createRepositoryAdvisoryCveRequest: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\",\n ],\n getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n getRepositoryAdvisory: [\n \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\",\n ],\n listGlobalAdvisories: [\"GET /advisories\"],\n listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n updateRepositoryAdvisory: [\n \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\",\n ],\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"],\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] },\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] },\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] },\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] },\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] },\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] },\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n deleteSshSigningKeyForAuthenticatedUser: [\n \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\",\n ],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getById: [\"GET /user/{account_id}\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] },\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] },\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n getSshSigningKeyForAuthenticatedUser: [\n \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\",\n ],\n list: [\"GET /users\"],\n listAttestations: [\"GET /users/{username}/attestations/{subject_digest}\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] },\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] },\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] },\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] },\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] },\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] },\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] },\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\",\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"],\n },\n};\n\nexport default Endpoints;\n", "import type { Octokit } from \"@octokit/core\";\nimport type { EndpointOptions, RequestParameters, Route } from \"@octokit/types\";\nimport ENDPOINTS from \"./generated/endpoints.js\";\nimport type { RestEndpointMethods } from \"./generated/method-types.js\";\nimport type { EndpointDecorations } from \"./types.js\";\n\n// The following code was refactored in: https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/622\n// to optimise the runtime performance of Octokit initialization.\n//\n// This optimization involves two key changes:\n// 1. Pre-Computation: The endpoint methods are pre-computed once at module load\n// time instead of each invocation of `endpointsToMethods()`.\n// 2. Lazy initialization and caching: We use a Proxy for each scope to only\n// initialize methods that are actually called. This reduces runtime overhead\n// as the initialization involves deep merging of objects. The initialized\n// methods are then cached for future use.\n\nconst endpointMethodsMap = new Map();\nfor (const [scope, endpoints] of Object.entries(ENDPOINTS)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign(\n {\n method,\n url,\n },\n defaults,\n );\n\n if (!endpointMethodsMap.has(scope)) {\n endpointMethodsMap.set(scope, new Map());\n }\n\n endpointMethodsMap.get(scope).set(methodName, {\n scope,\n methodName,\n endpointDefaults,\n decorations,\n });\n }\n}\n\ntype ProxyTarget = {\n octokit: Octokit;\n scope: string;\n cache: Record any>;\n};\n\nconst handler = {\n has({ scope }: ProxyTarget, methodName: string) {\n return endpointMethodsMap.get(scope).has(methodName);\n },\n getOwnPropertyDescriptor(target: ProxyTarget, methodName: string) {\n return {\n value: this.get(target, methodName), // ensures method is in the cache\n configurable: true,\n writable: true,\n enumerable: true,\n };\n },\n defineProperty(\n target: ProxyTarget,\n methodName: string,\n descriptor: PropertyDescriptor,\n ) {\n Object.defineProperty(target.cache, methodName, descriptor);\n return true;\n },\n deleteProperty(target: ProxyTarget, methodName: string) {\n delete target.cache[methodName];\n return true;\n },\n ownKeys({ scope }: ProxyTarget) {\n return [...endpointMethodsMap.get(scope).keys()];\n },\n set(target: ProxyTarget, methodName: string, value: any) {\n return (target.cache[methodName] = value);\n },\n get({ octokit, scope, cache }: ProxyTarget, methodName: string) {\n if (cache[methodName]) {\n return cache[methodName];\n }\n\n const method = endpointMethodsMap.get(scope).get(methodName);\n if (!method) {\n return undefined;\n }\n\n const { endpointDefaults, decorations } = method;\n\n if (decorations) {\n cache[methodName] = decorate(\n octokit,\n scope,\n methodName,\n endpointDefaults,\n decorations,\n );\n } else {\n cache[methodName] = octokit.request.defaults(endpointDefaults);\n }\n\n return cache[methodName];\n },\n};\n\nexport function endpointsToMethods(octokit: Octokit): RestEndpointMethods {\n const newMethods = {} as { [key: string]: object };\n\n for (const scope of endpointMethodsMap.keys()) {\n newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n }\n\n return newMethods as RestEndpointMethods;\n}\n\nfunction decorate(\n octokit: Octokit,\n scope: string,\n methodName: string,\n defaults: EndpointOptions,\n decorations: EndpointDecorations,\n) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n\n /* istanbul ignore next */\n function withDecorations(\n ...args: [Route, RequestParameters?] | [EndpointOptions]\n ) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args);\n\n // There are currently no other decorations than `.mapToData`\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined,\n });\n return requestWithDefaults(options);\n }\n\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(\n `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`,\n );\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n\n for (const [name, alias] of Object.entries(\n decorations.renamedParameters,\n )) {\n if (name in options) {\n octokit.log.warn(\n `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`,\n );\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n delete options[name];\n }\n }\n return requestWithDefaults(options);\n }\n\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n", "import type { Octokit } from \"@octokit/core\";\n\nexport type { RestEndpointMethodTypes } from \"./generated/parameters-and-response-types.js\";\nimport { VERSION } from \"./version.js\";\nimport type { Api } from \"./types.js\";\nimport { endpointsToMethods } from \"./endpoints-to-methods.js\";\n\n// Export the type for downstream users in order to fix a TypeScript error\n// The inferred type of 'Octokit' cannot be named without a reference to '../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.js'. This is likely not portable. A type annotation is necessary.\nexport type { Api };\n\nexport function restEndpointMethods(octokit: Octokit): Api {\n const api = endpointsToMethods(octokit);\n return {\n rest: api,\n };\n}\nrestEndpointMethods.VERSION = VERSION;\n\nexport function legacyRestEndpointMethods(octokit: Octokit): Api[\"rest\"] & Api {\n const api = endpointsToMethods(octokit);\n return {\n ...api,\n rest: api,\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n", "const VERSION = \"21.1.0\";\nexport {\n VERSION\n};\n", "import { Octokit as Core } from \"@octokit/core\";\nimport { requestLog } from \"@octokit/plugin-request-log\";\nimport {\n paginateRest\n} from \"@octokit/plugin-paginate-rest\";\nimport { legacyRestEndpointMethods } from \"@octokit/plugin-rest-endpoint-methods\";\nimport { VERSION } from \"./version.js\";\nconst Octokit = Core.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults(\n {\n userAgent: `octokit-rest.js/${VERSION}`\n }\n);\nexport {\n Octokit\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport type {OctokitOptions} from '@octokit/core';\n\nimport {Octokit} from '@octokit/rest';\nimport {RequestParameters} from '@octokit/types';\nimport {RequestError} from '@octokit/request-error';\nimport {query} from 'typed-graphqlify';\n\n/**\n * An object representation of a Graphql Query to be used as a response type and\n * to generate a Graphql query string.\n */\nexport type GraphqlQueryObject = Parameters[1];\n\n/** Interface describing a Github repository. */\nexport interface GithubRepo {\n /** Owner login of the repository. */\n owner: string;\n /** Name of the repository. */\n name: string;\n}\n\n/** A Github client for interacting with the Github APIs. */\nexport class GithubClient {\n /** The octokit instance actually performing API requests. */\n protected _octokit = new Octokit({...this._octokitOptions});\n\n readonly pulls: Octokit['pulls'] = this._octokit.pulls;\n readonly orgs: Octokit['orgs'] = this._octokit.orgs;\n readonly repos: Octokit['repos'] = this._octokit.repos;\n readonly issues: Octokit['issues'] = this._octokit.issues;\n readonly git: Octokit['git'] = this._octokit.git;\n readonly rateLimit: Octokit['rateLimit'] = this._octokit.rateLimit;\n readonly teams: Octokit['teams'] = this._octokit.teams;\n readonly search: Octokit['search'] = this._octokit.search;\n readonly rest: Octokit['rest'] = this._octokit.rest;\n readonly paginate: Octokit['paginate'] = this._octokit.paginate;\n readonly checks: Octokit['checks'] = this._octokit.checks;\n\n constructor(private _octokitOptions?: OctokitOptions) {}\n}\n\n/**\n * Extension of the `GithubClient` that provides utilities which are specific\n * to authenticated instances.\n */\nexport class AuthenticatedGithubClient extends GithubClient {\n /** The graphql instance with authentication set during construction. */\n private _graphql = this._octokit.graphql.defaults({\n headers: {authorization: `token ${this._token}`},\n });\n\n constructor(private _token: string) {\n // Set the token for the octokit instance.\n super({auth: _token});\n }\n\n /** Perform a query using Github's Graphql API. */\n async graphql(queryObject: T, params: RequestParameters = {}) {\n return (await this._graphql(query(queryObject).toString(), params)) as T;\n }\n}\n\n/** Whether the given object corresponds to an Octokit API request error. */\nexport function isGithubApiError(obj: unknown): obj is RequestError {\n return (\n obj instanceof Error &&\n // Note: Cannot use `instanceof` here because Octokit may use a different\n // version of `@octokit/request-error` due to version mismatch/hoisting.\n obj.constructor.name === 'RequestError' &&\n (obj as Partial).request !== undefined\n );\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv} from 'yargs';\n\n/**\n * Add a --dry-run flag to the available options for the yargs argv object. When present, sets an\n * environment variable noting dry run mode.\n */\nexport function addDryRunFlag(args: Argv) {\n return args.option('dry-run' as 'dryRun', {\n type: 'boolean',\n default: false,\n description: 'Whether to do a dry run',\n coerce: (dryRun: boolean) => {\n if (dryRun) {\n process.env['DRY_RUN'] = '1';\n }\n return dryRun;\n },\n });\n}\n\n/** Whether the current environment is in dry run mode. */\nexport function isDryRun(): boolean {\n return process.env['DRY_RUN'] !== undefined;\n}\n\n/** Error to be thrown when a function or method is called in dryRun mode and shouldn't be. */\nexport class DryRunError extends Error {\n constructor() {\n super('Cannot call this function in dryRun mode.');\n }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {DryRunError, isDryRun} from '../dry-run.js';\nimport {GithubConfig, assertValidGithubConfig, getConfig} from '../config.js';\nimport {SpawnSyncOptions, SpawnSyncReturns, spawnSync} from 'child_process';\nimport {Log} from '../logging.js';\n\nimport {GithubClient} from './github.js';\nimport {getRepositoryGitUrl} from './github-urls.js';\nimport {determineRepoBaseDirFromCwd} from '../repo-directory.js';\n\n/** Error for failed Git commands. */\nexport class GitCommandError extends Error {\n // Note: Do not expose the unsanitized arguments as a public property. NodeJS\n // could print the properties of an error instance and leak e.g. a token.\n constructor(client: GitClient, unsanitizedArgs: string[]) {\n // Errors are not guaranteed to be caught. To ensure that we don't\n // accidentally leak the Github token that might be used in a command,\n // we sanitize the command that will be part of the error message.\n super(`Command failed: git ${client.sanitizeConsoleOutput(unsanitizedArgs.join(' '))}`);\n }\n}\n\n/** The options available for the `GitClient``run` and `runGraceful` methods. */\ntype GitCommandRunOptions = SpawnSyncOptions;\n\n/** Class that can be used to perform Git interactions with a given remote. **/\nexport class GitClient {\n /** Short-hand for accessing the default remote configuration. */\n readonly remoteConfig: GithubConfig;\n\n /** Octokit request parameters object for targeting the configured remote. */\n readonly remoteParams: {owner: string; repo: string};\n\n /** Name of the primary branch of the upstream remote. */\n readonly mainBranchName: string;\n\n /** Instance of the Github client. */\n readonly github = new GithubClient();\n\n /** The configuration, containing the github specific configuration. */\n readonly config: {github: GithubConfig};\n\n /**\n * Path to the Git executable. By default, `git` is assumed to exist\n * in the shell environment (using `$PATH`).\n */\n readonly gitBinPath: string = 'git';\n\n constructor(\n /** The configuration, containing the github specific configuration. */\n config: {github: GithubConfig},\n /** The full path to the root of the repository base. */\n readonly baseDir = determineRepoBaseDirFromCwd(),\n ) {\n this.config = config;\n this.remoteConfig = config.github;\n this.remoteParams = {owner: config.github.owner, repo: config.github.name};\n this.mainBranchName = config.github.mainBranchName;\n }\n\n /** Executes the given git command. Throws if the command fails. */\n run(args: string[], options?: GitCommandRunOptions): Omit, 'status'> {\n const result = this.runGraceful(args, options);\n if (result.status !== 0) {\n throw new GitCommandError(this, args);\n }\n // Omit `status` from the type so that it's obvious that the status is never\n // non-zero as explained in the method description.\n return result as Omit, 'status'>;\n }\n\n /**\n * Spawns a given Git command process. Does not throw if the command fails. Additionally,\n * if there is any stderr output, the output will be printed. This makes it easier to\n * info failed commands.\n */\n runGraceful(args: string[], options: GitCommandRunOptions = {}): SpawnSyncReturns {\n /** The git command to be run. */\n const gitCommand = args[0];\n\n if (isDryRun() && gitCommand === 'push') {\n Log.debug(`\"git push\" is not able to be run in dryRun mode.`);\n throw new DryRunError();\n }\n\n // Clear the credential helper that is used, preventing the temporary token from being saved as a\n // valid token for future use.\n args = ['-c', 'credential.helper=', ...args];\n // To improve the debugging experience in case something fails, we print all executed Git\n // commands at the DEBUG level to better understand the git actions occurring.\n // Note that we sanitize the command before printing it to the console. We do not want to\n // print an access token if it is contained in the command. It's common to share errors with\n // others if the tool failed, and we do not want to leak tokens.\n Log.debug('Executing: git', this.sanitizeConsoleOutput(args.join(' ')));\n\n const result = spawnSync(this.gitBinPath, args, {\n cwd: this.baseDir,\n stdio: 'pipe',\n ...options,\n // Encoding is always `utf8` and not overridable. This ensures that this method\n // always returns `string` as output instead of buffers.\n encoding: 'utf8',\n });\n\n Log.debug(`Status: ${result.status}, Error: ${!!result.error}, Signal: ${result.signal}`);\n\n if (result.status !== 0 && result.stderr !== null) {\n // Git sometimes prints the command if it failed. This means that it could\n // potentially leak the Github token used for accessing the remote. To avoid\n // printing a token, we sanitize the string before printing the stderr output.\n process.stderr.write(this.sanitizeConsoleOutput(result.stderr));\n }\n\n Log.debug('Stdout:', result.stdout);\n Log.debug('Stderr:', result.stderr);\n Log.debug('Process Error:', result.error);\n\n if (result.error !== undefined) {\n // Git sometimes prints the command if it failed. This means that it could\n // potentially leak the Github token used for accessing the remote. To avoid\n // printing a token, we sanitize the string before printing the stderr output.\n process.stderr.write(this.sanitizeConsoleOutput(result.error.message));\n }\n\n return result;\n }\n\n /** Git URL that resolves to the configured repository. */\n getRepoGitUrl() {\n return getRepositoryGitUrl(this.remoteConfig);\n }\n\n /** Whether the given branch contains the specified SHA. */\n hasCommit(branchName: string, sha: string): boolean {\n return this.run(['branch', branchName, '--contains', sha]).stdout !== '';\n }\n\n /** Whether the local repository is configured as shallow. */\n isShallowRepo(): boolean {\n return this.run(['rev-parse', '--is-shallow-repository']).stdout.trim() === 'true';\n }\n\n /** Gets the currently checked out branch or revision. */\n getCurrentBranchOrRevision(): string {\n const branchName = this.run(['rev-parse', '--abbrev-ref', 'HEAD']).stdout.trim();\n // If no branch name could be resolved. i.e. `HEAD` has been returned, then Git\n // is currently in a detached state. In those cases, we just want to return the\n // currently checked out revision/SHA.\n if (branchName === 'HEAD') {\n return this.run(['rev-parse', 'HEAD']).stdout.trim();\n }\n return branchName;\n }\n\n /** Gets whether the current Git repository has uncommitted changes. */\n hasUncommittedChanges(): boolean {\n // We also need to refresh the index in case some files have been touched\n // but not modified. The diff-index command will not check contents so we\n // manually need to refresh and cleanup the index before performing the diff.\n // Relevant info: https://git-scm.com/docs/git-diff-index#_non_cached_mode,\n // https://git-scm.com/docs/git-update-index and https://stackoverflow.com/a/34808299.\n this.runGraceful(['update-index', '-q', '--refresh']);\n\n return this.runGraceful(['diff-index', '--quiet', 'HEAD']).status !== 0;\n }\n\n /**\n * Checks out a requested branch or revision, optionally cleaning the state of the repository\n * before attempting the checking. Returns a boolean indicating whether the branch or revision\n * was cleanly checked out.\n */\n checkout(branchOrRevision: string, cleanState: boolean): boolean {\n if (cleanState) {\n // Abort any outstanding ams.\n this.runGraceful(['am', '--abort'], {stdio: 'ignore'});\n // Abort any outstanding cherry-picks.\n this.runGraceful(['cherry-pick', '--abort'], {stdio: 'ignore'});\n // Abort any outstanding rebases.\n this.runGraceful(['rebase', '--abort'], {stdio: 'ignore'});\n // Clear any changes in the current repo.\n this.runGraceful(['reset', '--hard'], {stdio: 'ignore'});\n }\n return this.runGraceful(['checkout', branchOrRevision], {stdio: 'ignore'}).status === 0;\n }\n\n /** Retrieve a list of all files in the repository changed since the provided shaOrRef. */\n allChangesFilesSince(shaOrRef = 'HEAD'): string[] {\n return Array.from(\n new Set([\n ...gitOutputAsArray(this.runGraceful(['diff', '--name-only', '--diff-filter=d', shaOrRef])),\n ...gitOutputAsArray(this.runGraceful(['ls-files', '--others', '--exclude-standard'])),\n ]),\n );\n }\n\n /** Retrieve a list of all files currently staged in the repostitory. */\n allStagedFiles(): string[] {\n return gitOutputAsArray(\n this.runGraceful(['diff', '--name-only', '--diff-filter=ACM', '--staged']),\n );\n }\n\n /** Retrieve a list of all files tracked in the repository. */\n allFiles(): string[] {\n return gitOutputAsArray(this.runGraceful(['ls-files']));\n }\n\n /**\n * Sanitizes the given console message. This method can be overridden by\n * derived classes. e.g. to sanitize access tokens from Git commands.\n */\n sanitizeConsoleOutput(value: string) {\n return value;\n }\n\n /** The singleton instance of the unauthenticated `GitClient`. */\n private static _unauthenticatedInstance: Promise | null = null;\n\n /**\n * Static method to get the singleton instance of the `GitClient`,\n * creating it, if not created yet.\n */\n static async get(): Promise {\n // If there is no cached instance, create one and cache the promise immediately.\n // This avoids constructing a client twice accidentally when e.g. waiting for the\n // configuration to be loaded.\n if (GitClient._unauthenticatedInstance === null) {\n GitClient._unauthenticatedInstance = (async () => {\n return new GitClient(await getConfig([assertValidGithubConfig]));\n })();\n }\n\n return GitClient._unauthenticatedInstance;\n }\n}\n\n/**\n * Takes the output from `run` and `runGraceful` and returns an array of strings for each\n * new line. Git commands typically return multiple output values for a command a set of\n * strings separated by new lines.\n *\n * Note: This is specifically created as a locally available function for usage as convenience\n * utility within `GitClient`'s methods to create outputs as array.\n */\nfunction gitOutputAsArray(gitCommandResult: SpawnSyncReturns): string[] {\n return gitCommandResult.stdout\n .split('\\n')\n .map((x) => x.trim())\n .filter((x) => !!x);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {URL} from 'url';\n\nimport {GithubConfig} from '../config.js';\nimport {GitClient} from './git-client.js';\n\n/** URL to the Github page where personal access tokens can be managed. */\nexport const GITHUB_TOKEN_SETTINGS_URL = 'https://github.com/settings/tokens';\n\n/** URL to the Github page where personal access tokens can be generated. */\nexport const GITHUB_TOKEN_GENERATE_URL = 'https://github.com/settings/tokens/new';\n\n/** Adds the provided token to the given Github HTTPs remote url. */\nexport function addTokenToGitHttpsUrl(githubHttpsUrl: string, token: string) {\n const url = new URL(githubHttpsUrl);\n url.password = token;\n url.username = 'x-access-token';\n return url.href;\n}\n\n/** Gets the repository Git URL for the given github config. */\nexport function getRepositoryGitUrl(\n config: Pick,\n githubToken?: string,\n): string {\n if (config.useSsh) {\n return `git@github.com:${config.owner}/${config.name}.git`;\n }\n const baseHttpUrl = `https://github.com/${config.owner}/${config.name}.git`;\n if (githubToken !== undefined) {\n return addTokenToGitHttpsUrl(baseHttpUrl, githubToken);\n }\n return baseHttpUrl;\n}\n\n/** Gets a Github URL that refers to a list of recent commits within a specified branch. */\nexport function getListCommitsInBranchUrl(client: GitClient, branchName: string) {\n const {owner, repo} = client.remoteParams;\n return `https://github.com/${owner}/${repo}/commits/${branchName}`;\n}\n\n/** Gets a Github URL for viewing the file contents of a specified file for the given ref. */\nexport function getFileContentsUrl(client: GitClient, ref: string, relativeFilePath: string) {\n const {owner, repo} = client.remoteParams;\n return `https://github.com/${owner}/${repo}/blob/${ref}/${relativeFilePath}`;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {params, types} from 'typed-graphqlify';\n\n/**\n * Graphql Github API query that can be used to find forks of a given repository\n * that are owned by the current viewer authenticated with the Github API.\n */\nexport const findOwnedForksOfRepoQuery = params(\n {\n $owner: 'String!',\n $name: 'String!',\n },\n {\n repository: params(\n {owner: '$owner', name: '$name'},\n {\n forks: params(\n {affiliations: 'OWNER', first: 1, orderBy: {field: 'NAME', direction: 'ASC'}},\n {\n nodes: [\n {\n owner: {\n login: types.string,\n },\n name: types.string,\n },\n ],\n },\n ),\n },\n ),\n },\n);\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertValidGithubConfig, getConfig, GithubConfig} from '../config.js';\nimport {findOwnedForksOfRepoQuery} from './graphql-queries.js';\nimport {yellow} from '../logging.js';\n\nimport {GitClient} from './git-client.js';\nimport {AuthenticatedGithubClient, GithubRepo} from './github.js';\nimport {\n getRepositoryGitUrl,\n GITHUB_TOKEN_GENERATE_URL,\n GITHUB_TOKEN_SETTINGS_URL,\n} from './github-urls.js';\n\n/** Describes a function that can be used to test for given Github OAuth scopes. */\nexport type OAuthScopeTestFunction = (scopes: string[], missing: string[]) => void;\n\n/** The possible types of users which could be used for authentication. */\ntype UserType = 'bot' | 'user';\n\n/**\n * Extension of the `GitClient` with additional utilities which are useful for\n * authenticated Git client instances.\n */\nexport class AuthenticatedGitClient extends GitClient {\n /**\n * Regular expression that matches the provided Github token. Used for\n * sanitizing the token from Git child process output.\n */\n private readonly _githubTokenRegex: RegExp = new RegExp(this.githubToken, 'g');\n\n /** The OAuth scopes available for the provided Github token. */\n private _cachedOauthScopes: Promise | null = null;\n\n /** Cached fork repositories of the authenticated user. */\n private _cachedForkRepositories: GithubRepo[] | null = null;\n\n /** Instance of an authenticated github client. */\n override readonly github = new AuthenticatedGithubClient(this.githubToken);\n\n protected constructor(\n readonly githubToken: string,\n readonly userType: UserType,\n config: {github: GithubConfig},\n baseDir?: string,\n ) {\n super(config, baseDir);\n }\n\n /** Sanitizes a given message by omitting the provided Github token if present. */\n override sanitizeConsoleOutput(value: string): string {\n return value.replace(this._githubTokenRegex, '');\n }\n\n /** Git URL that resolves to the configured repository. */\n override getRepoGitUrl() {\n return getRepositoryGitUrl(this.remoteConfig, this.githubToken);\n }\n\n /**\n * Assert the GitClient instance is using a token with permissions for the all of the\n * provided OAuth scopes.\n */\n async hasOauthScopes(testFn: OAuthScopeTestFunction): Promise {\n // Because bot accounts do not have the same structure for OAuth scopes, we always assume they\n // have the correct access.\n if (this.userType === 'bot') {\n return true;\n }\n\n const scopes = await this._fetchAuthScopesForToken();\n const missingScopes: string[] = [];\n // Test Github OAuth scopes and collect missing ones.\n testFn(scopes, missingScopes);\n // If no missing scopes are found, return true to indicate all OAuth Scopes are available.\n if (missingScopes.length === 0) {\n return true;\n }\n\n // Pre-constructed error message to log to the user, providing missing scopes and\n // remediation instructions.\n const error =\n `The provided does not have required permissions due to missing scope(s): ` +\n `${yellow(missingScopes.join(', '))}\\n\\n` +\n `Update the token in use at:\\n` +\n ` ${GITHUB_TOKEN_SETTINGS_URL}\\n\\n` +\n `Alternatively, a new token can be created at: ${GITHUB_TOKEN_GENERATE_URL}\\n`;\n\n return {error};\n }\n\n /** Gets an owned fork for the configured project of the authenticated user. */\n async getForkOfAuthenticatedUser(): Promise {\n const forks = await this.getAllForksOfAuthenticatedUser();\n\n if (forks.length === 0) {\n throw Error('Unable to find fork a for currently authenticated user.');\n }\n\n return forks[0];\n }\n\n /**\n * Finds all forks owned by the currently authenticated user in the Git client,\n *\n * The determined fork repositories are cached as we assume that the authenticated\n * user will not change during execution, or that no new forks are created.\n */\n async getAllForksOfAuthenticatedUser(): Promise {\n if (this._cachedForkRepositories !== null) {\n return this._cachedForkRepositories;\n }\n\n const {owner, name} = this.remoteConfig;\n const result = await this.github.graphql(findOwnedForksOfRepoQuery, {owner, name});\n\n return (this._cachedForkRepositories = result.repository.forks.nodes.map((node) => ({\n owner: node.owner.login,\n name: node.name,\n })));\n }\n\n /** Fetch the OAuth scopes for the loaded Github token. */\n private _fetchAuthScopesForToken() {\n // If the OAuth scopes have already been loaded, return the Promise containing them.\n if (this._cachedOauthScopes !== null) {\n return this._cachedOauthScopes;\n }\n // OAuth scopes are loaded via the /rate_limit endpoint to prevent\n // usage of a request against that rate_limit for this lookup.\n return (this._cachedOauthScopes = this.github.rateLimit.get().then((response) => {\n const scopes = response.headers['x-oauth-scopes'];\n\n // If no token is provided, or if the Github client is authenticated incorrectly,\n // the `x-oauth-scopes` response header is not set. We error in such cases as it\n // signifies a faulty of the\n if (scopes === undefined) {\n throw Error('Unable to retrieve OAuth scopes for token provided to Git client.');\n }\n\n return scopes\n .split(',')\n .map((scope) => scope.trim())\n .filter((scope) => scope !== '');\n }));\n }\n\n /** The previously configured access token. */\n private static _token: string | null = null;\n /** The singleton instance of the `AuthenticatedGitClient`. */\n private static _authenticatedInstance: Promise | null = null;\n /** The previously configured user type. */\n private static _userType: 'user' | 'bot';\n\n /**\n * Static method to get the singleton instance of the `AuthenticatedGitClient`,\n * creating it if it has not yet been created.\n */\n static override async get(): Promise {\n if (AuthenticatedGitClient._token === null) {\n throw new Error('No instance of `AuthenticatedGitClient` has been configured.');\n }\n\n // If there is no cached authenticated instance, create one and cache the promise\n // immediately. This avoids constructing a client twice accidentally when e.g. waiting\n // for the configuration to be loaded.\n if (AuthenticatedGitClient._authenticatedInstance === null) {\n AuthenticatedGitClient._authenticatedInstance = (async (\n token: string,\n userType: UserType,\n ) => {\n return new AuthenticatedGitClient(\n token,\n userType,\n await getConfig([assertValidGithubConfig]),\n );\n })(AuthenticatedGitClient._token, AuthenticatedGitClient._userType);\n }\n\n return AuthenticatedGitClient._authenticatedInstance;\n }\n\n /** Configures an authenticated git client. */\n static configure(token: string, userType: UserType = 'user'): void {\n if (AuthenticatedGitClient._token) {\n throw Error(\n 'Unable to configure `AuthenticatedGitClient` as it has been configured already.',\n );\n }\n\n AuthenticatedGitClient._token = token;\n AuthenticatedGitClient._userType = userType;\n }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/** Class describing a release-train. */\nexport class ReleaseTrain {\n /** Whether the release train is currently targeting a major. */\n isMajor = this.version.minor === 0 && this.version.patch === 0;\n\n constructor(\n /** Name of the branch for this release-train. */\n public branchName: string,\n /** Most recent version for this release train. */\n public version: semver.SemVer,\n ) {}\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {GithubClient, GithubRepo} from '../../utils/git/github.js';\nimport {GithubConfig} from '../../utils/config.js';\n\n/** Regular expression that matches version-branches. */\nconst versionBranchNameRegex = /^(\\d+)\\.(\\d+)\\.x$/;\n\n/** Field in `package.json` that is used to indicate an in-progress exceptional minor. */\nexport const exceptionalMinorPackageIndicator = '__ngDevExceptionalMinor__' as const;\n\n/** Object describing a repository that can be released, together with an API client. */\nexport interface ReleaseRepoWithApi extends GithubRepo {\n /** API client that can access the repository. */\n api: GithubClient;\n /** Name of the next branch. */\n nextBranchName: string;\n}\n\n/** Type describing a version-branch. */\nexport interface VersionBranch {\n /** Name of the branch in Git. e.g. `10.0.x`. */\n name: string;\n /**\n * Parsed SemVer version for the version-branch. Version branches technically do\n * not follow the SemVer format, but we can have representative SemVer versions\n * that can be used for comparisons, sorting and other checks.\n */\n parsed: semver.SemVer;\n}\n\n/** Describes the concrete version of a version branch. */\nexport interface VersionInfo {\n version: semver.SemVer;\n isExceptionalMinor: boolean;\n}\n\n/** Type describing the parsed contents of a `package.json`. */\nexport type PackageJson = {\n version: string;\n [exceptionalMinorPackageIndicator]?: boolean;\n [otherUnknownFields: string]: unknown;\n};\n\n/**\n * Gets the name of the next branch from the Github configuration.\n *\n * Note that there is a clear separation between the main branch of the\n * upstream remote repository and the `next` release-train branch.\n */\nexport function getNextBranchName(github: GithubConfig): string {\n return github.mainBranchName;\n}\n\n/** Gets the version info for a branch by reading the `package.json` upstream. */\nexport async function getVersionInfoForBranch(\n repo: ReleaseRepoWithApi,\n branchName: string,\n): Promise {\n const {data} = await repo.api.repos.getContent({\n owner: repo.owner,\n repo: repo.name,\n path: '/package.json',\n ref: branchName,\n });\n // Workaround for: https://github.com/octokit/rest.js/issues/32.\n // TODO: Remove cast once types of Octokit `getContent` are fixed.\n const content = (data as {content?: string}).content;\n if (!content) {\n throw Error(`Unable to read \"package.json\" file from repository.`);\n }\n const pkgJson = JSON.parse(Buffer.from(content, 'base64').toString()) as PackageJson;\n const parsedVersion = semver.parse(pkgJson.version);\n if (parsedVersion === null) {\n throw Error(`Invalid version detected in following branch: ${branchName}.`);\n }\n return {\n version: parsedVersion,\n isExceptionalMinor: pkgJson[exceptionalMinorPackageIndicator] === true,\n };\n}\n\n/** Whether the given branch corresponds to a version branch. */\nexport function isVersionBranch(branchName: string): boolean {\n return versionBranchNameRegex.test(branchName);\n}\n\n/**\n * Gets the version branches for the specified major versions in descending\n * order. i.e. latest version branches first.\n */\nexport async function getBranchesForMajorVersions(\n repo: ReleaseRepoWithApi,\n majorVersions: number[],\n): Promise {\n const branchData = await repo.api.paginate(repo.api.repos.listBranches, {\n owner: repo.owner,\n repo: repo.name,\n protected: true,\n });\n const branches: VersionBranch[] = [];\n\n for (const {name} of branchData) {\n if (!isVersionBranch(name)) {\n continue;\n }\n // Convert the version-branch into a SemVer version that can be used with the\n // SemVer utilities. e.g. to determine semantic order, compare versions.\n const parsed = convertVersionBranchToSemVer(name);\n // Collect all version-branches that match the specified major versions.\n if (parsed !== null && majorVersions.includes(parsed.major)) {\n branches.push({name, parsed});\n }\n }\n\n // Sort captured version-branches in descending order.\n return branches.sort((a, b) => semver.rcompare(a.parsed, b.parsed));\n}\n\n/**\n * Converts a given version-branch into a SemVer version that can be used with SemVer\n * utilities. e.g. to determine semantic order, extract major digit, compare.\n *\n * For example `10.0.x` will become `10.0.0` in SemVer. The patch digit is not\n * relevant but needed for parsing. SemVer does not allow `x` as patch digit.\n */\nexport function convertVersionBranchToSemVer(branchName: string): semver.SemVer | null {\n return semver.parse(branchName.replace(versionBranchNameRegex, '$1.$2.0'));\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseTrain} from './release-trains.js';\nimport {\n getBranchesForMajorVersions,\n getVersionInfoForBranch,\n ReleaseRepoWithApi,\n VersionBranch,\n} from './version-branches.js';\n\ninterface DeterminationCheckFns {\n canHaveExceptionalMinor: (rc: ReleaseTrain | null) => boolean;\n isValidReleaseCandidateVersion: (v: semver.SemVer) => boolean;\n isValidExceptionalMinorVersion: (v: semver.SemVer, rc: ReleaseTrain | null) => boolean;\n}\n\n/** The active release trains for a project. */\nexport class ActiveReleaseTrains {\n /** Release-train currently in the \"release-candidate\" or \"feature-freeze\" phase. */\n readonly releaseCandidate: ReleaseTrain | null = this.trains.releaseCandidate;\n /** Release-train in the `next` phase. */\n readonly next: ReleaseTrain = this.trains.next;\n /** Release-train currently in the \"latest\" phase. */\n readonly latest: ReleaseTrain = this.trains.latest;\n /** Release-train for an exceptional minor in progress. */\n readonly exceptionalMinor: ReleaseTrain | null = this.trains.exceptionalMinor;\n\n constructor(\n private trains: {\n releaseCandidate: ReleaseTrain | null;\n exceptionalMinor: ReleaseTrain | null;\n next: ReleaseTrain;\n latest: ReleaseTrain;\n },\n ) {}\n\n /** Whether the active release trains indicate the repository is in a feature freeze state. */\n isFeatureFreeze() {\n return this.releaseCandidate !== null && this.releaseCandidate.version.prerelease[0] === 'next';\n }\n\n /** Fetches the active release trains for the configured project. */\n static async fetch(repo: ReleaseRepoWithApi): Promise {\n return fetchActiveReleaseTrains(repo);\n }\n}\n\n/** Fetches the active release trains for the configured project. */\nasync function fetchActiveReleaseTrains(repo: ReleaseRepoWithApi): Promise {\n const nextBranchName = repo.nextBranchName;\n const {version: nextVersion} = await getVersionInfoForBranch(repo, nextBranchName);\n const next = new ReleaseTrain(nextBranchName, nextVersion);\n const majorVersionsToFetch: number[] = [];\n const checks: DeterminationCheckFns = {\n canHaveExceptionalMinor: () => false,\n isValidReleaseCandidateVersion: () => false,\n isValidExceptionalMinorVersion: () => false,\n };\n\n if (nextVersion.minor === 0) {\n // CASE 1: Next is for a new major. Potential release-candidate/feature-freeze train\n // can only be for the previous major. Usually patch is in the same minor as for RC/FF,\n // but technically two majors can be in the works, so we also need to consider the second\n // previous major\n\n // Example scenarios:\n // * next = v15.0.x, rc/ff = v14.4.x, exc-minor = disallowed, patch = v14.3.x\n // * next = v15.0.x rc/ff = null, exc-minor = null, patch = v14.3.x\n // * next = v15.0.x rc/ff = null, exc-minor = v14.4.x, patch = v14.3.x\n // Cases where two majors are in the works (unlikely- but technically possible)\n // * next = v15.0.x, rc/ff = v14.0.0, exc-minor = null, patch = v13.2.x\n // * next = v15.0.x, rc/ff = v14.0.0, exc-minor = v13.3.x, patch = v13.2.x\n majorVersionsToFetch.push(nextVersion.major - 1, nextVersion.major - 2);\n checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major - 1;\n checks.canHaveExceptionalMinor = (rc) => rc === null || rc.isMajor;\n checks.isValidExceptionalMinorVersion = (v, rc) =>\n v.major === (rc === null ? nextVersion.major : rc.version.major) - 1;\n } else if (nextVersion.minor === 1) {\n // CASE 2: Next is for the first minor of a major release. Potential release-candidate/feature-freeze\n // train is always guaranteed to be in the same major. Depending on if there is RC/FF, the patch train\n // would be in the same major, or in the previous one. Example scenarios:\n // * next = v15.1.x, rc/ff = v15.0.x, exc-minor = null, patch = v14.5.x\n // * next = v15.1.x, rc/ff = v15.0.x, exc-minor = v14.6.x, patch = v14.5.x\n // * next = v15.1.x, rc/ff = null, exc-minor = disallowed, patch = v15.0.x\n majorVersionsToFetch.push(nextVersion.major, nextVersion.major - 1);\n checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major;\n checks.canHaveExceptionalMinor = (rc) => rc !== null && rc.isMajor;\n checks.isValidExceptionalMinorVersion = (v, rc) => v.major === rc!.version.major - 1;\n } else {\n // CASE 3: Next for a normal minor (other cases as above). Potential release-candidate/feature-freeze\n // train and the patch train are always guaranteed to be in the same major. Example scenarios:\n // * next = v15.2.x, rc/ff = v15.1.x, exc-minor = disallowed, patch = v15.0.x\n // * next = v15.2.x, rc/ff = null, exc-minor = disallowed, patch = v15.1.x\n majorVersionsToFetch.push(nextVersion.major);\n checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major;\n checks.canHaveExceptionalMinor = () => false;\n }\n\n // Collect all version-branches that should be considered for the latest version-branch,\n // a potential exceptional minor train or feature-freeze/release-candidate train.\n const branches = await getBranchesForMajorVersions(repo, majorVersionsToFetch);\n const {latest, releaseCandidate, exceptionalMinor} =\n await findActiveReleaseTrainsFromVersionBranches(repo, next, branches, checks);\n\n if (latest === null) {\n throw Error(\n `Unable to determine the latest release-train. The following branches ` +\n `have been considered: [${branches.map((b) => b.name).join(', ')}]`,\n );\n }\n\n return new ActiveReleaseTrains({releaseCandidate, next, latest, exceptionalMinor});\n}\n\n/** Finds the currently active release trains from the specified version branches. */\nasync function findActiveReleaseTrainsFromVersionBranches(\n repo: ReleaseRepoWithApi,\n next: ReleaseTrain,\n branches: VersionBranch[],\n checks: DeterminationCheckFns,\n): Promise<{\n latest: ReleaseTrain | null;\n releaseCandidate: ReleaseTrain | null;\n exceptionalMinor: ReleaseTrain | null;\n}> {\n // Version representing the release-train currently in the next phase. Note that we ignore\n // patch and pre-release segments in order to be able to compare the next release train to\n // other release trains from version branches (which follow the `N.N.x` pattern).\n const nextReleaseTrainVersion = semver.parse(`${next.version.major}.${next.version.minor}.0`)!;\n const nextBranchName = repo.nextBranchName;\n\n let latest: ReleaseTrain | null = null;\n let releaseCandidate: ReleaseTrain | null = null;\n let exceptionalMinor: ReleaseTrain | null = null;\n\n // Iterate through the captured branches and find the latest non-prerelease branch and a\n // potential release candidate branch. From the collected branches we iterate descending\n // order (most recent semantic version-branch first). The first branch is either the latest\n // active version branch (i.e. patch), a feature-freeze/release-candidate branch (ff/rc) or\n // an in-progress exceptional minor:\n // * A FF/RC or exceptional minor branch cannot be more recent than the current next\n // version-branch, so we stop iterating once we found such a branch.\n // * As soon as we discover a version-branch not being an RC/FF or exceptional minor,\n // we know it is the active patch branch. We stop looking further.\n // * If we find a FF/RC branch, we continue looking for the next version-branch as\n // that one has to be an exceptional minor, or the latest active version-branch.\n for (const {name, parsed} of branches) {\n // It can happen that version branches have been accidentally created which are more recent\n // than the release-train in the next branch (i.e. `main`). We could ignore such branches\n // silently, but it might be symptomatic for an outdated version in the `next` branch, or an\n // accidentally created branch by the caretaker. In either way we want to raise awareness.\n if (semver.gt(parsed, nextReleaseTrainVersion)) {\n throw Error(\n `Discovered unexpected version-branch \"${name}\" for a release-train that is ` +\n `more recent than the release-train currently in the \"${nextBranchName}\" branch. ` +\n `Please either delete the branch if created by accident, or update the outdated ` +\n `version in the next branch (${nextBranchName}).`,\n );\n } else if (semver.eq(parsed, nextReleaseTrainVersion)) {\n throw Error(\n `Discovered unexpected version-branch \"${name}\" for a release-train that is already ` +\n `active in the \"${nextBranchName}\" branch. Please either delete the branch if ` +\n `created by accident, or update the version in the next branch (${nextBranchName}).`,\n );\n }\n\n const {version, isExceptionalMinor} = await getVersionInfoForBranch(repo, name);\n const releaseTrain = new ReleaseTrain(name, version);\n const isPrerelease = version.prerelease[0] === 'rc' || version.prerelease[0] === 'next';\n\n if (isExceptionalMinor) {\n if (exceptionalMinor !== null) {\n throw Error(\n `Unable to determine latest release-train. Found an additional exceptional minor ` +\n `version branch: \"${name}\". Already discovered: ${exceptionalMinor.branchName}.`,\n );\n }\n if (!checks.canHaveExceptionalMinor(releaseCandidate)) {\n throw Error(\n `Unable to determine latest release-train. Found an unexpected exceptional minor ` +\n `version branch: \"${name}\". No exceptional minor is currently allowed.`,\n );\n }\n if (!checks.isValidExceptionalMinorVersion(version, releaseCandidate)) {\n throw Error(\n `Unable to determine latest release-train. Found an invalid exceptional ` +\n `minor version branch: \"${name}\". Invalid version: ${version}.`,\n );\n }\n exceptionalMinor = releaseTrain;\n continue;\n }\n\n if (isPrerelease) {\n if (exceptionalMinor !== null) {\n throw Error(\n `Unable to determine latest release-train. Discovered a feature-freeze/release-candidate ` +\n `version branch (${name}) that is older than an in-progress exceptional ` +\n `minor (${exceptionalMinor.branchName}).`,\n );\n }\n if (releaseCandidate !== null) {\n throw Error(\n `Unable to determine latest release-train. Found two consecutive ` +\n `pre-release version branches. No exceptional minors are allowed currently, and ` +\n `there cannot be multiple feature-freeze/release-candidate branches: \"${name}\".`,\n );\n }\n if (!checks.isValidReleaseCandidateVersion(version)) {\n throw Error(\n `Discovered unexpected old feature-freeze/release-candidate branch. Expected no ` +\n `version-branch in feature-freeze/release-candidate mode for v${version.major}.`,\n );\n }\n releaseCandidate = releaseTrain;\n continue;\n }\n\n // The first non-prerelease and non-exceptional-minor branch is always picked up\n // as the release-train for `latest`. Once we discovered the latest release train,\n // we skip looking further as there are no possible older active release trains.\n latest = releaseTrain;\n break;\n }\n\n return {releaseCandidate: releaseCandidate, exceptionalMinor, latest};\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseConfig} from '../config/index.js';\nimport {LtsNpmDistTag} from './long-term-support.js';\n\n/**\n * Type describing the possible NPM dist tags used by Angular packages:\n * - latest: Stable versions. These are releases from the \"latest\" train.\n * - next: Next versions. These are releases from the FF/RC or \"next\" train.\n * - do-not-use-exceptional-minor: Exceptional minors have their own NPM dist tag since\n * we would not want to override `latest`, nor would we want to revert `@next` if\n * the version is already ahead. The tags are expected to be deleted after the minor\n * becomes stable.\n */\nexport type NpmDistTag = 'latest' | 'next' | 'do-not-use-exceptional-minor' | LtsNpmDistTag;\n\n/** Type describing an NPM package fetched from the registry. */\nexport interface NpmPackageInfo {\n /** Maps of versions and their package JSON objects. */\n 'versions': {[name: string]: undefined | object};\n /** Map of NPM dist-tags and their chosen version. */\n 'dist-tags': {[tagName: string]: string | undefined};\n /** Map of versions and their ISO release time. */\n 'time': {[name: string]: string};\n}\n\n/**\n * Cache for requested NPM package information. A cache is desirable as the NPM\n * registry requests are usually very large and slow.\n */\nexport const _npmPackageInfoCache: {[pkgName: string]: Promise} = {};\n\n/** Fetches the NPM package representing the project. */\nexport async function fetchProjectNpmPackageInfo(config: ReleaseConfig): Promise {\n return await fetchPackageInfoFromNpmRegistry(config.representativeNpmPackage);\n}\n\n/** Gets whether the given version is published to NPM or not */\nexport async function isVersionPublishedToNpm(\n version: semver.SemVer,\n config: ReleaseConfig,\n): Promise {\n const {versions} = await fetchProjectNpmPackageInfo(config);\n return versions[version.format()] !== undefined;\n}\n\n/** Fetches the specified NPM package from the NPM registry. */\nasync function fetchPackageInfoFromNpmRegistry(pkgName: string): Promise {\n if (_npmPackageInfoCache[pkgName] === undefined) {\n _npmPackageInfoCache[pkgName] = fetch(`https://registry.npmjs.org/${pkgName}`).then(\n (r) => r.json() as Promise,\n );\n }\n return await _npmPackageInfoCache[pkgName];\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseConfig} from '../config/index.js';\n\nimport {fetchProjectNpmPackageInfo} from './npm-registry.js';\n\n/** Type describing a NPM dist tag indicating long-term support. */\nexport type LtsNpmDistTag = `v${number}-lts`;\n\n/** Interface describing determined LTS branches. */\nexport interface LtsBranches {\n /** List of active LTS version branches. */\n active: LtsBranch[];\n /** List of inactive LTS version branches. */\n inactive: LtsBranch[];\n}\n\n/** Interface describing an LTS version branch. */\nexport interface LtsBranch {\n /** Name of the branch. */\n name: string;\n /** Most recent version for the given LTS branch. */\n version: semver.SemVer;\n /** NPM dist tag for the LTS version. */\n npmDistTag: LtsNpmDistTag;\n}\n\n/**\n * Number of months a major version in Angular is actively supported. See:\n * https://angular.io/guide/releases#support-policy-and-schedule.\n */\nconst majorActiveSupportDuration = 6;\n\n/**\n * Number of months a major version has active long-term support. See:\n * https://angular.io/guide/releases#support-policy-and-schedule.\n */\nconst majorLongTermSupportDuration = 12;\n\n/** Regular expression that matches LTS NPM dist tags. */\nconst ltsNpmDistTagRegex = /^v(\\d+)-lts$/;\n\n/** Finds all long-term support release trains from the specified NPM package. */\nexport async function fetchLongTermSupportBranchesFromNpm(\n config: ReleaseConfig,\n): Promise {\n const {'dist-tags': distTags, time} = await fetchProjectNpmPackageInfo(config);\n const today = new Date();\n const active: LtsBranch[] = [];\n const inactive: LtsBranch[] = [];\n\n // Iterate through the NPM package information and determine active/inactive LTS versions with\n // their corresponding branches. We assume that an LTS tagged version in NPM belongs to the\n // last-minor branch of a given major (i.e. we assume there are no outdated LTS NPM dist tags).\n for (const npmDistTag in distTags) {\n if (isLtsDistTag(npmDistTag)) {\n const version = semver.parse(distTags[npmDistTag])!;\n const branchName = `${version.major}.${version.minor}.x`;\n const majorReleaseDate = new Date(time[`${version.major}.0.0`]);\n const ltsEndDate = computeLtsEndDateOfMajor(majorReleaseDate);\n const ltsBranch: LtsBranch = {name: branchName, version, npmDistTag};\n // Depending on whether the LTS phase is still active, add the branch\n // to the list of active or inactive LTS branches.\n if (today <= ltsEndDate) {\n active.push(ltsBranch);\n } else {\n inactive.push(ltsBranch);\n }\n }\n }\n\n // Sort LTS branches in descending order. i.e. most recent ones first.\n active.sort((a, b) => semver.rcompare(a.version, b.version));\n inactive.sort((a, b) => semver.rcompare(a.version, b.version));\n\n return {active, inactive};\n}\n\n/** Gets whether the specified tag corresponds to a LTS dist tag. */\nexport function isLtsDistTag(tagName: string): tagName is LtsNpmDistTag {\n return ltsNpmDistTagRegex.test(tagName);\n}\n\n/**\n * Computes the date when long-term support ends for a major released at the\n * specified date.\n */\nexport function computeLtsEndDateOfMajor(majorReleaseDate: Date): Date {\n return new Date(\n majorReleaseDate.getFullYear(),\n majorReleaseDate.getMonth() + majorActiveSupportDuration + majorLongTermSupportDuration,\n majorReleaseDate.getDate(),\n majorReleaseDate.getHours(),\n majorReleaseDate.getMinutes(),\n majorReleaseDate.getSeconds(),\n majorReleaseDate.getMilliseconds(),\n );\n}\n\n/** Gets the long-term support NPM dist tag for a given major version. */\nexport function getLtsNpmDistTagOfMajor(major: number): LtsNpmDistTag {\n // LTS versions should be tagged in NPM in the following format: `v{major}-lts`.\n return `v${major}-lts` as const;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ConfigValidationError, NgDevConfig} from '../utils/config.js';\n\n/** Configuration for commit-message comands. */\nexport interface CommitMessageConfig {\n maxLineLength: number;\n minBodyLength: number;\n minBodyLengthTypeExcludes?: string[];\n scopes: string[];\n disallowFixup?: boolean;\n}\n\n/** Assert the provided config contains a `CommitMessageConfig`. */\nexport function assertValidCommitMessageConfig(\n config: T & Partial<{commitMessage: CommitMessageConfig}>,\n): asserts config is T & {commitMessage: CommitMessageConfig} {\n if (config.commitMessage === undefined) {\n throw new ConfigValidationError(`No configuration defined for \"commitMessage\"`);\n }\n}\n\n/** Scope requirement level to be set for each commit type. */\nexport enum ScopeRequirement {\n Required,\n Optional,\n Forbidden,\n}\n\nexport enum ReleaseNotesLevel {\n Hidden,\n Visible,\n}\n\n/** A commit type */\nexport interface CommitType {\n description: string;\n name: string;\n scope: ScopeRequirement;\n releaseNotesLevel: ReleaseNotesLevel;\n}\n\n/** The valid commit types for Angular commit messages. */\nexport const COMMIT_TYPES: {[key: string]: CommitType} = {\n build: {\n name: 'build',\n description: 'Changes to local repository build system and tooling',\n scope: ScopeRequirement.Optional,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n ci: {\n name: 'ci',\n description: 'Changes to CI configuration and CI specific tooling',\n scope: ScopeRequirement.Forbidden,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n docs: {\n name: 'docs',\n description: 'Changes which exclusively affects documentation.',\n scope: ScopeRequirement.Optional,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n feat: {\n name: 'feat',\n description: 'Creates a new feature',\n scope: ScopeRequirement.Required,\n releaseNotesLevel: ReleaseNotesLevel.Visible,\n },\n fix: {\n name: 'fix',\n description: 'Fixes a previously discovered failure/bug',\n scope: ScopeRequirement.Required,\n releaseNotesLevel: ReleaseNotesLevel.Visible,\n },\n perf: {\n name: 'perf',\n description: 'Improves performance without any change in functionality or API',\n scope: ScopeRequirement.Required,\n releaseNotesLevel: ReleaseNotesLevel.Visible,\n },\n refactor: {\n name: 'refactor',\n description: 'Refactor without any change in functionality or API (includes style changes)',\n scope: ScopeRequirement.Optional,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n release: {\n name: 'release',\n description: 'A release point in the repository',\n scope: ScopeRequirement.Forbidden,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n test: {\n name: 'test',\n description: \"Improvements or corrections made to the project's test suite\",\n scope: ScopeRequirement.Optional,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ConfigValidationError, NgDevConfig} from '../utils/config.js';\n\ninterface Formatter {\n matchers: string[];\n}\n\nexport interface FormatConfig {\n [key: string]: boolean | Formatter;\n}\n\n/** Retrieve and validate the config as `FormatConfig`. */\nexport function assertValidFormatConfig(\n config: T & Partial<{format: FormatConfig}>,\n): asserts config is T & {format: FormatConfig} {\n // List of errors encountered validating the config.\n const errors: string[] = [];\n if (config.format === undefined) {\n throw new ConfigValidationError(`No configuration defined for \"format\"`);\n }\n\n for (const [key, value] of Object.entries(config.format!)) {\n switch (typeof value) {\n case 'boolean':\n break;\n case 'object':\n checkFormatterConfig(key, value, errors);\n break;\n default:\n errors.push(`\"format.${key}\" is not a boolean or Formatter object`);\n }\n }\n if (errors.length) {\n throw new ConfigValidationError('Invalid \"format\" configuration', errors);\n }\n}\n\n/** Validate an individual Formatter config. */\nfunction checkFormatterConfig(key: string, config: Partial, errors: string[]) {\n if (config.matchers === undefined) {\n errors.push(`Missing \"format.${key}.matchers\" value`);\n }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ConfigValidationError, GithubConfig, NgDevConfig} from '../../utils/config.js';\n\n/**\n * Possible merge methods supported by the Github API.\n * https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button.\n */\nexport type GithubApiMergeMethod = 'merge' | 'squash' | 'rebase';\n\n/** Configuration for the Github API merge strategy. */\nexport interface GithubApiMergeStrategyConfig {\n /** Default method used for merging pull requests */\n default: GithubApiMergeMethod;\n /** Labels which specify a different merge method than the default. */\n labels?: {pattern: string; method: GithubApiMergeMethod}[];\n}\n\n/** Configuration for the merge script. */\nexport interface PullRequestConfig {\n /**\n * Configuration for the upstream remote. All of these options are optional as\n * defaults are provided by the common dev-infra github configuration.\n */\n remote?: GithubConfig;\n\n /** Required base commits for given branches. */\n requiredBaseCommits?: {[branchName: string]: string};\n\n /** List of statuses that are required before a pull request can be merged. */\n requiredStatuses?: {type: 'check' | 'status'; name: string}[];\n\n /**\n * Whether pull requests should be merged using the Github API. This can be enabled\n * if projects want to have their pull requests show up as `Merged` in the Github UI.\n * The downside is that fixup or squash commits no longer work as the Github API does\n * not support this.\n */\n githubApiMerge: false | GithubApiMergeStrategyConfig;\n\n /**\n * List of commit scopes which are exempted from target label content requirements. i.e. no `feat`\n * scopes in patch branches, no breaking changes in minor or patch changes.\n */\n targetLabelExemptScopes?: string[];\n\n /**\n * Optional map of validations to enable/disable, merged with the defaults from ng-dev.\n */\n validators?: PullRequestValidationConfig;\n\n /**\n * Whether target labeling should be disabled. Special option for repositories\n * not working with the canonical versioning and branching of Angular projects.\n *\n * Generally not recommended as Angular-owned projects are supposed to consistently\n * follow the canonical branching/versioning.\n */\n __noTargetLabeling?: boolean;\n}\n\n/** Loads and validates the merge configuration. */\nexport function assertValidPullRequestConfig(\n config: T & Partial<{pullRequest: PullRequestConfig}>,\n): asserts config is T & {pullRequest: PullRequestConfig} {\n const errors: string[] = [];\n if (config.pullRequest === undefined) {\n throw new ConfigValidationError(\n 'No pullRequest configuration found. Set the `pullRequest` configuration.',\n );\n }\n\n if (config.pullRequest.githubApiMerge === undefined) {\n errors.push('No explicit choice of merge strategy. Please set `githubApiMerge`.');\n }\n\n if (errors.length) {\n throw new ConfigValidationError('Invalid `pullRequest` configuration', errors);\n }\n}\n\nexport interface PullRequestValidationConfig {\n [key: `assert${string}`]: boolean;\n}\n", "export const createTypedObject = any>(LabelConstructor: T) => {\n return (val: Record[0]>) => {\n for (const key in val) {\n val[key] = new LabelConstructor(val[key]);\n }\n return val as unknown as Record>;\n };\n};\n\nexport interface LabelParams {\n /* The label string. */\n name: string;\n /* The label description. */\n description: string;\n /* The hexadecimal color code for the label, without the leading */\n color?: string;\n /** The repositories the label is to be used in. */\n repositories?: ManagedRepositories[];\n}\n\nexport class Label {\n /** The repositories the label is to be used in. */\n repositories = this.params.repositories || [\n ManagedRepositories.ANGULAR,\n ManagedRepositories.ANGULAR_CLI,\n ManagedRepositories.COMPONENTS,\n ManagedRepositories.DEV_INFRA,\n ];\n /* The label string. */\n name = this.params.name;\n /* The label description. */\n description = this.params.description;\n /* The hexadecimal color code for the label, without the leading */\n color = this.params.color;\n\n constructor(public readonly params: T) {}\n}\n\nexport enum ManagedRepositories {\n COMPONENTS = 'components',\n ANGULAR = 'angular',\n ANGULAR_CLI = 'angular-cli',\n DEV_INFRA = 'dev-infra',\n}\n", "import {createTypedObject, Label} from './base.js';\n\nexport class TargetLabel extends Label {\n // Field to ensure other labels are not assignable to `TargetLabel`.\n __hasTargetLabelMarker__ = true;\n}\n\n/**\n * Record capturing available target label names in the Angular organization.\n * A target label is set on a pull request to specify where its changes should land.\n *\n * More details can be found here:\n * https://docs.google.com/document/d/197kVillDwx-RZtSVOBtPb4BBIAw0E9RT3q3v6DZkykU#heading=h.lkuypj38h15d\n */\nexport const targetLabels = createTypedObject(TargetLabel)({\n TARGET_FEATURE: {\n description: 'This PR is targeted for a feature branch (outside of main and semver branches)',\n name: 'target: feature',\n },\n TARGET_LTS: {\n description: 'This PR is targeting a version currently in long-term support',\n name: 'target: lts',\n },\n TARGET_MAJOR: {\n description: 'This PR is targeted for the next major release',\n name: 'target: major',\n },\n TARGET_MINOR: {\n description: 'This PR is targeted for the next minor release',\n name: 'target: minor',\n },\n TARGET_PATCH: {\n description: 'This PR is targeted for the next patch release',\n name: 'target: patch',\n },\n TARGET_RC: {\n description: 'This PR is targeted for the next release-candidate',\n name: 'target: rc',\n },\n});\n", "import {Commit} from '../../../commit-message/parse.js';\nimport {createTypedObject, Label, LabelParams, ManagedRepositories} from './base.js';\n\nexport interface ManageLabelParams extends LabelParams {\n /** A matching function, if the label is automatically applied by our github action, otherwise false. */\n commitCheck: (c: Commit) => boolean;\n}\n\nclass ManagedLabel extends Label {\n /** A matching function, if the label is automatically applied by our github action, otherwise false. */\n commitCheck: (c: Commit) => boolean = this.params.commitCheck;\n}\n\nexport const managedLabels = createTypedObject(ManagedLabel)({\n DETECTED_BREAKING_CHANGE: {\n description: 'PR contains a commit with a breaking change',\n name: 'detected: breaking change',\n commitCheck: (c: Commit) => c.breakingChanges.length !== 0,\n },\n DETECTED_DEPRECATION: {\n description: 'PR contains a commit with a deprecation',\n name: 'detected: deprecation',\n commitCheck: (c: Commit) => c.deprecations.length !== 0,\n },\n DETECTED_FEATURE: {\n description: 'PR contains a feature commit',\n name: 'detected: feature',\n commitCheck: (c: Commit) => c.type === 'feat',\n },\n DETECTED_DOCS_CHANGE: {\n description: 'Related to the documentation',\n name: 'area: docs',\n commitCheck: (c: Commit) => c.type === 'docs',\n },\n DETECTED_INFRA_CHANGE: {\n description: 'Related the build and CI infrastructure of the project',\n name: 'area: build & ci',\n commitCheck: (c: Commit) => c.type === 'build' || c.type === 'ci',\n },\n DETECTED_PERF_CHANGE: {\n description: 'Issues related to performance',\n name: 'area: performance',\n commitCheck: (c: Commit) => c.type === 'perf',\n },\n\n // angular/angular specific labels.\n DETECTED_HTTP_CHANGE: {\n description: 'Issues related to HTTP and HTTP Client',\n name: 'area: common/http',\n commitCheck: (c: Commit) => c.scope === 'common/http' || c.scope === 'http',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_COMPILER_CHANGE: {\n description: \"Issues related to `ngc`, Angular's template compiler\",\n name: 'area: compiler',\n commitCheck: (c: Commit) => c.scope === 'compiler' || c.scope === 'compiler-cli',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_PLATFORM_BROWSER_CHANGE: {\n description: 'Issues related to the framework runtime',\n name: 'area: core',\n commitCheck: (c: Commit) =>\n c.scope === 'platform-browser' ||\n c.scope === 'core' ||\n c.scope === 'platform-browser-dynamic',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_PLATFORM_SERVER_CHANGE: {\n description: 'Issues related to server-side rendering',\n name: 'area: server',\n commitCheck: (c: Commit) => c.scope === 'platform-server',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_ZONES_CHANGE: {\n description: 'Issues related to zone.js',\n name: 'area: zones',\n commitCheck: (c: Commit) => c.scope === 'zone.js',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_LOCALIZE_CHANGE: {\n description: 'Issues related to localization and internationalization',\n name: 'area: i18n',\n commitCheck: (c: Commit) => c.scope === 'localize',\n repositories: [ManagedRepositories.ANGULAR],\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass ActionLabel extends Label {}\n\nexport const actionLabels = createTypedObject(ActionLabel)({\n ACTION_MERGE: {\n description: 'The PR is ready for merge by the caretaker',\n name: 'action: merge',\n },\n ACTION_CLEANUP: {\n description:\n 'The PR is in need of cleanup, either due to needing a rebase or in response to comments from reviews',\n name: 'action: cleanup',\n },\n ACTION_PRESUBMIT: {\n description: 'The PR is in need of a google3 presubmit',\n name: 'action: presubmit',\n },\n ACTION_GLOBAL_PRESUBMIT: {\n description: 'The PR is in need of a google3 global presubmit',\n name: 'action: global presubmit',\n },\n ACTION_REVIEW: {\n description: 'The PR is still awaiting reviews from at least one requested reviewer',\n name: 'action: review',\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass MergeLabel extends Label {}\n\nexport const mergeLabels = createTypedObject(MergeLabel)({\n MERGE_PRESERVE_COMMITS: {\n description: 'When the PR is merged, a rebase and merge should be performed',\n name: 'merge: preserve commits',\n },\n MERGE_SQUASH_COMMITS: {\n description: 'When the PR is merged, a squash and merge should be performed',\n name: 'merge: squash commits',\n },\n MERGE_FIX_COMMIT_MESSAGE: {\n description: 'When the PR is merged, rewrites/fixups of the commit messages are needed',\n name: 'merge: fix commit message',\n },\n MERGE_CARETAKER_NOTE: {\n description:\n 'Alert the caretaker performing the merge to check the PR for an out of normal action needed or note',\n name: 'merge: caretaker note',\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass PriorityLabel extends Label {}\n\nexport const priorityLabels = createTypedObject(PriorityLabel)({\n P0: {\n name: 'P0',\n description:\n 'Issue that causes an outage, breakage, or major function to be unusable, with no known workarounds',\n },\n P1: {\n name: 'P1',\n description:\n 'Impacts a large percentage of users; if a workaround exists it is partial or overly painful',\n },\n P2: {\n name: 'P2',\n description: 'The issue is important to a large percentage of users, with a workaround',\n },\n P3: {\n name: 'P3',\n description:\n 'An issue that is relevant to core functions, but does not impede progress. Important, but not urgent',\n },\n P4: {\n name: 'P4',\n description: 'A relatively minor issue that is not relevant to core functions',\n },\n P5: {\n name: 'P5',\n description:\n 'The team acknowledges the request but does not plan to address it, it remains open for discussion',\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass RequiresLabel extends Label {}\n\nexport const requiresLabels = createTypedObject(RequiresLabel)({\n REQUIRES_TGP: {\n name: 'requires: TGP',\n description: 'This PR requires a passing TGP before merging is allowed',\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass FeatureLabel extends Label {}\n\nexport const featureLabels = createTypedObject(FeatureLabel)({\n FEATURE_IN_BACKLOG: {\n name: 'feature: in backlog',\n description: 'Feature request for which voting has completed and is now in the backlog',\n },\n FEATURE_VOTES_REQUIRED: {\n name: 'feature: votes required',\n description: 'Feature request which is currently still in the voting phase',\n },\n FEATURE_UNDER_CONSIDERATION: {\n name: 'feature: under consideration',\n description:\n 'Feature request for which voting has completed and the request is now under consideration',\n },\n FEATURE_INSUFFICIENT_VOTES: {\n name: 'feature: insufficient votes',\n description:\n 'Label to add when the not a sufficient number of votes or comments from unique authors',\n },\n});\n", "import {managedLabels} from './managed.js';\nimport {actionLabels} from './action.js';\nimport {mergeLabels} from './merge.js';\nimport {targetLabels} from './target.js';\nimport {priorityLabels} from './priority.js';\nimport {featureLabels} from './feature.js';\nimport {requiresLabels} from './requires.js';\nimport {Label, LabelParams} from './base.js';\n\nexport const allLabels = {\n ...managedLabels,\n ...actionLabels,\n ...mergeLabels,\n ...targetLabels,\n ...priorityLabels,\n ...featureLabels,\n ...requiresLabels,\n};\n\n// Ensures that all labels in `allLabels` properly implement `Label`.\nconst _typeCheckEnforceAllLabels: Record> = allLabels;\n\nexport {managedLabels, actionLabels, mergeLabels, targetLabels, priorityLabels, requiresLabels};\nexport {Label};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {debug} from 'console';\nimport yargs from 'semver';\nimport {green, Log} from '../../utils/logging.js';\nimport {BuiltPackageWithInfo, ReleaseConfig} from '../config/index.js';\n\n/**\n * Error class that can be used to report precheck failures. Messaging with\n * respect to the pre-check error is required to be handled manually.\n */\nexport class ReleasePrecheckError extends Error {}\n\n/**\n * Runs the release prechecks and checks whether they are passing for the\n * specified release config, intended new version and built release packages.\n *\n * @returns A boolean that indicates whether the prechecks are passing or not.\n */\nexport async function assertPassingReleasePrechecks(\n config: ReleaseConfig,\n newVersion: yargs.SemVer,\n builtPackagesWithInfo: BuiltPackageWithInfo[],\n): Promise {\n if (config.prereleaseCheck === undefined) {\n Log.warn(' ⚠ Skipping release pre-checks. No checks configured.');\n return true;\n }\n\n // The user-defined release precheck function is supposed to throw errors upon unmet\n // checks. We catch this here and print a better message and determine the status.\n try {\n // Note: We do not pass the `SemVer` instance to the user-customizable precheck\n // function. This is because we bundled our version of `semver` and the version\n // used in the precheck logic might be different, causing unexpected issues.\n await config.prereleaseCheck(newVersion.format(), builtPackagesWithInfo);\n Log.info(green(' ✓ Release pre-checks passing.'));\n return true;\n } catch (e) {\n if (e instanceof ReleasePrecheckError) {\n // Note: Error messaging is expected to be handled manually.\n debug(e.message);\n Log.error(` ✘ Release pre-checks failed. Please check the output above.`);\n } else {\n Log.error(e, '\\n');\n Log.error(` ✘ Release pre-checks errored with unexpected runtime error.`);\n }\n\n return false;\n }\n}\n"], - "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAEA,QAAM,aAAa,SAASA,cAAc;AAAA,IAAE;AAC5C,eAAW,YAAY,uBAAO,OAAO,IAAI;AAgBzC,QAAM,UAAU;AAQhB,QAAM,eAAe;AASrB,QAAM,cAAc;AAGpB,QAAM,qBAAqB,EAAE,MAAM,IAAI,YAAY,IAAI,WAAW,EAAE;AACpE,WAAO,OAAO,mBAAmB,UAAU;AAC3C,WAAO,OAAO,kBAAkB;AAUhC,aAASC,OAAO,QAAQ;AACtB,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI,UAAU,kDAAkD;AAAA,MACxE;AAEA,UAAI,QAAQ,OAAO,QAAQ,GAAG;AAC9B,YAAM,OAAO,UAAU,KACnB,OAAO,MAAM,GAAG,KAAK,EAAE,KAAK,IAC5B,OAAO,KAAK;AAEhB,UAAI,YAAY,KAAK,IAAI,MAAM,OAAO;AACpC,cAAM,IAAI,UAAU,oBAAoB;AAAA,MAC1C;AAEA,YAAM,SAAS;AAAA,QACb,MAAM,KAAK,YAAY;AAAA,QACvB,YAAY,IAAI,WAAW;AAAA,MAC7B;AAGA,UAAI,UAAU,IAAI;AAChB,eAAO;AAAA,MACT;AAEA,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,cAAQ,YAAY;AAEpB,aAAQ,QAAQ,QAAQ,KAAK,MAAM,GAAI;AACrC,YAAI,MAAM,UAAU,OAAO;AACzB,gBAAM,IAAI,UAAU,0BAA0B;AAAA,QAChD;AAEA,iBAAS,MAAM,GAAG;AAClB,cAAM,MAAM,GAAG,YAAY;AAC3B,gBAAQ,MAAM;AAEd,YAAI,MAAM,OAAO,KAAK;AAEpB,kBAAQ,MACL,MAAM,GAAG,MAAM,SAAS,CAAC;AAE5B,uBAAa,KAAK,KAAK,MAAM,QAAQ,MAAM,QAAQ,cAAc,IAAI;AAAA,QACvE;AAEA,eAAO,WAAW,OAAO;AAAA,MAC3B;AAEA,UAAI,UAAU,OAAO,QAAQ;AAC3B,cAAM,IAAI,UAAU,0BAA0B;AAAA,MAChD;AAEA,aAAO;AAAA,IACT;AAEA,aAASC,WAAW,QAAQ;AAC1B,UAAI,OAAO,WAAW,UAAU;AAC9B,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,OAAO,QAAQ,GAAG;AAC9B,YAAM,OAAO,UAAU,KACnB,OAAO,MAAM,GAAG,KAAK,EAAE,KAAK,IAC5B,OAAO,KAAK;AAEhB,UAAI,YAAY,KAAK,IAAI,MAAM,OAAO;AACpC,eAAO;AAAA,MACT;AAEA,YAAM,SAAS;AAAA,QACb,MAAM,KAAK,YAAY;AAAA,QACvB,YAAY,IAAI,WAAW;AAAA,MAC7B;AAGA,UAAI,UAAU,IAAI;AAChB,eAAO;AAAA,MACT;AAEA,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,cAAQ,YAAY;AAEpB,aAAQ,QAAQ,QAAQ,KAAK,MAAM,GAAI;AACrC,YAAI,MAAM,UAAU,OAAO;AACzB,iBAAO;AAAA,QACT;AAEA,iBAAS,MAAM,GAAG;AAClB,cAAM,MAAM,GAAG,YAAY;AAC3B,gBAAQ,MAAM;AAEd,YAAI,MAAM,OAAO,KAAK;AAEpB,kBAAQ,MACL,MAAM,GAAG,MAAM,SAAS,CAAC;AAE5B,uBAAa,KAAK,KAAK,MAAM,QAAQ,MAAM,QAAQ,cAAc,IAAI;AAAA,QACvE;AAEA,eAAO,WAAW,OAAO;AAAA,MAC3B;AAEA,UAAI,UAAU,OAAO,QAAQ;AAC3B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAEA,WAAO,QAAQ,UAAU,EAAE,OAAAD,QAAO,WAAAC,WAAU;AAC5C,WAAO,QAAQ,QAAQD;AACvB,WAAO,QAAQ,YAAYC;AAC3B,WAAO,QAAQ,qBAAqB;AAAA;AAAA;;;;;;;ACrKxBC,YAAAA,cAAAA;AAAZ,KAAA,SAAY,aAAW;AACrB,kBAAA,YAAA,YAAA,KAAA;AACA,kBAAA,YAAA,qBAAA,KAAA;AACA,kBAAA,YAAA,cAAA,KAAA;IACF,GAJYA,QAAAA,gBAAAA,QAAAA,cAIX,CAAA,EAAA;QAKY,aAAa,OAAO,cAAc;QAKlC,eAAe,OAAO,gBAAgB;AAqBnD,aAAS,uBAAuB,OAAc;AAC5C,aACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAc,gBAAgBA,QAAAA,YAAY;IAE/C;AAeA,aAAS,iBAAiB,OAAc;AACtC,aACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAc,gBAAgBA,QAAAA,YAAY;IAE/C;AAcA,aAAS,eAAe,OAAc;AACpC,aACE,OAAO,UAAU,YAAY,UAAU,QAAS,MAAc,gBAAgBA,QAAAA,YAAY;IAE9F;AAYA,aAAS,WAAW,MAAwB;AAC1C,aAAO,SAAS,SAAY,KAAK;IACnC;AASA,aAAS,aACPC,SACA,UACA,OAAsB;AADtB,UAAA,aAAA,QAAA;AAAA,mBAAwB;MAAA;AACxB,UAAA,UAAA,QAAA;AAAA,gBAAsB;MAAA;AAEtB,UAAI,CAACA,SAAQ;AAEX,eAAO;MACR;AAED,UAAM,UAAoB,CAAA;AAC1B,eAAiD,KAAA,GAAtB,KAAA,OAAO,QAAQA,OAAM,GAArB,KAAsB,GAAA,QAAtB,MAAwB;AAAxC,YAAA,KAAA,GAAA,KAAC,MAAG,GAAA,IAAE,QAAK,GAAA;AACpB,YAAI,WAAM;AACV,YAAI,UAAU,MAAM;AAClB,qBAAS;QACV,WAAU,MAAM,QAAQ,KAAK,GAAG;AAC/B,qBAAS,IAAI,OAAA,aAAa,OAAwB,OAAO,IAAI,GAAC,GAAA;QAC/D,WAAU,OAAO,UAAU,UAAU;AACpC,qBAAS,IAAA,OAAI,aAAa,OAAiB,KAAK,GAAC,GAAA;QAClD,OAAM;AACL,qBAAS,GAAA,OAAG,KAAK;QAClB;AACD,gBAAQ,KAAK,QAAQ,GAAG,OAAA,QAAM,IAAK,GAAG,OAAA,KAAG,GAAA,EAAA,OAAI,QAAM,CAAE;MACtD;AAED,UAAI,QAAQ,QAAQ,KAAK,GAAG;AAC5B,UAAI,UAAU;AACZ,gBAAQ,IAAA,OAAI,OAAK,GAAA;MAClB;AACD,aAAO;IACT;AAKA,aAAS,aAAa,MAA0BA,SAAe;AAE7D,aAAO,WAAW,IAAI,IAAI,aAAaA,OAAM;IAC/C;AAKA,aAAS,qBAAqBC,WAAiC,SAAsB;AACnF,aAAO,SAAA,OAASA,UAAS,QAAQ,EAAA,OAAG,aAAa,QAAWA,UAAS,UAAU,OAAO,CAAC;IACzF;AAKA,aAAS,eAAeA,WAA2B,SAAsB;AACvE,aAAO,YAAA,OAAYA,UAAS,MAAI,MAAA,EAAA,OAAOA,UAAS,QAAQ,EAAG,OAAA,aACzD,QACAA,UAAS,UACT,OAAO,CACR;IACH;AAKA,aAAS,YAAY,MAA0B,KAAgB,SAAsB;AAEnF,UAAM,QAAQ,IAAI;AAGlB,UAAI,UAAU,UAAa,UAAU,MAAM;AACzC,cAAM,IAAI,MAAM,yCAAyC;MAC1D;AAGC,YAAc,gBAAiB,IAAY;AAG7C,aAAO,WAAW,MAAM,OAAO,OAAO;IACxC;AAKA,aAAS,WAAW,MAA0B,OAAgB,SAAsB;AAClF,cAAQ,OAAO,OAAK;QAClB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACH,gBAAM,IAAI,MAAM,kBAAA,OAAkB,OAAO,OAAK,yBAAA,CAAyB;QACzE,KAAK;AAEH,cAAI,UAAU,MAAM;AAClB,kBAAM,IAAI,MAAM,oBAAoB;UACrC;AACD,cAAI,eAAe,KAAK,GAAG;AACzB,mBAAO,GAAA,OAAG,aAAa,MAAM,MAAM,aAAa,GAAC,GAAA;UAClD,WAAU,MAAM,QAAQ,KAAK,GAAG;AAC/B,mBAAO,YAAY,MAAM,OAAO,OAAO;UACxC,OAAM;AACL,mBAAO,aAAa,MAAM,OAAO,OAAO;UACzC;QACH,KAAK;AAEH,iBAAO;QACT;AACE,gBAAM,IAAI,MAAM,sBAAA,OAAsB,OAAO,KAAK,CAAE;MACvD;IACH;AAKA,aAAS,aAAa,MAA0B,KAAa,SAAsB;AACjF,UAAM,SAAmB,CAAA;AAGzB,eAA8C,KAAA,GAAnB,KAAA,OAAO,QAAQ,GAAG,GAAlB,KAAmB,GAAA,QAAnB,MAAqB;AAArC,YAAA,KAAA,GAAA,KAAC,MAAG,GAAA,IAAE,QAAK,GAAA;AACpB,eAAO,KAAK,WAAW,KAAK,OAAO,OAAO,CAAC;MAC5C;AAGD,eAAmD,KAAA,GAAjC,KAAA,OAAO,sBAAsB,GAAG,GAAhC,KAAiC,GAAA,QAAjC,MAAmC;AAAhD,YAAM,MAAG,GAAA;AACZ,YAAM,QAAS,IAAY;AAC3B,YAAI,uBAAuB,KAAK,GAAG;AACjC,iBAAO,KAAK,qBAAqB,OAAO,OAAO,CAAC;QACjD,WAAU,iBAAiB,KAAK,GAAG;AAClC,kBAAQ,UAAU,IAAI,KAAK,KAAK;AAChC,iBAAO,KAAK,MAAA,OAAM,MAAM,IAAI,CAAE;QAC/B;MACF;AAGD,UAAI,OAAO,WAAW,GAAG;AACvB,cAAM,IAAI,MAAM,8BAA8B;MAC/C;AAGD,aAAO,GAAA,OAAG,WAAW,IAAI,CAAC,EAAA,OAAG,aAAc,IAAY,aAAa,GAAK,GAAA,EAAA,OAAA,OAAO,KAAK,EAAE,EAAE,KAAI,GAAE,GAAA;IACjG;AAKM,aAAU,OAAO,OAA8B;AAEnD,UAAM,UAAyB;QAC7B,WAAW,oBAAI,IAAG;;AAIpB,UAAI,OAAO,aAAa,QAAW,OAAO,OAAO;AAGjD,UAAM,WAAW,oBAAI,IAAG;AACxB,UAAI,mBAAmB;AACvB,UAAI,iBAAgC;QAElC,WAAW,oBAAI,IAAG;;AAEpB,aAAO,iBAAiB,UAAU,OAAO,GAAG;AAE1C,iBAA8B,KAAA,GAAA,KAAA,MAAM,KAAK,iBAAiB,UAAU,QAAO,CAAE,GAA/C,KAAgD,GAAA,QAAhD,MAAkD;AAArE,cAAA,KAAA,GAAA,KAAC,MAAG,GAAA,IAAEA,YAAQ,GAAA;AAEvB,cAAI,CAAC,SAAS,IAAI,GAAG,GAAG;AACtB,qBAAS,IAAI,KAAK,eAAeA,WAAU,cAAc,CAAC;UAC3D;QACF;AAGD,2BAAmB;AACnB,yBAAiB;UAEf,WAAW,oBAAI,IAAG;;MAErB;AAED,aAAO,OAAO,MAAM,KAAK,SAAS,OAAM,CAAE,EAAE,KAAK,EAAE;IACrD;AAEM,aAAU,iBAAiB,OAA8B;AAE7D,UAAM,UAAyB;QAC7B,WAAW,oBAAI,IAAG;;AAIpB,mBAAa,QAAW,OAAO,OAAO;AAGtC,UAAM,iBAAgC;QAEpC,WAAW,oBAAI,IAAG;;AAGpB,UAAI,SAAS;AACb,eAA2B,KAAA,GAAA,KAAA,MAAM,KAAK,QAAQ,UAAU,QAAO,CAAE,GAAtC,KAAuC,GAAA,QAAvC,MAAyC;AAAzD,YAAA,KAAA,GAAA,KAAGA,YAAQ,GAAA;AACpB,iBAAS,SAAS,eAAeA,WAAU,cAAc;MAC1D;AAED,aAAO;IACT;AC1RA,aAAS,cAAc,aAAmB;AAMxC,eAAS,QACP,qBACA,aAAe;AAEf,YAAI,OAAO,wBAAwB,UAAU;AAC3C,cAAI,CAAC,aAAa;AAChB,kBAAM,IAAI,MAAM,wBAAwB;UACzC;AACD,iBAAO;YACL,UAAU,WAAA;AAAM,qBAAA,GAAA,OAAG,aAAe,GAAA,EAAA,OAAA,mBAAmB,EAAG,OAAA,OAAO,WAAW,CAAC;YAAE;;QAEhF;AACD,eAAO;UACL,UAAU,WAAA;AAAM,mBAAA,GAAA,OAAG,WAAW,EAAA,OAAG,OAAO,mBAAmB,CAAC;UAAE;;;AAGlE,aAAO;IACT;QAKaC,SAAQ,cAAc,OAAO;QAK7B,WAAW,cAAc,UAAU;QAKnC,eAAe,cAAc,cAAc;AAwBxC,aAAAF,QAAUA,SAAgB,OAAQ;AAChD,UAAI,OAAOA,YAAW,UAAU;AAC9B,cAAM,IAAI,MAAM,6BAA6B;MAC9C;AACD,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,IAAI,MAAM,6BAAA,OAA6B,OAAOA,OAAM,CAAE;MAC7D;AAEC,YAAc,gBAAgBA;AAChC,aAAO;IACT;AAsBgB,aAAA,MAAwBG,QAAU,QAAc;AAC9D,aAAO,GAAG,OAAAA,QAAS,GAAA,EAAA,OAAA,MAAM;IAC3B;aA+BgB,SACd,MACA,UACA,OAAQ;;AAER,UAAMF,aAAQ,KAAA,CAAA,GACZ,GAAC,cAAaF,QAAAA,YAAY,UAC1B,GAAA,OAAI,MACJ,GAAA,WAAQ,UACR,GAAA,WAAU;AAGZ,aAAO,KAAE,CAAA,GAAA,GAAC,OAAO,YAAY,OAAA,MAAW,MAAA,EAAA,OAAA,UAAW,GAAA,CAAA,KAAIE,WAAQ;IACjE;AAKM,aAAU,UAAU,OAAa;AACrC,aAAO,KAAK,UAAU,KAAK;IAC7B;;;;;;;;;;;;;AChJM,aAAU,SAAY,KAAM;AAChC,aAAO;IACT;AAEgB,aAAA,GAAiB,UAAkB,UAAW;;AAC5D,UAAMA,aAAQ,KAAA,CAAA,GACZ,GAAC,cAAaF,QAAAA,YAAY,iBAC1B,GAAA,WAAQ,UACR,GAAA,WAAQ;AAEV,aAAO,KAAA,CAAA,GAAE,GAAC,OAAO,kBAAA,OAAkB,UAAQ,GAAA,CAAG,KAAIE,WAAQ;IAC5D;AAEM,aAAU,QAAWG,QAAwB;AACjD,UAAI,YAA4B,CAAA;AAChC,eAAwD,KAAA,GAArB,KAAA,OAAO,QAAQA,MAAK,GAApB,KAAqB,GAAA,QAArB,MAAuB;AAA/C,YAAA,KAAA,GAAA,KAAC,WAAQ,GAAA,IAAE,WAAQ,GAAA;AAC5B,oBAAS,SAAA,SAAA,CAAA,GACJ,SAAS,GACT,GAAG,UAAU,QAAQ,CAAC;MAE5B;AACD,aAAO;IACT;AAEA,aAAS,aAAU;;AACjB,UAAM,UAAM,KAAA,CAAA,GACV,GAAC,cAAaL,QAAAA,YAAY;AAE5B,aAAO;IACT;AAEA,QAAAK,SAAA,WAAA;AAAA,eAAAA,SAAA;;AACE,aAAA,eAAWA,QAAM,UAAA;QAAjB,KAAA,WAAA;AACE,iBAAO,WAAU;;;;MAClB,CAAA;AAED,aAAA,eAAWA,QAAM,UAAA;QAAjB,KAAA,WAAA;AACE,iBAAO,WAAU;;;;MAClB,CAAA;AAED,aAAA,eAAWA,QAAO,WAAA;QAAlB,KAAA,WAAA;AACE,iBAAO,WAAU;;;;MAClB,CAAA;AAEM,MAAAA,OAAQ,WAAf,SAAkC,IAAK;AACrC,eAAO,WAAU;;AAKZ,MAAAA,OAAK,QAAZ,SAAmD,IAAK;AACtD,eAAO,WAAU;;AAGZ,MAAAA,OAAA,SAAP,WAAA;AACE,eAAO,WAAU;;AAGZ,MAAAA,OAAQ,WAOXA;AACN,aAACA;IAAA,EAnCD;;;;;;;;;;;;;;;;;;;;ACxDA;AAAA;AAEA,QAAM,sBAAsB;AAE5B,QAAM,aAAa;AACnB,QAAM,mBAAmB,OAAO,oBACL;AAG3B,QAAM,4BAA4B;AAIlC,QAAM,wBAAwB,aAAa;AAE3C,QAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,yBAAyB;AAAA,MACzB,YAAY;AAAA,IACd;AAAA;AAAA;;;AClCA;AAAA;AAAA,QAAMC,SACJ,OAAO,YAAY,YACnB,QAAQ,OACR,QAAQ,IAAI,cACZ,cAAc,KAAK,QAAQ,IAAI,UAAU,IACvC,IAAI,SAAS,QAAQ,MAAM,UAAU,GAAG,IAAI,IAC5C,MAAM;AAAA,IAAC;AAEX,WAAO,UAAUA;AAAA;AAAA;;;ACRjB;AAAA;AAAA,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAMC,SAAQ;AACd,cAAU,OAAO,UAAU,CAAC;AAG5B,QAAM,KAAK,QAAQ,KAAK,CAAC;AACzB,QAAM,SAAS,QAAQ,SAAS,CAAC;AACjC,QAAM,MAAM,QAAQ,MAAM,CAAC;AAC3B,QAAM,IAAI,QAAQ,IAAI,CAAC;AACvB,QAAI,IAAI;AAER,QAAM,mBAAmB;AAQzB,QAAM,wBAAwB;AAAA,MAC5B,CAAC,OAAO,CAAC;AAAA,MACT,CAAC,OAAO,UAAU;AAAA,MAClB,CAAC,kBAAkB,qBAAqB;AAAA,IAC1C;AAEA,QAAM,gBAAgB,CAAC,UAAU;AAC/B,iBAAW,CAAC,OAAO,GAAG,KAAK,uBAAuB;AAChD,gBAAQ,MACL,MAAM,GAAG,QAAQ,EAAE,KAAK,GAAG,WAAW,MAAM,EAC5C,MAAM,GAAG,QAAQ,EAAE,KAAK,GAAG,WAAW,MAAM;AAAA,MACjD;AACA,aAAO;AAAA,IACT;AAEA,QAAM,cAAc,CAAC,MAAM,OAAO,aAAa;AAC7C,YAAM,OAAO,cAAc,KAAK;AAChC,YAAM,QAAQ;AACd,MAAAA,OAAM,MAAM,OAAO,KAAK;AACxB,QAAE,QAAQ;AACV,UAAI,SAAS;AACb,SAAG,SAAS,IAAI,OAAO,OAAO,WAAW,MAAM,MAAS;AACxD,aAAO,SAAS,IAAI,OAAO,MAAM,WAAW,MAAM,MAAS;AAAA,IAC7D;AAQA,gBAAY,qBAAqB,aAAa;AAC9C,gBAAY,0BAA0B,MAAM;AAM5C,gBAAY,wBAAwB,gBAAgB,mBAAmB;AAKvE,gBAAY,eAAe,IAAI,IAAI,EAAE,0BACd,IAAI,EAAE,0BACN,IAAI,EAAE,qBAAqB;AAElD,gBAAY,oBAAoB,IAAI,IAAI,EAAE,+BACd,IAAI,EAAE,+BACN,IAAI,EAAE,0BAA0B;AAK5D,gBAAY,wBAAwB,MAAM,IAAI,EAAE,sBAC5C,IAAI,EAAE,wBAAwB;AAElC,gBAAY,6BAA6B,MAAM,IAAI,EAAE,2BACjD,IAAI,EAAE,wBAAwB;AAMlC,gBAAY,cAAc,QAAQ,IAAI,EAAE,8BAC/B,IAAI,EAAE,2BAA2B;AAE1C,gBAAY,mBAAmB,SAAS,IAAI,EAAE,mCACrC,IAAI,EAAE,gCAAgC;AAK/C,gBAAY,mBAAmB,GAAG,mBAAmB;AAMrD,gBAAY,SAAS,UAAU,IAAI,EAAE,yBAC5B,IAAI,EAAE,sBAAsB;AAWrC,gBAAY,aAAa,KAAK,IAAI,EAAE,eACjC,IAAI,EAAE,eACP,IAAI,EAAE,SAAS;AAEjB,gBAAY,QAAQ,IAAI,IAAI,EAAE,aAAa;AAK3C,gBAAY,cAAc,WAAW,IAAI,EAAE,oBACxC,IAAI,EAAE,oBACP,IAAI,EAAE,SAAS;AAEjB,gBAAY,SAAS,IAAI,IAAI,EAAE,cAAc;AAE7C,gBAAY,QAAQ,cAAc;AAKlC,gBAAY,yBAAyB,GAAG,IAAI,EAAE,iCAAiC;AAC/E,gBAAY,oBAAoB,GAAG,IAAI,EAAE,4BAA4B;AAErE,gBAAY,eAAe,YAAY,IAAI,EAAE,4BAChB,IAAI,EAAE,4BACN,IAAI,EAAE,wBACV,IAAI,EAAE,gBACV,IAAI,EAAE,aACF;AAEzB,gBAAY,oBAAoB,YAAY,IAAI,EAAE,iCAChB,IAAI,EAAE,iCACN,IAAI,EAAE,6BACV,IAAI,EAAE,qBACV,IAAI,EAAE,aACF;AAE9B,gBAAY,UAAU,IAAI,IAAI,EAAE,YAAY,IAAI,EAAE,eAAe;AACjE,gBAAY,eAAe,IAAI,IAAI,EAAE,YAAY,IAAI,EAAE,oBAAoB;AAI3E,gBAAY,eAAe,GAAG,sBACJ,2CACI,6CACA,+BAA+B;AAC7D,gBAAY,UAAU,GAAG,IAAI,EAAE,0BAA0B;AACzD,gBAAY,cAAc,IAAI,EAAE,eAClB,MAAM,IAAI,EAAE,mBACN,IAAI,EAAE,sBACE;AAC5B,gBAAY,aAAa,IAAI,EAAE,SAAS,IAAI;AAC5C,gBAAY,iBAAiB,IAAI,EAAE,aAAa,IAAI;AAIpD,gBAAY,aAAa,SAAS;AAElC,gBAAY,aAAa,SAAS,IAAI,EAAE,kBAAkB,IAAI;AAC9D,YAAQ,mBAAmB;AAE3B,gBAAY,SAAS,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,eAAe;AACjE,gBAAY,cAAc,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,oBAAoB;AAI3E,gBAAY,aAAa,SAAS;AAElC,gBAAY,aAAa,SAAS,IAAI,EAAE,kBAAkB,IAAI;AAC9D,YAAQ,mBAAmB;AAE3B,gBAAY,SAAS,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,eAAe;AACjE,gBAAY,cAAc,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,oBAAoB;AAG3E,gBAAY,mBAAmB,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,kBAAkB;AAC9E,gBAAY,cAAc,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,iBAAiB;AAIxE,gBAAY,kBAAkB,SAAS,IAAI,EAAE,aACrC,IAAI,EAAE,eAAe,IAAI,EAAE,iBAAiB,IAAI;AACxD,YAAQ,wBAAwB;AAMhC,gBAAY,eAAe,SAAS,IAAI,EAAE,0BAEnB,IAAI,EAAE,oBACH;AAE1B,gBAAY,oBAAoB,SAAS,IAAI,EAAE,+BAEnB,IAAI,EAAE,yBACH;AAG/B,gBAAY,QAAQ,iBAAiB;AAErC,gBAAY,QAAQ,2BAA2B;AAC/C,gBAAY,WAAW,6BAA6B;AAAA;AAAA;;;ACxNpD;AAAA;AACA,QAAM,cAAc,OAAO,OAAO,EAAE,OAAO,KAAK,CAAC;AACjD,QAAM,YAAY,OAAO,OAAO,CAAE,CAAC;AACnC,QAAM,eAAe,aAAW;AAC9B,UAAI,CAAC,SAAS;AACZ,eAAO;AAAA,MACT;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,qBAAqB,CAAC,GAAG,MAAM;AACnC,YAAM,OAAO,QAAQ,KAAK,CAAC;AAC3B,YAAM,OAAO,QAAQ,KAAK,CAAC;AAE3B,UAAI,QAAQ,MAAM;AAChB,YAAI,CAAC;AACL,YAAI,CAAC;AAAA,MACP;AAEA,aAAO,MAAM,IAAI,IACZ,QAAQ,CAAC,OAAQ,KACjB,QAAQ,CAAC,OAAQ,IAClB,IAAI,IAAI,KACR;AAAA,IACN;AAEA,QAAM,sBAAsB,CAAC,GAAG,MAAM,mBAAmB,GAAG,CAAC;AAE7D,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACtBA;AAAA;AAAA,QAAMC,SAAQ;AACd,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAE1B,QAAM,eAAe;AACrB,QAAM,EAAE,mBAAmB,IAAI;AAC/B,QAAM,SAAN,MAAa;AAAA,MACX,YAAa,SAAS,SAAS;AAC7B,kBAAU,aAAa,OAAO;AAE9B,YAAI,mBAAmB,QAAQ;AAC7B,cAAI,QAAQ,UAAU,CAAC,CAAC,QAAQ,SAC5B,QAAQ,sBAAsB,CAAC,CAAC,QAAQ,mBAAmB;AAC7D,mBAAO;AAAA,UACT,OAAO;AACL,sBAAU,QAAQ;AAAA,UACpB;AAAA,QACF,WAAW,OAAO,YAAY,UAAU;AACtC,gBAAM,IAAI,UAAU,gDAAgD,OAAO,WAAW;AAAA,QACxF;AAEA,YAAI,QAAQ,SAAS,YAAY;AAC/B,gBAAM,IAAI;AAAA,YACR,0BAA0B;AAAA,UAC5B;AAAA,QACF;AAEA,QAAAA,OAAM,UAAU,SAAS,OAAO;AAChC,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AAGvB,aAAK,oBAAoB,CAAC,CAAC,QAAQ;AAEnC,cAAM,IAAI,QAAQ,KAAK,EAAE,MAAM,QAAQ,QAAQ,GAAG,EAAE,SAAS,GAAG,EAAE,KAAK;AAEvE,YAAI,CAAC,GAAG;AACN,gBAAM,IAAI,UAAU,oBAAoB,SAAS;AAAA,QACnD;AAEA,aAAK,MAAM;AAGX,aAAK,QAAQ,CAAC,EAAE;AAChB,aAAK,QAAQ,CAAC,EAAE;AAChB,aAAK,QAAQ,CAAC,EAAE;AAEhB,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAGA,YAAI,CAAC,EAAE,IAAI;AACT,eAAK,aAAa,CAAC;AAAA,QACrB,OAAO;AACL,eAAK,aAAa,EAAE,GAAG,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO;AAC5C,gBAAI,WAAW,KAAK,EAAE,GAAG;AACvB,oBAAM,MAAM,CAAC;AACb,kBAAI,OAAO,KAAK,MAAM,kBAAkB;AACtC,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAEA,aAAK,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AACvC,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,SAAU;AACR,aAAK,UAAU,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK;AACnD,YAAI,KAAK,WAAW,QAAQ;AAC1B,eAAK,WAAW,IAAI,KAAK,WAAW,KAAK,GAAG;AAAA,QAC9C;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,QAAS,OAAO;AACd,QAAAA,OAAM,kBAAkB,KAAK,SAAS,KAAK,SAAS,KAAK;AACzD,YAAI,EAAE,iBAAiB,SAAS;AAC9B,cAAI,OAAO,UAAU,YAAY,UAAU,KAAK,SAAS;AACvD,mBAAO;AAAA,UACT;AACA,kBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,YAAI,MAAM,YAAY,KAAK,SAAS;AAClC,iBAAO;AAAA,QACT;AAEA,eAAO,KAAK,YAAY,KAAK,KAAK,KAAK,WAAW,KAAK;AAAA,MACzD;AAAA,MAEA,YAAa,OAAO;AAClB,YAAI,EAAE,iBAAiB,SAAS;AAC9B,kBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,eACE,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK;AAAA,MAE9C;AAAA,MAEA,WAAY,OAAO;AACjB,YAAI,EAAE,iBAAiB,SAAS;AAC9B,kBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAGA,YAAI,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AACtD,iBAAO;AAAA,QACT,WAAW,CAAC,KAAK,WAAW,UAAU,MAAM,WAAW,QAAQ;AAC7D,iBAAO;AAAA,QACT,WAAW,CAAC,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AAC9D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI;AACR,WAAG;AACD,gBAAM,IAAI,KAAK,WAAW;AAC1B,gBAAM,IAAI,MAAM,WAAW;AAC3B,UAAAA,OAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,cAAI,MAAM,UAAa,MAAM,QAAW;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,GAAG;AAClB;AAAA,UACF,OAAO;AACL,mBAAO,mBAAmB,GAAG,CAAC;AAAA,UAChC;AAAA,QACF,SAAS,EAAE;AAAA,MACb;AAAA,MAEA,aAAc,OAAO;AACnB,YAAI,EAAE,iBAAiB,SAAS;AAC9B,kBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,YAAI,IAAI;AACR,WAAG;AACD,gBAAM,IAAI,KAAK,MAAM;AACrB,gBAAM,IAAI,MAAM,MAAM;AACtB,UAAAA,OAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,cAAI,MAAM,UAAa,MAAM,QAAW;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,GAAG;AAClB;AAAA,UACF,OAAO;AACL,mBAAO,mBAAmB,GAAG,CAAC;AAAA,UAChC;AAAA,QACF,SAAS,EAAE;AAAA,MACb;AAAA,MAIA,IAAK,SAAS,YAAY,gBAAgB;AACxC,gBAAQ,SAAS;AAAA,UACf,KAAK;AACH,iBAAK,WAAW,SAAS;AACzB,iBAAK,QAAQ;AACb,iBAAK,QAAQ;AACb,iBAAK;AACL,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UACF,KAAK;AACH,iBAAK,WAAW,SAAS;AACzB,iBAAK,QAAQ;AACb,iBAAK;AACL,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UACF,KAAK;AAIH,iBAAK,WAAW,SAAS;AACzB,iBAAK,IAAI,SAAS,YAAY,cAAc;AAC5C,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UAGF,KAAK;AACH,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK,IAAI,SAAS,YAAY,cAAc;AAAA,YAC9C;AACA,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UAEF,KAAK;AAKH,gBACE,KAAK,UAAU,KACf,KAAK,UAAU,KACf,KAAK,WAAW,WAAW,GAC3B;AACA,mBAAK;AAAA,YACP;AACA,iBAAK,QAAQ;AACb,iBAAK,QAAQ;AACb,iBAAK,aAAa,CAAC;AACnB;AAAA,UACF,KAAK;AAKH,gBAAI,KAAK,UAAU,KAAK,KAAK,WAAW,WAAW,GAAG;AACpD,mBAAK;AAAA,YACP;AACA,iBAAK,QAAQ;AACb,iBAAK,aAAa,CAAC;AACnB;AAAA,UACF,KAAK;AAKH,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK;AAAA,YACP;AACA,iBAAK,aAAa,CAAC;AACnB;AAAA,UAGF,KAAK,OAAO;AACV,kBAAM,OAAO,OAAO,cAAc,IAAI,IAAI;AAE1C,gBAAI,CAAC,cAAc,mBAAmB,OAAO;AAC3C,oBAAM,IAAI,MAAM,iDAAiD;AAAA,YACnE;AAEA,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK,aAAa,CAAC,IAAI;AAAA,YACzB,OAAO;AACL,kBAAI,IAAI,KAAK,WAAW;AACxB,qBAAO,EAAE,KAAK,GAAG;AACf,oBAAI,OAAO,KAAK,WAAW,OAAO,UAAU;AAC1C,uBAAK,WAAW;AAChB,sBAAI;AAAA,gBACN;AAAA,cACF;AACA,kBAAI,MAAM,IAAI;AAEZ,oBAAI,eAAe,KAAK,WAAW,KAAK,GAAG,KAAK,mBAAmB,OAAO;AACxE,wBAAM,IAAI,MAAM,uDAAuD;AAAA,gBACzE;AACA,qBAAK,WAAW,KAAK,IAAI;AAAA,cAC3B;AAAA,YACF;AACA,gBAAI,YAAY;AAGd,kBAAI,aAAa,CAAC,YAAY,IAAI;AAClC,kBAAI,mBAAmB,OAAO;AAC5B,6BAAa,CAAC,UAAU;AAAA,cAC1B;AACA,kBAAI,mBAAmB,KAAK,WAAW,IAAI,UAAU,MAAM,GAAG;AAC5D,oBAAI,MAAM,KAAK,WAAW,EAAE,GAAG;AAC7B,uBAAK,aAAa;AAAA,gBACpB;AAAA,cACF,OAAO;AACL,qBAAK,aAAa;AAAA,cACpB;AAAA,YACF;AACA;AAAA,UACF;AAAA,UACA;AACE,kBAAM,IAAI,MAAM,+BAA+B,SAAS;AAAA,QAC5D;AACA,aAAK,MAAM,KAAK,OAAO;AACvB,YAAI,KAAK,MAAM,QAAQ;AACrB,eAAK,OAAO,IAAI,KAAK,MAAM,KAAK,GAAG;AAAA,QACrC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC7SjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAMC,SAAQ,CAAC,SAAS,SAAS,cAAc,UAAU;AACvD,UAAI,mBAAmB,QAAQ;AAC7B,eAAO;AAAA,MACT;AACA,UAAI;AACF,eAAO,IAAI,OAAO,SAAS,OAAO;AAAA,MACpC,SAAS,IAAP;AACA,YAAI,CAAC,aAAa;AAChB,iBAAO;AAAA,QACT;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAEA,WAAO,UAAUA;AAAA;AAAA;;;ACfjB;AAAA;AAAA,QAAMC,SAAQ;AACd,QAAM,QAAQ,CAAC,SAAS,YAAY;AAClC,YAAM,IAAIA,OAAM,SAAS,OAAO;AAChC,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAMC,SAAQ;AACd,QAAM,QAAQ,CAAC,SAAS,YAAY;AAClC,YAAM,IAAIA,OAAM,QAAQ,KAAK,EAAE,QAAQ,UAAU,EAAE,GAAG,OAAO;AAC7D,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,SAAS;AAEf,QAAM,MAAM,CAAC,SAAS,SAAS,SAAS,YAAY,mBAAmB;AACrE,UAAI,OAAQ,YAAa,UAAU;AACjC,yBAAiB;AACjB,qBAAa;AACb,kBAAU;AAAA,MACZ;AAEA,UAAI;AACF,eAAO,IAAI;AAAA,UACT,mBAAmB,SAAS,QAAQ,UAAU;AAAA,UAC9C;AAAA,QACF,EAAE,IAAI,SAAS,YAAY,cAAc,EAAE;AAAA,MAC7C,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,QAAMC,SAAQ;AAEd,QAAM,OAAO,CAAC,UAAU,aAAa;AACnC,YAAM,KAAKA,OAAM,UAAU,MAAM,IAAI;AACrC,YAAM,KAAKA,OAAM,UAAU,MAAM,IAAI;AACrC,YAAM,aAAa,GAAG,QAAQ,EAAE;AAEhC,UAAI,eAAe,GAAG;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,WAAW,aAAa;AAC9B,YAAM,cAAc,WAAW,KAAK;AACpC,YAAM,aAAa,WAAW,KAAK;AACnC,YAAM,aAAa,CAAC,CAAC,YAAY,WAAW;AAC5C,YAAM,YAAY,CAAC,CAAC,WAAW,WAAW;AAE1C,UAAI,aAAa,CAAC,YAAY;AAQ5B,YAAI,CAAC,WAAW,SAAS,CAAC,WAAW,OAAO;AAC1C,iBAAO;AAAA,QACT;AAIA,YAAI,YAAY,OAAO;AAErB,iBAAO;AAAA,QACT;AAEA,YAAI,YAAY,OAAO;AAErB,iBAAO;AAAA,QACT;AAGA,eAAO;AAAA,MACT;AAGA,YAAM,SAAS,aAAa,QAAQ;AAEpC,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAO,SAAS;AAAA,MAClB;AAEA,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAO,SAAS;AAAA,MAClB;AAEA,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAO,SAAS;AAAA,MAClB;AAGA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AChEjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAMC,SAAQ;AACd,QAAM,aAAa,CAAC,SAAS,YAAY;AACvC,YAAM,SAASA,OAAM,SAAS,OAAO;AACrC,aAAQ,UAAU,OAAO,WAAW,SAAU,OAAO,aAAa;AAAA,IACpE;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,UAAU,CAAC,GAAG,GAAG,UACrB,IAAI,OAAO,GAAG,KAAK,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC;AAEnD,WAAO,UAAU;AAAA;AAAA;;;ACJjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,WAAW,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,eAAe,CAAC,GAAG,MAAM,QAAQ,GAAG,GAAG,IAAI;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,eAAe,CAAC,GAAG,GAAG,UAAU;AACpC,YAAM,WAAW,IAAI,OAAO,GAAG,KAAK;AACpC,YAAM,WAAW,IAAI,OAAO,GAAG,KAAK;AACpC,aAAO,SAAS,QAAQ,QAAQ,KAAK,SAAS,aAAa,QAAQ;AAAA,IACrE;AACA,WAAO,UAAU;AAAA;AAAA;;;ACNjB;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,OAAO,CAAC,MAAM,UAAU,KAAK,KAAK,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC;AAC3E,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,QAAQ,CAAC,MAAM,UAAU,KAAK,KAAK,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC;AAC5E,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,IAAI;AACnD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,IAAI;AACnD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,MAAM;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,MAAM;AACtD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,KAAK;AACX,QAAM,MAAM;AAEZ,QAAM,MAAM,CAAC,GAAG,IAAI,GAAG,UAAU;AAC/B,cAAQ,IAAI;AAAA,QACV,KAAK;AACH,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,iBAAO,MAAM;AAAA,QAEf,KAAK;AACH,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,iBAAO,MAAM;AAAA,QAEf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB;AACE,gBAAM,IAAI,UAAU,qBAAqB,IAAI;AAAA,MACjD;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;ACnDjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAMC,SAAQ;AACd,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAE1B,QAAM,SAAS,CAAC,SAAS,YAAY;AACnC,UAAI,mBAAmB,QAAQ;AAC7B,eAAO;AAAA,MACT;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,kBAAU,OAAO,OAAO;AAAA,MAC1B;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO;AAAA,MACT;AAEA,gBAAU,WAAW,CAAC;AAEtB,UAAI,QAAQ;AACZ,UAAI,CAAC,QAAQ,KAAK;AAChB,gBAAQ,QAAQ,MAAM,QAAQ,oBAAoB,GAAG,EAAE,cAAc,GAAG,EAAE,OAAO;AAAA,MACnF,OAAO;AAUL,cAAM,iBAAiB,QAAQ,oBAAoB,GAAG,EAAE,iBAAiB,GAAG,EAAE;AAC9E,YAAI;AACJ,gBAAQ,OAAO,eAAe,KAAK,OAAO,OACrC,CAAC,SAAS,MAAM,QAAQ,MAAM,GAAG,WAAW,QAAQ,SACvD;AACA,cAAI,CAAC,SACC,KAAK,QAAQ,KAAK,GAAG,WAAW,MAAM,QAAQ,MAAM,GAAG,QAAQ;AACnE,oBAAQ;AAAA,UACV;AACA,yBAAe,YAAY,KAAK,QAAQ,KAAK,GAAG,SAAS,KAAK,GAAG;AAAA,QACnE;AAEA,uBAAe,YAAY;AAAA,MAC7B;AAEA,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACT;AAEA,YAAM,QAAQ,MAAM;AACpB,YAAM,QAAQ,MAAM,MAAM;AAC1B,YAAM,QAAQ,MAAM,MAAM;AAC1B,YAAM,aAAa,QAAQ,qBAAqB,MAAM,KAAK,IAAI,MAAM,OAAO;AAC5E,YAAM,QAAQ,QAAQ,qBAAqB,MAAM,KAAK,IAAI,MAAM,OAAO;AAEvE,aAAOA,OAAM,GAAG,SAAS,SAAS,QAAQ,aAAa,SAAS,OAAO;AAAA,IACzE;AACA,WAAO,UAAU;AAAA;AAAA;;;AC3DjB;AAAA;AAAA,QAAM,WAAN,MAAe;AAAA,MACb,cAAe;AACb,aAAK,MAAM;AACX,aAAK,MAAM,oBAAI,IAAI;AAAA,MACrB;AAAA,MAEA,IAAK,KAAK;AACR,cAAM,QAAQ,KAAK,IAAI,IAAI,GAAG;AAC9B,YAAI,UAAU,QAAW;AACvB,iBAAO;AAAA,QACT,OAAO;AAEL,eAAK,IAAI,OAAO,GAAG;AACnB,eAAK,IAAI,IAAI,KAAK,KAAK;AACvB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,OAAQ,KAAK;AACX,eAAO,KAAK,IAAI,OAAO,GAAG;AAAA,MAC5B;AAAA,MAEA,IAAK,KAAK,OAAO;AACf,cAAM,UAAU,KAAK,OAAO,GAAG;AAE/B,YAAI,CAAC,WAAW,UAAU,QAAW;AAEnC,cAAI,KAAK,IAAI,QAAQ,KAAK,KAAK;AAC7B,kBAAM,WAAW,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE;AACxC,iBAAK,OAAO,QAAQ;AAAA,UACtB;AAEA,eAAK,IAAI,IAAI,KAAK,KAAK;AAAA,QACzB;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACvCjB;AAAA;AAAA,QAAM,mBAAmB;AAGzB,QAAM,QAAN,MAAY;AAAA,MACV,YAAa,OAAO,SAAS;AAC3B,kBAAU,aAAa,OAAO;AAE9B,YAAI,iBAAiB,OAAO;AAC1B,cACE,MAAM,UAAU,CAAC,CAAC,QAAQ,SAC1B,MAAM,sBAAsB,CAAC,CAAC,QAAQ,mBACtC;AACA,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,IAAI,MAAM,MAAM,KAAK,OAAO;AAAA,UACrC;AAAA,QACF;AAEA,YAAI,iBAAiB,YAAY;AAE/B,eAAK,MAAM,MAAM;AACjB,eAAK,MAAM,CAAC,CAAC,KAAK,CAAC;AACnB,eAAK,YAAY;AACjB,iBAAO;AAAA,QACT;AAEA,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AACvB,aAAK,oBAAoB,CAAC,CAAC,QAAQ;AAKnC,aAAK,MAAM,MAAM,KAAK,EAAE,QAAQ,kBAAkB,GAAG;AAGrD,aAAK,MAAM,KAAK,IACb,MAAM,IAAI,EAEV,IAAI,OAAK,KAAK,WAAW,EAAE,KAAK,CAAC,CAAC,EAIlC,OAAO,OAAK,EAAE,MAAM;AAEvB,YAAI,CAAC,KAAK,IAAI,QAAQ;AACpB,gBAAM,IAAI,UAAU,yBAAyB,KAAK,KAAK;AAAA,QACzD;AAGA,YAAI,KAAK,IAAI,SAAS,GAAG;AAEvB,gBAAM,QAAQ,KAAK,IAAI;AACvB,eAAK,MAAM,KAAK,IAAI,OAAO,OAAK,CAAC,UAAU,EAAE,EAAE,CAAC;AAChD,cAAI,KAAK,IAAI,WAAW,GAAG;AACzB,iBAAK,MAAM,CAAC,KAAK;AAAA,UACnB,WAAW,KAAK,IAAI,SAAS,GAAG;AAE9B,uBAAW,KAAK,KAAK,KAAK;AACxB,kBAAI,EAAE,WAAW,KAAK,MAAM,EAAE,EAAE,GAAG;AACjC,qBAAK,MAAM,CAAC,CAAC;AACb;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,aAAK,YAAY;AAAA,MACnB;AAAA,MAEA,IAAI,QAAS;AACX,YAAI,KAAK,cAAc,QAAW;AAChC,eAAK,YAAY;AACjB,mBAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,gBAAI,IAAI,GAAG;AACT,mBAAK,aAAa;AAAA,YACpB;AACA,kBAAM,QAAQ,KAAK,IAAI;AACvB,qBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,kBAAI,IAAI,GAAG;AACT,qBAAK,aAAa;AAAA,cACpB;AACA,mBAAK,aAAa,MAAM,GAAG,SAAS,EAAE,KAAK;AAAA,YAC7C;AAAA,UACF;AAAA,QACF;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,SAAU;AACR,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY,OAAO;AAGjB,cAAM,YACH,KAAK,QAAQ,qBAAqB,4BAClC,KAAK,QAAQ,SAAS;AACzB,cAAM,UAAU,WAAW,MAAM;AACjC,cAAM,SAAS,MAAM,IAAI,OAAO;AAChC,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT;AAEA,cAAM,QAAQ,KAAK,QAAQ;AAE3B,cAAM,KAAK,QAAQ,GAAG,EAAE,oBAAoB,GAAG,EAAE;AACjD,gBAAQ,MAAM,QAAQ,IAAI,cAAc,KAAK,QAAQ,iBAAiB,CAAC;AACvE,QAAAC,OAAM,kBAAkB,KAAK;AAG7B,gBAAQ,MAAM,QAAQ,GAAG,EAAE,iBAAiB,qBAAqB;AACjE,QAAAA,OAAM,mBAAmB,KAAK;AAG9B,gBAAQ,MAAM,QAAQ,GAAG,EAAE,YAAY,gBAAgB;AACvD,QAAAA,OAAM,cAAc,KAAK;AAGzB,gBAAQ,MAAM,QAAQ,GAAG,EAAE,YAAY,gBAAgB;AACvD,QAAAA,OAAM,cAAc,KAAK;AAKzB,YAAI,YAAY,MACb,MAAM,GAAG,EACT,IAAI,UAAQ,gBAAgB,MAAM,KAAK,OAAO,CAAC,EAC/C,KAAK,GAAG,EACR,MAAM,KAAK,EAEX,IAAI,UAAQ,YAAY,MAAM,KAAK,OAAO,CAAC;AAE9C,YAAI,OAAO;AAET,sBAAY,UAAU,OAAO,UAAQ;AACnC,YAAAA,OAAM,wBAAwB,MAAM,KAAK,OAAO;AAChD,mBAAO,CAAC,CAAC,KAAK,MAAM,GAAG,EAAE,gBAAgB;AAAA,UAC3C,CAAC;AAAA,QACH;AACA,QAAAA,OAAM,cAAc,SAAS;AAK7B,cAAM,WAAW,oBAAI,IAAI;AACzB,cAAM,cAAc,UAAU,IAAI,UAAQ,IAAI,WAAW,MAAM,KAAK,OAAO,CAAC;AAC5E,mBAAW,QAAQ,aAAa;AAC9B,cAAI,UAAU,IAAI,GAAG;AACnB,mBAAO,CAAC,IAAI;AAAA,UACd;AACA,mBAAS,IAAI,KAAK,OAAO,IAAI;AAAA,QAC/B;AACA,YAAI,SAAS,OAAO,KAAK,SAAS,IAAI,EAAE,GAAG;AACzC,mBAAS,OAAO,EAAE;AAAA,QACpB;AAEA,cAAM,SAAS,CAAC,GAAG,SAAS,OAAO,CAAC;AACpC,cAAM,IAAI,SAAS,MAAM;AACzB,eAAO;AAAA,MACT;AAAA,MAEA,WAAY,OAAO,SAAS;AAC1B,YAAI,EAAE,iBAAiB,QAAQ;AAC7B,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAC3C;AAEA,eAAO,KAAK,IAAI,KAAK,CAAC,oBAAoB;AACxC,iBACE,cAAc,iBAAiB,OAAO,KACtC,MAAM,IAAI,KAAK,CAAC,qBAAqB;AACnC,mBACE,cAAc,kBAAkB,OAAO,KACvC,gBAAgB,MAAM,CAAC,mBAAmB;AACxC,qBAAO,iBAAiB,MAAM,CAAC,oBAAoB;AACjD,uBAAO,eAAe,WAAW,iBAAiB,OAAO;AAAA,cAC3D,CAAC;AAAA,YACH,CAAC;AAAA,UAEL,CAAC;AAAA,QAEL,CAAC;AAAA,MACH;AAAA,MAGA,KAAM,SAAS;AACb,YAAI,CAAC,SAAS;AACZ,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,YAAY,UAAU;AAC/B,cAAI;AACF,sBAAU,IAAI,OAAO,SAAS,KAAK,OAAO;AAAA,UAC5C,SAAS,IAAP;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,cAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,KAAK,OAAO,GAAG;AAC/C,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAEjB,QAAM,MAAM;AACZ,QAAM,QAAQ,IAAI,IAAI;AAEtB,QAAM,eAAe;AACrB,QAAM,aAAa;AACnB,QAAMA,SAAQ;AACd,QAAM,SAAS;AACf,QAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAM,EAAE,yBAAyB,WAAW,IAAI;AAEhD,QAAM,YAAY,OAAK,EAAE,UAAU;AACnC,QAAM,QAAQ,OAAK,EAAE,UAAU;AAI/B,QAAM,gBAAgB,CAAC,aAAa,YAAY;AAC9C,UAAI,SAAS;AACb,YAAM,uBAAuB,YAAY,MAAM;AAC/C,UAAI,iBAAiB,qBAAqB,IAAI;AAE9C,aAAO,UAAU,qBAAqB,QAAQ;AAC5C,iBAAS,qBAAqB,MAAM,CAAC,oBAAoB;AACvD,iBAAO,eAAe,WAAW,iBAAiB,OAAO;AAAA,QAC3D,CAAC;AAED,yBAAiB,qBAAqB,IAAI;AAAA,MAC5C;AAEA,aAAO;AAAA,IACT;AAKA,QAAM,kBAAkB,CAAC,MAAM,YAAY;AACzC,MAAAA,OAAM,QAAQ,MAAM,OAAO;AAC3B,aAAO,cAAc,MAAM,OAAO;AAClC,MAAAA,OAAM,SAAS,IAAI;AACnB,aAAO,cAAc,MAAM,OAAO;AAClC,MAAAA,OAAM,UAAU,IAAI;AACpB,aAAO,eAAe,MAAM,OAAO;AACnC,MAAAA,OAAM,UAAU,IAAI;AACpB,aAAO,aAAa,MAAM,OAAO;AACjC,MAAAA,OAAM,SAAS,IAAI;AACnB,aAAO;AAAA,IACT;AAEA,QAAM,MAAM,QAAM,CAAC,MAAM,GAAG,YAAY,MAAM,OAAO,OAAO;AAS5D,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EACnC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,cAAc,GAAG,EAAE;AAClD,aAAO,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO;AACzC,QAAAA,OAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACR,WAAW,IAAI,CAAC,GAAG;AACjB,gBAAM,KAAK,UAAU,CAAC,IAAI;AAAA,QAC5B,WAAW,IAAI,CAAC,GAAG;AAEjB,gBAAM,KAAK,KAAK,QAAQ,KAAK,CAAC,IAAI;AAAA,QACpC,WAAW,IAAI;AACb,UAAAA,OAAM,mBAAmB,EAAE;AAC3B,gBAAM,KAAK,KAAK,KAAK,KAAK,OACrB,KAAK,CAAC,IAAI;AAAA,QACjB,OAAO;AAEL,gBAAM,KAAK,KAAK,KAAK,MAChB,KAAK,CAAC,IAAI;AAAA,QACjB;AAEA,QAAAA,OAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAUA,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EACnC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,MAAAA,OAAM,SAAS,MAAM,OAAO;AAC5B,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,cAAc,GAAG,EAAE;AAClD,YAAM,IAAI,QAAQ,oBAAoB,OAAO;AAC7C,aAAO,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO;AACzC,QAAAA,OAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACR,WAAW,IAAI,CAAC,GAAG;AACjB,gBAAM,KAAK,QAAQ,MAAM,CAAC,IAAI;AAAA,QAChC,WAAW,IAAI,CAAC,GAAG;AACjB,cAAI,MAAM,KAAK;AACb,kBAAM,KAAK,KAAK,MAAM,MAAM,KAAK,CAAC,IAAI;AAAA,UACxC,OAAO;AACL,kBAAM,KAAK,KAAK,MAAM,MAAM,CAAC,IAAI;AAAA,UACnC;AAAA,QACF,WAAW,IAAI;AACb,UAAAA,OAAM,mBAAmB,EAAE;AAC3B,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,KAAK,KAAK,KAAK,KAAK,OACrB,KAAK,KAAK,CAAC,IAAI;AAAA,YACtB,OAAO;AACL,oBAAM,KAAK,KAAK,KAAK,KAAK,OACrB,KAAK,CAAC,IAAI;AAAA,YACjB;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,KAAK,KAAK,KAAK,OACrB,CAAC,IAAI;AAAA,UACZ;AAAA,QACF,OAAO;AACL,UAAAA,OAAM,OAAO;AACb,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,KAAK,KAAK,KAAK,IAClB,MAAM,KAAK,KAAK,CAAC,IAAI;AAAA,YAC1B,OAAO;AACL,oBAAM,KAAK,KAAK,KAAK,IAClB,MAAM,KAAK,CAAC,IAAI;AAAA,YACrB;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,KAAK,KAAK,MAChB,CAAC,IAAI;AAAA,UACZ;AAAA,QACF;AAEA,QAAAA,OAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,QAAM,iBAAiB,CAAC,MAAM,YAAY;AACxC,MAAAA,OAAM,kBAAkB,MAAM,OAAO;AACrC,aAAO,KACJ,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,EACpC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KAAK,KAAK;AACjB,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,eAAe,GAAG,EAAE;AACnD,aAAO,KAAK,QAAQ,GAAG,CAAC,KAAK,MAAM,GAAG,GAAG,GAAG,OAAO;AACjD,QAAAA,OAAM,UAAU,MAAM,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAC5C,cAAM,KAAK,IAAI,CAAC;AAChB,cAAM,KAAK,MAAM,IAAI,CAAC;AACtB,cAAM,KAAK,MAAM,IAAI,CAAC;AACtB,cAAM,OAAO;AAEb,YAAI,SAAS,OAAO,MAAM;AACxB,iBAAO;AAAA,QACT;AAIA,aAAK,QAAQ,oBAAoB,OAAO;AAExC,YAAI,IAAI;AACN,cAAI,SAAS,OAAO,SAAS,KAAK;AAEhC,kBAAM;AAAA,UACR,OAAO;AAEL,kBAAM;AAAA,UACR;AAAA,QACF,WAAW,QAAQ,MAAM;AAGvB,cAAI,IAAI;AACN,gBAAI;AAAA,UACN;AACA,cAAI;AAEJ,cAAI,SAAS,KAAK;AAGhB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AACT,kBAAI;AACJ,kBAAI;AAAA,YACN,OAAO;AACL,kBAAI,CAAC,IAAI;AACT,kBAAI;AAAA,YACN;AAAA,UACF,WAAW,SAAS,MAAM;AAGxB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AAAA,YACX,OAAO;AACL,kBAAI,CAAC,IAAI;AAAA,YACX;AAAA,UACF;AAEA,cAAI,SAAS,KAAK;AAChB,iBAAK;AAAA,UACP;AAEA,gBAAM,GAAG,OAAO,KAAK,KAAK,IAAI;AAAA,QAChC,WAAW,IAAI;AACb,gBAAM,KAAK,QAAQ,OAAO,CAAC,IAAI;AAAA,QACjC,WAAW,IAAI;AACb,gBAAM,KAAK,KAAK,MAAM,OACjB,KAAK,CAAC,IAAI;AAAA,QACjB;AAEA,QAAAA,OAAM,iBAAiB,GAAG;AAE1B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAIA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,MAAAA,OAAM,gBAAgB,MAAM,OAAO;AAEnC,aAAO,KACJ,KAAK,EACL,QAAQ,GAAG,EAAE,OAAO,EAAE;AAAA,IAC3B;AAEA,QAAM,cAAc,CAAC,MAAM,YAAY;AACrC,MAAAA,OAAM,eAAe,MAAM,OAAO;AAClC,aAAO,KACJ,KAAK,EACL,QAAQ,GAAG,QAAQ,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE;AAAA,IACnE;AAQA,QAAM,gBAAgB,WAAS,CAAC,IAC9B,MAAM,IAAI,IAAI,IAAI,KAAK,IACvB,IAAI,IAAI,IAAI,IAAI,QAAQ;AACxB,UAAI,IAAI,EAAE,GAAG;AACX,eAAO;AAAA,MACT,WAAW,IAAI,EAAE,GAAG;AAClB,eAAO,KAAK,SAAS,QAAQ,OAAO;AAAA,MACtC,WAAW,IAAI,EAAE,GAAG;AAClB,eAAO,KAAK,MAAM,OAAO,QAAQ,OAAO;AAAA,MAC1C,WAAW,KAAK;AACd,eAAO,KAAK;AAAA,MACd,OAAO;AACL,eAAO,KAAK,OAAO,QAAQ,OAAO;AAAA,MACpC;AAEA,UAAI,IAAI,EAAE,GAAG;AACX,aAAK;AAAA,MACP,WAAW,IAAI,EAAE,GAAG;AAClB,aAAK,IAAI,CAAC,KAAK;AAAA,MACjB,WAAW,IAAI,EAAE,GAAG;AAClB,aAAK,IAAI,MAAM,CAAC,KAAK;AAAA,MACvB,WAAW,KAAK;AACd,aAAK,KAAK,MAAM,MAAM,MAAM;AAAA,MAC9B,WAAW,OAAO;AAChB,aAAK,IAAI,MAAM,MAAM,CAAC,KAAK;AAAA,MAC7B,OAAO;AACL,aAAK,KAAK;AAAA,MACZ;AAEA,aAAO,GAAG,QAAQ,KAAK,KAAK;AAAA,IAC9B;AAEA,QAAM,UAAU,CAAC,KAAK,SAAS,YAAY;AACzC,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAI,CAAC,IAAI,GAAG,KAAK,OAAO,GAAG;AACzB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAI,QAAQ,WAAW,UAAU,CAAC,QAAQ,mBAAmB;AAM3D,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAAA,OAAM,IAAI,GAAG,MAAM;AACnB,cAAI,IAAI,GAAG,WAAW,WAAW,KAAK;AACpC;AAAA,UACF;AAEA,cAAI,IAAI,GAAG,OAAO,WAAW,SAAS,GAAG;AACvC,kBAAM,UAAU,IAAI,GAAG;AACvB,gBAAI,QAAQ,UAAU,QAAQ,SAC1B,QAAQ,UAAU,QAAQ,SAC1B,QAAQ,UAAU,QAAQ,OAAO;AACnC,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAGA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACziBA;AAAA;AAAA,QAAM,MAAM,OAAO,YAAY;AAE/B,QAAM,aAAN,MAAiB;AAAA,MACf,WAAW,MAAO;AAChB,eAAO;AAAA,MACT;AAAA,MAEA,YAAa,MAAM,SAAS;AAC1B,kBAAU,aAAa,OAAO;AAE9B,YAAI,gBAAgB,YAAY;AAC9B,cAAI,KAAK,UAAU,CAAC,CAAC,QAAQ,OAAO;AAClC,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF;AAEA,eAAO,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG;AACxC,QAAAC,OAAM,cAAc,MAAM,OAAO;AACjC,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AACvB,aAAK,MAAM,IAAI;AAEf,YAAI,KAAK,WAAW,KAAK;AACvB,eAAK,QAAQ;AAAA,QACf,OAAO;AACL,eAAK,QAAQ,KAAK,WAAW,KAAK,OAAO;AAAA,QAC3C;AAEA,QAAAA,OAAM,QAAQ,IAAI;AAAA,MACpB;AAAA,MAEA,MAAO,MAAM;AACX,cAAM,IAAI,KAAK,QAAQ,QAAQ,GAAG,EAAE,mBAAmB,GAAG,EAAE;AAC5D,cAAM,IAAI,KAAK,MAAM,CAAC;AAEtB,YAAI,CAAC,GAAG;AACN,gBAAM,IAAI,UAAU,uBAAuB,MAAM;AAAA,QACnD;AAEA,aAAK,WAAW,EAAE,OAAO,SAAY,EAAE,KAAK;AAC5C,YAAI,KAAK,aAAa,KAAK;AACzB,eAAK,WAAW;AAAA,QAClB;AAGA,YAAI,CAAC,EAAE,IAAI;AACT,eAAK,SAAS;AAAA,QAChB,OAAO;AACL,eAAK,SAAS,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ,KAAK;AAAA,QACnD;AAAA,MACF;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAM,SAAS;AACb,QAAAA,OAAM,mBAAmB,SAAS,KAAK,QAAQ,KAAK;AAEpD,YAAI,KAAK,WAAW,OAAO,YAAY,KAAK;AAC1C,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,YAAY,UAAU;AAC/B,cAAI;AACF,sBAAU,IAAI,OAAO,SAAS,KAAK,OAAO;AAAA,UAC5C,SAAS,IAAP;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,IAAI,SAAS,KAAK,UAAU,KAAK,QAAQ,KAAK,OAAO;AAAA,MAC9D;AAAA,MAEA,WAAY,MAAM,SAAS;AACzB,YAAI,EAAE,gBAAgB,aAAa;AACjC,gBAAM,IAAI,UAAU,0BAA0B;AAAA,QAChD;AAEA,YAAI,KAAK,aAAa,IAAI;AACxB,cAAI,KAAK,UAAU,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,iBAAO,IAAI,MAAM,KAAK,OAAO,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA,QACvD,WAAW,KAAK,aAAa,IAAI;AAC/B,cAAI,KAAK,UAAU,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,iBAAO,IAAI,MAAM,KAAK,OAAO,OAAO,EAAE,KAAK,KAAK,MAAM;AAAA,QACxD;AAEA,kBAAU,aAAa,OAAO;AAG9B,YAAI,QAAQ,sBACT,KAAK,UAAU,cAAc,KAAK,UAAU,aAAa;AAC1D,iBAAO;AAAA,QACT;AACA,YAAI,CAAC,QAAQ,sBACV,KAAK,MAAM,WAAW,QAAQ,KAAK,KAAK,MAAM,WAAW,QAAQ,IAAI;AACtE,iBAAO;AAAA,QACT;AAGA,YAAI,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAClE,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAClE,iBAAO;AAAA,QACT;AAEA,YACG,KAAK,OAAO,YAAY,KAAK,OAAO,WACrC,KAAK,SAAS,SAAS,GAAG,KAAK,KAAK,SAAS,SAAS,GAAG,GAAG;AAC5D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAC5C,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAC5C,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAEjB,QAAM,eAAe;AACrB,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAC1B,QAAM,MAAM;AACZ,QAAMA,SAAQ;AACd,QAAM,SAAS;AACf,QAAM,QAAQ;AAAA;AAAA;;;AC5Id;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,YAAY,CAAC,SAAS,OAAO,YAAY;AAC7C,UAAI;AACF,gBAAQ,IAAI,MAAM,OAAO,OAAO;AAAA,MAClC,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AACA,aAAO,MAAM,KAAK,OAAO;AAAA,IAC3B;AACA,WAAO,UAAU;AAAA;AAAA;;;ACTjB;AAAA;AAAA,QAAM,QAAQ;AAGd,QAAM,gBAAgB,CAAC,OAAO,YAC5B,IAAI,MAAM,OAAO,OAAO,EAAE,IACvB,IAAI,UAAQ,KAAK,IAAI,OAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;AAEnE,WAAO,UAAU;AAAA;AAAA;;;ACPjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AAEd,QAAM,gBAAgB,CAAC,UAAU,OAAO,YAAY;AAClD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI;AACF,mBAAW,IAAI,MAAM,OAAO,OAAO;AAAA,MACrC,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,IAAI;AAEnC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAK,OAAO;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,gBAAgB,CAAC,UAAU,OAAO,YAAY;AAClD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI;AACF,mBAAW,IAAI,MAAM,OAAO,OAAO;AAAA,MACrC,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,GAAG;AAElC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAK,OAAO;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,KAAK;AAEX,QAAM,aAAa,CAAC,OAAO,UAAU;AACnC,cAAQ,IAAI,MAAM,OAAO,KAAK;AAE9B,UAAI,SAAS,IAAI,OAAO,OAAO;AAC/B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,eAAS,IAAI,OAAO,SAAS;AAC7B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,eAAS;AACT,eAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG;AACzC,cAAM,cAAc,MAAM,IAAI;AAE9B,YAAI,SAAS;AACb,oBAAY,QAAQ,CAAC,eAAe;AAElC,gBAAM,UAAU,IAAI,OAAO,WAAW,OAAO,OAAO;AACpD,kBAAQ,WAAW,UAAU;AAAA,YAC3B,KAAK;AACH,kBAAI,QAAQ,WAAW,WAAW,GAAG;AACnC,wBAAQ;AAAA,cACV,OAAO;AACL,wBAAQ,WAAW,KAAK,CAAC;AAAA,cAC3B;AACA,sBAAQ,MAAM,QAAQ,OAAO;AAAA,YAE/B,KAAK;AAAA,YACL,KAAK;AACH,kBAAI,CAAC,UAAU,GAAG,SAAS,MAAM,GAAG;AAClC,yBAAS;AAAA,cACX;AACA;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAEH;AAAA,YAEF;AACE,oBAAM,IAAI,MAAM,yBAAyB,WAAW,UAAU;AAAA,UAClE;AAAA,QACF,CAAC;AACD,YAAI,WAAW,CAAC,UAAU,GAAG,QAAQ,MAAM,IAAI;AAC7C,mBAAS;AAAA,QACX;AAAA,MACF;AAEA,UAAI,UAAU,MAAM,KAAK,MAAM,GAAG;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;AC5DjB,IAAAC,iBAAA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAAC,OAAO,YAAY;AACrC,UAAI;AAGF,eAAO,IAAI,MAAM,OAAO,OAAO,EAAE,SAAS;AAAA,MAC5C,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;ACVjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,MAAM;AAEZ,QAAM,UAAU,CAAC,SAAS,OAAO,MAAM,YAAY;AACjD,gBAAU,IAAI,OAAO,SAAS,OAAO;AACrC,cAAQ,IAAI,MAAM,OAAO,OAAO;AAEhC,UAAI,MAAM,OAAO,MAAM,MAAM;AAC7B,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF;AACE,gBAAM,IAAI,UAAU,uCAAuC;AAAA,MAC/D;AAGA,UAAI,UAAU,SAAS,OAAO,OAAO,GAAG;AACtC,eAAO;AAAA,MACT;AAKA,eAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG;AACzC,cAAM,cAAc,MAAM,IAAI;AAE9B,YAAI,OAAO;AACX,YAAI,MAAM;AAEV,oBAAY,QAAQ,CAAC,eAAe;AAClC,cAAI,WAAW,WAAW,KAAK;AAC7B,yBAAa,IAAI,WAAW,SAAS;AAAA,UACvC;AACA,iBAAO,QAAQ;AACf,gBAAM,OAAO;AACb,cAAI,KAAK,WAAW,QAAQ,KAAK,QAAQ,OAAO,GAAG;AACjD,mBAAO;AAAA,UACT,WAAW,KAAK,WAAW,QAAQ,IAAI,QAAQ,OAAO,GAAG;AACvD,kBAAM;AAAA,UACR;AAAA,QACF,CAAC;AAID,YAAI,KAAK,aAAa,QAAQ,KAAK,aAAa,OAAO;AACrD,iBAAO;AAAA,QACT;AAIA,aAAK,CAAC,IAAI,YAAY,IAAI,aAAa,SACnC,MAAM,SAAS,IAAI,MAAM,GAAG;AAC9B,iBAAO;AAAA,QACT,WAAW,IAAI,aAAa,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG;AAC9D,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC/EjB;AAAA;AACA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,SAAS,OAAO,YAAY,QAAQ,SAAS,OAAO,KAAK,OAAO;AAC7E,WAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,QAAM,UAAU;AAEhB,QAAM,MAAM,CAAC,SAAS,OAAO,YAAY,QAAQ,SAAS,OAAO,KAAK,OAAO;AAC7E,WAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAAC,IAAI,IAAI,YAAY;AACtC,WAAK,IAAI,MAAM,IAAI,OAAO;AAC1B,WAAK,IAAI,MAAM,IAAI,OAAO;AAC1B,aAAO,GAAG,WAAW,IAAI,OAAO;AAAA,IAClC;AACA,WAAO,UAAU;AAAA;AAAA;;;ACNjB;AAAA;AAGA,QAAM,YAAY;AAClB,QAAM,UAAU;AAChB,WAAO,UAAU,CAAC,UAAU,OAAO,YAAY;AAC7C,YAAM,MAAM,CAAC;AACb,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,YAAM,IAAI,SAAS,KAAK,CAAC,GAAG,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC;AACxD,iBAAW,WAAW,GAAG;AACvB,cAAM,WAAW,UAAU,SAAS,OAAO,OAAO;AAClD,YAAI,UAAU;AACZ,iBAAO;AACP,cAAI,CAAC,OAAO;AACV,oBAAQ;AAAA,UACV;AAAA,QACF,OAAO;AACL,cAAI,MAAM;AACR,gBAAI,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,UACxB;AACA,iBAAO;AACP,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,UAAI,OAAO;AACT,YAAI,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,MACxB;AAEA,YAAM,SAAS,CAAC;AAChB,iBAAW,CAAC,KAAK,GAAG,KAAK,KAAK;AAC5B,YAAI,QAAQ,KAAK;AACf,iBAAO,KAAK,GAAG;AAAA,QACjB,WAAW,CAAC,OAAO,QAAQ,EAAE,IAAI;AAC/B,iBAAO,KAAK,GAAG;AAAA,QACjB,WAAW,CAAC,KAAK;AACf,iBAAO,KAAK,KAAK,KAAK;AAAA,QACxB,WAAW,QAAQ,EAAE,IAAI;AACvB,iBAAO,KAAK,KAAK,KAAK;AAAA,QACxB,OAAO;AACL,iBAAO,KAAK,GAAG,SAAS,KAAK;AAAA,QAC/B;AAAA,MACF;AACA,YAAM,aAAa,OAAO,KAAK,MAAM;AACrC,YAAM,WAAW,OAAO,MAAM,QAAQ,WAAW,MAAM,MAAM,OAAO,KAAK;AACzE,aAAO,WAAW,SAAS,SAAS,SAAS,aAAa;AAAA,IAC5D;AAAA;AAAA;;;AC9CA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,YAAY;AAClB,QAAM,UAAU;AAsChB,QAAM,SAAS,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM;AACzC,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,MAAM,KAAK,OAAO;AAC5B,YAAM,IAAI,MAAM,KAAK,OAAO;AAC5B,UAAI,aAAa;AAEjB;AAAO,mBAAW,aAAa,IAAI,KAAK;AACtC,qBAAW,aAAa,IAAI,KAAK;AAC/B,kBAAM,QAAQ,aAAa,WAAW,WAAW,OAAO;AACxD,yBAAa,cAAc,UAAU;AACrC,gBAAI,OAAO;AACT,uBAAS;AAAA,YACX;AAAA,UACF;AAKA,cAAI,YAAY;AACd,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,+BAA+B,CAAC,IAAI,WAAW,WAAW,CAAC;AACjE,QAAM,iBAAiB,CAAC,IAAI,WAAW,SAAS,CAAC;AAEjD,QAAM,eAAe,CAAC,KAAK,KAAK,YAAY;AAC1C,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,WAAW,KAAK,IAAI,GAAG,WAAW,KAAK;AAC7C,YAAI,IAAI,WAAW,KAAK,IAAI,GAAG,WAAW,KAAK;AAC7C,iBAAO;AAAA,QACT,WAAW,QAAQ,mBAAmB;AACpC,gBAAM;AAAA,QACR,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,UAAI,IAAI,WAAW,KAAK,IAAI,GAAG,WAAW,KAAK;AAC7C,YAAI,QAAQ,mBAAmB;AAC7B,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,YAAM,QAAQ,oBAAI,IAAI;AACtB,UAAI,IAAI;AACR,iBAAW,KAAK,KAAK;AACnB,YAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,eAAK,SAAS,IAAI,GAAG,OAAO;AAAA,QAC9B,WAAW,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AACpD,eAAK,QAAQ,IAAI,GAAG,OAAO;AAAA,QAC7B,OAAO;AACL,gBAAM,IAAI,EAAE,MAAM;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,MAAM,OAAO,GAAG;AAClB,eAAO;AAAA,MACT;AAEA,UAAI;AACJ,UAAI,MAAM,IAAI;AACZ,mBAAW,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAAO;AAChD,YAAI,WAAW,GAAG;AAChB,iBAAO;AAAA,QACT,WAAW,aAAa,MAAM,GAAG,aAAa,QAAQ,GAAG,aAAa,OAAO;AAC3E,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,iBAAW,MAAM,OAAO;AACtB,YAAI,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AAEA,YAAI,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AAEA,mBAAW,KAAK,KAAK;AACnB,cAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,OAAO,GAAG;AACtC,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AACZ,UAAI,UAAU;AAGd,UAAI,eAAe,MACjB,CAAC,QAAQ,qBACT,GAAG,OAAO,WAAW,SAAS,GAAG,SAAS;AAC5C,UAAI,eAAe,MACjB,CAAC,QAAQ,qBACT,GAAG,OAAO,WAAW,SAAS,GAAG,SAAS;AAE5C,UAAI,gBAAgB,aAAa,WAAW,WAAW,KACnD,GAAG,aAAa,OAAO,aAAa,WAAW,OAAO,GAAG;AAC3D,uBAAe;AAAA,MACjB;AAEA,iBAAW,KAAK,KAAK;AACnB,mBAAW,YAAY,EAAE,aAAa,OAAO,EAAE,aAAa;AAC5D,mBAAW,YAAY,EAAE,aAAa,OAAO,EAAE,aAAa;AAC5D,YAAI,IAAI;AACN,cAAI,cAAc;AAChB,gBAAI,EAAE,OAAO,cAAc,EAAE,OAAO,WAAW,UAC3C,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,OAAO;AACzC,6BAAe;AAAA,YACjB;AAAA,UACF;AACA,cAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,qBAAS,SAAS,IAAI,GAAG,OAAO;AAChC,gBAAI,WAAW,KAAK,WAAW,IAAI;AACjC,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,GAAG,aAAa,QAAQ,CAAC,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,OAAO,GAAG;AAC5E,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,IAAI;AACN,cAAI,cAAc;AAChB,gBAAI,EAAE,OAAO,cAAc,EAAE,OAAO,WAAW,UAC3C,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,OAAO;AACzC,6BAAe;AAAA,YACjB;AAAA,UACF;AACA,cAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,oBAAQ,QAAQ,IAAI,GAAG,OAAO;AAC9B,gBAAI,UAAU,KAAK,UAAU,IAAI;AAC/B,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,GAAG,aAAa,QAAQ,CAAC,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,OAAO,GAAG;AAC5E,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,CAAC,EAAE,aAAa,MAAM,OAAO,aAAa,GAAG;AAC/C,iBAAO;AAAA,QACT;AAAA,MACF;AAKA,UAAI,MAAM,YAAY,CAAC,MAAM,aAAa,GAAG;AAC3C,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,YAAY,CAAC,MAAM,aAAa,GAAG;AAC3C,eAAO;AAAA,MACT;AAKA,UAAI,gBAAgB,cAAc;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAGA,QAAM,WAAW,CAAC,GAAG,GAAG,YAAY;AAClC,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAChD,aAAO,OAAO,IAAI,IACd,OAAO,IAAI,IACX,EAAE,aAAa,OAAO,EAAE,aAAa,OAAO,IAC5C;AAAA,IACN;AAGA,QAAM,UAAU,CAAC,GAAG,GAAG,YAAY;AACjC,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAChD,aAAO,OAAO,IAAI,IACd,OAAO,IAAI,IACX,EAAE,aAAa,OAAO,EAAE,aAAa,OAAO,IAC5C;AAAA,IACN;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACtPjB,IAAAC,kBAAA;AAAA;AACA,QAAM,aAAa;AACnB,QAAM,YAAY;AAClB,QAAM,SAAS;AACf,QAAM,cAAc;AACpB,QAAMC,SAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,WAAW;AACjB,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,aAAa;AACnB,QAAM,gBAAgB;AACtB,QAAM,SAAS;AACf,WAAO,UAAU;AAAA,MACf,OAAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,WAAW;AAAA,MACf,KAAK,WAAW;AAAA,MAChB,QAAQ,WAAW;AAAA,MACnB,qBAAqB,UAAU;AAAA,MAC/B,eAAe,UAAU;AAAA,MACzB,oBAAoB,YAAY;AAAA,MAChC,qBAAqB,YAAY;AAAA,IACnC;AAAA;AAAA;;;ACxFO,SAAS,eAAe;AAC7B,MAAI,OAAO,cAAc,YAAY,eAAe,WAAW;AAC7D,WAAO,UAAU;AAAA,EACnB;AAEA,MAAI,OAAO,YAAY,YAAY,QAAQ,YAAY,QAAW;AAChE,WAAO,WAAW,QAAQ,QAAQ,OAAO,CAAC,MAAM,QAAQ,aACtD,QAAQ;AAAA,EAEZ;AAEA,SAAO;AACT;;;ACVO,SAAS,SAAS,OAAO,MAAM,QAAQ,SAAS;AACrD,MAAI,OAAO,WAAW,YAAY;AAChC,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,MAAI,CAAC,SAAS;AACZ,cAAU,CAAC;AAAA,EACb;AAEA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,QAAQ,EAAE,OAAO,CAAC,UAAUC,UAAS;AAC/C,aAAO,SAAS,KAAK,MAAM,OAAOA,OAAM,UAAU,OAAO;AAAA,IAC3D,GAAG,MAAM,EAAE;AAAA,EACb;AAEA,SAAO,QAAQ,QAAQ,EAAE,KAAK,MAAM;AAClC,QAAI,CAAC,MAAM,SAAS,OAAO;AACzB,aAAO,OAAO,OAAO;AAAA,IACvB;AAEA,WAAO,MAAM,SAAS,MAAM,OAAO,CAACC,SAAQ,eAAe;AACzD,aAAO,WAAW,KAAK,KAAK,MAAMA,SAAQ,OAAO;AAAA,IACnD,GAAG,MAAM,EAAE;AAAA,EACb,CAAC;AACH;;;ACxBO,SAAS,QAAQ,OAAO,MAAM,MAAMC,OAAM;AAC/C,QAAM,OAAOA;AACb,MAAI,CAAC,MAAM,SAAS,OAAO;AACzB,UAAM,SAAS,QAAQ,CAAC;AAAA,EAC1B;AAEA,MAAI,SAAS,UAAU;AACrB,IAAAA,QAAO,CAAC,QAAQ,YAAY;AAC1B,aAAO,QAAQ,QAAQ,EACpB,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC,EAC7B,KAAK,OAAO,KAAK,MAAM,OAAO,CAAC;AAAA,IACpC;AAAA,EACF;AAEA,MAAI,SAAS,SAAS;AACpB,IAAAA,QAAO,CAAC,QAAQ,YAAY;AAC1B,UAAI;AACJ,aAAO,QAAQ,QAAQ,EACpB,KAAK,OAAO,KAAK,MAAM,OAAO,CAAC,EAC/B,KAAK,CAAC,YAAY;AACjB,iBAAS;AACT,eAAO,KAAK,QAAQ,OAAO;AAAA,MAC7B,CAAC,EACA,KAAK,MAAM;AACV,eAAO;AAAA,MACT,CAAC;AAAA,IACL;AAAA,EACF;AAEA,MAAI,SAAS,SAAS;AACpB,IAAAA,QAAO,CAAC,QAAQ,YAAY;AAC1B,aAAO,QAAQ,QAAQ,EACpB,KAAK,OAAO,KAAK,MAAM,OAAO,CAAC,EAC/B,MAAM,CAAC,UAAU;AAChB,eAAO,KAAK,OAAO,OAAO;AAAA,MAC5B,CAAC;AAAA,IACL;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,KAAK;AAAA,IACxB,MAAMA;AAAA,IACN;AAAA,EACF,CAAC;AACH;;;AC3CO,SAAS,WAAW,OAAO,MAAM,QAAQ;AAC9C,MAAI,CAAC,MAAM,SAAS,OAAO;AACzB;AAAA,EACF;AAEA,QAAM,QAAQ,MAAM,SAAS,MAC1B,IAAI,CAAC,eAAe;AACnB,WAAO,WAAW;AAAA,EACpB,CAAC,EACA,QAAQ,MAAM;AAEjB,MAAI,UAAU,IAAI;AAChB;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,OAAO,OAAO,CAAC;AACtC;;;ACXA,IAAM,OAAO,SAAS;AACtB,IAAM,WAAW,KAAK,KAAK,IAAI;AAE/B,SAAS,QAAQC,OAAM,OAAO,MAAM;AAClC,QAAM,gBAAgB,SAAS,YAAY,IAAI,EAAE;AAAA,IAC/C;AAAA,IACA,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK;AAAA,EAC/B;AACA,EAAAA,MAAK,MAAM,EAAE,QAAQ,cAAc;AACnC,EAAAA,MAAK,SAAS;AACd,GAAC,UAAU,SAAS,SAAS,MAAM,EAAE,QAAQ,CAAC,SAAS;AACrD,UAAM,OAAO,OAAO,CAAC,OAAO,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI;AACtD,IAAAA,MAAK,QAAQA,MAAK,IAAI,QAAQ,SAAS,SAAS,IAAI,EAAE,MAAM,MAAM,IAAI;AAAA,EACxE,CAAC;AACH;AAEA,SAAS,WAAW;AAClB,QAAM,mBAAmB,OAAO,UAAU;AAC1C,QAAM,oBAAoB;AAAA,IACxB,UAAU,CAAC;AAAA,EACb;AACA,QAAM,eAAe,SAAS,KAAK,MAAM,mBAAmB,gBAAgB;AAC5E,UAAQ,cAAc,mBAAmB,gBAAgB;AACzD,SAAO;AACT;AAEA,SAAS,aAAa;AACpB,QAAM,QAAQ;AAAA,IACZ,UAAU,CAAC;AAAA,EACb;AAEA,QAAMA,QAAO,SAAS,KAAK,MAAM,KAAK;AACtC,UAAQA,OAAM,KAAK;AAEnB,SAAOA;AACT;AAEA,IAAO,4BAAQ,EAAE,UAAU,WAAW;;;ACxCtC,IAAI,UAAU;AAGd,IAAI,YAAY,uBAAuB,WAAW,aAAa;AAC/D,IAAI,WAAW;AAAA,EACb,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,EACV;AACF;AAGA,SAAS,cAAc,QAAQ;AAC7B,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AACA,SAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACjD,WAAO,IAAI,YAAY,KAAK,OAAO;AACnC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;AAGA,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU;AAAM,WAAO;AACxD,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAmB,WAAO;AACxE,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU;AAAM,WAAO;AAC3B,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;AAGA,SAAS,UAAU,UAAU,SAAS;AACpC,QAAM,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ;AACzC,SAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,QAAI,cAAc,QAAQ,IAAI,GAAG;AAC/B,UAAI,EAAE,OAAO;AAAW,eAAO,OAAO,QAAQ,EAAE,CAAC,MAAM,QAAQ,KAAK,CAAC;AAAA;AAChE,eAAO,OAAO,UAAU,SAAS,MAAM,QAAQ,IAAI;AAAA,IAC1D,OAAO;AACL,aAAO,OAAO,QAAQ,EAAE,CAAC,MAAM,QAAQ,KAAK,CAAC;AAAA,IAC/C;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAGA,SAAS,0BAA0B,KAAK;AACtC,aAAW,OAAO,KAAK;AACrB,QAAI,IAAI,SAAS,QAAQ;AACvB,aAAO,IAAI;AAAA,IACb;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,MAAM,UAAU,OAAO,SAAS;AAlEzC;AAmEE,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AACnC,cAAU,OAAO,OAAO,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,KAAK,OAAO,GAAG,OAAO;AAAA,EAC1E,OAAO;AACL,cAAU,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,EACnC;AACA,UAAQ,UAAU,cAAc,QAAQ,OAAO;AAC/C,4BAA0B,OAAO;AACjC,4BAA0B,QAAQ,OAAO;AACzC,QAAM,gBAAgB,UAAU,YAAY,CAAC,GAAG,OAAO;AACvD,MAAI,QAAQ,QAAQ,YAAY;AAC9B,QAAI,cAAY,cAAS,UAAU,aAAnB,mBAA6B,SAAQ;AACnD,oBAAc,UAAU,WAAW,SAAS,UAAU,SAAS;AAAA,QAC7D,CAAC,YAAY,CAAC,cAAc,UAAU,SAAS,SAAS,OAAO;AAAA,MACjE,EAAE,OAAO,cAAc,UAAU,QAAQ;AAAA,IAC3C;AACA,kBAAc,UAAU,YAAY,cAAc,UAAU,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,QAAQ,QAAQ,YAAY,EAAE,CAAC;AAAA,EAC9H;AACA,SAAO;AACT;AAGA,SAAS,mBAAmB,KAAK,YAAY;AAC3C,QAAM,YAAY,KAAK,KAAK,GAAG,IAAI,MAAM;AACzC,QAAM,QAAQ,OAAO,KAAK,UAAU;AACpC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO,MAAM,YAAY,MAAM,IAAI,CAAC,SAAS;AAC3C,QAAI,SAAS,KAAK;AAChB,aAAO,OAAO,WAAW,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG;AAAA,IACxE;AACA,WAAO,GAAG,QAAQ,mBAAmB,WAAW,KAAK;AAAA,EACvD,CAAC,EAAE,KAAK,GAAG;AACb;AAGA,IAAI,mBAAmB;AACvB,SAAS,eAAe,cAAc;AACpC,SAAO,aAAa,QAAQ,cAAc,EAAE,EAAE,MAAM,GAAG;AACzD;AACA,SAAS,wBAAwB,KAAK;AACpC,QAAM,UAAU,IAAI,MAAM,gBAAgB;AAC1C,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC;AAAA,EACV;AACA,SAAO,QAAQ,IAAI,cAAc,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACrE;AAGA,SAAS,KAAK,QAAQ,YAAY;AAChC,QAAM,SAAS,EAAE,WAAW,KAAK;AACjC,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,QAAI,WAAW,QAAQ,GAAG,MAAM,IAAI;AAClC,aAAO,OAAO,OAAO;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,eAAe,KAAK;AAC3B,SAAO,IAAI,MAAM,oBAAoB,EAAE,IAAI,SAAS,MAAM;AACxD,QAAI,CAAC,eAAe,KAAK,IAAI,GAAG;AAC9B,aAAO,UAAU,IAAI,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACjE;AACA,WAAO;AAAA,EACT,CAAC,EAAE,KAAK,EAAE;AACZ;AACA,SAAS,iBAAiB,KAAK;AAC7B,SAAO,mBAAmB,GAAG,EAAE,QAAQ,YAAY,SAAS,GAAG;AAC7D,WAAO,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACxD,CAAC;AACH;AACA,SAAS,YAAY,UAAU,OAAO,KAAK;AACzC,UAAQ,aAAa,OAAO,aAAa,MAAM,eAAe,KAAK,IAAI,iBAAiB,KAAK;AAC7F,MAAI,KAAK;AACP,WAAO,iBAAiB,GAAG,IAAI,MAAM;AAAA,EACvC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,UAAU,UAAU,UAAU;AACvC;AACA,SAAS,cAAc,UAAU;AAC/B,SAAO,aAAa,OAAO,aAAa,OAAO,aAAa;AAC9D;AACA,SAAS,UAAU,SAAS,UAAU,KAAK,UAAU;AACnD,MAAI,QAAQ,QAAQ,MAAM,SAAS,CAAC;AACpC,MAAI,UAAU,KAAK,KAAK,UAAU,IAAI;AACpC,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,cAAQ,MAAM,SAAS;AACvB,UAAI,YAAY,aAAa,KAAK;AAChC,gBAAQ,MAAM,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC;AAAA,MACnD;AACA,aAAO;AAAA,QACL,YAAY,UAAU,OAAO,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,MACjE;AAAA,IACF,OAAO;AACL,UAAI,aAAa,KAAK;AACpB,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,mBAAO;AAAA,cACL,YAAY,UAAU,QAAQ,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,YAClE;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,EAAE,GAAG;AACvB,qBAAO,KAAK,YAAY,UAAU,MAAM,IAAI,CAAC,CAAC;AAAA,YAChD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,cAAM,MAAM,CAAC;AACb,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,gBAAI,KAAK,YAAY,UAAU,MAAM,CAAC;AAAA,UACxC,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,EAAE,GAAG;AACvB,kBAAI,KAAK,iBAAiB,CAAC,CAAC;AAC5B,kBAAI,KAAK,YAAY,UAAU,MAAM,GAAG,SAAS,CAAC,CAAC;AAAA,YACrD;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,cAAc,QAAQ,GAAG;AAC3B,iBAAO,KAAK,iBAAiB,GAAG,IAAI,MAAM,IAAI,KAAK,GAAG,CAAC;AAAA,QACzD,WAAW,IAAI,WAAW,GAAG;AAC3B,iBAAO,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,aAAa,KAAK;AACpB,UAAI,UAAU,KAAK,GAAG;AACpB,eAAO,KAAK,iBAAiB,GAAG,CAAC;AAAA,MACnC;AAAA,IACF,WAAW,UAAU,OAAO,aAAa,OAAO,aAAa,MAAM;AACjE,aAAO,KAAK,iBAAiB,GAAG,IAAI,GAAG;AAAA,IACzC,WAAW,UAAU,IAAI;AACvB,aAAO,KAAK,EAAE;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,SAAS,UAAU;AAC1B,SAAO;AAAA,IACL,QAAQ,OAAO,KAAK,MAAM,QAAQ;AAAA,EACpC;AACF;AACA,SAAS,OAAO,UAAU,SAAS;AACjC,MAAI,YAAY,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAClD,aAAW,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,GAAG,YAAY,SAAS;AAC/B,UAAI,YAAY;AACd,YAAI,WAAW;AACf,cAAM,SAAS,CAAC;AAChB,YAAI,UAAU,QAAQ,WAAW,OAAO,CAAC,CAAC,MAAM,IAAI;AAClD,qBAAW,WAAW,OAAO,CAAC;AAC9B,uBAAa,WAAW,OAAO,CAAC;AAAA,QAClC;AACA,mBAAW,MAAM,IAAI,EAAE,QAAQ,SAAS,UAAU;AAChD,cAAI,MAAM,4BAA4B,KAAK,QAAQ;AACnD,iBAAO,KAAK,UAAU,SAAS,UAAU,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,QACpE,CAAC;AACD,YAAI,YAAY,aAAa,KAAK;AAChC,cAAI,YAAY;AAChB,cAAI,aAAa,KAAK;AACpB,wBAAY;AAAA,UACd,WAAW,aAAa,KAAK;AAC3B,wBAAY;AAAA,UACd;AACA,kBAAQ,OAAO,WAAW,IAAI,WAAW,MAAM,OAAO,KAAK,SAAS;AAAA,QACtE,OAAO;AACL,iBAAO,OAAO,KAAK,GAAG;AAAA,QACxB;AAAA,MACF,OAAO;AACL,eAAO,eAAe,OAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,KAAK;AACpB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,SAAS,QAAQ,OAAO,EAAE;AAAA,EACnC;AACF;AAGA,SAAS,MAAM,SAAS;AApQxB;AAqQE,MAAI,SAAS,QAAQ,OAAO,YAAY;AACxC,MAAI,OAAO,QAAQ,OAAO,KAAK,QAAQ,gBAAgB,MAAM;AAC7D,MAAI,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AAC/C,MAAI;AACJ,MAAI,aAAa,KAAK,SAAS;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,wBAAwB,GAAG;AACpD,QAAM,SAAS,GAAG,EAAE,OAAO,UAAU;AACrC,MAAI,CAAC,QAAQ,KAAK,GAAG,GAAG;AACtB,UAAM,QAAQ,UAAU;AAAA,EAC1B;AACA,QAAM,oBAAoB,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,WAAW,iBAAiB,SAAS,MAAM,CAAC,EAAE,OAAO,SAAS;AACrH,QAAM,sBAAsB,KAAK,YAAY,iBAAiB;AAC9D,QAAM,kBAAkB,6BAA6B,KAAK,QAAQ,MAAM;AACxE,MAAI,CAAC,iBAAiB;AACpB,QAAI,QAAQ,UAAU,QAAQ;AAC5B,cAAQ,SAAS,QAAQ,OAAO,MAAM,GAAG,EAAE;AAAA,QACzC,CAAC,WAAW,OAAO;AAAA,UACjB;AAAA,UACA,uBAAuB,QAAQ,UAAU;AAAA,QAC3C;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AACA,QAAI,IAAI,SAAS,UAAU,GAAG;AAC5B,WAAI,aAAQ,UAAU,aAAlB,mBAA4B,QAAQ;AACtC,cAAM,2BAA2B,QAAQ,OAAO,MAAM,qBAAqB,KAAK,CAAC;AACjF,gBAAQ,SAAS,yBAAyB,OAAO,QAAQ,UAAU,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC5F,gBAAM,SAAS,QAAQ,UAAU,SAAS,IAAI,QAAQ,UAAU,WAAW;AAC3E,iBAAO,0BAA0B,kBAAkB;AAAA,QACrD,CAAC,EAAE,KAAK,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,OAAO,MAAM,EAAE,SAAS,MAAM,GAAG;AACpC,UAAM,mBAAmB,KAAK,mBAAmB;AAAA,EACnD,OAAO;AACL,QAAI,UAAU,qBAAqB;AACjC,aAAO,oBAAoB;AAAA,IAC7B,OAAO;AACL,UAAI,OAAO,KAAK,mBAAmB,EAAE,QAAQ;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,mBAAmB,OAAO,SAAS,aAAa;AAC3D,YAAQ,kBAAkB;AAAA,EAC5B;AACA,MAAI,CAAC,SAAS,KAAK,EAAE,SAAS,MAAM,KAAK,OAAO,SAAS,aAAa;AACpE,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAAA,IACZ,EAAE,QAAQ,KAAK,QAAQ;AAAA,IACvB,OAAO,SAAS,cAAc,EAAE,KAAK,IAAI;AAAA,IACzC,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI;AAAA,EACnD;AACF;AAGA,SAAS,qBAAqB,UAAU,OAAO,SAAS;AACtD,SAAO,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC;AAC9C;AAGA,SAAS,aAAa,aAAa,aAAa;AAC9C,QAAM,YAAY,MAAM,aAAa,WAAW;AAChD,QAAM,YAAY,qBAAqB,KAAK,MAAM,SAAS;AAC3D,SAAO,OAAO,OAAO,WAAW;AAAA,IAC9B,UAAU;AAAA,IACV,UAAU,aAAa,KAAK,MAAM,SAAS;AAAA,IAC3C,OAAO,MAAM,KAAK,MAAM,SAAS;AAAA,IACjC;AAAA,EACF,CAAC;AACH;AAGA,IAAI,WAAW,aAAa,MAAM,QAAQ;;;ACrU1C,qCAA0B;;;ACjB1B,IAAM,eAAN,cAA2B,MAAM;AAAA,EAC/B;AAAA,EAIA;AAAA,EAIA;AAAA,EAIA;AAAA,EACA,YAAY,SAAS,YAAY,SAAS;AACxC,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,SAAS,OAAO,SAAS,UAAU;AACxC,QAAI,OAAO,MAAM,KAAK,MAAM,GAAG;AAC7B,WAAK,SAAS;AAAA,IAChB;AACA,QAAI,cAAc,SAAS;AACzB,WAAK,WAAW,QAAQ;AAAA,IAC1B;AACA,UAAM,cAAc,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AACrD,QAAI,QAAQ,QAAQ,QAAQ,eAAe;AACzC,kBAAY,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,QAAQ,SAAS;AAAA,QAC/D,eAAe,QAAQ,QAAQ,QAAQ,cAAc;AAAA,UACnD;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,gBAAY,MAAM,YAAY,IAAI,QAAQ,wBAAwB,0BAA0B,EAAE,QAAQ,uBAAuB,yBAAyB;AACtJ,SAAK,UAAU;AAAA,EACjB;AACF;;;AD7BA,IAAIC,WAAU;AAGd,IAAI,mBAAmB;AAAA,EACrB,SAAS;AAAA,IACP,cAAc,sBAAsBA,YAAW,aAAa;AAAA,EAC9D;AACF;AAMA,SAASC,eAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU;AAAM,WAAO;AACxD,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAmB,WAAO;AACxE,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU;AAAM,WAAO;AAC3B,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;AAIA,eAAe,aAAa,gBAAgB;AA/B5C;AAgCE,QAAMC,WAAQ,oBAAe,YAAf,mBAAwB,UAAS,WAAW;AAC1D,MAAI,CAACA,QAAO;AACV,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAM,oBAAe,YAAf,mBAAwB,QAAO;AAC3C,QAAM,6BAA2B,oBAAe,YAAf,mBAAwB,8BAA6B;AACtF,QAAM,OAAOD,eAAc,eAAe,IAAI,KAAK,MAAM,QAAQ,eAAe,IAAI,IAAI,KAAK,UAAU,eAAe,IAAI,IAAI,eAAe;AAC7I,QAAM,iBAAiB,OAAO;AAAA,IAC5B,OAAO,QAAQ,eAAe,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;AAAA,MAC5D;AAAA,MACA,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AACA,MAAI;AACJ,MAAI;AACF,oBAAgB,MAAMC,OAAM,eAAe,KAAK;AAAA,MAC9C,QAAQ,eAAe;AAAA,MACvB;AAAA,MACA,WAAU,oBAAe,YAAf,mBAAwB;AAAA,MAClC,SAAS;AAAA,MACT,SAAQ,oBAAe,YAAf,mBAAwB;AAAA,MAGhC,GAAG,eAAe,QAAQ,EAAE,QAAQ,OAAO;AAAA,IAC7C,CAAC;AAAA,EACH,SAAS,OAAP;AACA,QAAI,UAAU;AACd,QAAI,iBAAiB,OAAO;AAC1B,UAAI,MAAM,SAAS,cAAc;AAC/B,cAAM,SAAS;AACf,cAAM;AAAA,MACR;AACA,gBAAU,MAAM;AAChB,UAAI,MAAM,SAAS,eAAe,WAAW,OAAO;AAClD,YAAI,MAAM,iBAAiB,OAAO;AAChC,oBAAU,MAAM,MAAM;AAAA,QACxB,WAAW,OAAO,MAAM,UAAU,UAAU;AAC1C,oBAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,UAAM,eAAe,IAAI,aAAa,SAAS,KAAK;AAAA,MAClD,SAAS;AAAA,IACX,CAAC;AACD,iBAAa,QAAQ;AACrB,UAAM;AAAA,EACR;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,MAAM,cAAc;AAC1B,QAAM,kBAAkB,CAAC;AACzB,aAAW,CAAC,KAAK,KAAK,KAAK,cAAc,SAAS;AAChD,oBAAgB,OAAO;AAAA,EACzB;AACA,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACA,MAAI,iBAAiB,iBAAiB;AACpC,UAAM,UAAU,gBAAgB,QAAQ,gBAAgB,KAAK,MAAM,8BAA8B;AACjG,UAAM,kBAAkB,WAAW,QAAQ,IAAI;AAC/C,QAAI;AAAA,MACF,uBAAuB,eAAe,UAAU,eAAe,wDAAwD,gBAAgB,SAAS,kBAAkB,SAAS,oBAAoB;AAAA,IACjM;AAAA,EACF;AACA,MAAI,WAAW,OAAO,WAAW,KAAK;AACpC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,WAAW,QAAQ;AACpC,QAAI,SAAS,KAAK;AAChB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,aAAa,cAAc,YAAY,QAAQ;AAAA,MACvD,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,WAAW,KAAK;AAClB,oBAAgB,OAAO,MAAM,gBAAgB,aAAa;AAC1D,UAAM,IAAI,aAAa,gBAAgB,QAAQ;AAAA,MAC7C,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,UAAU,KAAK;AACjB,oBAAgB,OAAO,MAAM,gBAAgB,aAAa;AAC1D,UAAM,IAAI,aAAa,eAAe,gBAAgB,IAAI,GAAG,QAAQ;AAAA,MACnE,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,kBAAgB,OAAO,2BAA2B,MAAM,gBAAgB,aAAa,IAAI,cAAc;AACvG,SAAO;AACT;AACA,eAAe,gBAAgB,UAAU;AAjIzC;AAkIE,QAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,MAAI,CAAC,aAAa;AAChB,WAAO,SAAS,KAAK,EAAE,MAAM,MAAM,EAAE;AAAA,EACvC;AACA,QAAM,eAAW,0CAAU,WAAW;AACtC,MAAI,SAAS,SAAS,oBAAoB;AACxC,QAAI,OAAO;AACX,QAAI;AACF,aAAO,MAAM,SAAS,KAAK;AAC3B,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB,SAAS,KAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF,WAAW,SAAS,KAAK,WAAW,OAAO,OAAK,cAAS,WAAW,YAApB,mBAA6B,mBAAkB,SAAS;AACtG,WAAO,SAAS,KAAK,EAAE,MAAM,MAAM,EAAE;AAAA,EACvC,OAAO;AACL,WAAO,SAAS,YAAY,EAAE,MAAM,MAAM,IAAI,YAAY,CAAC,CAAC;AAAA,EAC9D;AACF;AACA,SAAS,eAAe,MAAM;AAC5B,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,aAAa;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,aAAa,MAAM;AACrB,UAAM,SAAS,uBAAuB,OAAO,MAAM,KAAK,sBAAsB;AAC9E,WAAO,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,WAAW,GAAG,KAAK,UAAU;AAAA,EAC9I;AACA,SAAO,kBAAkB,KAAK,UAAU,IAAI;AAC9C;AAGA,SAASC,cAAa,aAAa,aAAa;AAC9C,QAAM,YAAY,YAAY,SAAS,WAAW;AAClD,QAAM,SAAS,SAAS,OAAO,YAAY;AACzC,UAAM,kBAAkB,UAAU,MAAM,OAAO,UAAU;AACzD,QAAI,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,QAAQ,MAAM;AAC7D,aAAO,aAAa,UAAU,MAAM,eAAe,CAAC;AAAA,IACtD;AACA,UAAM,WAAW,CAAC,QAAQ,gBAAgB;AACxC,aAAO;AAAA,QACL,UAAU,MAAM,UAAU,MAAM,QAAQ,WAAW,CAAC;AAAA,MACtD;AAAA,IACF;AACA,WAAO,OAAO,UAAU;AAAA,MACtB,UAAU;AAAA,MACV,UAAUA,cAAa,KAAK,MAAM,SAAS;AAAA,IAC7C,CAAC;AACD,WAAO,gBAAgB,QAAQ,KAAK,UAAU,eAAe;AAAA,EAC/D;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAU;AAAA,IACV,UAAUA,cAAa,KAAK,MAAM,SAAS;AAAA,EAC7C,CAAC;AACH;AAGA,IAAI,UAAUA,cAAa,UAAU,gBAAgB;;;AExLrD,IAAIC,WAAU;AASd,SAAS,+BAA+B,MAAM;AAC5C,SAAO;AAAA,IACL,KAAK,OAAO,IAAI,CAAC,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI;AACvD;AACA,IAAI,uBAAuB,cAAc,MAAM;AAAA,EAC7C,YAAY,UAAU,SAAS,UAAU;AACvC,UAAM,+BAA+B,QAAQ,CAAC;AAC9C,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,SAAS,SAAS;AACvB,SAAK,OAAO,SAAS;AACrB,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAChD;AAAA,EACF;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF;AAGA,IAAI,uBAAuB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAI,6BAA6B,CAAC,SAAS,UAAU,KAAK;AAC1D,IAAI,uBAAuB;AAC3B,SAAS,QAAQ,UAAUC,QAAO,SAAS;AACzC,MAAI,SAAS;AACX,QAAI,OAAOA,WAAU,YAAY,WAAW,SAAS;AACnD,aAAO,QAAQ;AAAA,QACb,IAAI,MAAM,4DAA4D;AAAA,MACxE;AAAA,IACF;AACA,eAAW,OAAO,SAAS;AACzB,UAAI,CAAC,2BAA2B,SAAS,GAAG;AAAG;AAC/C,aAAO,QAAQ;AAAA,QACb,IAAI;AAAA,UACF,uBAAuB;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,OAAOA,WAAU,WAAW,OAAO,OAAO,EAAE,OAAAA,OAAM,GAAG,OAAO,IAAIA;AACtF,QAAM,iBAAiB,OAAO;AAAA,IAC5B;AAAA,EACF,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACxB,QAAI,qBAAqB,SAAS,GAAG,GAAG;AACtC,aAAO,OAAO,cAAc;AAC5B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO,WAAW;AACrB,aAAO,YAAY,CAAC;AAAA,IACtB;AACA,WAAO,UAAU,OAAO,cAAc;AACtC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,UAAU,cAAc,WAAW,SAAS,SAAS,SAAS;AACpE,MAAI,qBAAqB,KAAK,OAAO,GAAG;AACtC,mBAAe,MAAM,QAAQ,QAAQ,sBAAsB,cAAc;AAAA,EAC3E;AACA,SAAO,SAAS,cAAc,EAAE,KAAK,CAAC,aAAa;AACjD,QAAI,SAAS,KAAK,QAAQ;AACxB,YAAM,UAAU,CAAC;AACjB,iBAAW,OAAO,OAAO,KAAK,SAAS,OAAO,GAAG;AAC/C,gBAAQ,OAAO,SAAS,QAAQ;AAAA,MAClC;AACA,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS,KAAK;AAAA,EACvB,CAAC;AACH;AAGA,SAASC,cAAa,UAAU,aAAa;AAC3C,QAAM,aAAa,SAAS,SAAS,WAAW;AAChD,QAAM,SAAS,CAACD,QAAO,YAAY;AACjC,WAAO,QAAQ,YAAYA,QAAO,OAAO;AAAA,EAC3C;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAUC,cAAa,KAAK,MAAM,UAAU;AAAA,IAC5C,UAAU,WAAW;AAAA,EACvB,CAAC;AACH;AAGA,IAAI,WAAWA,cAAa,SAAS;AAAA,EACnC,SAAS;AAAA,IACP,cAAc,sBAAsBF,YAAW,aAAa;AAAA,EAC9D;AAAA,EACA,QAAQ;AAAA,EACR,KAAK;AACP,CAAC;AACD,SAAS,kBAAkB,eAAe;AACxC,SAAOE,cAAa,eAAe;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACP,CAAC;AACH;;;ACzHA,IAAI,+BAA+B;AACnC,IAAI,wBAAwB;AAC5B,IAAI,0BAA0B;AAC9B,eAAe,KAAK,OAAO;AACzB,QAAM,QAAQ,MAAM,MAAM,IAAI,EAAE,WAAW;AAC3C,QAAM,iBAAiB,6BAA6B,KAAK,KAAK,KAAK,sBAAsB,KAAK,KAAK;AACnG,QAAM,iBAAiB,wBAAwB,KAAK,KAAK;AACzD,QAAM,YAAY,QAAQ,QAAQ,iBAAiB,iBAAiB,iBAAiB,mBAAmB;AACxG,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AACF;AAGA,SAAS,wBAAwB,OAAO;AACtC,MAAI,MAAM,MAAM,IAAI,EAAE,WAAW,GAAG;AAClC,WAAO,UAAU;AAAA,EACnB;AACA,SAAO,SAAS;AAClB;AAGA,eAAe,KAAK,OAAOC,UAAS,OAAO,YAAY;AACrD,QAAMC,YAAWD,SAAQ,SAAS;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AACA,EAAAC,UAAS,QAAQ,gBAAgB,wBAAwB,KAAK;AAC9D,SAAOD,SAAQC,SAAQ;AACzB;AAGA,IAAI,kBAAkB,SAAS,iBAAiB,OAAO;AACrD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,UAAQ,MAAM,QAAQ,sBAAsB,EAAE;AAC9C,SAAO,OAAO,OAAO,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IAC3C,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,EAC7B,CAAC;AACH;;;AChDA,IAAMC,WAAU;;;ACMhB,IAAM,OAAO,MAAM;AACnB;AACA,IAAM,cAAc,QAAQ,KAAK,KAAK,OAAO;AAC7C,IAAM,eAAe,QAAQ,MAAM,KAAK,OAAO;AAC/C,IAAM,iBAAiB,mBAAmBC,YAAW,aAAa;AAClE,IAAM,UAAN,MAAc;AAAA,EAEZ,OAAO,SAAS,UAAU;AACxB,UAAM,sBAAsB,cAAc,KAAK;AAAA,MAC7C,eAAe,MAAM;AACnB,cAAM,UAAU,KAAK,MAAM,CAAC;AAC5B,YAAI,OAAO,aAAa,YAAY;AAClC,gBAAM,SAAS,OAAO,CAAC;AACvB;AAAA,QACF;AACA;AAAA,UACE,OAAO;AAAA,YACL,CAAC;AAAA,YACD;AAAA,YACA;AAAA,YACA,QAAQ,aAAa,SAAS,YAAY;AAAA,cACxC,WAAW,GAAG,QAAQ,aAAa,SAAS;AAAA,YAC9C,IAAI;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAQA,OAAO,UAAU,YAAY;AAC3B,UAAM,iBAAiB,KAAK;AAC5B,UAAM,aAAa,cAAc,KAAK;AAAA,MACpC,OAAO,UAAU,eAAe;AAAA,QAC9B,WAAW,OAAO,CAAC,WAAW,CAAC,eAAe,SAAS,MAAM,CAAC;AAAA,MAChE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,UAAU,CAAC,GAAG;AACxB,UAAMC,QAAO,IAAI,0BAAK,WAAW;AACjC,UAAM,kBAAkB;AAAA,MACtB,SAAS,QAAQ,SAAS,SAAS;AAAA,MACnC,SAAS,CAAC;AAAA,MACV,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ,SAAS;AAAA,QAE1C,MAAMA,MAAK,KAAK,MAAM,SAAS;AAAA,MACjC,CAAC;AAAA,MACD,WAAW;AAAA,QACT,UAAU,CAAC;AAAA,QACX,QAAQ;AAAA,MACV;AAAA,IACF;AACA,oBAAgB,QAAQ,gBAAgB,QAAQ,YAAY,GAAG,QAAQ,aAAa,mBAAmB;AACvG,QAAI,QAAQ,SAAS;AACnB,sBAAgB,UAAU,QAAQ;AAAA,IACpC;AACA,QAAI,QAAQ,UAAU;AACpB,sBAAgB,UAAU,WAAW,QAAQ;AAAA,IAC/C;AACA,QAAI,QAAQ,UAAU;AACpB,sBAAgB,QAAQ,eAAe,QAAQ;AAAA,IACjD;AACA,SAAK,UAAU,QAAQ,SAAS,eAAe;AAC/C,SAAK,UAAU,kBAAkB,KAAK,OAAO,EAAE,SAAS,eAAe;AACvE,SAAK,MAAM,OAAO;AAAA,MAChB;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,IACV;AACA,SAAK,OAAOA;AACZ,QAAI,CAAC,QAAQ,cAAc;AACzB,UAAI,CAAC,QAAQ,MAAM;AACjB,aAAK,OAAO,aAAa;AAAA,UACvB,MAAM;AAAA,QACR;AAAA,MACF,OAAO;AACL,cAAMC,QAAO,gBAAgB,QAAQ,IAAI;AACzC,QAAAD,MAAK,KAAK,WAAWC,MAAK,IAAI;AAC9B,aAAK,OAAOA;AAAA,MACd;AAAA,IACF,OAAO;AACL,YAAM,EAAE,iBAAiB,aAAa,IAAI;AAC1C,YAAMA,QAAO;AAAA,QACX,OAAO;AAAA,UACL;AAAA,YACE,SAAS,KAAK;AAAA,YACd,KAAK,KAAK;AAAA,YAMV,SAAS;AAAA,YACT,gBAAgB;AAAA,UAClB;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF;AACA,MAAAD,MAAK,KAAK,WAAWC,MAAK,IAAI;AAC9B,WAAK,OAAOA;AAAA,IACd;AACA,UAAM,mBAAmB,KAAK;AAC9B,aAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,QAAQ,EAAE,GAAG;AACxD,aAAO,OAAO,MAAM,iBAAiB,QAAQ,GAAG,MAAM,OAAO,CAAC;AAAA,IAChE;AAAA,EACF;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AACF;AAtHE,cADI,SACG,WAAUF;AAuBjB,cAxBI,SAwBG,WAAU,CAAC;;;ACnCpB,IAAMG,WAAU;;;ACChB,SAAS,WAAW,SAAS;AAC3B,UAAQ,KAAK,KAAK,WAAW,CAACC,UAAS,YAAY;AACjD,YAAQ,IAAI,MAAM,WAAW,OAAO;AACpC,UAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,iBAAiB,QAAQ,QAAQ,SAAS,MAAM,OAAO;AAC7D,UAAM,OAAO,eAAe,IAAI,QAAQ,QAAQ,SAAS,EAAE;AAC3D,WAAOA,SAAQ,OAAO,EAAE,KAAK,CAAC,aAAa;AACzC,YAAM,YAAY,SAAS,QAAQ;AACnC,cAAQ,IAAI;AAAA,QACV,GAAG,eAAe,UAAU,UAAU,SAAS,kBAAkB,gBAAgB,KAAK,IAAI,IAAI;AAAA,MAChG;AACA,aAAO;AAAA,IACT,CAAC,EAAE,MAAM,CAAC,UAAU;AAbxB;AAcM,YAAM,cAAY,WAAM,aAAN,mBAAgB,QAAQ,2BAA0B;AACpE,cAAQ,IAAI;AAAA,QACV,GAAG,eAAe,UAAU,UAAU,MAAM,kBAAkB,gBAAgB,KAAK,IAAI,IAAI;AAAA,MAC7F;AACA,YAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH;AACA,WAAW,UAAUC;;;ACrBrB,IAAIC,WAAU;AAGd,SAAS,+BAA+B,UAAU;AAChD,MAAI,CAAC,SAAS,MAAM;AAClB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AACA,QAAM,6BAA6B,iBAAiB,SAAS,QAAQ,EAAE,SAAS,SAAS;AACzF,MAAI,CAAC;AAA4B,WAAO;AACxC,QAAM,oBAAoB,SAAS,KAAK;AACxC,QAAM,sBAAsB,SAAS,KAAK;AAC1C,QAAM,aAAa,SAAS,KAAK;AACjC,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,QAAM,eAAe,OAAO,KAAK,SAAS,IAAI,EAAE;AAChD,QAAM,OAAO,SAAS,KAAK;AAC3B,WAAS,OAAO;AAChB,MAAI,OAAO,sBAAsB,aAAa;AAC5C,aAAS,KAAK,qBAAqB;AAAA,EACrC;AACA,MAAI,OAAO,wBAAwB,aAAa;AAC9C,aAAS,KAAK,uBAAuB;AAAA,EACvC;AACA,WAAS,KAAK,cAAc;AAC5B,SAAO;AACT;AAGA,SAAS,SAAS,SAAS,OAAO,YAAY;AAC5C,QAAM,UAAU,OAAO,UAAU,aAAa,MAAM,SAAS,UAAU,IAAI,QAAQ,QAAQ,SAAS,OAAO,UAAU;AACrH,QAAM,gBAAgB,OAAO,UAAU,aAAa,QAAQ,QAAQ;AACpE,QAAM,SAAS,QAAQ;AACvB,QAAM,UAAU,QAAQ;AACxB,MAAI,MAAM,QAAQ;AAClB,SAAO;AAAA,IACL,CAAC,OAAO,gBAAgB,OAAO;AAAA,MAC7B,MAAM,OAAO;AACX,YAAI,CAAC;AAAK,iBAAO,EAAE,MAAM,KAAK;AAC9B,YAAI;AACF,gBAAM,WAAW,MAAM,cAAc,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAC7D,gBAAM,qBAAqB,+BAA+B,QAAQ;AAClE,kBAAQ,mBAAmB,QAAQ,QAAQ,IAAI;AAAA,YAC7C;AAAA,UACF,KAAK,CAAC,GAAG;AACT,iBAAO,EAAE,OAAO,mBAAmB;AAAA,QACrC,SAAS,OAAP;AACA,cAAI,MAAM,WAAW;AAAK,kBAAM;AAChC,gBAAM;AACN,iBAAO;AAAA,YACL,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS,CAAC;AAAA,cACV,MAAM,CAAC;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAGA,SAAS,SAAS,SAAS,OAAO,YAAY,OAAO;AACnD,MAAI,OAAO,eAAe,YAAY;AACpC,YAAQ;AACR,iBAAa;AAAA,EACf;AACA,SAAO;AAAA,IACL;AAAA,IACA,CAAC;AAAA,IACD,SAAS,SAAS,OAAO,UAAU,EAAE,OAAO,eAAe;AAAA,IAC3D;AAAA,EACF;AACF;AACA,SAAS,OAAO,SAAS,SAAS,WAAW,OAAO;AAClD,SAAO,UAAU,KAAK,EAAE,KAAK,CAAC,WAAW;AACvC,QAAI,OAAO,MAAM;AACf,aAAO;AAAA,IACT;AACA,QAAI,YAAY;AAChB,aAAS,OAAO;AACd,kBAAY;AAAA,IACd;AACA,cAAU,QAAQ;AAAA,MAChB,QAAQ,MAAM,OAAO,OAAO,IAAI,IAAI,OAAO,MAAM;AAAA,IACnD;AACA,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AACA,WAAO,OAAO,SAAS,SAAS,WAAW,KAAK;AAAA,EAClD,CAAC;AACH;AAGA,IAAI,sBAAsB,OAAO,OAAO,UAAU;AAAA,EAChD;AACF,CAAC;AA6QD,SAAS,aAAa,SAAS;AAC7B,SAAO;AAAA,IACL,UAAU,OAAO,OAAO,SAAS,KAAK,MAAM,OAAO,GAAG;AAAA,MACpD,UAAU,SAAS,KAAK,MAAM,OAAO;AAAA,IACvC,CAAC;AAAA,EACH;AACF;AACA,aAAa,UAAUC;;;ACzXhB,IAAMC,WAAU;;;ACCvB,IAAM,YAA6C;EACjD,SAAS;IACP,yCAAyC;MACvC;IACF;IACA,0CAA0C;MACxC;IACF;IACA,2CAA2C;MACzC;IACF;IACA,4BAA4B;MAC1B;IACF;IACA,8BAA8B;MAC5B;IACF;IACA,oBAAoB;MAClB;IACF;IACA,mBAAmB;MACjB;IACF;IACA,2BAA2B;MACzB;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,yBAAyB,CAAC,+CAA+C;IACzE,0BAA0B;MACxB;IACF;IACA,mBAAmB,CAAC,oCAAoC;IACxD,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,yBAAyB,CAAC,+CAA+C;IACzE,0BAA0B;MACxB;IACF;IACA,oBAAoB,CAAC,8CAA8C;IACnE,wBAAwB;MACtB;IACF;IACA,wBAAwB;MACtB;IACF;IACA,yBAAyB;MACvB;IACF;IACA,gBAAgB;MACd;IACF;IACA,yBAAyB;MACvB;IACF;IACA,2BAA2B;MACzB;IACF;IACA,iBAAiB,CAAC,kDAAkD;IACpE,mBAAmB,CAAC,6CAA6C;IACjE,kBAAkB;MAChB;IACF;IACA,oBAAoB;MAClB;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,mBAAmB,CAAC,oDAAoD;IACxE,uBAAuB;MACrB;IACF;IACA,oDAAoD;MAClD;IACF;IACA,iBAAiB;MACf;IACF;IACA,kBAAkB;MAChB;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,yBAAyB;MACvB;IACF;IACA,mDAAmD;MACjD;IACF;IACA,gBAAgB;MACd;IACF;IACA,wBAAwB;MACtB;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,qBAAqB,CAAC,0CAA0C;IAChE,sBAAsB,CAAC,+CAA+C;IACtE,kCAAkC;MAChC;IACF;IACA,4BAA4B,CAAC,qCAAqC;IAClE,+BAA+B;MAC7B;IACF;IACA,6BAA6B;MAC3B;IACF;IACA,aAAa,CAAC,2DAA2D;IACzE,8BAA8B;MAC5B;IACF;IACA,yBAAyB;MACvB;IACF;IACA,sBAAsB;MACpB;IACF;IACA,wBAAwB;MACtB;IACF;IACA,wDAAwD;MACtD;IACF;IACA,sDAAsD;MACpD;IACF;IACA,yCAAyC;MACvC;IACF;IACA,uCAAuC;MACrC;IACF;IACA,sBAAsB,CAAC,iDAAiD;IACxE,iBAAiB,CAAC,4CAA4C;IAC9D,cAAc,CAAC,+CAA+C;IAC9D,gBAAgB,CAAC,0CAA0C;IAC3D,6BAA6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iCAAiC;MAC/B;IACF;IACA,2CAA2C;MACzC;IACF;IACA,qCAAqC;MACnC;IACF;IACA,2BAA2B;MACzB;IACF;IACA,wCAAwC;MACtC;IACF;IACA,qBAAqB;MACnB;IACF;IACA,+BAA+B;MAC7B;IACF;EACF;EACA,gBAAgB;IACd,sBAAsB,CAAC,uBAAuB;IAC9C,gBAAgB,CAAC,6BAA6B;EAChD;EACA,YAAY;IACV,4CAA4C;MAC1C;IACF;IACA,4BAA4B;MAC1B;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,uCAAuC;MACrC;IACF;IACA,4BAA4B,CAAC,uBAAuB;IACpD,yBAAyB;MACvB;IACF;IACA,0BAA0B;MACxB;IACF;IACA,0CAA0C;MACxC;IACF;IACA,kCAAkC;MAChC;IACF;IACA,oCAAoC;MAClC;IACF;IACA,4BAA4B,CAAC,0CAA0C;IACvE,wBAAwB;MACtB;IACF;IACA,iBAAiB,CAAC,qDAAqD;IACvE,kBAAkB;MAChB;IACF;IACA,kCAAkC;MAChC;IACF;IACA,4BAA4B;MAC1B;IACF;IACA,2BAA2B;MACzB;IACF;IACA,sCAAsC;MACpC;IACF;IACA,yBAAyB,CAAC,uCAAuC;IACjE,iBAAiB,CAAC,+CAA+C;IACjE,cAAc,CAAC,kDAAkD;IACjE,kCAAkC;MAChC;IACF;IACA,kBAAkB;MAChB;IACF;IACA,eAAe;MACb;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,mDAAmD;MACjD;IACF;IACA,0BAA0B,CAAC,sBAAsB;IACjD,oBAAoB;MAClB;MACA,CAAC;MACD,EAAE,mBAAmB,EAAE,QAAQ,MAAM,EAAE;IACzC;IACA,sCAAsC;MACpC;IACF;IACA,gBAAgB,CAAC,oCAAoC;IACrD,iBAAiB,CAAC,8CAA8C;IAChE,+CAA+C;MAC7C;IACF;IACA,iCAAiC,CAAC,8BAA8B;IAChE,+BAA+B;MAC7B;IACF;IACA,uCAAuC;MACrC;IACF;IACA,6BAA6B;MAC3B;IACF;IACA,+CAA+C;MAC7C;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,kCAAkC;MAChC;IACF;IA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", - "names": ["NullObject", "parse", "safeParse", "GraphQLType", "params", "fragment", "query", "alias", "types", "debug", "debug", "debug", "parse", "parse", "parse", "parse", "parse", "parse", "debug", "debug", "require_valid", "require_semver", "parse", "name", "method", "hook", "hook", "VERSION", "isPlainObject", "fetch", "withDefaults", "VERSION", "query", "withDefaults", "request", "endpoint", "VERSION", "VERSION", "hook", "auth", "VERSION", "request", "VERSION", "VERSION", "VERSION", "VERSION", "endpoint", "options", "VERSION", "VERSION", "Octokit", "VERSION", "Octokit", "params", "import_typed_graphqlify", "semver", "import_semver", "semver", "import_semver", "semver", "ScopeRequirement", "ReleaseNotesLevel", "params", "ManagedRepositories"] -} diff --git a/bundles/chunk-PSBRY2K3.mjs b/bundles/chunk-PSBRY2K3.mjs new file mode 100755 index 0000000..a538a99 --- /dev/null +++ b/bundles/chunk-PSBRY2K3.mjs @@ -0,0 +1,13900 @@ + +import {createRequire as __cjsCompatRequire} from 'module'; +const require = __cjsCompatRequire(import.meta.url); + +import { + ChildProcess, + ConfigValidationError, + Log, + assertValidGithubConfig, + determineRepoBaseDirFromCwd, + getConfig, + green, + yellow +} from "./chunk-A44KY2LO.mjs"; +import { + __commonJS, + __publicField, + __require, + __toESM +} from "./chunk-2JKI6SI6.mjs"; + +// node_modules/fast-content-type-parse/index.js +var require_fast_content_type_parse = __commonJS({ + "node_modules/fast-content-type-parse/index.js"(exports, module) { + "use strict"; + var NullObject = function NullObject2() { + }; + NullObject.prototype = /* @__PURE__ */ Object.create(null); + var paramRE = /; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu; + var quotedPairRE = /\\([\v\u0020-\u00ff])/gu; + var mediaTypeRE = /^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u; + var defaultContentType = { type: "", parameters: new NullObject() }; + Object.freeze(defaultContentType.parameters); + Object.freeze(defaultContentType); + function parse2(header) { + if (typeof header !== "string") { + throw new TypeError("argument header is required and must be a string"); + } + let index = header.indexOf(";"); + const type = index !== -1 ? header.slice(0, index).trim() : header.trim(); + if (mediaTypeRE.test(type) === false) { + throw new TypeError("invalid media type"); + } + const result = { + type: type.toLowerCase(), + parameters: new NullObject() + }; + if (index === -1) { + return result; + } + let key; + let match; + let value; + paramRE.lastIndex = index; + while (match = paramRE.exec(header)) { + if (match.index !== index) { + throw new TypeError("invalid parameter format"); + } + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (value[0] === '"') { + value = value.slice(1, value.length - 1); + quotedPairRE.test(value) && (value = value.replace(quotedPairRE, "$1")); + } + result.parameters[key] = value; + } + if (index !== header.length) { + throw new TypeError("invalid parameter format"); + } + return result; + } + function safeParse2(header) { + if (typeof header !== "string") { + return defaultContentType; + } + let index = header.indexOf(";"); + const type = index !== -1 ? header.slice(0, index).trim() : header.trim(); + if (mediaTypeRE.test(type) === false) { + return defaultContentType; + } + const result = { + type: type.toLowerCase(), + parameters: new NullObject() + }; + if (index === -1) { + return result; + } + let key; + let match; + let value; + paramRE.lastIndex = index; + while (match = paramRE.exec(header)) { + if (match.index !== index) { + return defaultContentType; + } + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (value[0] === '"') { + value = value.slice(1, value.length - 1); + quotedPairRE.test(value) && (value = value.replace(quotedPairRE, "$1")); + } + result.parameters[key] = value; + } + if (index !== header.length) { + return defaultContentType; + } + return result; + } + module.exports.default = { parse: parse2, safeParse: safeParse2 }; + module.exports.parse = parse2; + module.exports.safeParse = safeParse2; + module.exports.defaultContentType = defaultContentType; + } +}); + +// node_modules/typed-graphqlify/dist/index.js +var require_dist = __commonJS({ + "node_modules/typed-graphqlify/dist/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GraphQLType = void 0; + (function(GraphQLType) { + GraphQLType[GraphQLType["SCALAR"] = 0] = "SCALAR"; + GraphQLType[GraphQLType["INLINE_FRAGMENT"] = 1] = "INLINE_FRAGMENT"; + GraphQLType[GraphQLType["FRAGMENT"] = 2] = "FRAGMENT"; + })(exports.GraphQLType || (exports.GraphQLType = {})); + var typeSymbol = Symbol("GraphQL Type"); + var paramsSymbol = Symbol("GraphQL Params"); + function isInlineFragmentObject(value) { + return typeof value === "object" && value !== null && value[typeSymbol] === exports.GraphQLType.INLINE_FRAGMENT; + } + function isFragmentObject(value) { + return typeof value === "object" && value !== null && value[typeSymbol] === exports.GraphQLType.FRAGMENT; + } + function isScalarObject(value) { + return typeof value === "object" && value !== null && value[typeSymbol] === exports.GraphQLType.SCALAR; + } + function renderName(name) { + return name === void 0 ? "" : name; + } + function renderParams(params3, brackets, array) { + if (brackets === void 0) { + brackets = true; + } + if (array === void 0) { + array = false; + } + if (!params3) { + return ""; + } + var builder = []; + for (var _i = 0, _a = Object.entries(params3); _i < _a.length; _i++) { + var _b = _a[_i], key = _b[0], value = _b[1]; + var params_1 = void 0; + if (value === null) { + params_1 = "null"; + } else if (Array.isArray(value)) { + params_1 = "[".concat(renderParams(value, false, true), "]"); + } else if (typeof value === "object") { + params_1 = "{".concat(renderParams(value, false), "}"); + } else { + params_1 = "".concat(value); + } + builder.push(array ? "".concat(params_1) : "".concat(key, ":").concat(params_1)); + } + var built = builder.join(","); + if (brackets) { + built = "(".concat(built, ")"); + } + return built; + } + function renderScalar(name, params3) { + return renderName(name) + renderParams(params3); + } + function renderInlineFragment(fragment2, context) { + return "...on ".concat(fragment2.typeName).concat(renderObject(void 0, fragment2.internal, context)); + } + function renderFragment(fragment2, context) { + return "fragment ".concat(fragment2.name, " on ").concat(fragment2.typeName).concat(renderObject(void 0, fragment2.internal, context)); + } + function renderArray(name, arr, context) { + var first = arr[0]; + if (first === void 0 || first === null) { + throw new Error("Cannot render array with no first value"); + } + first[paramsSymbol] = arr[paramsSymbol]; + return renderType(name, first, context); + } + function renderType(name, value, context) { + switch (typeof value) { + case "bigint": + case "boolean": + case "number": + case "string": + throw new Error("Rendering type ".concat(typeof value, " directly is disallowed")); + case "object": + if (value === null) { + throw new Error("Cannot render null"); + } + if (isScalarObject(value)) { + return "".concat(renderScalar(name, value[paramsSymbol]), " "); + } else if (Array.isArray(value)) { + return renderArray(name, value, context); + } else { + return renderObject(name, value, context); + } + case "undefined": + return ""; + default: + throw new Error("Cannot render type ".concat(typeof value)); + } + } + function renderObject(name, obj, context) { + var fields = []; + for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) { + var _b = _a[_i], key = _b[0], value = _b[1]; + fields.push(renderType(key, value, context)); + } + for (var _c = 0, _d = Object.getOwnPropertySymbols(obj); _c < _d.length; _c++) { + var sym = _d[_c]; + var value = obj[sym]; + if (isInlineFragmentObject(value)) { + fields.push(renderInlineFragment(value, context)); + } else if (isFragmentObject(value)) { + context.fragments.set(sym, value); + fields.push("...".concat(value.name)); + } + } + if (fields.length === 0) { + throw new Error("Object cannot have no fields"); + } + return "".concat(renderName(name)).concat(renderParams(obj[paramsSymbol]), "{").concat(fields.join("").trim(), "}"); + } + function render(value) { + var context = { + fragments: /* @__PURE__ */ new Map() + }; + var rend = renderObject(void 0, value, context); + var rendered = /* @__PURE__ */ new Map(); + var executingContext = context; + var currentContext = { + fragments: /* @__PURE__ */ new Map() + }; + while (executingContext.fragments.size > 0) { + for (var _i = 0, _a = Array.from(executingContext.fragments.entries()); _i < _a.length; _i++) { + var _b = _a[_i], sym = _b[0], fragment2 = _b[1]; + if (!rendered.has(sym)) { + rendered.set(sym, renderFragment(fragment2, currentContext)); + } + } + executingContext = currentContext; + currentContext = { + fragments: /* @__PURE__ */ new Map() + }; + } + return rend + Array.from(rendered.values()).join(""); + } + function fragmentToString(value) { + var context = { + fragments: /* @__PURE__ */ new Map() + }; + renderObject(void 0, value, context); + var currentContext = { + fragments: /* @__PURE__ */ new Map() + }; + var output = ""; + for (var _i = 0, _a = Array.from(context.fragments.entries()); _i < _a.length; _i++) { + var _b = _a[_i], fragment2 = _b[1]; + output = output + renderFragment(fragment2, currentContext); + } + return output; + } + function createOperate(operateType) { + function operate(opNameOrQueryObject, queryObject) { + if (typeof opNameOrQueryObject === "string") { + if (!queryObject) { + throw new Error("queryObject is not set"); + } + return { + toString: function() { + return "".concat(operateType, " ").concat(opNameOrQueryObject).concat(render(queryObject)); + } + }; + } + return { + toString: function() { + return "".concat(operateType).concat(render(opNameOrQueryObject)); + } + }; + } + return operate; + } + var query2 = createOperate("query"); + var mutation = createOperate("mutation"); + var subscription = createOperate("subscription"); + function params2(params3, input) { + if (typeof params3 !== "object") { + throw new Error("Params have to be an object"); + } + if (typeof input !== "object") { + throw new Error("Cannot apply params to JS ".concat(typeof params3)); + } + input[paramsSymbol] = params3; + return input; + } + function alias(alias2, target) { + return "".concat(alias2, ":").concat(target); + } + function fragment(name, typeName, input) { + var _a, _b; + var fragment2 = (_a = {}, _a[typeSymbol] = exports.GraphQLType.FRAGMENT, _a.name = name, _a.typeName = typeName, _a.internal = input, _a); + return _b = {}, _b[Symbol("Fragment(".concat(name, " on ").concat(typeName, ")"))] = fragment2, _b; + } + function rawString(input) { + return JSON.stringify(input); + } + var __assign = function() { + __assign = Object.assign || function __assign2(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + function optional(obj) { + return obj; + } + function on(typeName, internal) { + var _a, _b; + var fragment2 = (_a = {}, _a[typeSymbol] = exports.GraphQLType.INLINE_FRAGMENT, _a.typeName = typeName, _a.internal = internal, _a); + return _b = {}, _b[Symbol("InlineFragment(".concat(typeName, ")"))] = fragment2, _b; + } + function onUnion(types3) { + var fragments = {}; + for (var _i = 0, _a = Object.entries(types3); _i < _a.length; _i++) { + var _b = _a[_i], typeName = _b[0], internal = _b[1]; + fragments = __assign(__assign({}, fragments), on(typeName, internal)); + } + return fragments; + } + function scalarType() { + var _a; + var scalar = (_a = {}, _a[typeSymbol] = exports.GraphQLType.SCALAR, _a); + return scalar; + } + var types2 = function() { + function types3() { + } + Object.defineProperty(types3, "number", { + get: function() { + return scalarType(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(types3, "string", { + get: function() { + return scalarType(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(types3, "boolean", { + get: function() { + return scalarType(); + }, + enumerable: false, + configurable: true + }); + types3.constant = function(_c) { + return scalarType(); + }; + types3.oneOf = function(_e) { + return scalarType(); + }; + types3.custom = function() { + return scalarType(); + }; + types3.optional = types3; + return types3; + }(); + exports.alias = alias; + exports.fragment = fragment; + exports.fragmentToString = fragmentToString; + exports.mutation = mutation; + exports.on = on; + exports.onUnion = onUnion; + exports.optional = optional; + exports.params = params2; + exports.paramsSymbol = paramsSymbol; + exports.query = query2; + exports.rawString = rawString; + exports.render = render; + exports.subscription = subscription; + exports.typeSymbol = typeSymbol; + exports.types = types2; + } +}); + +// node_modules/semver/internal/constants.js +var require_constants = __commonJS({ + "node_modules/semver/internal/constants.js"(exports, module) { + var SEMVER_SPEC_VERSION = "2.0.0"; + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + var MAX_SAFE_COMPONENT_LENGTH = 16; + var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; + var RELEASE_TYPES = [ + "major", + "premajor", + "minor", + "preminor", + "patch", + "prepatch", + "prerelease" + ]; + module.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 1, + FLAG_LOOSE: 2 + }; + } +}); + +// node_modules/semver/internal/debug.js +var require_debug = __commonJS({ + "node_modules/semver/internal/debug.js"(exports, module) { + var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => { + }; + module.exports = debug2; + } +}); + +// node_modules/semver/internal/re.js +var require_re = __commonJS({ + "node_modules/semver/internal/re.js"(exports, module) { + var { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH + } = require_constants(); + var debug2 = require_debug(); + exports = module.exports = {}; + var re = exports.re = []; + var safeRe = exports.safeRe = []; + var src = exports.src = []; + var t = exports.t = {}; + var R = 0; + var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; + var safeRegexReplacements = [ + ["\\s", 1], + ["\\d", MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] + ]; + var makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) { + value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`); + } + return value; + }; + var createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value); + const index = R++; + debug2(name, index, value); + t[name] = index; + src[index] = value; + re[index] = new RegExp(value, isGlobal ? "g" : void 0); + safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0); + }; + createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); + createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); + createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); + createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); + createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`); + createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`); + createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); + createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); + createToken("FULL", `^${src[t.FULLPLAIN]}$`); + createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); + createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); + createToken("GTLT", "((?:<|>)?=?)"); + createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); + createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); + createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`); + createToken("COERCERTL", src[t.COERCE], true); + createToken("COERCERTLFULL", src[t.COERCEFULL], true); + createToken("LONETILDE", "(?:~>?)"); + createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports.tildeTrimReplace = "$1~"; + createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("LONECARET", "(?:\\^)"); + createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports.caretTrimReplace = "$1^"; + createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports.comparatorTrimReplace = "$1$2$3"; + createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); + createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); + createToken("STAR", "(<|>)?=?\\s*\\*"); + createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); + createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } +}); + +// node_modules/semver/internal/parse-options.js +var require_parse_options = __commonJS({ + "node_modules/semver/internal/parse-options.js"(exports, module) { + var looseOption = Object.freeze({ loose: true }); + var emptyOpts = Object.freeze({}); + var parseOptions = (options) => { + if (!options) { + return emptyOpts; + } + if (typeof options !== "object") { + return looseOption; + } + return options; + }; + module.exports = parseOptions; + } +}); + +// node_modules/semver/internal/identifiers.js +var require_identifiers = __commonJS({ + "node_modules/semver/internal/identifiers.js"(exports, module) { + var numeric = /^[0-9]+$/; + var compareIdentifiers = (a, b) => { + const anum = numeric.test(a); + const bnum = numeric.test(b); + if (anum && bnum) { + a = +a; + b = +b; + } + return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; + }; + var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); + module.exports = { + compareIdentifiers, + rcompareIdentifiers + }; + } +}); + +// node_modules/semver/classes/semver.js +var require_semver = __commonJS({ + "node_modules/semver/classes/semver.js"(exports, module) { + var debug2 = require_debug(); + var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants(); + var { safeRe: re, t } = require_re(); + var parseOptions = require_parse_options(); + var { compareIdentifiers } = require_identifiers(); + var SemVer = class { + constructor(version, options) { + options = parseOptions(options); + if (version instanceof SemVer) { + if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { + return version; + } else { + version = version.version; + } + } else if (typeof version !== "string") { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`); + } + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ); + } + debug2("SemVer", version, options); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + if (!m) { + throw new TypeError(`Invalid Version: ${version}`); + } + this.raw = version; + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError("Invalid major version"); + } + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError("Invalid minor version"); + } + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError("Invalid patch version"); + } + if (!m[4]) { + this.prerelease = []; + } else { + this.prerelease = m[4].split(".").map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num; + } + } + return id; + }); + } + this.build = m[5] ? m[5].split(".") : []; + this.format(); + } + format() { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) { + this.version += `-${this.prerelease.join(".")}`; + } + return this.version; + } + toString() { + return this.version; + } + compare(other) { + debug2("SemVer.compare", this.version, this.options, other); + if (!(other instanceof SemVer)) { + if (typeof other === "string" && other === this.version) { + return 0; + } + other = new SemVer(other, this.options); + } + if (other.version === this.version) { + return 0; + } + return this.compareMain(other) || this.comparePre(other); + } + compareMain(other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch); + } + comparePre(other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + if (this.prerelease.length && !other.prerelease.length) { + return -1; + } else if (!this.prerelease.length && other.prerelease.length) { + return 1; + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0; + } + let i = 0; + do { + const a = this.prerelease[i]; + const b = other.prerelease[i]; + debug2("prerelease compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + compareBuild(other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + let i = 0; + do { + const a = this.build[i]; + const b = other.build[i]; + debug2("build compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + inc(release, identifier, identifierBase) { + switch (release) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier, identifierBase); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier, identifierBase); + break; + case "prepatch": + this.prerelease.length = 0; + this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + case "prerelease": + if (this.prerelease.length === 0) { + this.inc("patch", identifier, identifierBase); + } + this.inc("pre", identifier, identifierBase); + break; + case "major": + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break; + case "patch": + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break; + case "pre": { + const base = Number(identifierBase) ? 1 : 0; + if (!identifier && identifierBase === false) { + throw new Error("invalid increment argument: identifier is empty"); + } + if (this.prerelease.length === 0) { + this.prerelease = [base]; + } else { + let i = this.prerelease.length; + while (--i >= 0) { + if (typeof this.prerelease[i] === "number") { + this.prerelease[i]++; + i = -2; + } + } + if (i === -1) { + if (identifier === this.prerelease.join(".") && identifierBase === false) { + throw new Error("invalid increment argument: identifier already exists"); + } + this.prerelease.push(base); + } + } + if (identifier) { + let prerelease = [identifier, base]; + if (identifierBase === false) { + prerelease = [identifier]; + } + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = prerelease; + } + } else { + this.prerelease = prerelease; + } + } + break; + } + default: + throw new Error(`invalid increment argument: ${release}`); + } + this.raw = this.format(); + if (this.build.length) { + this.raw += `+${this.build.join(".")}`; + } + return this; + } + }; + module.exports = SemVer; + } +}); + +// node_modules/semver/functions/parse.js +var require_parse = __commonJS({ + "node_modules/semver/functions/parse.js"(exports, module) { + var SemVer = require_semver(); + var parse2 = (version, options, throwErrors = false) => { + if (version instanceof SemVer) { + return version; + } + try { + return new SemVer(version, options); + } catch (er) { + if (!throwErrors) { + return null; + } + throw er; + } + }; + module.exports = parse2; + } +}); + +// node_modules/semver/functions/valid.js +var require_valid = __commonJS({ + "node_modules/semver/functions/valid.js"(exports, module) { + var parse2 = require_parse(); + var valid = (version, options) => { + const v = parse2(version, options); + return v ? v.version : null; + }; + module.exports = valid; + } +}); + +// node_modules/semver/functions/clean.js +var require_clean = __commonJS({ + "node_modules/semver/functions/clean.js"(exports, module) { + var parse2 = require_parse(); + var clean = (version, options) => { + const s = parse2(version.trim().replace(/^[=v]+/, ""), options); + return s ? s.version : null; + }; + module.exports = clean; + } +}); + +// node_modules/semver/functions/inc.js +var require_inc = __commonJS({ + "node_modules/semver/functions/inc.js"(exports, module) { + var SemVer = require_semver(); + var inc = (version, release, options, identifier, identifierBase) => { + if (typeof options === "string") { + identifierBase = identifier; + identifier = options; + options = void 0; + } + try { + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier, identifierBase).version; + } catch (er) { + return null; + } + }; + module.exports = inc; + } +}); + +// node_modules/semver/functions/diff.js +var require_diff = __commonJS({ + "node_modules/semver/functions/diff.js"(exports, module) { + var parse2 = require_parse(); + var diff = (version1, version2) => { + const v1 = parse2(version1, null, true); + const v2 = parse2(version2, null, true); + const comparison = v1.compare(v2); + if (comparison === 0) { + return null; + } + const v1Higher = comparison > 0; + const highVersion = v1Higher ? v1 : v2; + const lowVersion = v1Higher ? v2 : v1; + const highHasPre = !!highVersion.prerelease.length; + const lowHasPre = !!lowVersion.prerelease.length; + if (lowHasPre && !highHasPre) { + if (!lowVersion.patch && !lowVersion.minor) { + return "major"; + } + if (highVersion.patch) { + return "patch"; + } + if (highVersion.minor) { + return "minor"; + } + return "major"; + } + const prefix = highHasPre ? "pre" : ""; + if (v1.major !== v2.major) { + return prefix + "major"; + } + if (v1.minor !== v2.minor) { + return prefix + "minor"; + } + if (v1.patch !== v2.patch) { + return prefix + "patch"; + } + return "prerelease"; + }; + module.exports = diff; + } +}); + +// node_modules/semver/functions/major.js +var require_major = __commonJS({ + "node_modules/semver/functions/major.js"(exports, module) { + var SemVer = require_semver(); + var major = (a, loose) => new SemVer(a, loose).major; + module.exports = major; + } +}); + +// node_modules/semver/functions/minor.js +var require_minor = __commonJS({ + "node_modules/semver/functions/minor.js"(exports, module) { + var SemVer = require_semver(); + var minor = (a, loose) => new SemVer(a, loose).minor; + module.exports = minor; + } +}); + +// node_modules/semver/functions/patch.js +var require_patch = __commonJS({ + "node_modules/semver/functions/patch.js"(exports, module) { + var SemVer = require_semver(); + var patch = (a, loose) => new SemVer(a, loose).patch; + module.exports = patch; + } +}); + +// node_modules/semver/functions/prerelease.js +var require_prerelease = __commonJS({ + "node_modules/semver/functions/prerelease.js"(exports, module) { + var parse2 = require_parse(); + var prerelease = (version, options) => { + const parsed = parse2(version, options); + return parsed && parsed.prerelease.length ? parsed.prerelease : null; + }; + module.exports = prerelease; + } +}); + +// node_modules/semver/functions/compare.js +var require_compare = __commonJS({ + "node_modules/semver/functions/compare.js"(exports, module) { + var SemVer = require_semver(); + var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); + module.exports = compare; + } +}); + +// node_modules/semver/functions/rcompare.js +var require_rcompare = __commonJS({ + "node_modules/semver/functions/rcompare.js"(exports, module) { + var compare = require_compare(); + var rcompare = (a, b, loose) => compare(b, a, loose); + module.exports = rcompare; + } +}); + +// node_modules/semver/functions/compare-loose.js +var require_compare_loose = __commonJS({ + "node_modules/semver/functions/compare-loose.js"(exports, module) { + var compare = require_compare(); + var compareLoose = (a, b) => compare(a, b, true); + module.exports = compareLoose; + } +}); + +// node_modules/semver/functions/compare-build.js +var require_compare_build = __commonJS({ + "node_modules/semver/functions/compare-build.js"(exports, module) { + var SemVer = require_semver(); + var compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose); + const versionB = new SemVer(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB); + }; + module.exports = compareBuild; + } +}); + +// node_modules/semver/functions/sort.js +var require_sort = __commonJS({ + "node_modules/semver/functions/sort.js"(exports, module) { + var compareBuild = require_compare_build(); + var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); + module.exports = sort; + } +}); + +// node_modules/semver/functions/rsort.js +var require_rsort = __commonJS({ + "node_modules/semver/functions/rsort.js"(exports, module) { + var compareBuild = require_compare_build(); + var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); + module.exports = rsort; + } +}); + +// node_modules/semver/functions/gt.js +var require_gt = __commonJS({ + "node_modules/semver/functions/gt.js"(exports, module) { + var compare = require_compare(); + var gt = (a, b, loose) => compare(a, b, loose) > 0; + module.exports = gt; + } +}); + +// node_modules/semver/functions/lt.js +var require_lt = __commonJS({ + "node_modules/semver/functions/lt.js"(exports, module) { + var compare = require_compare(); + var lt = (a, b, loose) => compare(a, b, loose) < 0; + module.exports = lt; + } +}); + +// node_modules/semver/functions/eq.js +var require_eq = __commonJS({ + "node_modules/semver/functions/eq.js"(exports, module) { + var compare = require_compare(); + var eq = (a, b, loose) => compare(a, b, loose) === 0; + module.exports = eq; + } +}); + +// node_modules/semver/functions/neq.js +var require_neq = __commonJS({ + "node_modules/semver/functions/neq.js"(exports, module) { + var compare = require_compare(); + var neq = (a, b, loose) => compare(a, b, loose) !== 0; + module.exports = neq; + } +}); + +// node_modules/semver/functions/gte.js +var require_gte = __commonJS({ + "node_modules/semver/functions/gte.js"(exports, module) { + var compare = require_compare(); + var gte = (a, b, loose) => compare(a, b, loose) >= 0; + module.exports = gte; + } +}); + +// node_modules/semver/functions/lte.js +var require_lte = __commonJS({ + "node_modules/semver/functions/lte.js"(exports, module) { + var compare = require_compare(); + var lte = (a, b, loose) => compare(a, b, loose) <= 0; + module.exports = lte; + } +}); + +// node_modules/semver/functions/cmp.js +var require_cmp = __commonJS({ + "node_modules/semver/functions/cmp.js"(exports, module) { + var eq = require_eq(); + var neq = require_neq(); + var gt = require_gt(); + var gte = require_gte(); + var lt = require_lt(); + var lte = require_lte(); + var cmp = (a, op, b, loose) => { + switch (op) { + case "===": + if (typeof a === "object") { + a = a.version; + } + if (typeof b === "object") { + b = b.version; + } + return a === b; + case "!==": + if (typeof a === "object") { + a = a.version; + } + if (typeof b === "object") { + b = b.version; + } + return a !== b; + case "": + case "=": + case "==": + return eq(a, b, loose); + case "!=": + return neq(a, b, loose); + case ">": + return gt(a, b, loose); + case ">=": + return gte(a, b, loose); + case "<": + return lt(a, b, loose); + case "<=": + return lte(a, b, loose); + default: + throw new TypeError(`Invalid operator: ${op}`); + } + }; + module.exports = cmp; + } +}); + +// node_modules/semver/functions/coerce.js +var require_coerce = __commonJS({ + "node_modules/semver/functions/coerce.js"(exports, module) { + var SemVer = require_semver(); + var parse2 = require_parse(); + var { safeRe: re, t } = require_re(); + var coerce = (version, options) => { + if (version instanceof SemVer) { + return version; + } + if (typeof version === "number") { + version = String(version); + } + if (typeof version !== "string") { + return null; + } + options = options || {}; + let match = null; + if (!options.rtl) { + match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); + } else { + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; + let next; + while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) { + if (!match || next.index + next[0].length !== match.index + match[0].length) { + match = next; + } + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; + } + coerceRtlRegex.lastIndex = -1; + } + if (match === null) { + return null; + } + const major = match[2]; + const minor = match[3] || "0"; + const patch = match[4] || "0"; + const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ""; + const build = options.includePrerelease && match[6] ? `+${match[6]}` : ""; + return parse2(`${major}.${minor}.${patch}${prerelease}${build}`, options); + }; + module.exports = coerce; + } +}); + +// node_modules/semver/internal/lrucache.js +var require_lrucache = __commonJS({ + "node_modules/semver/internal/lrucache.js"(exports, module) { + var LRUCache = class { + constructor() { + this.max = 1e3; + this.map = /* @__PURE__ */ new Map(); + } + get(key) { + const value = this.map.get(key); + if (value === void 0) { + return void 0; + } else { + this.map.delete(key); + this.map.set(key, value); + return value; + } + } + delete(key) { + return this.map.delete(key); + } + set(key, value) { + const deleted = this.delete(key); + if (!deleted && value !== void 0) { + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value; + this.delete(firstKey); + } + this.map.set(key, value); + } + return this; + } + }; + module.exports = LRUCache; + } +}); + +// node_modules/semver/classes/range.js +var require_range = __commonJS({ + "node_modules/semver/classes/range.js"(exports, module) { + var SPACE_CHARACTERS = /\s+/g; + var Range = class { + constructor(range, options) { + options = parseOptions(options); + if (range instanceof Range) { + if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { + return range; + } else { + return new Range(range.raw, options); + } + } + if (range instanceof Comparator) { + this.raw = range.value; + this.set = [[range]]; + this.formatted = void 0; + return this; + } + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + this.raw = range.trim().replace(SPACE_CHARACTERS, " "); + this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length); + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`); + } + if (this.set.length > 1) { + const first = this.set[0]; + this.set = this.set.filter((c) => !isNullSet(c[0])); + if (this.set.length === 0) { + this.set = [first]; + } else if (this.set.length > 1) { + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c]; + break; + } + } + } + } + this.formatted = void 0; + } + get range() { + if (this.formatted === void 0) { + this.formatted = ""; + for (let i = 0; i < this.set.length; i++) { + if (i > 0) { + this.formatted += "||"; + } + const comps = this.set[i]; + for (let k = 0; k < comps.length; k++) { + if (k > 0) { + this.formatted += " "; + } + this.formatted += comps[k].toString().trim(); + } + } + } + return this.formatted; + } + format() { + return this.range; + } + toString() { + return this.range; + } + parseRange(range) { + const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE); + const memoKey = memoOpts + ":" + range; + const cached = cache.get(memoKey); + if (cached) { + return cached; + } + const loose = this.options.loose; + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug2("hyphen replace", range); + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug2("comparator trim", range); + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + debug2("tilde trim", range); + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + debug2("caret trim", range); + let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); + if (loose) { + rangeList = rangeList.filter((comp) => { + debug2("loose invalid filter", comp, this.options); + return !!comp.match(re[t.COMPARATORLOOSE]); + }); + } + debug2("range list", rangeList); + const rangeMap = /* @__PURE__ */ new Map(); + const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp]; + } + rangeMap.set(comp.value, comp); + } + if (rangeMap.size > 1 && rangeMap.has("")) { + rangeMap.delete(""); + } + const result = [...rangeMap.values()]; + cache.set(memoKey, result); + return result; + } + intersects(range, options) { + if (!(range instanceof Range)) { + throw new TypeError("a Range is required"); + } + return this.set.some((thisComparators) => { + return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => { + return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options); + }); + }); + }); + }); + } + test(version) { + if (!version) { + return false; + } + if (typeof version === "string") { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + } + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true; + } + } + return false; + } + }; + module.exports = Range; + var LRU = require_lrucache(); + var cache = new LRU(); + var parseOptions = require_parse_options(); + var Comparator = require_comparator(); + var debug2 = require_debug(); + var SemVer = require_semver(); + var { + safeRe: re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace + } = require_re(); + var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants(); + var isNullSet = (c) => c.value === "<0.0.0-0"; + var isAny = (c) => c.value === ""; + var isSatisfiable = (comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options); + }); + testComparator = remainingComparators.pop(); + } + return result; + }; + var parseComparator = (comp, options) => { + debug2("comp", comp, options); + comp = replaceCarets(comp, options); + debug2("caret", comp); + comp = replaceTildes(comp, options); + debug2("tildes", comp); + comp = replaceXRanges(comp, options); + debug2("xrange", comp); + comp = replaceStars(comp, options); + debug2("stars", comp); + return comp; + }; + var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; + var replaceTildes = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" "); + }; + var replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + return comp.replace(r, (_, M, m, p, pr) => { + debug2("tilde", comp, _, M, m, p, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } else if (isX(p)) { + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } else if (pr) { + debug2("replaceTilde pr", pr); + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + debug2("tilde return", ret); + return ret; + }); + }; + var replaceCarets = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); + }; + var replaceCaret = (comp, options) => { + debug2("caret", comp, options); + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z = options.includePrerelease ? "-0" : ""; + return comp.replace(r, (_, M, m, p, pr) => { + debug2("caret", comp, _, M, m, p, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } else if (isX(p)) { + if (M === "0") { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } else if (pr) { + debug2("replaceCaret pr", pr); + if (M === "0") { + if (m === "0") { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } else { + debug2("no pr"); + if (M === "0") { + if (m === "0") { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + debug2("caret return", ret); + return ret; + }); + }; + var replaceXRanges = (comp, options) => { + debug2("replaceXRanges", comp, options); + return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); + }; + var replaceXRange = (comp, options) => { + comp = comp.trim(); + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug2("xRange", comp, ret, gtlt, M, m, p, pr); + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === "=" && anyX) { + gtlt = ""; + } + pr = options.includePrerelease ? "-0" : ""; + if (xM) { + if (gtlt === ">" || gtlt === "<") { + ret = "<0.0.0-0"; + } else { + ret = "*"; + } + } else if (gtlt && anyX) { + if (xm) { + m = 0; + } + p = 0; + if (gtlt === ">") { + gtlt = ">="; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === "<=") { + gtlt = "<"; + if (xm) { + M = +M + 1; + } else { + m = +m + 1; + } + } + if (gtlt === "<") { + pr = "-0"; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + debug2("xRange return", ret); + return ret; + }); + }; + var replaceStars = (comp, options) => { + debug2("replaceStars", comp, options); + return comp.trim().replace(re[t.STAR], ""); + }; + var replaceGTE0 = (comp, options) => { + debug2("replaceGTE0", comp, options); + return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); + }; + var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ""; + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? "-0" : ""}`; + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; + } else if (fpr) { + from = `>=${from}`; + } else { + from = `>=${from}${incPr ? "-0" : ""}`; + } + if (isX(tM)) { + to = ""; + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }; + var testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false; + } + } + if (version.prerelease.length && !options.includePrerelease) { + for (let i = 0; i < set.length; i++) { + debug2(set[i].semver); + if (set[i].semver === Comparator.ANY) { + continue; + } + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver; + if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) { + return true; + } + } + } + return false; + } + return true; + }; + } +}); + +// node_modules/semver/classes/comparator.js +var require_comparator = __commonJS({ + "node_modules/semver/classes/comparator.js"(exports, module) { + var ANY = Symbol("SemVer ANY"); + var Comparator = class { + static get ANY() { + return ANY; + } + constructor(comp, options) { + options = parseOptions(options); + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp; + } else { + comp = comp.value; + } + } + comp = comp.trim().split(/\s+/).join(" "); + debug2("comparator", comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); + if (this.semver === ANY) { + this.value = ""; + } else { + this.value = this.operator + this.semver.version; + } + debug2("comp", this); + } + parse(comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m = comp.match(r); + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`); + } + this.operator = m[1] !== void 0 ? m[1] : ""; + if (this.operator === "=") { + this.operator = ""; + } + if (!m[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m[2], this.options.loose); + } + } + toString() { + return this.value; + } + test(version) { + debug2("Comparator.test", version, this.options.loose); + if (this.semver === ANY || version === ANY) { + return true; + } + if (typeof version === "string") { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + } + return cmp(version, this.operator, this.semver, this.options); + } + intersects(comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError("a Comparator is required"); + } + if (this.operator === "") { + if (this.value === "") { + return true; + } + return new Range(comp.value, options).test(this.value); + } else if (comp.operator === "") { + if (comp.value === "") { + return true; + } + return new Range(this.value, options).test(comp.semver); + } + options = parseOptions(options); + if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) { + return false; + } + if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) { + return false; + } + if (this.operator.startsWith(">") && comp.operator.startsWith(">")) { + return true; + } + if (this.operator.startsWith("<") && comp.operator.startsWith("<")) { + return true; + } + if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) { + return true; + } + if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) { + return true; + } + if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) { + return true; + } + return false; + } + }; + module.exports = Comparator; + var parseOptions = require_parse_options(); + var { safeRe: re, t } = require_re(); + var cmp = require_cmp(); + var debug2 = require_debug(); + var SemVer = require_semver(); + var Range = require_range(); + } +}); + +// node_modules/semver/functions/satisfies.js +var require_satisfies = __commonJS({ + "node_modules/semver/functions/satisfies.js"(exports, module) { + var Range = require_range(); + var satisfies = (version, range, options) => { + try { + range = new Range(range, options); + } catch (er) { + return false; + } + return range.test(version); + }; + module.exports = satisfies; + } +}); + +// node_modules/semver/ranges/to-comparators.js +var require_to_comparators = __commonJS({ + "node_modules/semver/ranges/to-comparators.js"(exports, module) { + var Range = require_range(); + var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); + module.exports = toComparators; + } +}); + +// node_modules/semver/ranges/max-satisfying.js +var require_max_satisfying = __commonJS({ + "node_modules/semver/ranges/max-satisfying.js"(exports, module) { + var SemVer = require_semver(); + var Range = require_range(); + var maxSatisfying = (versions, range, options) => { + let max = null; + let maxSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!max || maxSV.compare(v) === -1) { + max = v; + maxSV = new SemVer(max, options); + } + } + }); + return max; + }; + module.exports = maxSatisfying; + } +}); + +// node_modules/semver/ranges/min-satisfying.js +var require_min_satisfying = __commonJS({ + "node_modules/semver/ranges/min-satisfying.js"(exports, module) { + var SemVer = require_semver(); + var Range = require_range(); + var minSatisfying = (versions, range, options) => { + let min = null; + let minSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!min || minSV.compare(v) === 1) { + min = v; + minSV = new SemVer(min, options); + } + } + }); + return min; + }; + module.exports = minSatisfying; + } +}); + +// node_modules/semver/ranges/min-version.js +var require_min_version = __commonJS({ + "node_modules/semver/ranges/min-version.js"(exports, module) { + var SemVer = require_semver(); + var Range = require_range(); + var gt = require_gt(); + var minVersion = (range, loose) => { + range = new Range(range, loose); + let minver = new SemVer("0.0.0"); + if (range.test(minver)) { + return minver; + } + minver = new SemVer("0.0.0-0"); + if (range.test(minver)) { + return minver; + } + minver = null; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let setMin = null; + comparators.forEach((comparator) => { + const compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case ">": + if (compver.prerelease.length === 0) { + compver.patch++; + } else { + compver.prerelease.push(0); + } + compver.raw = compver.format(); + case "": + case ">=": + if (!setMin || gt(compver, setMin)) { + setMin = compver; + } + break; + case "<": + case "<=": + break; + default: + throw new Error(`Unexpected operation: ${comparator.operator}`); + } + }); + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin; + } + } + if (minver && range.test(minver)) { + return minver; + } + return null; + }; + module.exports = minVersion; + } +}); + +// node_modules/semver/ranges/valid.js +var require_valid2 = __commonJS({ + "node_modules/semver/ranges/valid.js"(exports, module) { + var Range = require_range(); + var validRange = (range, options) => { + try { + return new Range(range, options).range || "*"; + } catch (er) { + return null; + } + }; + module.exports = validRange; + } +}); + +// node_modules/semver/ranges/outside.js +var require_outside = __commonJS({ + "node_modules/semver/ranges/outside.js"(exports, module) { + var SemVer = require_semver(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var Range = require_range(); + var satisfies = require_satisfies(); + var gt = require_gt(); + var lt = require_lt(); + var lte = require_lte(); + var gte = require_gte(); + var outside = (version, range, hilo, options) => { + version = new SemVer(version, options); + range = new Range(range, options); + let gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case ">": + gtfn = gt; + ltefn = lte; + ltfn = lt; + comp = ">"; + ecomp = ">="; + break; + case "<": + gtfn = lt; + ltefn = gte; + ltfn = gt; + comp = "<"; + ecomp = "<="; + break; + default: + throw new TypeError('Must provide a hilo val of "<" or ">"'); + } + if (satisfies(version, range, options)) { + return false; + } + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let high = null; + let low = null; + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator(">=0.0.0"); + } + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator; + } + }); + if (high.operator === comp || high.operator === ecomp) { + return false; + } + if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) { + return false; + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false; + } + } + return true; + }; + module.exports = outside; + } +}); + +// node_modules/semver/ranges/gtr.js +var require_gtr = __commonJS({ + "node_modules/semver/ranges/gtr.js"(exports, module) { + var outside = require_outside(); + var gtr = (version, range, options) => outside(version, range, ">", options); + module.exports = gtr; + } +}); + +// node_modules/semver/ranges/ltr.js +var require_ltr = __commonJS({ + "node_modules/semver/ranges/ltr.js"(exports, module) { + var outside = require_outside(); + var ltr = (version, range, options) => outside(version, range, "<", options); + module.exports = ltr; + } +}); + +// node_modules/semver/ranges/intersects.js +var require_intersects = __commonJS({ + "node_modules/semver/ranges/intersects.js"(exports, module) { + var Range = require_range(); + var intersects = (r1, r2, options) => { + r1 = new Range(r1, options); + r2 = new Range(r2, options); + return r1.intersects(r2, options); + }; + module.exports = intersects; + } +}); + +// node_modules/semver/ranges/simplify.js +var require_simplify = __commonJS({ + "node_modules/semver/ranges/simplify.js"(exports, module) { + var satisfies = require_satisfies(); + var compare = require_compare(); + module.exports = (versions, range, options) => { + const set = []; + let first = null; + let prev = null; + const v = versions.sort((a, b) => compare(a, b, options)); + for (const version of v) { + const included = satisfies(version, range, options); + if (included) { + prev = version; + if (!first) { + first = version; + } + } else { + if (prev) { + set.push([first, prev]); + } + prev = null; + first = null; + } + } + if (first) { + set.push([first, null]); + } + const ranges = []; + for (const [min, max] of set) { + if (min === max) { + ranges.push(min); + } else if (!max && min === v[0]) { + ranges.push("*"); + } else if (!max) { + ranges.push(`>=${min}`); + } else if (min === v[0]) { + ranges.push(`<=${max}`); + } else { + ranges.push(`${min} - ${max}`); + } + } + const simplified = ranges.join(" || "); + const original = typeof range.raw === "string" ? range.raw : String(range); + return simplified.length < original.length ? simplified : range; + }; + } +}); + +// node_modules/semver/ranges/subset.js +var require_subset = __commonJS({ + "node_modules/semver/ranges/subset.js"(exports, module) { + var Range = require_range(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var satisfies = require_satisfies(); + var compare = require_compare(); + var subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true; + } + sub = new Range(sub, options); + dom = new Range(dom, options); + let sawNonNull = false; + OUTER: + for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options); + sawNonNull = sawNonNull || isSub !== null; + if (isSub) { + continue OUTER; + } + } + if (sawNonNull) { + return false; + } + } + return true; + }; + var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; + var minimumVersion = [new Comparator(">=0.0.0")]; + var simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true; + } + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true; + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease; + } else { + sub = minimumVersion; + } + } + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true; + } else { + dom = minimumVersion; + } + } + const eqSet = /* @__PURE__ */ new Set(); + let gt, lt; + for (const c of sub) { + if (c.operator === ">" || c.operator === ">=") { + gt = higherGT(gt, c, options); + } else if (c.operator === "<" || c.operator === "<=") { + lt = lowerLT(lt, c, options); + } else { + eqSet.add(c.semver); + } + } + if (eqSet.size > 1) { + return null; + } + let gtltComp; + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options); + if (gtltComp > 0) { + return null; + } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) { + return null; + } + } + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null; + } + if (lt && !satisfies(eq, String(lt), options)) { + return null; + } + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false; + } + } + return true; + } + let higher, lower; + let hasDomLT, hasDomGT; + let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; + let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false; + } + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; + hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false; + } + } + if (c.operator === ">" || c.operator === ">=") { + higher = higherGT(gt, c, options); + if (higher === c && higher !== gt) { + return false; + } + } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) { + return false; + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false; + } + } + if (c.operator === "<" || c.operator === "<=") { + lower = lowerLT(lt, c, options); + if (lower === c && lower !== lt) { + return false; + } + } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) { + return false; + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false; + } + } + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false; + } + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false; + } + if (needDomGTPre || needDomLTPre) { + return false; + } + return true; + }; + var higherGT = (a, b, options) => { + if (!a) { + return b; + } + const comp = compare(a.semver, b.semver, options); + return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; + }; + var lowerLT = (a, b, options) => { + if (!a) { + return b; + } + const comp = compare(a.semver, b.semver, options); + return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; + }; + module.exports = subset; + } +}); + +// node_modules/semver/index.js +var require_semver2 = __commonJS({ + "node_modules/semver/index.js"(exports, module) { + var internalRe = require_re(); + var constants = require_constants(); + var SemVer = require_semver(); + var identifiers = require_identifiers(); + var parse2 = require_parse(); + var valid = require_valid(); + var clean = require_clean(); + var inc = require_inc(); + var diff = require_diff(); + var major = require_major(); + var minor = require_minor(); + var patch = require_patch(); + var prerelease = require_prerelease(); + var compare = require_compare(); + var rcompare = require_rcompare(); + var compareLoose = require_compare_loose(); + var compareBuild = require_compare_build(); + var sort = require_sort(); + var rsort = require_rsort(); + var gt = require_gt(); + var lt = require_lt(); + var eq = require_eq(); + var neq = require_neq(); + var gte = require_gte(); + var lte = require_lte(); + var cmp = require_cmp(); + var coerce = require_coerce(); + var Comparator = require_comparator(); + var Range = require_range(); + var satisfies = require_satisfies(); + var toComparators = require_to_comparators(); + var maxSatisfying = require_max_satisfying(); + var minSatisfying = require_min_satisfying(); + var minVersion = require_min_version(); + var validRange = require_valid2(); + var outside = require_outside(); + var gtr = require_gtr(); + var ltr = require_ltr(); + var intersects = require_intersects(); + var simplifyRange = require_simplify(); + var subset = require_subset(); + module.exports = { + parse: parse2, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort, + rsort, + gt, + lt, + eq, + neq, + gte, + lte, + cmp, + coerce, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers + }; + } +}); + +// node_modules/which/node_modules/isexe/dist/cjs/posix.js +var require_posix = __commonJS({ + "node_modules/which/node_modules/isexe/dist/cjs/posix.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sync = exports.isexe = void 0; + var fs_1 = __require("fs"); + var promises_1 = __require("fs/promises"); + var isexe = async (path2, options = {}) => { + const { ignoreErrors = false } = options; + try { + return checkStat(await (0, promises_1.stat)(path2), options); + } catch (e) { + const er = e; + if (ignoreErrors || er.code === "EACCES") + return false; + throw er; + } + }; + exports.isexe = isexe; + var sync = (path2, options = {}) => { + const { ignoreErrors = false } = options; + try { + return checkStat((0, fs_1.statSync)(path2), options); + } catch (e) { + const er = e; + if (ignoreErrors || er.code === "EACCES") + return false; + throw er; + } + }; + exports.sync = sync; + var checkStat = (stat, options) => stat.isFile() && checkMode(stat, options); + var checkMode = (stat, options) => { + var _a, _b, _c; + const myUid = options.uid ?? ((_a = process.getuid) == null ? void 0 : _a.call(process)); + const myGroups = options.groups ?? ((_b = process.getgroups) == null ? void 0 : _b.call(process)) ?? []; + const myGid = options.gid ?? ((_c = process.getgid) == null ? void 0 : _c.call(process)) ?? myGroups[0]; + if (myUid === void 0 || myGid === void 0) { + throw new Error("cannot get uid or gid"); + } + const groups = /* @__PURE__ */ new Set([myGid, ...myGroups]); + const mod = stat.mode; + const uid = stat.uid; + const gid = stat.gid; + const u = parseInt("100", 8); + const g = parseInt("010", 8); + const o = parseInt("001", 8); + const ug = u | g; + return !!(mod & o || mod & g && groups.has(gid) || mod & u && uid === myUid || mod & ug && myUid === 0); + }; + } +}); + +// node_modules/which/node_modules/isexe/dist/cjs/win32.js +var require_win32 = __commonJS({ + "node_modules/which/node_modules/isexe/dist/cjs/win32.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sync = exports.isexe = void 0; + var fs_1 = __require("fs"); + var promises_1 = __require("fs/promises"); + var isexe = async (path2, options = {}) => { + const { ignoreErrors = false } = options; + try { + return checkStat(await (0, promises_1.stat)(path2), path2, options); + } catch (e) { + const er = e; + if (ignoreErrors || er.code === "EACCES") + return false; + throw er; + } + }; + exports.isexe = isexe; + var sync = (path2, options = {}) => { + const { ignoreErrors = false } = options; + try { + return checkStat((0, fs_1.statSync)(path2), path2, options); + } catch (e) { + const er = e; + if (ignoreErrors || er.code === "EACCES") + return false; + throw er; + } + }; + exports.sync = sync; + var checkPathExt = (path2, options) => { + const { pathExt = process.env.PATHEXT || "" } = options; + const peSplit = pathExt.split(";"); + if (peSplit.indexOf("") !== -1) { + return true; + } + for (let i = 0; i < peSplit.length; i++) { + const p = peSplit[i].toLowerCase(); + const ext = path2.substring(path2.length - p.length).toLowerCase(); + if (p && ext === p) { + return true; + } + } + return false; + }; + var checkStat = (stat, path2, options) => stat.isFile() && checkPathExt(path2, options); + } +}); + +// node_modules/which/node_modules/isexe/dist/cjs/options.js +var require_options = __commonJS({ + "node_modules/which/node_modules/isexe/dist/cjs/options.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/which/node_modules/isexe/dist/cjs/index.js +var require_cjs = __commonJS({ + "node_modules/which/node_modules/isexe/dist/cjs/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __exportStar = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sync = exports.isexe = exports.posix = exports.win32 = void 0; + var posix = __importStar(require_posix()); + exports.posix = posix; + var win32 = __importStar(require_win32()); + exports.win32 = win32; + __exportStar(require_options(), exports); + var platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform; + var impl = platform === "win32" ? win32 : posix; + exports.isexe = impl.isexe; + exports.sync = impl.sync; + } +}); + +// node_modules/which/lib/index.js +var require_lib = __commonJS({ + "node_modules/which/lib/index.js"(exports, module) { + var { isexe, sync: isexeSync } = require_cjs(); + var { join: join2, delimiter, sep, posix } = __require("path"); + var isWindows = process.platform === "win32"; + var rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? "" : sep}]`.replace(/(\\)/g, "\\$1")); + var rRel = new RegExp(`^\\.${rSlash.source}`); + var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" }); + var getPathInfo = (cmd, { + path: optPath = process.env.PATH, + pathExt: optPathExt = process.env.PATHEXT, + delimiter: optDelimiter = delimiter + }) => { + const pathEnv = cmd.match(rSlash) ? [""] : [ + ...isWindows ? [process.cwd()] : [], + ...(optPath || "").split(optDelimiter) + ]; + if (isWindows) { + const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter); + const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]); + if (cmd.includes(".") && pathExt[0] !== "") { + pathExt.unshift(""); + } + return { pathEnv, pathExt, pathExtExe }; + } + return { pathEnv, pathExt: [""] }; + }; + var getPathPart = (raw, cmd) => { + const pathPart = /^".*"$/.test(raw) ? raw.slice(1, -1) : raw; + const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : ""; + return prefix + join2(pathPart, cmd); + }; + var which2 = async (cmd, opt = {}) => { + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); + const found = []; + for (const envPart of pathEnv) { + const p = getPathPart(envPart, cmd); + for (const ext of pathExt) { + const withExt = p + ext; + const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true }); + if (is) { + if (!opt.all) { + return withExt; + } + found.push(withExt); + } + } + } + if (opt.all && found.length) { + return found; + } + if (opt.nothrow) { + return null; + } + throw getNotFoundError(cmd); + }; + var whichSync = (cmd, opt = {}) => { + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); + const found = []; + for (const pathEnvPart of pathEnv) { + const p = getPathPart(pathEnvPart, cmd); + for (const ext of pathExt) { + const withExt = p + ext; + const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true }); + if (is) { + if (!opt.all) { + return withExt; + } + found.push(withExt); + } + } + } + if (opt.all && found.length) { + return found; + } + if (opt.nothrow) { + return null; + } + throw getNotFoundError(cmd); + }; + module.exports = which2; + which2.sync = whichSync; + } +}); + +// node_modules/yaml/dist/nodes/identity.js +var require_identity = __commonJS({ + "node_modules/yaml/dist/nodes/identity.js"(exports) { + "use strict"; + var ALIAS = Symbol.for("yaml.alias"); + var DOC = Symbol.for("yaml.document"); + var MAP = Symbol.for("yaml.map"); + var PAIR = Symbol.for("yaml.pair"); + var SCALAR = Symbol.for("yaml.scalar"); + var SEQ = Symbol.for("yaml.seq"); + var NODE_TYPE = Symbol.for("yaml.node.type"); + var isAlias = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === ALIAS; + var isDocument = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === DOC; + var isMap = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === MAP; + var isPair = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === PAIR; + var isScalar = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SCALAR; + var isSeq = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SEQ; + function isCollection(node) { + if (node && typeof node === "object") + switch (node[NODE_TYPE]) { + case MAP: + case SEQ: + return true; + } + return false; + } + function isNode(node) { + if (node && typeof node === "object") + switch (node[NODE_TYPE]) { + case ALIAS: + case MAP: + case SCALAR: + case SEQ: + return true; + } + return false; + } + var hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor; + exports.ALIAS = ALIAS; + exports.DOC = DOC; + exports.MAP = MAP; + exports.NODE_TYPE = NODE_TYPE; + exports.PAIR = PAIR; + exports.SCALAR = SCALAR; + exports.SEQ = SEQ; + exports.hasAnchor = hasAnchor; + exports.isAlias = isAlias; + exports.isCollection = isCollection; + exports.isDocument = isDocument; + exports.isMap = isMap; + exports.isNode = isNode; + exports.isPair = isPair; + exports.isScalar = isScalar; + exports.isSeq = isSeq; + } +}); + +// node_modules/yaml/dist/visit.js +var require_visit = __commonJS({ + "node_modules/yaml/dist/visit.js"(exports) { + "use strict"; + var identity = require_identity(); + var BREAK = Symbol("break visit"); + var SKIP = Symbol("skip children"); + var REMOVE = Symbol("remove node"); + function visit(node, visitor) { + const visitor_ = initVisitor(visitor); + if (identity.isDocument(node)) { + const cd = visit_(null, node.contents, visitor_, Object.freeze([node])); + if (cd === REMOVE) + node.contents = null; + } else + visit_(null, node, visitor_, Object.freeze([])); + } + visit.BREAK = BREAK; + visit.SKIP = SKIP; + visit.REMOVE = REMOVE; + function visit_(key, node, visitor, path2) { + const ctrl = callVisitor(key, node, visitor, path2); + if (identity.isNode(ctrl) || identity.isPair(ctrl)) { + replaceNode(key, path2, ctrl); + return visit_(key, ctrl, visitor, path2); + } + if (typeof ctrl !== "symbol") { + if (identity.isCollection(node)) { + path2 = Object.freeze(path2.concat(node)); + for (let i = 0; i < node.items.length; ++i) { + const ci = visit_(i, node.items[i], visitor, path2); + if (typeof ci === "number") + i = ci - 1; + else if (ci === BREAK) + return BREAK; + else if (ci === REMOVE) { + node.items.splice(i, 1); + i -= 1; + } + } + } else if (identity.isPair(node)) { + path2 = Object.freeze(path2.concat(node)); + const ck = visit_("key", node.key, visitor, path2); + if (ck === BREAK) + return BREAK; + else if (ck === REMOVE) + node.key = null; + const cv = visit_("value", node.value, visitor, path2); + if (cv === BREAK) + return BREAK; + else if (cv === REMOVE) + node.value = null; + } + } + return ctrl; + } + async function visitAsync(node, visitor) { + const visitor_ = initVisitor(visitor); + if (identity.isDocument(node)) { + const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node])); + if (cd === REMOVE) + node.contents = null; + } else + await visitAsync_(null, node, visitor_, Object.freeze([])); + } + visitAsync.BREAK = BREAK; + visitAsync.SKIP = SKIP; + visitAsync.REMOVE = REMOVE; + async function visitAsync_(key, node, visitor, path2) { + const ctrl = await callVisitor(key, node, visitor, path2); + if (identity.isNode(ctrl) || identity.isPair(ctrl)) { + replaceNode(key, path2, ctrl); + return visitAsync_(key, ctrl, visitor, path2); + } + if (typeof ctrl !== "symbol") { + if (identity.isCollection(node)) { + path2 = Object.freeze(path2.concat(node)); + for (let i = 0; i < node.items.length; ++i) { + const ci = await visitAsync_(i, node.items[i], visitor, path2); + if (typeof ci === "number") + i = ci - 1; + else if (ci === BREAK) + return BREAK; + else if (ci === REMOVE) { + node.items.splice(i, 1); + i -= 1; + } + } + } else if (identity.isPair(node)) { + path2 = Object.freeze(path2.concat(node)); + const ck = await visitAsync_("key", node.key, visitor, path2); + if (ck === BREAK) + return BREAK; + else if (ck === REMOVE) + node.key = null; + const cv = await visitAsync_("value", node.value, visitor, path2); + if (cv === BREAK) + return BREAK; + else if (cv === REMOVE) + node.value = null; + } + } + return ctrl; + } + function initVisitor(visitor) { + if (typeof visitor === "object" && (visitor.Collection || visitor.Node || visitor.Value)) { + return Object.assign({ + Alias: visitor.Node, + Map: visitor.Node, + Scalar: visitor.Node, + Seq: visitor.Node + }, visitor.Value && { + Map: visitor.Value, + Scalar: visitor.Value, + Seq: visitor.Value + }, visitor.Collection && { + Map: visitor.Collection, + Seq: visitor.Collection + }, visitor); + } + return visitor; + } + function callVisitor(key, node, visitor, path2) { + var _a, _b, _c, _d, _e; + if (typeof visitor === "function") + return visitor(key, node, path2); + if (identity.isMap(node)) + return (_a = visitor.Map) == null ? void 0 : _a.call(visitor, key, node, path2); + if (identity.isSeq(node)) + return (_b = visitor.Seq) == null ? void 0 : _b.call(visitor, key, node, path2); + if (identity.isPair(node)) + return (_c = visitor.Pair) == null ? void 0 : _c.call(visitor, key, node, path2); + if (identity.isScalar(node)) + return (_d = visitor.Scalar) == null ? void 0 : _d.call(visitor, key, node, path2); + if (identity.isAlias(node)) + return (_e = visitor.Alias) == null ? void 0 : _e.call(visitor, key, node, path2); + return void 0; + } + function replaceNode(key, path2, node) { + const parent = path2[path2.length - 1]; + if (identity.isCollection(parent)) { + parent.items[key] = node; + } else if (identity.isPair(parent)) { + if (key === "key") + parent.key = node; + else + parent.value = node; + } else if (identity.isDocument(parent)) { + parent.contents = node; + } else { + const pt = identity.isAlias(parent) ? "alias" : "scalar"; + throw new Error(`Cannot replace node with ${pt} parent`); + } + } + exports.visit = visit; + exports.visitAsync = visitAsync; + } +}); + +// node_modules/yaml/dist/doc/directives.js +var require_directives = __commonJS({ + "node_modules/yaml/dist/doc/directives.js"(exports) { + "use strict"; + var identity = require_identity(); + var visit = require_visit(); + var escapeChars = { + "!": "%21", + ",": "%2C", + "[": "%5B", + "]": "%5D", + "{": "%7B", + "}": "%7D" + }; + var escapeTagName = (tn) => tn.replace(/[!,[\]{}]/g, (ch) => escapeChars[ch]); + var Directives = class { + constructor(yaml, tags) { + this.docStart = null; + this.docEnd = false; + this.yaml = Object.assign({}, Directives.defaultYaml, yaml); + this.tags = Object.assign({}, Directives.defaultTags, tags); + } + clone() { + const copy = new Directives(this.yaml, this.tags); + copy.docStart = this.docStart; + return copy; + } + atDocument() { + const res = new Directives(this.yaml, this.tags); + switch (this.yaml.version) { + case "1.1": + this.atNextDocument = true; + break; + case "1.2": + this.atNextDocument = false; + this.yaml = { + explicit: Directives.defaultYaml.explicit, + version: "1.2" + }; + this.tags = Object.assign({}, Directives.defaultTags); + break; + } + return res; + } + add(line, onError) { + if (this.atNextDocument) { + this.yaml = { explicit: Directives.defaultYaml.explicit, version: "1.1" }; + this.tags = Object.assign({}, Directives.defaultTags); + this.atNextDocument = false; + } + const parts = line.trim().split(/[ \t]+/); + const name = parts.shift(); + switch (name) { + case "%TAG": { + if (parts.length !== 2) { + onError(0, "%TAG directive should contain exactly two parts"); + if (parts.length < 2) + return false; + } + const [handle, prefix] = parts; + this.tags[handle] = prefix; + return true; + } + case "%YAML": { + this.yaml.explicit = true; + if (parts.length !== 1) { + onError(0, "%YAML directive should contain exactly one part"); + return false; + } + const [version] = parts; + if (version === "1.1" || version === "1.2") { + this.yaml.version = version; + return true; + } else { + const isValid = /^\d+\.\d+$/.test(version); + onError(6, `Unsupported YAML version ${version}`, isValid); + return false; + } + } + default: + onError(0, `Unknown directive ${name}`, true); + return false; + } + } + tagName(source, onError) { + if (source === "!") + return "!"; + if (source[0] !== "!") { + onError(`Not a valid tag: ${source}`); + return null; + } + if (source[1] === "<") { + const verbatim = source.slice(2, -1); + if (verbatim === "!" || verbatim === "!!") { + onError(`Verbatim tags aren't resolved, so ${source} is invalid.`); + return null; + } + if (source[source.length - 1] !== ">") + onError("Verbatim tags must end with a >"); + return verbatim; + } + const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s); + if (!suffix) + onError(`The ${source} tag has no suffix`); + const prefix = this.tags[handle]; + if (prefix) { + try { + return prefix + decodeURIComponent(suffix); + } catch (error) { + onError(String(error)); + return null; + } + } + if (handle === "!") + return source; + onError(`Could not resolve tag: ${source}`); + return null; + } + tagString(tag) { + for (const [handle, prefix] of Object.entries(this.tags)) { + if (tag.startsWith(prefix)) + return handle + escapeTagName(tag.substring(prefix.length)); + } + return tag[0] === "!" ? tag : `!<${tag}>`; + } + toString(doc) { + const lines = this.yaml.explicit ? [`%YAML ${this.yaml.version || "1.2"}`] : []; + const tagEntries = Object.entries(this.tags); + let tagNames; + if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) { + const tags = {}; + visit.visit(doc.contents, (_key, node) => { + if (identity.isNode(node) && node.tag) + tags[node.tag] = true; + }); + tagNames = Object.keys(tags); + } else + tagNames = []; + for (const [handle, prefix] of tagEntries) { + if (handle === "!!" && prefix === "tag:yaml.org,2002:") + continue; + if (!doc || tagNames.some((tn) => tn.startsWith(prefix))) + lines.push(`%TAG ${handle} ${prefix}`); + } + return lines.join("\n"); + } + }; + Directives.defaultYaml = { explicit: false, version: "1.2" }; + Directives.defaultTags = { "!!": "tag:yaml.org,2002:" }; + exports.Directives = Directives; + } +}); + +// node_modules/yaml/dist/doc/anchors.js +var require_anchors = __commonJS({ + "node_modules/yaml/dist/doc/anchors.js"(exports) { + "use strict"; + var identity = require_identity(); + var visit = require_visit(); + function anchorIsValid(anchor) { + if (/[\x00-\x19\s,[\]{}]/.test(anchor)) { + const sa = JSON.stringify(anchor); + const msg = `Anchor must not contain whitespace or control characters: ${sa}`; + throw new Error(msg); + } + return true; + } + function anchorNames(root) { + const anchors = /* @__PURE__ */ new Set(); + visit.visit(root, { + Value(_key, node) { + if (node.anchor) + anchors.add(node.anchor); + } + }); + return anchors; + } + function findNewAnchor(prefix, exclude) { + for (let i = 1; true; ++i) { + const name = `${prefix}${i}`; + if (!exclude.has(name)) + return name; + } + } + function createNodeAnchors(doc, prefix) { + const aliasObjects = []; + const sourceObjects = /* @__PURE__ */ new Map(); + let prevAnchors = null; + return { + onAnchor: (source) => { + aliasObjects.push(source); + if (!prevAnchors) + prevAnchors = anchorNames(doc); + const anchor = findNewAnchor(prefix, prevAnchors); + prevAnchors.add(anchor); + return anchor; + }, + setAnchors: () => { + for (const source of aliasObjects) { + const ref = sourceObjects.get(source); + if (typeof ref === "object" && ref.anchor && (identity.isScalar(ref.node) || identity.isCollection(ref.node))) { + ref.node.anchor = ref.anchor; + } else { + const error = new Error("Failed to resolve repeated object (this should not happen)"); + error.source = source; + throw error; + } + } + }, + sourceObjects + }; + } + exports.anchorIsValid = anchorIsValid; + exports.anchorNames = anchorNames; + exports.createNodeAnchors = createNodeAnchors; + exports.findNewAnchor = findNewAnchor; + } +}); + +// node_modules/yaml/dist/doc/applyReviver.js +var require_applyReviver = __commonJS({ + "node_modules/yaml/dist/doc/applyReviver.js"(exports) { + "use strict"; + function applyReviver(reviver, obj, key, val) { + if (val && typeof val === "object") { + if (Array.isArray(val)) { + for (let i = 0, len = val.length; i < len; ++i) { + const v0 = val[i]; + const v1 = applyReviver(reviver, val, String(i), v0); + if (v1 === void 0) + delete val[i]; + else if (v1 !== v0) + val[i] = v1; + } + } else if (val instanceof Map) { + for (const k of Array.from(val.keys())) { + const v0 = val.get(k); + const v1 = applyReviver(reviver, val, k, v0); + if (v1 === void 0) + val.delete(k); + else if (v1 !== v0) + val.set(k, v1); + } + } else if (val instanceof Set) { + for (const v0 of Array.from(val)) { + const v1 = applyReviver(reviver, val, v0, v0); + if (v1 === void 0) + val.delete(v0); + else if (v1 !== v0) { + val.delete(v0); + val.add(v1); + } + } + } else { + for (const [k, v0] of Object.entries(val)) { + const v1 = applyReviver(reviver, val, k, v0); + if (v1 === void 0) + delete val[k]; + else if (v1 !== v0) + val[k] = v1; + } + } + } + return reviver.call(obj, key, val); + } + exports.applyReviver = applyReviver; + } +}); + +// node_modules/yaml/dist/nodes/toJS.js +var require_toJS = __commonJS({ + "node_modules/yaml/dist/nodes/toJS.js"(exports) { + "use strict"; + var identity = require_identity(); + function toJS(value, arg, ctx) { + if (Array.isArray(value)) + return value.map((v, i) => toJS(v, String(i), ctx)); + if (value && typeof value.toJSON === "function") { + if (!ctx || !identity.hasAnchor(value)) + return value.toJSON(arg, ctx); + const data = { aliasCount: 0, count: 1, res: void 0 }; + ctx.anchors.set(value, data); + ctx.onCreate = (res2) => { + data.res = res2; + delete ctx.onCreate; + }; + const res = value.toJSON(arg, ctx); + if (ctx.onCreate) + ctx.onCreate(res); + return res; + } + if (typeof value === "bigint" && !(ctx == null ? void 0 : ctx.keep)) + return Number(value); + return value; + } + exports.toJS = toJS; + } +}); + +// node_modules/yaml/dist/nodes/Node.js +var require_Node = __commonJS({ + "node_modules/yaml/dist/nodes/Node.js"(exports) { + "use strict"; + var applyReviver = require_applyReviver(); + var identity = require_identity(); + var toJS = require_toJS(); + var NodeBase = class { + constructor(type) { + Object.defineProperty(this, identity.NODE_TYPE, { value: type }); + } + clone() { + const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); + if (this.range) + copy.range = this.range.slice(); + return copy; + } + toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) { + if (!identity.isDocument(doc)) + throw new TypeError("A document argument is required"); + const ctx = { + anchors: /* @__PURE__ */ new Map(), + doc, + keep: true, + mapAsMap: mapAsMap === true, + mapKeyWarned: false, + maxAliasCount: typeof maxAliasCount === "number" ? maxAliasCount : 100 + }; + const res = toJS.toJS(this, "", ctx); + if (typeof onAnchor === "function") + for (const { count, res: res2 } of ctx.anchors.values()) + onAnchor(res2, count); + return typeof reviver === "function" ? applyReviver.applyReviver(reviver, { "": res }, "", res) : res; + } + }; + exports.NodeBase = NodeBase; + } +}); + +// node_modules/yaml/dist/nodes/Alias.js +var require_Alias = __commonJS({ + "node_modules/yaml/dist/nodes/Alias.js"(exports) { + "use strict"; + var anchors = require_anchors(); + var visit = require_visit(); + var identity = require_identity(); + var Node = require_Node(); + var toJS = require_toJS(); + var Alias = class extends Node.NodeBase { + constructor(source) { + super(identity.ALIAS); + this.source = source; + Object.defineProperty(this, "tag", { + set() { + throw new Error("Alias nodes cannot have tags"); + } + }); + } + resolve(doc) { + let found = void 0; + visit.visit(doc, { + Node: (_key, node) => { + if (node === this) + return visit.visit.BREAK; + if (node.anchor === this.source) + found = node; + } + }); + return found; + } + toJSON(_arg, ctx) { + if (!ctx) + return { source: this.source }; + const { anchors: anchors2, doc, maxAliasCount } = ctx; + const source = this.resolve(doc); + if (!source) { + const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`; + throw new ReferenceError(msg); + } + let data = anchors2.get(source); + if (!data) { + toJS.toJS(source, null, ctx); + data = anchors2.get(source); + } + if (!data || data.res === void 0) { + const msg = "This should not happen: Alias anchor was not resolved?"; + throw new ReferenceError(msg); + } + if (maxAliasCount >= 0) { + data.count += 1; + if (data.aliasCount === 0) + data.aliasCount = getAliasCount(doc, source, anchors2); + if (data.count * data.aliasCount > maxAliasCount) { + const msg = "Excessive alias count indicates a resource exhaustion attack"; + throw new ReferenceError(msg); + } + } + return data.res; + } + toString(ctx, _onComment, _onChompKeep) { + const src = `*${this.source}`; + if (ctx) { + anchors.anchorIsValid(this.source); + if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) { + const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`; + throw new Error(msg); + } + if (ctx.implicitKey) + return `${src} `; + } + return src; + } + }; + function getAliasCount(doc, node, anchors2) { + if (identity.isAlias(node)) { + const source = node.resolve(doc); + const anchor = anchors2 && source && anchors2.get(source); + return anchor ? anchor.count * anchor.aliasCount : 0; + } else if (identity.isCollection(node)) { + let count = 0; + for (const item of node.items) { + const c = getAliasCount(doc, item, anchors2); + if (c > count) + count = c; + } + return count; + } else if (identity.isPair(node)) { + const kc = getAliasCount(doc, node.key, anchors2); + const vc = getAliasCount(doc, node.value, anchors2); + return Math.max(kc, vc); + } + return 1; + } + exports.Alias = Alias; + } +}); + +// node_modules/yaml/dist/nodes/Scalar.js +var require_Scalar = __commonJS({ + "node_modules/yaml/dist/nodes/Scalar.js"(exports) { + "use strict"; + var identity = require_identity(); + var Node = require_Node(); + var toJS = require_toJS(); + var isScalarValue = (value) => !value || typeof value !== "function" && typeof value !== "object"; + var Scalar = class extends Node.NodeBase { + constructor(value) { + super(identity.SCALAR); + this.value = value; + } + toJSON(arg, ctx) { + return (ctx == null ? void 0 : ctx.keep) ? this.value : toJS.toJS(this.value, arg, ctx); + } + toString() { + return String(this.value); + } + }; + Scalar.BLOCK_FOLDED = "BLOCK_FOLDED"; + Scalar.BLOCK_LITERAL = "BLOCK_LITERAL"; + Scalar.PLAIN = "PLAIN"; + Scalar.QUOTE_DOUBLE = "QUOTE_DOUBLE"; + Scalar.QUOTE_SINGLE = "QUOTE_SINGLE"; + exports.Scalar = Scalar; + exports.isScalarValue = isScalarValue; + } +}); + +// node_modules/yaml/dist/doc/createNode.js +var require_createNode = __commonJS({ + "node_modules/yaml/dist/doc/createNode.js"(exports) { + "use strict"; + var Alias = require_Alias(); + var identity = require_identity(); + var Scalar = require_Scalar(); + var defaultTagPrefix = "tag:yaml.org,2002:"; + function findTagObject(value, tagName, tags) { + if (tagName) { + const match = tags.filter((t) => t.tag === tagName); + const tagObj = match.find((t) => !t.format) ?? match[0]; + if (!tagObj) + throw new Error(`Tag ${tagName} not found`); + return tagObj; + } + return tags.find((t) => { + var _a; + return ((_a = t.identify) == null ? void 0 : _a.call(t, value)) && !t.format; + }); + } + function createNode(value, tagName, ctx) { + var _a, _b, _c; + if (identity.isDocument(value)) + value = value.contents; + if (identity.isNode(value)) + return value; + if (identity.isPair(value)) { + const map = (_b = (_a = ctx.schema[identity.MAP]).createNode) == null ? void 0 : _b.call(_a, ctx.schema, null, ctx); + map.items.push(value); + return map; + } + if (value instanceof String || value instanceof Number || value instanceof Boolean || typeof BigInt !== "undefined" && value instanceof BigInt) { + value = value.valueOf(); + } + const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx; + let ref = void 0; + if (aliasDuplicateObjects && value && typeof value === "object") { + ref = sourceObjects.get(value); + if (ref) { + if (!ref.anchor) + ref.anchor = onAnchor(value); + return new Alias.Alias(ref.anchor); + } else { + ref = { anchor: null, node: null }; + sourceObjects.set(value, ref); + } + } + if (tagName == null ? void 0 : tagName.startsWith("!!")) + tagName = defaultTagPrefix + tagName.slice(2); + let tagObj = findTagObject(value, tagName, schema.tags); + if (!tagObj) { + if (value && typeof value.toJSON === "function") { + value = value.toJSON(); + } + if (!value || typeof value !== "object") { + const node2 = new Scalar.Scalar(value); + if (ref) + ref.node = node2; + return node2; + } + tagObj = value instanceof Map ? schema[identity.MAP] : Symbol.iterator in Object(value) ? schema[identity.SEQ] : schema[identity.MAP]; + } + if (onTagObj) { + onTagObj(tagObj); + delete ctx.onTagObj; + } + const node = (tagObj == null ? void 0 : tagObj.createNode) ? tagObj.createNode(ctx.schema, value, ctx) : typeof ((_c = tagObj == null ? void 0 : tagObj.nodeClass) == null ? void 0 : _c.from) === "function" ? tagObj.nodeClass.from(ctx.schema, value, ctx) : new Scalar.Scalar(value); + if (tagName) + node.tag = tagName; + else if (!tagObj.default) + node.tag = tagObj.tag; + if (ref) + ref.node = node; + return node; + } + exports.createNode = createNode; + } +}); + +// node_modules/yaml/dist/nodes/Collection.js +var require_Collection = __commonJS({ + "node_modules/yaml/dist/nodes/Collection.js"(exports) { + "use strict"; + var createNode = require_createNode(); + var identity = require_identity(); + var Node = require_Node(); + function collectionFromPath(schema, path2, value) { + let v = value; + for (let i = path2.length - 1; i >= 0; --i) { + const k = path2[i]; + if (typeof k === "number" && Number.isInteger(k) && k >= 0) { + const a = []; + a[k] = v; + v = a; + } else { + v = /* @__PURE__ */ new Map([[k, v]]); + } + } + return createNode.createNode(v, void 0, { + aliasDuplicateObjects: false, + keepUndefined: false, + onAnchor: () => { + throw new Error("This should not happen, please report a bug."); + }, + schema, + sourceObjects: /* @__PURE__ */ new Map() + }); + } + var isEmptyPath = (path2) => path2 == null || typeof path2 === "object" && !!path2[Symbol.iterator]().next().done; + var Collection2 = class extends Node.NodeBase { + constructor(type, schema) { + super(type); + Object.defineProperty(this, "schema", { + value: schema, + configurable: true, + enumerable: false, + writable: true + }); + } + clone(schema) { + const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); + if (schema) + copy.schema = schema; + copy.items = copy.items.map((it) => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it); + if (this.range) + copy.range = this.range.slice(); + return copy; + } + addIn(path2, value) { + if (isEmptyPath(path2)) + this.add(value); + else { + const [key, ...rest] = path2; + const node = this.get(key, true); + if (identity.isCollection(node)) + node.addIn(rest, value); + else if (node === void 0 && this.schema) + this.set(key, collectionFromPath(this.schema, rest, value)); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + } + deleteIn(path2) { + const [key, ...rest] = path2; + if (rest.length === 0) + return this.delete(key); + const node = this.get(key, true); + if (identity.isCollection(node)) + return node.deleteIn(rest); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + getIn(path2, keepScalar) { + const [key, ...rest] = path2; + const node = this.get(key, true); + if (rest.length === 0) + return !keepScalar && identity.isScalar(node) ? node.value : node; + else + return identity.isCollection(node) ? node.getIn(rest, keepScalar) : void 0; + } + hasAllNullValues(allowScalar) { + return this.items.every((node) => { + if (!identity.isPair(node)) + return false; + const n = node.value; + return n == null || allowScalar && identity.isScalar(n) && n.value == null && !n.commentBefore && !n.comment && !n.tag; + }); + } + hasIn(path2) { + const [key, ...rest] = path2; + if (rest.length === 0) + return this.has(key); + const node = this.get(key, true); + return identity.isCollection(node) ? node.hasIn(rest) : false; + } + setIn(path2, value) { + const [key, ...rest] = path2; + if (rest.length === 0) { + this.set(key, value); + } else { + const node = this.get(key, true); + if (identity.isCollection(node)) + node.setIn(rest, value); + else if (node === void 0 && this.schema) + this.set(key, collectionFromPath(this.schema, rest, value)); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + } + }; + exports.Collection = Collection2; + exports.collectionFromPath = collectionFromPath; + exports.isEmptyPath = isEmptyPath; + } +}); + +// node_modules/yaml/dist/stringify/stringifyComment.js +var require_stringifyComment = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyComment.js"(exports) { + "use strict"; + var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#"); + function indentComment(comment, indent) { + if (/^\n+$/.test(comment)) + return comment.substring(1); + return indent ? comment.replace(/^(?! *$)/gm, indent) : comment; + } + var lineComment = (str, indent, comment) => str.endsWith("\n") ? indentComment(comment, indent) : comment.includes("\n") ? "\n" + indentComment(comment, indent) : (str.endsWith(" ") ? "" : " ") + comment; + exports.indentComment = indentComment; + exports.lineComment = lineComment; + exports.stringifyComment = stringifyComment; + } +}); + +// node_modules/yaml/dist/stringify/foldFlowLines.js +var require_foldFlowLines = __commonJS({ + "node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) { + "use strict"; + var FOLD_FLOW = "flow"; + var FOLD_BLOCK = "block"; + var FOLD_QUOTED = "quoted"; + function foldFlowLines(text, indent, mode = "flow", { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) { + if (!lineWidth || lineWidth < 0) + return text; + if (lineWidth < minContentWidth) + minContentWidth = 0; + const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length); + if (text.length <= endStep) + return text; + const folds = []; + const escapedFolds = {}; + let end = lineWidth - indent.length; + if (typeof indentAtStart === "number") { + if (indentAtStart > lineWidth - Math.max(2, minContentWidth)) + folds.push(0); + else + end = lineWidth - indentAtStart; + } + let split = void 0; + let prev = void 0; + let overflow = false; + let i = -1; + let escStart = -1; + let escEnd = -1; + if (mode === FOLD_BLOCK) { + i = consumeMoreIndentedLines(text, i, indent.length); + if (i !== -1) + end = i + endStep; + } + for (let ch; ch = text[i += 1]; ) { + if (mode === FOLD_QUOTED && ch === "\\") { + escStart = i; + switch (text[i + 1]) { + case "x": + i += 3; + break; + case "u": + i += 5; + break; + case "U": + i += 9; + break; + default: + i += 1; + } + escEnd = i; + } + if (ch === "\n") { + if (mode === FOLD_BLOCK) + i = consumeMoreIndentedLines(text, i, indent.length); + end = i + indent.length + endStep; + split = void 0; + } else { + if (ch === " " && prev && prev !== " " && prev !== "\n" && prev !== " ") { + const next = text[i + 1]; + if (next && next !== " " && next !== "\n" && next !== " ") + split = i; + } + if (i >= end) { + if (split) { + folds.push(split); + end = split + endStep; + split = void 0; + } else if (mode === FOLD_QUOTED) { + while (prev === " " || prev === " ") { + prev = ch; + ch = text[i += 1]; + overflow = true; + } + const j = i > escEnd + 1 ? i - 2 : escStart - 1; + if (escapedFolds[j]) + return text; + folds.push(j); + escapedFolds[j] = true; + end = j + endStep; + split = void 0; + } else { + overflow = true; + } + } + } + prev = ch; + } + if (overflow && onOverflow) + onOverflow(); + if (folds.length === 0) + return text; + if (onFold) + onFold(); + let res = text.slice(0, folds[0]); + for (let i2 = 0; i2 < folds.length; ++i2) { + const fold = folds[i2]; + const end2 = folds[i2 + 1] || text.length; + if (fold === 0) + res = ` +${indent}${text.slice(0, end2)}`; + else { + if (mode === FOLD_QUOTED && escapedFolds[fold]) + res += `${text[fold]}\\`; + res += ` +${indent}${text.slice(fold + 1, end2)}`; + } + } + return res; + } + function consumeMoreIndentedLines(text, i, indent) { + let end = i; + let start = i + 1; + let ch = text[start]; + while (ch === " " || ch === " ") { + if (i < start + indent) { + ch = text[++i]; + } else { + do { + ch = text[++i]; + } while (ch && ch !== "\n"); + end = i; + start = i + 1; + ch = text[start]; + } + } + return end; + } + exports.FOLD_BLOCK = FOLD_BLOCK; + exports.FOLD_FLOW = FOLD_FLOW; + exports.FOLD_QUOTED = FOLD_QUOTED; + exports.foldFlowLines = foldFlowLines; + } +}); + +// node_modules/yaml/dist/stringify/stringifyString.js +var require_stringifyString = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyString.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var foldFlowLines = require_foldFlowLines(); + var getFoldOptions = (ctx, isBlock) => ({ + indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart, + lineWidth: ctx.options.lineWidth, + minContentWidth: ctx.options.minContentWidth + }); + var containsDocumentMarker = (str) => /^(%|---|\.\.\.)/m.test(str); + function lineLengthOverLimit(str, lineWidth, indentLength) { + if (!lineWidth || lineWidth < 0) + return false; + const limit = lineWidth - indentLength; + const strLen = str.length; + if (strLen <= limit) + return false; + for (let i = 0, start = 0; i < strLen; ++i) { + if (str[i] === "\n") { + if (i - start > limit) + return true; + start = i + 1; + if (strLen - start <= limit) + return false; + } + } + return true; + } + function doubleQuotedString(value, ctx) { + const json = JSON.stringify(value); + if (ctx.options.doubleQuotedAsJSON) + return json; + const { implicitKey } = ctx; + const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength; + const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); + let str = ""; + let start = 0; + for (let i = 0, ch = json[i]; ch; ch = json[++i]) { + if (ch === " " && json[i + 1] === "\\" && json[i + 2] === "n") { + str += json.slice(start, i) + "\\ "; + i += 1; + start = i; + ch = "\\"; + } + if (ch === "\\") + switch (json[i + 1]) { + case "u": + { + str += json.slice(start, i); + const code = json.substr(i + 2, 4); + switch (code) { + case "0000": + str += "\\0"; + break; + case "0007": + str += "\\a"; + break; + case "000b": + str += "\\v"; + break; + case "001b": + str += "\\e"; + break; + case "0085": + str += "\\N"; + break; + case "00a0": + str += "\\_"; + break; + case "2028": + str += "\\L"; + break; + case "2029": + str += "\\P"; + break; + default: + if (code.substr(0, 2) === "00") + str += "\\x" + code.substr(2); + else + str += json.substr(i, 6); + } + i += 5; + start = i + 1; + } + break; + case "n": + if (implicitKey || json[i + 2] === '"' || json.length < minMultiLineLength) { + i += 1; + } else { + str += json.slice(start, i) + "\n\n"; + while (json[i + 2] === "\\" && json[i + 3] === "n" && json[i + 4] !== '"') { + str += "\n"; + i += 2; + } + str += indent; + if (json[i + 2] === " ") + str += "\\"; + i += 1; + start = i + 1; + } + break; + default: + i += 1; + } + } + str = start ? str + json.slice(start) : json; + return implicitKey ? str : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false)); + } + function singleQuotedString(value, ctx) { + if (ctx.options.singleQuote === false || ctx.implicitKey && value.includes("\n") || /[ \t]\n|\n[ \t]/.test(value)) + return doubleQuotedString(value, ctx); + const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); + const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$& +${indent}`) + "'"; + return ctx.implicitKey ? res : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false)); + } + function quotedString(value, ctx) { + const { singleQuote } = ctx.options; + let qs; + if (singleQuote === false) + qs = doubleQuotedString; + else { + const hasDouble = value.includes('"'); + const hasSingle = value.includes("'"); + if (hasDouble && !hasSingle) + qs = singleQuotedString; + else if (hasSingle && !hasDouble) + qs = doubleQuotedString; + else + qs = singleQuote ? singleQuotedString : doubleQuotedString; + } + return qs(value, ctx); + } + var blockEndNewlines; + try { + blockEndNewlines = new RegExp("(^|(?\n"; + let chomp; + let endStart; + for (endStart = value.length; endStart > 0; --endStart) { + const ch = value[endStart - 1]; + if (ch !== "\n" && ch !== " " && ch !== " ") + break; + } + let end = value.substring(endStart); + const endNlPos = end.indexOf("\n"); + if (endNlPos === -1) { + chomp = "-"; + } else if (value === end || endNlPos !== end.length - 1) { + chomp = "+"; + if (onChompKeep) + onChompKeep(); + } else { + chomp = ""; + } + if (end) { + value = value.slice(0, -end.length); + if (end[end.length - 1] === "\n") + end = end.slice(0, -1); + end = end.replace(blockEndNewlines, `$&${indent}`); + } + let startWithSpace = false; + let startEnd; + let startNlPos = -1; + for (startEnd = 0; startEnd < value.length; ++startEnd) { + const ch = value[startEnd]; + if (ch === " ") + startWithSpace = true; + else if (ch === "\n") + startNlPos = startEnd; + else + break; + } + let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd); + if (start) { + value = value.substring(start.length); + start = start.replace(/\n+/g, `$&${indent}`); + } + const indentSize = indent ? "2" : "1"; + let header = (startWithSpace ? indentSize : "") + chomp; + if (comment) { + header += " " + commentString(comment.replace(/ ?[\r\n]+/g, " ")); + if (onComment) + onComment(); + } + if (!literal) { + const foldedValue = value.replace(/\n+/g, "\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, "$1$2").replace(/\n+/g, `$&${indent}`); + let literalFallback = false; + const foldOptions = getFoldOptions(ctx, true); + if (blockQuote !== "folded" && type !== Scalar.Scalar.BLOCK_FOLDED) { + foldOptions.onOverflow = () => { + literalFallback = true; + }; + } + const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions); + if (!literalFallback) + return `>${header} +${indent}${body}`; + } + value = value.replace(/\n+/g, `$&${indent}`); + return `|${header} +${indent}${start}${value}${end}`; + } + function plainString(item, ctx, onComment, onChompKeep) { + const { type, value } = item; + const { actualString, implicitKey, indent, indentStep, inFlow } = ctx; + if (implicitKey && value.includes("\n") || inFlow && /[[\]{},]/.test(value)) { + return quotedString(value, ctx); + } + if (!value || /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) { + return implicitKey || inFlow || !value.includes("\n") ? quotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep); + } + if (!implicitKey && !inFlow && type !== Scalar.Scalar.PLAIN && value.includes("\n")) { + return blockString(item, ctx, onComment, onChompKeep); + } + if (containsDocumentMarker(value)) { + if (indent === "") { + ctx.forceBlockIndent = true; + return blockString(item, ctx, onComment, onChompKeep); + } else if (implicitKey && indent === indentStep) { + return quotedString(value, ctx); + } + } + const str = value.replace(/\n+/g, `$& +${indent}`); + if (actualString) { + const test = (tag) => { + var _a; + return tag.default && tag.tag !== "tag:yaml.org,2002:str" && ((_a = tag.test) == null ? void 0 : _a.test(str)); + }; + const { compat, tags } = ctx.doc.schema; + if (tags.some(test) || (compat == null ? void 0 : compat.some(test))) + return quotedString(value, ctx); + } + return implicitKey ? str : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false)); + } + function stringifyString(item, ctx, onComment, onChompKeep) { + const { implicitKey, inFlow } = ctx; + const ss = typeof item.value === "string" ? item : Object.assign({}, item, { value: String(item.value) }); + let { type } = item; + if (type !== Scalar.Scalar.QUOTE_DOUBLE) { + if (/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(ss.value)) + type = Scalar.Scalar.QUOTE_DOUBLE; + } + const _stringify = (_type) => { + switch (_type) { + case Scalar.Scalar.BLOCK_FOLDED: + case Scalar.Scalar.BLOCK_LITERAL: + return implicitKey || inFlow ? quotedString(ss.value, ctx) : blockString(ss, ctx, onComment, onChompKeep); + case Scalar.Scalar.QUOTE_DOUBLE: + return doubleQuotedString(ss.value, ctx); + case Scalar.Scalar.QUOTE_SINGLE: + return singleQuotedString(ss.value, ctx); + case Scalar.Scalar.PLAIN: + return plainString(ss, ctx, onComment, onChompKeep); + default: + return null; + } + }; + let res = _stringify(type); + if (res === null) { + const { defaultKeyType, defaultStringType } = ctx.options; + const t = implicitKey && defaultKeyType || defaultStringType; + res = _stringify(t); + if (res === null) + throw new Error(`Unsupported default string type ${t}`); + } + return res; + } + exports.stringifyString = stringifyString; + } +}); + +// node_modules/yaml/dist/stringify/stringify.js +var require_stringify = __commonJS({ + "node_modules/yaml/dist/stringify/stringify.js"(exports) { + "use strict"; + var anchors = require_anchors(); + var identity = require_identity(); + var stringifyComment = require_stringifyComment(); + var stringifyString = require_stringifyString(); + function createStringifyContext(doc, options) { + const opt = Object.assign({ + blockQuote: true, + commentString: stringifyComment.stringifyComment, + defaultKeyType: null, + defaultStringType: "PLAIN", + directives: null, + doubleQuotedAsJSON: false, + doubleQuotedMinMultiLineLength: 40, + falseStr: "false", + flowCollectionPadding: true, + indentSeq: true, + lineWidth: 80, + minContentWidth: 20, + nullStr: "null", + simpleKeys: false, + singleQuote: null, + trueStr: "true", + verifyAliasOrder: true + }, doc.schema.toStringOptions, options); + let inFlow; + switch (opt.collectionStyle) { + case "block": + inFlow = false; + break; + case "flow": + inFlow = true; + break; + default: + inFlow = null; + } + return { + anchors: /* @__PURE__ */ new Set(), + doc, + flowCollectionPadding: opt.flowCollectionPadding ? " " : "", + indent: "", + indentStep: typeof opt.indent === "number" ? " ".repeat(opt.indent) : " ", + inFlow, + options: opt + }; + } + function getTagObject(tags, item) { + var _a; + if (item.tag) { + const match = tags.filter((t) => t.tag === item.tag); + if (match.length > 0) + return match.find((t) => t.format === item.format) ?? match[0]; + } + let tagObj = void 0; + let obj; + if (identity.isScalar(item)) { + obj = item.value; + let match = tags.filter((t) => { + var _a2; + return (_a2 = t.identify) == null ? void 0 : _a2.call(t, obj); + }); + if (match.length > 1) { + const testMatch = match.filter((t) => t.test); + if (testMatch.length > 0) + match = testMatch; + } + tagObj = match.find((t) => t.format === item.format) ?? match.find((t) => !t.format); + } else { + obj = item; + tagObj = tags.find((t) => t.nodeClass && obj instanceof t.nodeClass); + } + if (!tagObj) { + const name = ((_a = obj == null ? void 0 : obj.constructor) == null ? void 0 : _a.name) ?? typeof obj; + throw new Error(`Tag not resolved for ${name} value`); + } + return tagObj; + } + function stringifyProps(node, tagObj, { anchors: anchors$1, doc }) { + if (!doc.directives) + return ""; + const props = []; + const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor; + if (anchor && anchors.anchorIsValid(anchor)) { + anchors$1.add(anchor); + props.push(`&${anchor}`); + } + const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag; + if (tag) + props.push(doc.directives.tagString(tag)); + return props.join(" "); + } + function stringify(item, ctx, onComment, onChompKeep) { + var _a; + if (identity.isPair(item)) + return item.toString(ctx, onComment, onChompKeep); + if (identity.isAlias(item)) { + if (ctx.doc.directives) + return item.toString(ctx); + if ((_a = ctx.resolvedAliases) == null ? void 0 : _a.has(item)) { + throw new TypeError(`Cannot stringify circular structure without alias nodes`); + } else { + if (ctx.resolvedAliases) + ctx.resolvedAliases.add(item); + else + ctx.resolvedAliases = /* @__PURE__ */ new Set([item]); + item = item.resolve(ctx.doc); + } + } + let tagObj = void 0; + const node = identity.isNode(item) ? item : ctx.doc.createNode(item, { onTagObj: (o) => tagObj = o }); + if (!tagObj) + tagObj = getTagObject(ctx.doc.schema.tags, node); + const props = stringifyProps(node, tagObj, ctx); + if (props.length > 0) + ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1; + const str = typeof tagObj.stringify === "function" ? tagObj.stringify(node, ctx, onComment, onChompKeep) : identity.isScalar(node) ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep) : node.toString(ctx, onComment, onChompKeep); + if (!props) + return str; + return identity.isScalar(node) || str[0] === "{" || str[0] === "[" ? `${props} ${str}` : `${props} +${ctx.indent}${str}`; + } + exports.createStringifyContext = createStringifyContext; + exports.stringify = stringify; + } +}); + +// node_modules/yaml/dist/stringify/stringifyPair.js +var require_stringifyPair = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyPair.js"(exports) { + "use strict"; + var identity = require_identity(); + var Scalar = require_Scalar(); + var stringify = require_stringify(); + var stringifyComment = require_stringifyComment(); + function stringifyPair({ key, value }, ctx, onComment, onChompKeep) { + const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx; + let keyComment = identity.isNode(key) && key.comment || null; + if (simpleKeys) { + if (keyComment) { + throw new Error("With simple keys, key nodes cannot have comments"); + } + if (identity.isCollection(key) || !identity.isNode(key) && typeof key === "object") { + const msg = "With simple keys, collection cannot be used as a key value"; + throw new Error(msg); + } + } + let explicitKey = !simpleKeys && (!key || keyComment && value == null && !ctx.inFlow || identity.isCollection(key) || (identity.isScalar(key) ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL : typeof key === "object")); + ctx = Object.assign({}, ctx, { + allNullValues: false, + implicitKey: !explicitKey && (simpleKeys || !allNullValues), + indent: indent + indentStep + }); + let keyCommentDone = false; + let chompKeep = false; + let str = stringify.stringify(key, ctx, () => keyCommentDone = true, () => chompKeep = true); + if (!explicitKey && !ctx.inFlow && str.length > 1024) { + if (simpleKeys) + throw new Error("With simple keys, single line scalar must not span more than 1024 characters"); + explicitKey = true; + } + if (ctx.inFlow) { + if (allNullValues || value == null) { + if (keyCommentDone && onComment) + onComment(); + return str === "" ? "?" : explicitKey ? `? ${str}` : str; + } + } else if (allNullValues && !simpleKeys || value == null && explicitKey) { + str = `? ${str}`; + if (keyComment && !keyCommentDone) { + str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); + } else if (chompKeep && onChompKeep) + onChompKeep(); + return str; + } + if (keyCommentDone) + keyComment = null; + if (explicitKey) { + if (keyComment) + str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); + str = `? ${str} +${indent}:`; + } else { + str = `${str}:`; + if (keyComment) + str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); + } + let vsb, vcb, valueComment; + if (identity.isNode(value)) { + vsb = !!value.spaceBefore; + vcb = value.commentBefore; + valueComment = value.comment; + } else { + vsb = false; + vcb = null; + valueComment = null; + if (value && typeof value === "object") + value = doc.createNode(value); + } + ctx.implicitKey = false; + if (!explicitKey && !keyComment && identity.isScalar(value)) + ctx.indentAtStart = str.length + 1; + chompKeep = false; + if (!indentSeq && indentStep.length >= 2 && !ctx.inFlow && !explicitKey && identity.isSeq(value) && !value.flow && !value.tag && !value.anchor) { + ctx.indent = ctx.indent.substring(2); + } + let valueCommentDone = false; + const valueStr = stringify.stringify(value, ctx, () => valueCommentDone = true, () => chompKeep = true); + let ws = " "; + if (keyComment || vsb || vcb) { + ws = vsb ? "\n" : ""; + if (vcb) { + const cs = commentString(vcb); + ws += ` +${stringifyComment.indentComment(cs, ctx.indent)}`; + } + if (valueStr === "" && !ctx.inFlow) { + if (ws === "\n") + ws = "\n\n"; + } else { + ws += ` +${ctx.indent}`; + } + } else if (!explicitKey && identity.isCollection(value)) { + const vs0 = valueStr[0]; + const nl0 = valueStr.indexOf("\n"); + const hasNewline = nl0 !== -1; + const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0; + if (hasNewline || !flow) { + let hasPropsLine = false; + if (hasNewline && (vs0 === "&" || vs0 === "!")) { + let sp0 = valueStr.indexOf(" "); + if (vs0 === "&" && sp0 !== -1 && sp0 < nl0 && valueStr[sp0 + 1] === "!") { + sp0 = valueStr.indexOf(" ", sp0 + 1); + } + if (sp0 === -1 || nl0 < sp0) + hasPropsLine = true; + } + if (!hasPropsLine) + ws = ` +${ctx.indent}`; + } + } else if (valueStr === "" || valueStr[0] === "\n") { + ws = ""; + } + str += ws + valueStr; + if (ctx.inFlow) { + if (valueCommentDone && onComment) + onComment(); + } else if (valueComment && !valueCommentDone) { + str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment)); + } else if (chompKeep && onChompKeep) { + onChompKeep(); + } + return str; + } + exports.stringifyPair = stringifyPair; + } +}); + +// node_modules/yaml/dist/log.js +var require_log = __commonJS({ + "node_modules/yaml/dist/log.js"(exports) { + "use strict"; + var node_process = __require("process"); + function debug2(logLevel, ...messages) { + if (logLevel === "debug") + console.log(...messages); + } + function warn(logLevel, warning) { + if (logLevel === "debug" || logLevel === "warn") { + if (typeof node_process.emitWarning === "function") + node_process.emitWarning(warning); + else + console.warn(warning); + } + } + exports.debug = debug2; + exports.warn = warn; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/merge.js +var require_merge = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) { + "use strict"; + var identity = require_identity(); + var Scalar = require_Scalar(); + var MERGE_KEY = "<<"; + var merge2 = { + identify: (value) => value === MERGE_KEY || typeof value === "symbol" && value.description === MERGE_KEY, + default: "key", + tag: "tag:yaml.org,2002:merge", + test: /^<<$/, + resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), { + addToJSMap: addMergeToJSMap + }), + stringify: () => MERGE_KEY + }; + var isMergeKey = (ctx, key) => (merge2.identify(key) || identity.isScalar(key) && (!key.type || key.type === Scalar.Scalar.PLAIN) && merge2.identify(key.value)) && (ctx == null ? void 0 : ctx.doc.schema.tags.some((tag) => tag.tag === merge2.tag && tag.default)); + function addMergeToJSMap(ctx, map, value) { + value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value; + if (identity.isSeq(value)) + for (const it of value.items) + mergeValue(ctx, map, it); + else if (Array.isArray(value)) + for (const it of value) + mergeValue(ctx, map, it); + else + mergeValue(ctx, map, value); + } + function mergeValue(ctx, map, value) { + const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value; + if (!identity.isMap(source)) + throw new Error("Merge sources must be maps or map aliases"); + const srcMap = source.toJSON(null, ctx, Map); + for (const [key, value2] of srcMap) { + if (map instanceof Map) { + if (!map.has(key)) + map.set(key, value2); + } else if (map instanceof Set) { + map.add(key); + } else if (!Object.prototype.hasOwnProperty.call(map, key)) { + Object.defineProperty(map, key, { + value: value2, + writable: true, + enumerable: true, + configurable: true + }); + } + } + return map; + } + exports.addMergeToJSMap = addMergeToJSMap; + exports.isMergeKey = isMergeKey; + exports.merge = merge2; + } +}); + +// node_modules/yaml/dist/nodes/addPairToJSMap.js +var require_addPairToJSMap = __commonJS({ + "node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) { + "use strict"; + var log = require_log(); + var merge2 = require_merge(); + var stringify = require_stringify(); + var identity = require_identity(); + var toJS = require_toJS(); + function addPairToJSMap(ctx, map, { key, value }) { + if (identity.isNode(key) && key.addToJSMap) + key.addToJSMap(ctx, map, value); + else if (merge2.isMergeKey(ctx, key)) + merge2.addMergeToJSMap(ctx, map, value); + else { + const jsKey = toJS.toJS(key, "", ctx); + if (map instanceof Map) { + map.set(jsKey, toJS.toJS(value, jsKey, ctx)); + } else if (map instanceof Set) { + map.add(jsKey); + } else { + const stringKey = stringifyKey(key, jsKey, ctx); + const jsValue = toJS.toJS(value, stringKey, ctx); + if (stringKey in map) + Object.defineProperty(map, stringKey, { + value: jsValue, + writable: true, + enumerable: true, + configurable: true + }); + else + map[stringKey] = jsValue; + } + } + return map; + } + function stringifyKey(key, jsKey, ctx) { + if (jsKey === null) + return ""; + if (typeof jsKey !== "object") + return String(jsKey); + if (identity.isNode(key) && (ctx == null ? void 0 : ctx.doc)) { + const strCtx = stringify.createStringifyContext(ctx.doc, {}); + strCtx.anchors = /* @__PURE__ */ new Set(); + for (const node of ctx.anchors.keys()) + strCtx.anchors.add(node.anchor); + strCtx.inFlow = true; + strCtx.inStringifyKey = true; + const strKey = key.toString(strCtx); + if (!ctx.mapKeyWarned) { + let jsonStr = JSON.stringify(strKey); + if (jsonStr.length > 40) + jsonStr = jsonStr.substring(0, 36) + '..."'; + log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`); + ctx.mapKeyWarned = true; + } + return strKey; + } + return JSON.stringify(jsKey); + } + exports.addPairToJSMap = addPairToJSMap; + } +}); + +// node_modules/yaml/dist/nodes/Pair.js +var require_Pair = __commonJS({ + "node_modules/yaml/dist/nodes/Pair.js"(exports) { + "use strict"; + var createNode = require_createNode(); + var stringifyPair = require_stringifyPair(); + var addPairToJSMap = require_addPairToJSMap(); + var identity = require_identity(); + function createPair(key, value, ctx) { + const k = createNode.createNode(key, void 0, ctx); + const v = createNode.createNode(value, void 0, ctx); + return new Pair(k, v); + } + var Pair = class { + constructor(key, value = null) { + Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR }); + this.key = key; + this.value = value; + } + clone(schema) { + let { key, value } = this; + if (identity.isNode(key)) + key = key.clone(schema); + if (identity.isNode(value)) + value = value.clone(schema); + return new Pair(key, value); + } + toJSON(_, ctx) { + const pair = (ctx == null ? void 0 : ctx.mapAsMap) ? /* @__PURE__ */ new Map() : {}; + return addPairToJSMap.addPairToJSMap(ctx, pair, this); + } + toString(ctx, onComment, onChompKeep) { + return (ctx == null ? void 0 : ctx.doc) ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep) : JSON.stringify(this); + } + }; + exports.Pair = Pair; + exports.createPair = createPair; + } +}); + +// node_modules/yaml/dist/stringify/stringifyCollection.js +var require_stringifyCollection = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) { + "use strict"; + var identity = require_identity(); + var stringify = require_stringify(); + var stringifyComment = require_stringifyComment(); + function stringifyCollection(collection, ctx, options) { + const flow = ctx.inFlow ?? collection.flow; + const stringify2 = flow ? stringifyFlowCollection : stringifyBlockCollection; + return stringify2(collection, ctx, options); + } + function stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) { + const { indent, options: { commentString } } = ctx; + const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null }); + let chompKeep = false; + const lines = []; + for (let i = 0; i < items.length; ++i) { + const item = items[i]; + let comment2 = null; + if (identity.isNode(item)) { + if (!chompKeep && item.spaceBefore) + lines.push(""); + addCommentBefore(ctx, lines, item.commentBefore, chompKeep); + if (item.comment) + comment2 = item.comment; + } else if (identity.isPair(item)) { + const ik = identity.isNode(item.key) ? item.key : null; + if (ik) { + if (!chompKeep && ik.spaceBefore) + lines.push(""); + addCommentBefore(ctx, lines, ik.commentBefore, chompKeep); + } + } + chompKeep = false; + let str2 = stringify.stringify(item, itemCtx, () => comment2 = null, () => chompKeep = true); + if (comment2) + str2 += stringifyComment.lineComment(str2, itemIndent, commentString(comment2)); + if (chompKeep && comment2) + chompKeep = false; + lines.push(blockItemPrefix + str2); + } + let str; + if (lines.length === 0) { + str = flowChars.start + flowChars.end; + } else { + str = lines[0]; + for (let i = 1; i < lines.length; ++i) { + const line = lines[i]; + str += line ? ` +${indent}${line}` : "\n"; + } + } + if (comment) { + str += "\n" + stringifyComment.indentComment(commentString(comment), indent); + if (onComment) + onComment(); + } else if (chompKeep && onChompKeep) + onChompKeep(); + return str; + } + function stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) { + const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx; + itemIndent += indentStep; + const itemCtx = Object.assign({}, ctx, { + indent: itemIndent, + inFlow: true, + type: null + }); + let reqNewline = false; + let linesAtValue = 0; + const lines = []; + for (let i = 0; i < items.length; ++i) { + const item = items[i]; + let comment = null; + if (identity.isNode(item)) { + if (item.spaceBefore) + lines.push(""); + addCommentBefore(ctx, lines, item.commentBefore, false); + if (item.comment) + comment = item.comment; + } else if (identity.isPair(item)) { + const ik = identity.isNode(item.key) ? item.key : null; + if (ik) { + if (ik.spaceBefore) + lines.push(""); + addCommentBefore(ctx, lines, ik.commentBefore, false); + if (ik.comment) + reqNewline = true; + } + const iv = identity.isNode(item.value) ? item.value : null; + if (iv) { + if (iv.comment) + comment = iv.comment; + if (iv.commentBefore) + reqNewline = true; + } else if (item.value == null && (ik == null ? void 0 : ik.comment)) { + comment = ik.comment; + } + } + if (comment) + reqNewline = true; + let str = stringify.stringify(item, itemCtx, () => comment = null); + if (i < items.length - 1) + str += ","; + if (comment) + str += stringifyComment.lineComment(str, itemIndent, commentString(comment)); + if (!reqNewline && (lines.length > linesAtValue || str.includes("\n"))) + reqNewline = true; + lines.push(str); + linesAtValue = lines.length; + } + const { start, end } = flowChars; + if (lines.length === 0) { + return start + end; + } else { + if (!reqNewline) { + const len = lines.reduce((sum, line) => sum + line.length + 2, 2); + reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth; + } + if (reqNewline) { + let str = start; + for (const line of lines) + str += line ? ` +${indentStep}${indent}${line}` : "\n"; + return `${str} +${indent}${end}`; + } else { + return `${start}${fcPadding}${lines.join(" ")}${fcPadding}${end}`; + } + } + } + function addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) { + if (comment && chompKeep) + comment = comment.replace(/^\n+/, ""); + if (comment) { + const ic = stringifyComment.indentComment(commentString(comment), indent); + lines.push(ic.trimStart()); + } + } + exports.stringifyCollection = stringifyCollection; + } +}); + +// node_modules/yaml/dist/nodes/YAMLMap.js +var require_YAMLMap = __commonJS({ + "node_modules/yaml/dist/nodes/YAMLMap.js"(exports) { + "use strict"; + var stringifyCollection = require_stringifyCollection(); + var addPairToJSMap = require_addPairToJSMap(); + var Collection2 = require_Collection(); + var identity = require_identity(); + var Pair = require_Pair(); + var Scalar = require_Scalar(); + function findPair(items, key) { + const k = identity.isScalar(key) ? key.value : key; + for (const it of items) { + if (identity.isPair(it)) { + if (it.key === key || it.key === k) + return it; + if (identity.isScalar(it.key) && it.key.value === k) + return it; + } + } + return void 0; + } + var YAMLMap = class extends Collection2.Collection { + static get tagName() { + return "tag:yaml.org,2002:map"; + } + constructor(schema) { + super(identity.MAP, schema); + this.items = []; + } + static from(schema, obj, ctx) { + const { keepUndefined, replacer } = ctx; + const map = new this(schema); + const add = (key, value) => { + if (typeof replacer === "function") + value = replacer.call(obj, key, value); + else if (Array.isArray(replacer) && !replacer.includes(key)) + return; + if (value !== void 0 || keepUndefined) + map.items.push(Pair.createPair(key, value, ctx)); + }; + if (obj instanceof Map) { + for (const [key, value] of obj) + add(key, value); + } else if (obj && typeof obj === "object") { + for (const key of Object.keys(obj)) + add(key, obj[key]); + } + if (typeof schema.sortMapEntries === "function") { + map.items.sort(schema.sortMapEntries); + } + return map; + } + add(pair, overwrite) { + var _a; + let _pair; + if (identity.isPair(pair)) + _pair = pair; + else if (!pair || typeof pair !== "object" || !("key" in pair)) { + _pair = new Pair.Pair(pair, pair == null ? void 0 : pair.value); + } else + _pair = new Pair.Pair(pair.key, pair.value); + const prev = findPair(this.items, _pair.key); + const sortEntries = (_a = this.schema) == null ? void 0 : _a.sortMapEntries; + if (prev) { + if (!overwrite) + throw new Error(`Key ${_pair.key} already set`); + if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value)) + prev.value.value = _pair.value; + else + prev.value = _pair.value; + } else if (sortEntries) { + const i = this.items.findIndex((item) => sortEntries(_pair, item) < 0); + if (i === -1) + this.items.push(_pair); + else + this.items.splice(i, 0, _pair); + } else { + this.items.push(_pair); + } + } + delete(key) { + const it = findPair(this.items, key); + if (!it) + return false; + const del = this.items.splice(this.items.indexOf(it), 1); + return del.length > 0; + } + get(key, keepScalar) { + const it = findPair(this.items, key); + const node = it == null ? void 0 : it.value; + return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? void 0; + } + has(key) { + return !!findPair(this.items, key); + } + set(key, value) { + this.add(new Pair.Pair(key, value), true); + } + toJSON(_, ctx, Type) { + const map = Type ? new Type() : (ctx == null ? void 0 : ctx.mapAsMap) ? /* @__PURE__ */ new Map() : {}; + if (ctx == null ? void 0 : ctx.onCreate) + ctx.onCreate(map); + for (const item of this.items) + addPairToJSMap.addPairToJSMap(ctx, map, item); + return map; + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + for (const item of this.items) { + if (!identity.isPair(item)) + throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`); + } + if (!ctx.allNullValues && this.hasAllNullValues(false)) + ctx = Object.assign({}, ctx, { allNullValues: true }); + return stringifyCollection.stringifyCollection(this, ctx, { + blockItemPrefix: "", + flowChars: { start: "{", end: "}" }, + itemIndent: ctx.indent || "", + onChompKeep, + onComment + }); + } + }; + exports.YAMLMap = YAMLMap; + exports.findPair = findPair; + } +}); + +// node_modules/yaml/dist/schema/common/map.js +var require_map = __commonJS({ + "node_modules/yaml/dist/schema/common/map.js"(exports) { + "use strict"; + var identity = require_identity(); + var YAMLMap = require_YAMLMap(); + var map = { + collection: "map", + default: true, + nodeClass: YAMLMap.YAMLMap, + tag: "tag:yaml.org,2002:map", + resolve(map2, onError) { + if (!identity.isMap(map2)) + onError("Expected a mapping for this tag"); + return map2; + }, + createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx) + }; + exports.map = map; + } +}); + +// node_modules/yaml/dist/nodes/YAMLSeq.js +var require_YAMLSeq = __commonJS({ + "node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) { + "use strict"; + var createNode = require_createNode(); + var stringifyCollection = require_stringifyCollection(); + var Collection2 = require_Collection(); + var identity = require_identity(); + var Scalar = require_Scalar(); + var toJS = require_toJS(); + var YAMLSeq = class extends Collection2.Collection { + static get tagName() { + return "tag:yaml.org,2002:seq"; + } + constructor(schema) { + super(identity.SEQ, schema); + this.items = []; + } + add(value) { + this.items.push(value); + } + delete(key) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + return false; + const del = this.items.splice(idx, 1); + return del.length > 0; + } + get(key, keepScalar) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + return void 0; + const it = this.items[idx]; + return !keepScalar && identity.isScalar(it) ? it.value : it; + } + has(key) { + const idx = asItemIndex(key); + return typeof idx === "number" && idx < this.items.length; + } + set(key, value) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + throw new Error(`Expected a valid index, not ${key}.`); + const prev = this.items[idx]; + if (identity.isScalar(prev) && Scalar.isScalarValue(value)) + prev.value = value; + else + this.items[idx] = value; + } + toJSON(_, ctx) { + const seq = []; + if (ctx == null ? void 0 : ctx.onCreate) + ctx.onCreate(seq); + let i = 0; + for (const item of this.items) + seq.push(toJS.toJS(item, String(i++), ctx)); + return seq; + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + return stringifyCollection.stringifyCollection(this, ctx, { + blockItemPrefix: "- ", + flowChars: { start: "[", end: "]" }, + itemIndent: (ctx.indent || "") + " ", + onChompKeep, + onComment + }); + } + static from(schema, obj, ctx) { + const { replacer } = ctx; + const seq = new this(schema); + if (obj && Symbol.iterator in Object(obj)) { + let i = 0; + for (let it of obj) { + if (typeof replacer === "function") { + const key = obj instanceof Set ? it : String(i++); + it = replacer.call(obj, key, it); + } + seq.items.push(createNode.createNode(it, void 0, ctx)); + } + } + return seq; + } + }; + function asItemIndex(key) { + let idx = identity.isScalar(key) ? key.value : key; + if (idx && typeof idx === "string") + idx = Number(idx); + return typeof idx === "number" && Number.isInteger(idx) && idx >= 0 ? idx : null; + } + exports.YAMLSeq = YAMLSeq; + } +}); + +// node_modules/yaml/dist/schema/common/seq.js +var require_seq = __commonJS({ + "node_modules/yaml/dist/schema/common/seq.js"(exports) { + "use strict"; + var identity = require_identity(); + var YAMLSeq = require_YAMLSeq(); + var seq = { + collection: "seq", + default: true, + nodeClass: YAMLSeq.YAMLSeq, + tag: "tag:yaml.org,2002:seq", + resolve(seq2, onError) { + if (!identity.isSeq(seq2)) + onError("Expected a sequence for this tag"); + return seq2; + }, + createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx) + }; + exports.seq = seq; + } +}); + +// node_modules/yaml/dist/schema/common/string.js +var require_string = __commonJS({ + "node_modules/yaml/dist/schema/common/string.js"(exports) { + "use strict"; + var stringifyString = require_stringifyString(); + var string = { + identify: (value) => typeof value === "string", + default: true, + tag: "tag:yaml.org,2002:str", + resolve: (str) => str, + stringify(item, ctx, onComment, onChompKeep) { + ctx = Object.assign({ actualString: true }, ctx); + return stringifyString.stringifyString(item, ctx, onComment, onChompKeep); + } + }; + exports.string = string; + } +}); + +// node_modules/yaml/dist/schema/common/null.js +var require_null = __commonJS({ + "node_modules/yaml/dist/schema/common/null.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var nullTag = { + identify: (value) => value == null, + createNode: () => new Scalar.Scalar(null), + default: true, + tag: "tag:yaml.org,2002:null", + test: /^(?:~|[Nn]ull|NULL)?$/, + resolve: () => new Scalar.Scalar(null), + stringify: ({ source }, ctx) => typeof source === "string" && nullTag.test.test(source) ? source : ctx.options.nullStr + }; + exports.nullTag = nullTag; + } +}); + +// node_modules/yaml/dist/schema/core/bool.js +var require_bool = __commonJS({ + "node_modules/yaml/dist/schema/core/bool.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var boolTag = { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, + resolve: (str) => new Scalar.Scalar(str[0] === "t" || str[0] === "T"), + stringify({ source, value }, ctx) { + if (source && boolTag.test.test(source)) { + const sv = source[0] === "t" || source[0] === "T"; + if (value === sv) + return source; + } + return value ? ctx.options.trueStr : ctx.options.falseStr; + } + }; + exports.boolTag = boolTag; + } +}); + +// node_modules/yaml/dist/stringify/stringifyNumber.js +var require_stringifyNumber = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) { + "use strict"; + function stringifyNumber({ format, minFractionDigits, tag, value }) { + if (typeof value === "bigint") + return String(value); + const num = typeof value === "number" ? value : Number(value); + if (!isFinite(num)) + return isNaN(num) ? ".nan" : num < 0 ? "-.inf" : ".inf"; + let n = JSON.stringify(value); + if (!format && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) { + let i = n.indexOf("."); + if (i < 0) { + i = n.length; + n += "."; + } + let d = minFractionDigits - (n.length - i - 1); + while (d-- > 0) + n += "0"; + } + return n; + } + exports.stringifyNumber = stringifyNumber; + } +}); + +// node_modules/yaml/dist/schema/core/float.js +var require_float = __commonJS({ + "node_modules/yaml/dist/schema/core/float.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var stringifyNumber = require_stringifyNumber(); + var floatNaN = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/, + resolve: (str) => str.slice(-3).toLowerCase() === "nan" ? NaN : str[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, + stringify: stringifyNumber.stringifyNumber + }; + var floatExp = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "EXP", + test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, + resolve: (str) => parseFloat(str), + stringify(node) { + const num = Number(node.value); + return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node); + } + }; + var float = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/, + resolve(str) { + const node = new Scalar.Scalar(parseFloat(str)); + const dot = str.indexOf("."); + if (dot !== -1 && str[str.length - 1] === "0") + node.minFractionDigits = str.length - dot - 1; + return node; + }, + stringify: stringifyNumber.stringifyNumber + }; + exports.float = float; + exports.floatExp = floatExp; + exports.floatNaN = floatNaN; + } +}); + +// node_modules/yaml/dist/schema/core/int.js +var require_int = __commonJS({ + "node_modules/yaml/dist/schema/core/int.js"(exports) { + "use strict"; + var stringifyNumber = require_stringifyNumber(); + var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); + var intResolve = (str, offset, radix, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix); + function intStringify(node, radix, prefix) { + const { value } = node; + if (intIdentify(value) && value >= 0) + return prefix + value.toString(radix); + return stringifyNumber.stringifyNumber(node); + } + var intOct = { + identify: (value) => intIdentify(value) && value >= 0, + default: true, + tag: "tag:yaml.org,2002:int", + format: "OCT", + test: /^0o[0-7]+$/, + resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt), + stringify: (node) => intStringify(node, 8, "0o") + }; + var int = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^[-+]?[0-9]+$/, + resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt), + stringify: stringifyNumber.stringifyNumber + }; + var intHex = { + identify: (value) => intIdentify(value) && value >= 0, + default: true, + tag: "tag:yaml.org,2002:int", + format: "HEX", + test: /^0x[0-9a-fA-F]+$/, + resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt), + stringify: (node) => intStringify(node, 16, "0x") + }; + exports.int = int; + exports.intHex = intHex; + exports.intOct = intOct; + } +}); + +// node_modules/yaml/dist/schema/core/schema.js +var require_schema = __commonJS({ + "node_modules/yaml/dist/schema/core/schema.js"(exports) { + "use strict"; + var map = require_map(); + var _null = require_null(); + var seq = require_seq(); + var string = require_string(); + var bool = require_bool(); + var float = require_float(); + var int = require_int(); + var schema = [ + map.map, + seq.seq, + string.string, + _null.nullTag, + bool.boolTag, + int.intOct, + int.int, + int.intHex, + float.floatNaN, + float.floatExp, + float.float + ]; + exports.schema = schema; + } +}); + +// node_modules/yaml/dist/schema/json/schema.js +var require_schema2 = __commonJS({ + "node_modules/yaml/dist/schema/json/schema.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var map = require_map(); + var seq = require_seq(); + function intIdentify(value) { + return typeof value === "bigint" || Number.isInteger(value); + } + var stringifyJSON = ({ value }) => JSON.stringify(value); + var jsonScalars = [ + { + identify: (value) => typeof value === "string", + default: true, + tag: "tag:yaml.org,2002:str", + resolve: (str) => str, + stringify: stringifyJSON + }, + { + identify: (value) => value == null, + createNode: () => new Scalar.Scalar(null), + default: true, + tag: "tag:yaml.org,2002:null", + test: /^null$/, + resolve: () => null, + stringify: stringifyJSON + }, + { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^true$|^false$/, + resolve: (str) => str === "true", + stringify: stringifyJSON + }, + { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^-?(?:0|[1-9][0-9]*)$/, + resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10), + stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value) + }, + { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, + resolve: (str) => parseFloat(str), + stringify: stringifyJSON + } + ]; + var jsonError = { + default: true, + tag: "", + test: /^/, + resolve(str, onError) { + onError(`Unresolved plain scalar ${JSON.stringify(str)}`); + return str; + } + }; + var schema = [map.map, seq.seq].concat(jsonScalars, jsonError); + exports.schema = schema; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/binary.js +var require_binary = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) { + "use strict"; + var node_buffer = __require("buffer"); + var Scalar = require_Scalar(); + var stringifyString = require_stringifyString(); + var binary = { + identify: (value) => value instanceof Uint8Array, + default: false, + tag: "tag:yaml.org,2002:binary", + resolve(src, onError) { + if (typeof node_buffer.Buffer === "function") { + return node_buffer.Buffer.from(src, "base64"); + } else if (typeof atob === "function") { + const str = atob(src.replace(/[\n\r]/g, "")); + const buffer = new Uint8Array(str.length); + for (let i = 0; i < str.length; ++i) + buffer[i] = str.charCodeAt(i); + return buffer; + } else { + onError("This environment does not support reading binary tags; either Buffer or atob is required"); + return src; + } + }, + stringify({ comment, type, value }, ctx, onComment, onChompKeep) { + const buf = value; + let str; + if (typeof node_buffer.Buffer === "function") { + str = buf instanceof node_buffer.Buffer ? buf.toString("base64") : node_buffer.Buffer.from(buf.buffer).toString("base64"); + } else if (typeof btoa === "function") { + let s = ""; + for (let i = 0; i < buf.length; ++i) + s += String.fromCharCode(buf[i]); + str = btoa(s); + } else { + throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required"); + } + if (!type) + type = Scalar.Scalar.BLOCK_LITERAL; + if (type !== Scalar.Scalar.QUOTE_DOUBLE) { + const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth); + const n = Math.ceil(str.length / lineWidth); + const lines = new Array(n); + for (let i = 0, o = 0; i < n; ++i, o += lineWidth) { + lines[i] = str.substr(o, lineWidth); + } + str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? "\n" : " "); + } + return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep); + } + }; + exports.binary = binary; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/pairs.js +var require_pairs = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) { + "use strict"; + var identity = require_identity(); + var Pair = require_Pair(); + var Scalar = require_Scalar(); + var YAMLSeq = require_YAMLSeq(); + function resolvePairs(seq, onError) { + if (identity.isSeq(seq)) { + for (let i = 0; i < seq.items.length; ++i) { + let item = seq.items[i]; + if (identity.isPair(item)) + continue; + else if (identity.isMap(item)) { + if (item.items.length > 1) + onError("Each pair must have its own sequence indicator"); + const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null)); + if (item.commentBefore) + pair.key.commentBefore = pair.key.commentBefore ? `${item.commentBefore} +${pair.key.commentBefore}` : item.commentBefore; + if (item.comment) { + const cn = pair.value ?? pair.key; + cn.comment = cn.comment ? `${item.comment} +${cn.comment}` : item.comment; + } + item = pair; + } + seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item); + } + } else + onError("Expected a sequence for this tag"); + return seq; + } + function createPairs(schema, iterable, ctx) { + const { replacer } = ctx; + const pairs2 = new YAMLSeq.YAMLSeq(schema); + pairs2.tag = "tag:yaml.org,2002:pairs"; + let i = 0; + if (iterable && Symbol.iterator in Object(iterable)) + for (let it of iterable) { + if (typeof replacer === "function") + it = replacer.call(iterable, String(i++), it); + let key, value; + if (Array.isArray(it)) { + if (it.length === 2) { + key = it[0]; + value = it[1]; + } else + throw new TypeError(`Expected [key, value] tuple: ${it}`); + } else if (it && it instanceof Object) { + const keys = Object.keys(it); + if (keys.length === 1) { + key = keys[0]; + value = it[key]; + } else { + throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`); + } + } else { + key = it; + } + pairs2.items.push(Pair.createPair(key, value, ctx)); + } + return pairs2; + } + var pairs = { + collection: "seq", + default: false, + tag: "tag:yaml.org,2002:pairs", + resolve: resolvePairs, + createNode: createPairs + }; + exports.createPairs = createPairs; + exports.pairs = pairs; + exports.resolvePairs = resolvePairs; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/omap.js +var require_omap = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) { + "use strict"; + var identity = require_identity(); + var toJS = require_toJS(); + var YAMLMap = require_YAMLMap(); + var YAMLSeq = require_YAMLSeq(); + var pairs = require_pairs(); + var YAMLOMap = class extends YAMLSeq.YAMLSeq { + constructor() { + super(); + this.add = YAMLMap.YAMLMap.prototype.add.bind(this); + this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this); + this.get = YAMLMap.YAMLMap.prototype.get.bind(this); + this.has = YAMLMap.YAMLMap.prototype.has.bind(this); + this.set = YAMLMap.YAMLMap.prototype.set.bind(this); + this.tag = YAMLOMap.tag; + } + toJSON(_, ctx) { + if (!ctx) + return super.toJSON(_); + const map = /* @__PURE__ */ new Map(); + if (ctx == null ? void 0 : ctx.onCreate) + ctx.onCreate(map); + for (const pair of this.items) { + let key, value; + if (identity.isPair(pair)) { + key = toJS.toJS(pair.key, "", ctx); + value = toJS.toJS(pair.value, key, ctx); + } else { + key = toJS.toJS(pair, "", ctx); + } + if (map.has(key)) + throw new Error("Ordered maps must not include duplicate keys"); + map.set(key, value); + } + return map; + } + static from(schema, iterable, ctx) { + const pairs$1 = pairs.createPairs(schema, iterable, ctx); + const omap2 = new this(); + omap2.items = pairs$1.items; + return omap2; + } + }; + YAMLOMap.tag = "tag:yaml.org,2002:omap"; + var omap = { + collection: "seq", + identify: (value) => value instanceof Map, + nodeClass: YAMLOMap, + default: false, + tag: "tag:yaml.org,2002:omap", + resolve(seq, onError) { + const pairs$1 = pairs.resolvePairs(seq, onError); + const seenKeys = []; + for (const { key } of pairs$1.items) { + if (identity.isScalar(key)) { + if (seenKeys.includes(key.value)) { + onError(`Ordered maps must not include duplicate keys: ${key.value}`); + } else { + seenKeys.push(key.value); + } + } + } + return Object.assign(new YAMLOMap(), pairs$1); + }, + createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx) + }; + exports.YAMLOMap = YAMLOMap; + exports.omap = omap; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/bool.js +var require_bool2 = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + function boolStringify({ value, source }, ctx) { + const boolObj = value ? trueTag : falseTag; + if (source && boolObj.test.test(source)) + return source; + return value ? ctx.options.trueStr : ctx.options.falseStr; + } + var trueTag = { + identify: (value) => value === true, + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, + resolve: () => new Scalar.Scalar(true), + stringify: boolStringify + }; + var falseTag = { + identify: (value) => value === false, + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/, + resolve: () => new Scalar.Scalar(false), + stringify: boolStringify + }; + exports.falseTag = falseTag; + exports.trueTag = trueTag; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/float.js +var require_float2 = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var stringifyNumber = require_stringifyNumber(); + var floatNaN = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/, + resolve: (str) => str.slice(-3).toLowerCase() === "nan" ? NaN : str[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, + stringify: stringifyNumber.stringifyNumber + }; + var floatExp = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "EXP", + test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/, + resolve: (str) => parseFloat(str.replace(/_/g, "")), + stringify(node) { + const num = Number(node.value); + return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node); + } + }; + var float = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/, + resolve(str) { + const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, ""))); + const dot = str.indexOf("."); + if (dot !== -1) { + const f = str.substring(dot + 1).replace(/_/g, ""); + if (f[f.length - 1] === "0") + node.minFractionDigits = f.length; + } + return node; + }, + stringify: stringifyNumber.stringifyNumber + }; + exports.float = float; + exports.floatExp = floatExp; + exports.floatNaN = floatNaN; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/int.js +var require_int2 = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) { + "use strict"; + var stringifyNumber = require_stringifyNumber(); + var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); + function intResolve(str, offset, radix, { intAsBigInt }) { + const sign = str[0]; + if (sign === "-" || sign === "+") + offset += 1; + str = str.substring(offset).replace(/_/g, ""); + if (intAsBigInt) { + switch (radix) { + case 2: + str = `0b${str}`; + break; + case 8: + str = `0o${str}`; + break; + case 16: + str = `0x${str}`; + break; + } + const n2 = BigInt(str); + return sign === "-" ? BigInt(-1) * n2 : n2; + } + const n = parseInt(str, radix); + return sign === "-" ? -1 * n : n; + } + function intStringify(node, radix, prefix) { + const { value } = node; + if (intIdentify(value)) { + const str = value.toString(radix); + return value < 0 ? "-" + prefix + str.substr(1) : prefix + str; + } + return stringifyNumber.stringifyNumber(node); + } + var intBin = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "BIN", + test: /^[-+]?0b[0-1_]+$/, + resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt), + stringify: (node) => intStringify(node, 2, "0b") + }; + var intOct = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "OCT", + test: /^[-+]?0[0-7_]+$/, + resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt), + stringify: (node) => intStringify(node, 8, "0") + }; + var int = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^[-+]?[0-9][0-9_]*$/, + resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt), + stringify: stringifyNumber.stringifyNumber + }; + var intHex = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "HEX", + test: /^[-+]?0x[0-9a-fA-F_]+$/, + resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt), + stringify: (node) => intStringify(node, 16, "0x") + }; + exports.int = int; + exports.intBin = intBin; + exports.intHex = intHex; + exports.intOct = intOct; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/set.js +var require_set = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) { + "use strict"; + var identity = require_identity(); + var Pair = require_Pair(); + var YAMLMap = require_YAMLMap(); + var YAMLSet = class extends YAMLMap.YAMLMap { + constructor(schema) { + super(schema); + this.tag = YAMLSet.tag; + } + add(key) { + let pair; + if (identity.isPair(key)) + pair = key; + else if (key && typeof key === "object" && "key" in key && "value" in key && key.value === null) + pair = new Pair.Pair(key.key, null); + else + pair = new Pair.Pair(key, null); + const prev = YAMLMap.findPair(this.items, pair.key); + if (!prev) + this.items.push(pair); + } + get(key, keepPair) { + const pair = YAMLMap.findPair(this.items, key); + return !keepPair && identity.isPair(pair) ? identity.isScalar(pair.key) ? pair.key.value : pair.key : pair; + } + set(key, value) { + if (typeof value !== "boolean") + throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`); + const prev = YAMLMap.findPair(this.items, key); + if (prev && !value) { + this.items.splice(this.items.indexOf(prev), 1); + } else if (!prev && value) { + this.items.push(new Pair.Pair(key)); + } + } + toJSON(_, ctx) { + return super.toJSON(_, ctx, Set); + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + if (this.hasAllNullValues(true)) + return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep); + else + throw new Error("Set items must all have null values"); + } + static from(schema, iterable, ctx) { + const { replacer } = ctx; + const set2 = new this(schema); + if (iterable && Symbol.iterator in Object(iterable)) + for (let value of iterable) { + if (typeof replacer === "function") + value = replacer.call(iterable, value, value); + set2.items.push(Pair.createPair(value, null, ctx)); + } + return set2; + } + }; + YAMLSet.tag = "tag:yaml.org,2002:set"; + var set = { + collection: "map", + identify: (value) => value instanceof Set, + nodeClass: YAMLSet, + default: false, + tag: "tag:yaml.org,2002:set", + createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx), + resolve(map, onError) { + if (identity.isMap(map)) { + if (map.hasAllNullValues(true)) + return Object.assign(new YAMLSet(), map); + else + onError("Set items must all have null values"); + } else + onError("Expected a mapping for this tag"); + return map; + } + }; + exports.YAMLSet = YAMLSet; + exports.set = set; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +var require_timestamp = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) { + "use strict"; + var stringifyNumber = require_stringifyNumber(); + function parseSexagesimal(str, asBigInt) { + const sign = str[0]; + const parts = sign === "-" || sign === "+" ? str.substring(1) : str; + const num = (n) => asBigInt ? BigInt(n) : Number(n); + const res = parts.replace(/_/g, "").split(":").reduce((res2, p) => res2 * num(60) + num(p), num(0)); + return sign === "-" ? num(-1) * res : res; + } + function stringifySexagesimal(node) { + let { value } = node; + let num = (n) => n; + if (typeof value === "bigint") + num = (n) => BigInt(n); + else if (isNaN(value) || !isFinite(value)) + return stringifyNumber.stringifyNumber(node); + let sign = ""; + if (value < 0) { + sign = "-"; + value *= num(-1); + } + const _60 = num(60); + const parts = [value % _60]; + if (value < 60) { + parts.unshift(0); + } else { + value = (value - parts[0]) / _60; + parts.unshift(value % _60); + if (value >= 60) { + value = (value - parts[0]) / _60; + parts.unshift(value); + } + } + return sign + parts.map((n) => String(n).padStart(2, "0")).join(":").replace(/000000\d*$/, ""); + } + var intTime = { + identify: (value) => typeof value === "bigint" || Number.isInteger(value), + default: true, + tag: "tag:yaml.org,2002:int", + format: "TIME", + test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/, + resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt), + stringify: stringifySexagesimal + }; + var floatTime = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "TIME", + test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/, + resolve: (str) => parseSexagesimal(str, false), + stringify: stringifySexagesimal + }; + var timestamp = { + identify: (value) => value instanceof Date, + default: true, + tag: "tag:yaml.org,2002:timestamp", + test: RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"), + resolve(str) { + const match = str.match(timestamp.test); + if (!match) + throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd"); + const [, year, month, day, hour, minute, second] = match.map(Number); + const millisec = match[7] ? Number((match[7] + "00").substr(1, 3)) : 0; + let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec); + const tz = match[8]; + if (tz && tz !== "Z") { + let d = parseSexagesimal(tz, false); + if (Math.abs(d) < 30) + d *= 60; + date -= 6e4 * d; + } + return new Date(date); + }, + stringify: ({ value }) => value.toISOString().replace(/(T00:00:00)?\.000Z$/, "") + }; + exports.floatTime = floatTime; + exports.intTime = intTime; + exports.timestamp = timestamp; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/schema.js +var require_schema3 = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) { + "use strict"; + var map = require_map(); + var _null = require_null(); + var seq = require_seq(); + var string = require_string(); + var binary = require_binary(); + var bool = require_bool2(); + var float = require_float2(); + var int = require_int2(); + var merge2 = require_merge(); + var omap = require_omap(); + var pairs = require_pairs(); + var set = require_set(); + var timestamp = require_timestamp(); + var schema = [ + map.map, + seq.seq, + string.string, + _null.nullTag, + bool.trueTag, + bool.falseTag, + int.intBin, + int.intOct, + int.int, + int.intHex, + float.floatNaN, + float.floatExp, + float.float, + binary.binary, + merge2.merge, + omap.omap, + pairs.pairs, + set.set, + timestamp.intTime, + timestamp.floatTime, + timestamp.timestamp + ]; + exports.schema = schema; + } +}); + +// node_modules/yaml/dist/schema/tags.js +var require_tags = __commonJS({ + "node_modules/yaml/dist/schema/tags.js"(exports) { + "use strict"; + var map = require_map(); + var _null = require_null(); + var seq = require_seq(); + var string = require_string(); + var bool = require_bool(); + var float = require_float(); + var int = require_int(); + var schema = require_schema(); + var schema$1 = require_schema2(); + var binary = require_binary(); + var merge2 = require_merge(); + var omap = require_omap(); + var pairs = require_pairs(); + var schema$2 = require_schema3(); + var set = require_set(); + var timestamp = require_timestamp(); + var schemas = /* @__PURE__ */ new Map([ + ["core", schema.schema], + ["failsafe", [map.map, seq.seq, string.string]], + ["json", schema$1.schema], + ["yaml11", schema$2.schema], + ["yaml-1.1", schema$2.schema] + ]); + var tagsByName = { + binary: binary.binary, + bool: bool.boolTag, + float: float.float, + floatExp: float.floatExp, + floatNaN: float.floatNaN, + floatTime: timestamp.floatTime, + int: int.int, + intHex: int.intHex, + intOct: int.intOct, + intTime: timestamp.intTime, + map: map.map, + merge: merge2.merge, + null: _null.nullTag, + omap: omap.omap, + pairs: pairs.pairs, + seq: seq.seq, + set: set.set, + timestamp: timestamp.timestamp + }; + var coreKnownTags = { + "tag:yaml.org,2002:binary": binary.binary, + "tag:yaml.org,2002:merge": merge2.merge, + "tag:yaml.org,2002:omap": omap.omap, + "tag:yaml.org,2002:pairs": pairs.pairs, + "tag:yaml.org,2002:set": set.set, + "tag:yaml.org,2002:timestamp": timestamp.timestamp + }; + function getTags(customTags, schemaName, addMergeTag) { + const schemaTags = schemas.get(schemaName); + if (schemaTags && !customTags) { + return addMergeTag && !schemaTags.includes(merge2.merge) ? schemaTags.concat(merge2.merge) : schemaTags.slice(); + } + let tags = schemaTags; + if (!tags) { + if (Array.isArray(customTags)) + tags = []; + else { + const keys = Array.from(schemas.keys()).filter((key) => key !== "yaml11").map((key) => JSON.stringify(key)).join(", "); + throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`); + } + } + if (Array.isArray(customTags)) { + for (const tag of customTags) + tags = tags.concat(tag); + } else if (typeof customTags === "function") { + tags = customTags(tags.slice()); + } + if (addMergeTag) + tags = tags.concat(merge2.merge); + return tags.reduce((tags2, tag) => { + const tagObj = typeof tag === "string" ? tagsByName[tag] : tag; + if (!tagObj) { + const tagName = JSON.stringify(tag); + const keys = Object.keys(tagsByName).map((key) => JSON.stringify(key)).join(", "); + throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`); + } + if (!tags2.includes(tagObj)) + tags2.push(tagObj); + return tags2; + }, []); + } + exports.coreKnownTags = coreKnownTags; + exports.getTags = getTags; + } +}); + +// node_modules/yaml/dist/schema/Schema.js +var require_Schema = __commonJS({ + "node_modules/yaml/dist/schema/Schema.js"(exports) { + "use strict"; + var identity = require_identity(); + var map = require_map(); + var seq = require_seq(); + var string = require_string(); + var tags = require_tags(); + var sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0; + var Schema = class { + constructor({ compat, customTags, merge: merge2, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) { + this.compat = Array.isArray(compat) ? tags.getTags(compat, "compat") : compat ? tags.getTags(null, compat) : null; + this.name = typeof schema === "string" && schema || "core"; + this.knownTags = resolveKnownTags ? tags.coreKnownTags : {}; + this.tags = tags.getTags(customTags, this.name, merge2); + this.toStringOptions = toStringDefaults ?? null; + Object.defineProperty(this, identity.MAP, { value: map.map }); + Object.defineProperty(this, identity.SCALAR, { value: string.string }); + Object.defineProperty(this, identity.SEQ, { value: seq.seq }); + this.sortMapEntries = typeof sortMapEntries === "function" ? sortMapEntries : sortMapEntries === true ? sortMapEntriesByKey : null; + } + clone() { + const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this)); + copy.tags = this.tags.slice(); + return copy; + } + }; + exports.Schema = Schema; + } +}); + +// node_modules/yaml/dist/stringify/stringifyDocument.js +var require_stringifyDocument = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) { + "use strict"; + var identity = require_identity(); + var stringify = require_stringify(); + var stringifyComment = require_stringifyComment(); + function stringifyDocument(doc, options) { + var _a; + const lines = []; + let hasDirectives = options.directives === true; + if (options.directives !== false && doc.directives) { + const dir = doc.directives.toString(doc); + if (dir) { + lines.push(dir); + hasDirectives = true; + } else if (doc.directives.docStart) + hasDirectives = true; + } + if (hasDirectives) + lines.push("---"); + const ctx = stringify.createStringifyContext(doc, options); + const { commentString } = ctx.options; + if (doc.commentBefore) { + if (lines.length !== 1) + lines.unshift(""); + const cs = commentString(doc.commentBefore); + lines.unshift(stringifyComment.indentComment(cs, "")); + } + let chompKeep = false; + let contentComment = null; + if (doc.contents) { + if (identity.isNode(doc.contents)) { + if (doc.contents.spaceBefore && hasDirectives) + lines.push(""); + if (doc.contents.commentBefore) { + const cs = commentString(doc.contents.commentBefore); + lines.push(stringifyComment.indentComment(cs, "")); + } + ctx.forceBlockIndent = !!doc.comment; + contentComment = doc.contents.comment; + } + const onChompKeep = contentComment ? void 0 : () => chompKeep = true; + let body = stringify.stringify(doc.contents, ctx, () => contentComment = null, onChompKeep); + if (contentComment) + body += stringifyComment.lineComment(body, "", commentString(contentComment)); + if ((body[0] === "|" || body[0] === ">") && lines[lines.length - 1] === "---") { + lines[lines.length - 1] = `--- ${body}`; + } else + lines.push(body); + } else { + lines.push(stringify.stringify(doc.contents, ctx)); + } + if ((_a = doc.directives) == null ? void 0 : _a.docEnd) { + if (doc.comment) { + const cs = commentString(doc.comment); + if (cs.includes("\n")) { + lines.push("..."); + lines.push(stringifyComment.indentComment(cs, "")); + } else { + lines.push(`... ${cs}`); + } + } else { + lines.push("..."); + } + } else { + let dc = doc.comment; + if (dc && chompKeep) + dc = dc.replace(/^\n+/, ""); + if (dc) { + if ((!chompKeep || contentComment) && lines[lines.length - 1] !== "") + lines.push(""); + lines.push(stringifyComment.indentComment(commentString(dc), "")); + } + } + return lines.join("\n") + "\n"; + } + exports.stringifyDocument = stringifyDocument; + } +}); + +// node_modules/yaml/dist/doc/Document.js +var require_Document = __commonJS({ + "node_modules/yaml/dist/doc/Document.js"(exports) { + "use strict"; + var Alias = require_Alias(); + var Collection2 = require_Collection(); + var identity = require_identity(); + var Pair = require_Pair(); + var toJS = require_toJS(); + var Schema = require_Schema(); + var stringifyDocument = require_stringifyDocument(); + var anchors = require_anchors(); + var applyReviver = require_applyReviver(); + var createNode = require_createNode(); + var directives = require_directives(); + var Document = class { + constructor(value, replacer, options) { + this.commentBefore = null; + this.comment = null; + this.errors = []; + this.warnings = []; + Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC }); + let _replacer = null; + if (typeof replacer === "function" || Array.isArray(replacer)) { + _replacer = replacer; + } else if (options === void 0 && replacer) { + options = replacer; + replacer = void 0; + } + const opt = Object.assign({ + intAsBigInt: false, + keepSourceTokens: false, + logLevel: "warn", + prettyErrors: true, + strict: true, + stringKeys: false, + uniqueKeys: true, + version: "1.2" + }, options); + this.options = opt; + let { version } = opt; + if (options == null ? void 0 : options._directives) { + this.directives = options._directives.atDocument(); + if (this.directives.yaml.explicit) + version = this.directives.yaml.version; + } else + this.directives = new directives.Directives({ version }); + this.setSchema(version, options); + this.contents = value === void 0 ? null : this.createNode(value, _replacer, options); + } + clone() { + const copy = Object.create(Document.prototype, { + [identity.NODE_TYPE]: { value: identity.DOC } + }); + copy.commentBefore = this.commentBefore; + copy.comment = this.comment; + copy.errors = this.errors.slice(); + copy.warnings = this.warnings.slice(); + copy.options = Object.assign({}, this.options); + if (this.directives) + copy.directives = this.directives.clone(); + copy.schema = this.schema.clone(); + copy.contents = identity.isNode(this.contents) ? this.contents.clone(copy.schema) : this.contents; + if (this.range) + copy.range = this.range.slice(); + return copy; + } + add(value) { + if (assertCollection(this.contents)) + this.contents.add(value); + } + addIn(path2, value) { + if (assertCollection(this.contents)) + this.contents.addIn(path2, value); + } + createAlias(node, name) { + if (!node.anchor) { + const prev = anchors.anchorNames(this); + node.anchor = !name || prev.has(name) ? anchors.findNewAnchor(name || "a", prev) : name; + } + return new Alias.Alias(node.anchor); + } + createNode(value, replacer, options) { + let _replacer = void 0; + if (typeof replacer === "function") { + value = replacer.call({ "": value }, "", value); + _replacer = replacer; + } else if (Array.isArray(replacer)) { + const keyToStr = (v) => typeof v === "number" || v instanceof String || v instanceof Number; + const asStr = replacer.filter(keyToStr).map(String); + if (asStr.length > 0) + replacer = replacer.concat(asStr); + _replacer = replacer; + } else if (options === void 0 && replacer) { + options = replacer; + replacer = void 0; + } + const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {}; + const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors( + this, + anchorPrefix || "a" + ); + const ctx = { + aliasDuplicateObjects: aliasDuplicateObjects ?? true, + keepUndefined: keepUndefined ?? false, + onAnchor, + onTagObj, + replacer: _replacer, + schema: this.schema, + sourceObjects + }; + const node = createNode.createNode(value, tag, ctx); + if (flow && identity.isCollection(node)) + node.flow = true; + setAnchors(); + return node; + } + createPair(key, value, options = {}) { + const k = this.createNode(key, null, options); + const v = this.createNode(value, null, options); + return new Pair.Pair(k, v); + } + delete(key) { + return assertCollection(this.contents) ? this.contents.delete(key) : false; + } + deleteIn(path2) { + if (Collection2.isEmptyPath(path2)) { + if (this.contents == null) + return false; + this.contents = null; + return true; + } + return assertCollection(this.contents) ? this.contents.deleteIn(path2) : false; + } + get(key, keepScalar) { + return identity.isCollection(this.contents) ? this.contents.get(key, keepScalar) : void 0; + } + getIn(path2, keepScalar) { + if (Collection2.isEmptyPath(path2)) + return !keepScalar && identity.isScalar(this.contents) ? this.contents.value : this.contents; + return identity.isCollection(this.contents) ? this.contents.getIn(path2, keepScalar) : void 0; + } + has(key) { + return identity.isCollection(this.contents) ? this.contents.has(key) : false; + } + hasIn(path2) { + if (Collection2.isEmptyPath(path2)) + return this.contents !== void 0; + return identity.isCollection(this.contents) ? this.contents.hasIn(path2) : false; + } + set(key, value) { + if (this.contents == null) { + this.contents = Collection2.collectionFromPath(this.schema, [key], value); + } else if (assertCollection(this.contents)) { + this.contents.set(key, value); + } + } + setIn(path2, value) { + if (Collection2.isEmptyPath(path2)) { + this.contents = value; + } else if (this.contents == null) { + this.contents = Collection2.collectionFromPath(this.schema, Array.from(path2), value); + } else if (assertCollection(this.contents)) { + this.contents.setIn(path2, value); + } + } + setSchema(version, options = {}) { + if (typeof version === "number") + version = String(version); + let opt; + switch (version) { + case "1.1": + if (this.directives) + this.directives.yaml.version = "1.1"; + else + this.directives = new directives.Directives({ version: "1.1" }); + opt = { resolveKnownTags: false, schema: "yaml-1.1" }; + break; + case "1.2": + case "next": + if (this.directives) + this.directives.yaml.version = version; + else + this.directives = new directives.Directives({ version }); + opt = { resolveKnownTags: true, schema: "core" }; + break; + case null: + if (this.directives) + delete this.directives; + opt = null; + break; + default: { + const sv = JSON.stringify(version); + throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`); + } + } + if (options.schema instanceof Object) + this.schema = options.schema; + else if (opt) + this.schema = new Schema.Schema(Object.assign(opt, options)); + else + throw new Error(`With a null YAML version, the { schema: Schema } option is required`); + } + toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) { + const ctx = { + anchors: /* @__PURE__ */ new Map(), + doc: this, + keep: !json, + mapAsMap: mapAsMap === true, + mapKeyWarned: false, + maxAliasCount: typeof maxAliasCount === "number" ? maxAliasCount : 100 + }; + const res = toJS.toJS(this.contents, jsonArg ?? "", ctx); + if (typeof onAnchor === "function") + for (const { count, res: res2 } of ctx.anchors.values()) + onAnchor(res2, count); + return typeof reviver === "function" ? applyReviver.applyReviver(reviver, { "": res }, "", res) : res; + } + toJSON(jsonArg, onAnchor) { + return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor }); + } + toString(options = {}) { + if (this.errors.length > 0) + throw new Error("Document with errors cannot be stringified"); + if ("indent" in options && (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) { + const s = JSON.stringify(options.indent); + throw new Error(`"indent" option must be a positive integer, not ${s}`); + } + return stringifyDocument.stringifyDocument(this, options); + } + }; + function assertCollection(contents) { + if (identity.isCollection(contents)) + return true; + throw new Error("Expected a YAML collection as document contents"); + } + exports.Document = Document; + } +}); + +// node_modules/yaml/dist/errors.js +var require_errors = __commonJS({ + "node_modules/yaml/dist/errors.js"(exports) { + "use strict"; + var YAMLError = class extends Error { + constructor(name, pos, code, message) { + super(); + this.name = name; + this.code = code; + this.message = message; + this.pos = pos; + } + }; + var YAMLParseError = class extends YAMLError { + constructor(pos, code, message) { + super("YAMLParseError", pos, code, message); + } + }; + var YAMLWarning = class extends YAMLError { + constructor(pos, code, message) { + super("YAMLWarning", pos, code, message); + } + }; + var prettifyError = (src, lc) => (error) => { + if (error.pos[0] === -1) + return; + error.linePos = error.pos.map((pos) => lc.linePos(pos)); + const { line, col } = error.linePos[0]; + error.message += ` at line ${line}, column ${col}`; + let ci = col - 1; + let lineStr = src.substring(lc.lineStarts[line - 1], lc.lineStarts[line]).replace(/[\n\r]+$/, ""); + if (ci >= 60 && lineStr.length > 80) { + const trimStart = Math.min(ci - 39, lineStr.length - 79); + lineStr = "\u2026" + lineStr.substring(trimStart); + ci -= trimStart - 1; + } + if (lineStr.length > 80) + lineStr = lineStr.substring(0, 79) + "\u2026"; + if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) { + let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]); + if (prev.length > 80) + prev = prev.substring(0, 79) + "\u2026\n"; + lineStr = prev + lineStr; + } + if (/[^ ]/.test(lineStr)) { + let count = 1; + const end = error.linePos[1]; + if (end && end.line === line && end.col > col) { + count = Math.max(1, Math.min(end.col - col, 80 - ci)); + } + const pointer = " ".repeat(ci) + "^".repeat(count); + error.message += `: + +${lineStr} +${pointer} +`; + } + }; + exports.YAMLError = YAMLError; + exports.YAMLParseError = YAMLParseError; + exports.YAMLWarning = YAMLWarning; + exports.prettifyError = prettifyError; + } +}); + +// node_modules/yaml/dist/compose/resolve-props.js +var require_resolve_props = __commonJS({ + "node_modules/yaml/dist/compose/resolve-props.js"(exports) { + "use strict"; + function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) { + let spaceBefore = false; + let atNewline = startOnNewline; + let hasSpace = startOnNewline; + let comment = ""; + let commentSep = ""; + let hasNewline = false; + let reqSpace = false; + let tab = null; + let anchor = null; + let tag = null; + let newlineAfterProp = null; + let comma = null; + let found = null; + let start = null; + for (const token of tokens) { + if (reqSpace) { + if (token.type !== "space" && token.type !== "newline" && token.type !== "comma") + onError(token.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space"); + reqSpace = false; + } + if (tab) { + if (atNewline && token.type !== "comment" && token.type !== "newline") { + onError(tab, "TAB_AS_INDENT", "Tabs are not allowed as indentation"); + } + tab = null; + } + switch (token.type) { + case "space": + if (!flow && (indicator !== "doc-start" || (next == null ? void 0 : next.type) !== "flow-collection") && token.source.includes(" ")) { + tab = token; + } + hasSpace = true; + break; + case "comment": { + if (!hasSpace) + onError(token, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters"); + const cb = token.source.substring(1) || " "; + if (!comment) + comment = cb; + else + comment += commentSep + cb; + commentSep = ""; + atNewline = false; + break; + } + case "newline": + if (atNewline) { + if (comment) + comment += token.source; + else if (!found || indicator !== "seq-item-ind") + spaceBefore = true; + } else + commentSep += token.source; + atNewline = true; + hasNewline = true; + if (anchor || tag) + newlineAfterProp = token; + hasSpace = true; + break; + case "anchor": + if (anchor) + onError(token, "MULTIPLE_ANCHORS", "A node can have at most one anchor"); + if (token.source.endsWith(":")) + onError(token.offset + token.source.length - 1, "BAD_ALIAS", "Anchor ending in : is ambiguous", true); + anchor = token; + if (start === null) + start = token.offset; + atNewline = false; + hasSpace = false; + reqSpace = true; + break; + case "tag": { + if (tag) + onError(token, "MULTIPLE_TAGS", "A node can have at most one tag"); + tag = token; + if (start === null) + start = token.offset; + atNewline = false; + hasSpace = false; + reqSpace = true; + break; + } + case indicator: + if (anchor || tag) + onError(token, "BAD_PROP_ORDER", `Anchors and tags must be after the ${token.source} indicator`); + if (found) + onError(token, "UNEXPECTED_TOKEN", `Unexpected ${token.source} in ${flow ?? "collection"}`); + found = token; + atNewline = indicator === "seq-item-ind" || indicator === "explicit-key-ind"; + hasSpace = false; + break; + case "comma": + if (flow) { + if (comma) + onError(token, "UNEXPECTED_TOKEN", `Unexpected , in ${flow}`); + comma = token; + atNewline = false; + hasSpace = false; + break; + } + default: + onError(token, "UNEXPECTED_TOKEN", `Unexpected ${token.type} token`); + atNewline = false; + hasSpace = false; + } + } + const last = tokens[tokens.length - 1]; + const end = last ? last.offset + last.source.length : offset; + if (reqSpace && next && next.type !== "space" && next.type !== "newline" && next.type !== "comma" && (next.type !== "scalar" || next.source !== "")) { + onError(next.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space"); + } + if (tab && (atNewline && tab.indent <= parentIndent || (next == null ? void 0 : next.type) === "block-map" || (next == null ? void 0 : next.type) === "block-seq")) + onError(tab, "TAB_AS_INDENT", "Tabs are not allowed as indentation"); + return { + comma, + found, + spaceBefore, + comment, + hasNewline, + anchor, + tag, + newlineAfterProp, + end, + start: start ?? end + }; + } + exports.resolveProps = resolveProps; + } +}); + +// node_modules/yaml/dist/compose/util-contains-newline.js +var require_util_contains_newline = __commonJS({ + "node_modules/yaml/dist/compose/util-contains-newline.js"(exports) { + "use strict"; + function containsNewline(key) { + if (!key) + return null; + switch (key.type) { + case "alias": + case "scalar": + case "double-quoted-scalar": + case "single-quoted-scalar": + if (key.source.includes("\n")) + return true; + if (key.end) { + for (const st of key.end) + if (st.type === "newline") + return true; + } + return false; + case "flow-collection": + for (const it of key.items) { + for (const st of it.start) + if (st.type === "newline") + return true; + if (it.sep) { + for (const st of it.sep) + if (st.type === "newline") + return true; + } + if (containsNewline(it.key) || containsNewline(it.value)) + return true; + } + return false; + default: + return true; + } + } + exports.containsNewline = containsNewline; + } +}); + +// node_modules/yaml/dist/compose/util-flow-indent-check.js +var require_util_flow_indent_check = __commonJS({ + "node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) { + "use strict"; + var utilContainsNewline = require_util_contains_newline(); + function flowIndentCheck(indent, fc, onError) { + if ((fc == null ? void 0 : fc.type) === "flow-collection") { + const end = fc.end[0]; + if (end.indent === indent && (end.source === "]" || end.source === "}") && utilContainsNewline.containsNewline(fc)) { + const msg = "Flow end indicator should be more indented than parent"; + onError(end, "BAD_INDENT", msg, true); + } + } + } + exports.flowIndentCheck = flowIndentCheck; + } +}); + +// node_modules/yaml/dist/compose/util-map-includes.js +var require_util_map_includes = __commonJS({ + "node_modules/yaml/dist/compose/util-map-includes.js"(exports) { + "use strict"; + var identity = require_identity(); + function mapIncludes(ctx, items, search) { + const { uniqueKeys } = ctx.options; + if (uniqueKeys === false) + return false; + const isEqual = typeof uniqueKeys === "function" ? uniqueKeys : (a, b) => a === b || identity.isScalar(a) && identity.isScalar(b) && a.value === b.value; + return items.some((pair) => isEqual(pair.key, search)); + } + exports.mapIncludes = mapIncludes; + } +}); + +// node_modules/yaml/dist/compose/resolve-block-map.js +var require_resolve_block_map = __commonJS({ + "node_modules/yaml/dist/compose/resolve-block-map.js"(exports) { + "use strict"; + var Pair = require_Pair(); + var YAMLMap = require_YAMLMap(); + var resolveProps = require_resolve_props(); + var utilContainsNewline = require_util_contains_newline(); + var utilFlowIndentCheck = require_util_flow_indent_check(); + var utilMapIncludes = require_util_map_includes(); + var startColMsg = "All mapping items must start at the same column"; + function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) { + var _a; + const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? YAMLMap.YAMLMap; + const map = new NodeClass(ctx.schema); + if (ctx.atRoot) + ctx.atRoot = false; + let offset = bm.offset; + let commentEnd = null; + for (const collItem of bm.items) { + const { start, key, sep, value } = collItem; + const keyProps = resolveProps.resolveProps(start, { + indicator: "explicit-key-ind", + next: key ?? (sep == null ? void 0 : sep[0]), + offset, + onError, + parentIndent: bm.indent, + startOnNewline: true + }); + const implicitKey = !keyProps.found; + if (implicitKey) { + if (key) { + if (key.type === "block-seq") + onError(offset, "BLOCK_AS_IMPLICIT_KEY", "A block sequence may not be used as an implicit map key"); + else if ("indent" in key && key.indent !== bm.indent) + onError(offset, "BAD_INDENT", startColMsg); + } + if (!keyProps.anchor && !keyProps.tag && !sep) { + commentEnd = keyProps.end; + if (keyProps.comment) { + if (map.comment) + map.comment += "\n" + keyProps.comment; + else + map.comment = keyProps.comment; + } + continue; + } + if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) { + onError(key ?? start[start.length - 1], "MULTILINE_IMPLICIT_KEY", "Implicit keys need to be on a single line"); + } + } else if (((_a = keyProps.found) == null ? void 0 : _a.indent) !== bm.indent) { + onError(offset, "BAD_INDENT", startColMsg); + } + ctx.atKey = true; + const keyStart = keyProps.end; + const keyNode = key ? composeNode(ctx, key, keyProps, onError) : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError); + if (ctx.schema.compat) + utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError); + ctx.atKey = false; + if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode)) + onError(keyStart, "DUPLICATE_KEY", "Map keys must be unique"); + const valueProps = resolveProps.resolveProps(sep ?? [], { + indicator: "map-value-ind", + next: value, + offset: keyNode.range[2], + onError, + parentIndent: bm.indent, + startOnNewline: !key || key.type === "block-scalar" + }); + offset = valueProps.end; + if (valueProps.found) { + if (implicitKey) { + if ((value == null ? void 0 : value.type) === "block-map" && !valueProps.hasNewline) + onError(offset, "BLOCK_AS_IMPLICIT_KEY", "Nested mappings are not allowed in compact mappings"); + if (ctx.options.strict && keyProps.start < valueProps.found.offset - 1024) + onError(keyNode.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key"); + } + const valueNode = value ? composeNode(ctx, value, valueProps, onError) : composeEmptyNode(ctx, offset, sep, null, valueProps, onError); + if (ctx.schema.compat) + utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError); + offset = valueNode.range[2]; + const pair = new Pair.Pair(keyNode, valueNode); + if (ctx.options.keepSourceTokens) + pair.srcToken = collItem; + map.items.push(pair); + } else { + if (implicitKey) + onError(keyNode.range, "MISSING_CHAR", "Implicit map keys need to be followed by map values"); + if (valueProps.comment) { + if (keyNode.comment) + keyNode.comment += "\n" + valueProps.comment; + else + keyNode.comment = valueProps.comment; + } + const pair = new Pair.Pair(keyNode); + if (ctx.options.keepSourceTokens) + pair.srcToken = collItem; + map.items.push(pair); + } + } + if (commentEnd && commentEnd < offset) + onError(commentEnd, "IMPOSSIBLE", "Map comment with trailing content"); + map.range = [bm.offset, offset, commentEnd ?? offset]; + return map; + } + exports.resolveBlockMap = resolveBlockMap; + } +}); + +// node_modules/yaml/dist/compose/resolve-block-seq.js +var require_resolve_block_seq = __commonJS({ + "node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) { + "use strict"; + var YAMLSeq = require_YAMLSeq(); + var resolveProps = require_resolve_props(); + var utilFlowIndentCheck = require_util_flow_indent_check(); + function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) { + const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? YAMLSeq.YAMLSeq; + const seq = new NodeClass(ctx.schema); + if (ctx.atRoot) + ctx.atRoot = false; + if (ctx.atKey) + ctx.atKey = false; + let offset = bs.offset; + let commentEnd = null; + for (const { start, value } of bs.items) { + const props = resolveProps.resolveProps(start, { + indicator: "seq-item-ind", + next: value, + offset, + onError, + parentIndent: bs.indent, + startOnNewline: true + }); + if (!props.found) { + if (props.anchor || props.tag || value) { + if (value && value.type === "block-seq") + onError(props.end, "BAD_INDENT", "All sequence items must start at the same column"); + else + onError(offset, "MISSING_CHAR", "Sequence item without - indicator"); + } else { + commentEnd = props.end; + if (props.comment) + seq.comment = props.comment; + continue; + } + } + const node = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, start, null, props, onError); + if (ctx.schema.compat) + utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError); + offset = node.range[2]; + seq.items.push(node); + } + seq.range = [bs.offset, offset, commentEnd ?? offset]; + return seq; + } + exports.resolveBlockSeq = resolveBlockSeq; + } +}); + +// node_modules/yaml/dist/compose/resolve-end.js +var require_resolve_end = __commonJS({ + "node_modules/yaml/dist/compose/resolve-end.js"(exports) { + "use strict"; + function resolveEnd(end, offset, reqSpace, onError) { + let comment = ""; + if (end) { + let hasSpace = false; + let sep = ""; + for (const token of end) { + const { source, type } = token; + switch (type) { + case "space": + hasSpace = true; + break; + case "comment": { + if (reqSpace && !hasSpace) + onError(token, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters"); + const cb = source.substring(1) || " "; + if (!comment) + comment = cb; + else + comment += sep + cb; + sep = ""; + break; + } + case "newline": + if (comment) + sep += source; + hasSpace = true; + break; + default: + onError(token, "UNEXPECTED_TOKEN", `Unexpected ${type} at node end`); + } + offset += source.length; + } + } + return { comment, offset }; + } + exports.resolveEnd = resolveEnd; + } +}); + +// node_modules/yaml/dist/compose/resolve-flow-collection.js +var require_resolve_flow_collection = __commonJS({ + "node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) { + "use strict"; + var identity = require_identity(); + var Pair = require_Pair(); + var YAMLMap = require_YAMLMap(); + var YAMLSeq = require_YAMLSeq(); + var resolveEnd = require_resolve_end(); + var resolveProps = require_resolve_props(); + var utilContainsNewline = require_util_contains_newline(); + var utilMapIncludes = require_util_map_includes(); + var blockMsg = "Block collections are not allowed within flow collections"; + var isBlock = (token) => token && (token.type === "block-map" || token.type === "block-seq"); + function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) { + const isMap = fc.start.source === "{"; + const fcName = isMap ? "flow map" : "flow sequence"; + const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq); + const coll = new NodeClass(ctx.schema); + coll.flow = true; + const atRoot = ctx.atRoot; + if (atRoot) + ctx.atRoot = false; + if (ctx.atKey) + ctx.atKey = false; + let offset = fc.offset + fc.start.source.length; + for (let i = 0; i < fc.items.length; ++i) { + const collItem = fc.items[i]; + const { start, key, sep, value } = collItem; + const props = resolveProps.resolveProps(start, { + flow: fcName, + indicator: "explicit-key-ind", + next: key ?? (sep == null ? void 0 : sep[0]), + offset, + onError, + parentIndent: fc.indent, + startOnNewline: false + }); + if (!props.found) { + if (!props.anchor && !props.tag && !sep && !value) { + if (i === 0 && props.comma) + onError(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`); + else if (i < fc.items.length - 1) + onError(props.start, "UNEXPECTED_TOKEN", `Unexpected empty item in ${fcName}`); + if (props.comment) { + if (coll.comment) + coll.comment += "\n" + props.comment; + else + coll.comment = props.comment; + } + offset = props.end; + continue; + } + if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key)) + onError( + key, + "MULTILINE_IMPLICIT_KEY", + "Implicit keys of flow sequence pairs need to be on a single line" + ); + } + if (i === 0) { + if (props.comma) + onError(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`); + } else { + if (!props.comma) + onError(props.start, "MISSING_CHAR", `Missing , between ${fcName} items`); + if (props.comment) { + let prevItemComment = ""; + loop: + for (const st of start) { + switch (st.type) { + case "comma": + case "space": + break; + case "comment": + prevItemComment = st.source.substring(1); + break loop; + default: + break loop; + } + } + if (prevItemComment) { + let prev = coll.items[coll.items.length - 1]; + if (identity.isPair(prev)) + prev = prev.value ?? prev.key; + if (prev.comment) + prev.comment += "\n" + prevItemComment; + else + prev.comment = prevItemComment; + props.comment = props.comment.substring(prevItemComment.length + 1); + } + } + } + if (!isMap && !sep && !props.found) { + const valueNode = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, sep, null, props, onError); + coll.items.push(valueNode); + offset = valueNode.range[2]; + if (isBlock(value)) + onError(valueNode.range, "BLOCK_IN_FLOW", blockMsg); + } else { + ctx.atKey = true; + const keyStart = props.end; + const keyNode = key ? composeNode(ctx, key, props, onError) : composeEmptyNode(ctx, keyStart, start, null, props, onError); + if (isBlock(key)) + onError(keyNode.range, "BLOCK_IN_FLOW", blockMsg); + ctx.atKey = false; + const valueProps = resolveProps.resolveProps(sep ?? [], { + flow: fcName, + indicator: "map-value-ind", + next: value, + offset: keyNode.range[2], + onError, + parentIndent: fc.indent, + startOnNewline: false + }); + if (valueProps.found) { + if (!isMap && !props.found && ctx.options.strict) { + if (sep) + for (const st of sep) { + if (st === valueProps.found) + break; + if (st.type === "newline") { + onError(st, "MULTILINE_IMPLICIT_KEY", "Implicit keys of flow sequence pairs need to be on a single line"); + break; + } + } + if (props.start < valueProps.found.offset - 1024) + onError(valueProps.found, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit flow sequence key"); + } + } else if (value) { + if ("source" in value && value.source && value.source[0] === ":") + onError(value, "MISSING_CHAR", `Missing space after : in ${fcName}`); + else + onError(valueProps.start, "MISSING_CHAR", `Missing , or : between ${fcName} items`); + } + const valueNode = value ? composeNode(ctx, value, valueProps, onError) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError) : null; + if (valueNode) { + if (isBlock(value)) + onError(valueNode.range, "BLOCK_IN_FLOW", blockMsg); + } else if (valueProps.comment) { + if (keyNode.comment) + keyNode.comment += "\n" + valueProps.comment; + else + keyNode.comment = valueProps.comment; + } + const pair = new Pair.Pair(keyNode, valueNode); + if (ctx.options.keepSourceTokens) + pair.srcToken = collItem; + if (isMap) { + const map = coll; + if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode)) + onError(keyStart, "DUPLICATE_KEY", "Map keys must be unique"); + map.items.push(pair); + } else { + const map = new YAMLMap.YAMLMap(ctx.schema); + map.flow = true; + map.items.push(pair); + const endRange = (valueNode ?? keyNode).range; + map.range = [keyNode.range[0], endRange[1], endRange[2]]; + coll.items.push(map); + } + offset = valueNode ? valueNode.range[2] : valueProps.end; + } + } + const expectedEnd = isMap ? "}" : "]"; + const [ce, ...ee] = fc.end; + let cePos = offset; + if (ce && ce.source === expectedEnd) + cePos = ce.offset + ce.source.length; + else { + const name = fcName[0].toUpperCase() + fcName.substring(1); + const msg = atRoot ? `${name} must end with a ${expectedEnd}` : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`; + onError(offset, atRoot ? "MISSING_CHAR" : "BAD_INDENT", msg); + if (ce && ce.source.length !== 1) + ee.unshift(ce); + } + if (ee.length > 0) { + const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError); + if (end.comment) { + if (coll.comment) + coll.comment += "\n" + end.comment; + else + coll.comment = end.comment; + } + coll.range = [fc.offset, cePos, end.offset]; + } else { + coll.range = [fc.offset, cePos, cePos]; + } + return coll; + } + exports.resolveFlowCollection = resolveFlowCollection; + } +}); + +// node_modules/yaml/dist/compose/compose-collection.js +var require_compose_collection = __commonJS({ + "node_modules/yaml/dist/compose/compose-collection.js"(exports) { + "use strict"; + var identity = require_identity(); + var Scalar = require_Scalar(); + var YAMLMap = require_YAMLMap(); + var YAMLSeq = require_YAMLSeq(); + var resolveBlockMap = require_resolve_block_map(); + var resolveBlockSeq = require_resolve_block_seq(); + var resolveFlowCollection = require_resolve_flow_collection(); + function resolveCollection(CN, ctx, token, onError, tagName, tag) { + const coll = token.type === "block-map" ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag) : token.type === "block-seq" ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag) : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag); + const Coll = coll.constructor; + if (tagName === "!" || tagName === Coll.tagName) { + coll.tag = Coll.tagName; + return coll; + } + if (tagName) + coll.tag = tagName; + return coll; + } + function composeCollection(CN, ctx, token, props, onError) { + var _a; + const tagToken = props.tag; + const tagName = !tagToken ? null : ctx.directives.tagName(tagToken.source, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg)); + if (token.type === "block-seq") { + const { anchor, newlineAfterProp: nl } = props; + const lastProp = anchor && tagToken ? anchor.offset > tagToken.offset ? anchor : tagToken : anchor ?? tagToken; + if (lastProp && (!nl || nl.offset < lastProp.offset)) { + const message = "Missing newline after block sequence props"; + onError(lastProp, "MISSING_CHAR", message); + } + } + const expType = token.type === "block-map" ? "map" : token.type === "block-seq" ? "seq" : token.start.source === "{" ? "map" : "seq"; + if (!tagToken || !tagName || tagName === "!" || tagName === YAMLMap.YAMLMap.tagName && expType === "map" || tagName === YAMLSeq.YAMLSeq.tagName && expType === "seq") { + return resolveCollection(CN, ctx, token, onError, tagName); + } + let tag = ctx.schema.tags.find((t) => t.tag === tagName && t.collection === expType); + if (!tag) { + const kt = ctx.schema.knownTags[tagName]; + if (kt && kt.collection === expType) { + ctx.schema.tags.push(Object.assign({}, kt, { default: false })); + tag = kt; + } else { + if (kt == null ? void 0 : kt.collection) { + onError(tagToken, "BAD_COLLECTION_TYPE", `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true); + } else { + onError(tagToken, "TAG_RESOLVE_FAILED", `Unresolved tag: ${tagName}`, true); + } + return resolveCollection(CN, ctx, token, onError, tagName); + } + } + const coll = resolveCollection(CN, ctx, token, onError, tagName, tag); + const res = ((_a = tag.resolve) == null ? void 0 : _a.call(tag, coll, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg), ctx.options)) ?? coll; + const node = identity.isNode(res) ? res : new Scalar.Scalar(res); + node.range = coll.range; + node.tag = tagName; + if (tag == null ? void 0 : tag.format) + node.format = tag.format; + return node; + } + exports.composeCollection = composeCollection; + } +}); + +// node_modules/yaml/dist/compose/resolve-block-scalar.js +var require_resolve_block_scalar = __commonJS({ + "node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + function resolveBlockScalar(ctx, scalar, onError) { + const start = scalar.offset; + const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError); + if (!header) + return { value: "", type: null, comment: "", range: [start, start, start] }; + const type = header.mode === ">" ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL; + const lines = scalar.source ? splitLines(scalar.source) : []; + let chompStart = lines.length; + for (let i = lines.length - 1; i >= 0; --i) { + const content = lines[i][1]; + if (content === "" || content === "\r") + chompStart = i; + else + break; + } + if (chompStart === 0) { + const value2 = header.chomp === "+" && lines.length > 0 ? "\n".repeat(Math.max(1, lines.length - 1)) : ""; + let end2 = start + header.length; + if (scalar.source) + end2 += scalar.source.length; + return { value: value2, type, comment: header.comment, range: [start, end2, end2] }; + } + let trimIndent = scalar.indent + header.indent; + let offset = scalar.offset + header.length; + let contentStart = 0; + for (let i = 0; i < chompStart; ++i) { + const [indent, content] = lines[i]; + if (content === "" || content === "\r") { + if (header.indent === 0 && indent.length > trimIndent) + trimIndent = indent.length; + } else { + if (indent.length < trimIndent) { + const message = "Block scalars with more-indented leading empty lines must use an explicit indentation indicator"; + onError(offset + indent.length, "MISSING_CHAR", message); + } + if (header.indent === 0) + trimIndent = indent.length; + contentStart = i; + if (trimIndent === 0 && !ctx.atRoot) { + const message = "Block scalar values in collections must be indented"; + onError(offset, "BAD_INDENT", message); + } + break; + } + offset += indent.length + content.length + 1; + } + for (let i = lines.length - 1; i >= chompStart; --i) { + if (lines[i][0].length > trimIndent) + chompStart = i + 1; + } + let value = ""; + let sep = ""; + let prevMoreIndented = false; + for (let i = 0; i < contentStart; ++i) + value += lines[i][0].slice(trimIndent) + "\n"; + for (let i = contentStart; i < chompStart; ++i) { + let [indent, content] = lines[i]; + offset += indent.length + content.length + 1; + const crlf = content[content.length - 1] === "\r"; + if (crlf) + content = content.slice(0, -1); + if (content && indent.length < trimIndent) { + const src = header.indent ? "explicit indentation indicator" : "first line"; + const message = `Block scalar lines must not be less indented than their ${src}`; + onError(offset - content.length - (crlf ? 2 : 1), "BAD_INDENT", message); + indent = ""; + } + if (type === Scalar.Scalar.BLOCK_LITERAL) { + value += sep + indent.slice(trimIndent) + content; + sep = "\n"; + } else if (indent.length > trimIndent || content[0] === " ") { + if (sep === " ") + sep = "\n"; + else if (!prevMoreIndented && sep === "\n") + sep = "\n\n"; + value += sep + indent.slice(trimIndent) + content; + sep = "\n"; + prevMoreIndented = true; + } else if (content === "") { + if (sep === "\n") + value += "\n"; + else + sep = "\n"; + } else { + value += sep + content; + sep = " "; + prevMoreIndented = false; + } + } + switch (header.chomp) { + case "-": + break; + case "+": + for (let i = chompStart; i < lines.length; ++i) + value += "\n" + lines[i][0].slice(trimIndent); + if (value[value.length - 1] !== "\n") + value += "\n"; + break; + default: + value += "\n"; + } + const end = start + header.length + scalar.source.length; + return { value, type, comment: header.comment, range: [start, end, end] }; + } + function parseBlockScalarHeader({ offset, props }, strict, onError) { + if (props[0].type !== "block-scalar-header") { + onError(props[0], "IMPOSSIBLE", "Block scalar header not found"); + return null; + } + const { source } = props[0]; + const mode = source[0]; + let indent = 0; + let chomp = ""; + let error = -1; + for (let i = 1; i < source.length; ++i) { + const ch = source[i]; + if (!chomp && (ch === "-" || ch === "+")) + chomp = ch; + else { + const n = Number(ch); + if (!indent && n) + indent = n; + else if (error === -1) + error = offset + i; + } + } + if (error !== -1) + onError(error, "UNEXPECTED_TOKEN", `Block scalar header includes extra characters: ${source}`); + let hasSpace = false; + let comment = ""; + let length = source.length; + for (let i = 1; i < props.length; ++i) { + const token = props[i]; + switch (token.type) { + case "space": + hasSpace = true; + case "newline": + length += token.source.length; + break; + case "comment": + if (strict && !hasSpace) { + const message = "Comments must be separated from other tokens by white space characters"; + onError(token, "MISSING_CHAR", message); + } + length += token.source.length; + comment = token.source.substring(1); + break; + case "error": + onError(token, "UNEXPECTED_TOKEN", token.message); + length += token.source.length; + break; + default: { + const message = `Unexpected token in block scalar header: ${token.type}`; + onError(token, "UNEXPECTED_TOKEN", message); + const ts = token.source; + if (ts && typeof ts === "string") + length += ts.length; + } + } + } + return { mode, indent, chomp, comment, length }; + } + function splitLines(source) { + const split = source.split(/\n( *)/); + const first = split[0]; + const m = first.match(/^( *)/); + const line0 = (m == null ? void 0 : m[1]) ? [m[1], first.slice(m[1].length)] : ["", first]; + const lines = [line0]; + for (let i = 1; i < split.length; i += 2) + lines.push([split[i], split[i + 1]]); + return lines; + } + exports.resolveBlockScalar = resolveBlockScalar; + } +}); + +// node_modules/yaml/dist/compose/resolve-flow-scalar.js +var require_resolve_flow_scalar = __commonJS({ + "node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var resolveEnd = require_resolve_end(); + function resolveFlowScalar(scalar, strict, onError) { + const { offset, type, source, end } = scalar; + let _type; + let value; + const _onError = (rel, code, msg) => onError(offset + rel, code, msg); + switch (type) { + case "scalar": + _type = Scalar.Scalar.PLAIN; + value = plainValue(source, _onError); + break; + case "single-quoted-scalar": + _type = Scalar.Scalar.QUOTE_SINGLE; + value = singleQuotedValue(source, _onError); + break; + case "double-quoted-scalar": + _type = Scalar.Scalar.QUOTE_DOUBLE; + value = doubleQuotedValue(source, _onError); + break; + default: + onError(scalar, "UNEXPECTED_TOKEN", `Expected a flow scalar value, but found: ${type}`); + return { + value: "", + type: null, + comment: "", + range: [offset, offset + source.length, offset + source.length] + }; + } + const valueEnd = offset + source.length; + const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError); + return { + value, + type: _type, + comment: re.comment, + range: [offset, valueEnd, re.offset] + }; + } + function plainValue(source, onError) { + let badChar = ""; + switch (source[0]) { + case " ": + badChar = "a tab character"; + break; + case ",": + badChar = "flow indicator character ,"; + break; + case "%": + badChar = "directive indicator character %"; + break; + case "|": + case ">": { + badChar = `block scalar indicator ${source[0]}`; + break; + } + case "@": + case "`": { + badChar = `reserved character ${source[0]}`; + break; + } + } + if (badChar) + onError(0, "BAD_SCALAR_START", `Plain value cannot start with ${badChar}`); + return foldLines(source); + } + function singleQuotedValue(source, onError) { + if (source[source.length - 1] !== "'" || source.length === 1) + onError(source.length, "MISSING_CHAR", "Missing closing 'quote"); + return foldLines(source.slice(1, -1)).replace(/''/g, "'"); + } + function foldLines(source) { + let first, line; + try { + first = new RegExp("(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch; + } else { + res += ch; + } + } + if (source[source.length - 1] !== '"' || source.length === 1) + onError(source.length, "MISSING_CHAR", 'Missing closing "quote'); + return res; + } + function foldNewline(source, offset) { + let fold = ""; + let ch = source[offset + 1]; + while (ch === " " || ch === " " || ch === "\n" || ch === "\r") { + if (ch === "\r" && source[offset + 2] !== "\n") + break; + if (ch === "\n") + fold += "\n"; + offset += 1; + ch = source[offset + 1]; + } + if (!fold) + fold = " "; + return { fold, offset }; + } + var escapeCodes = { + "0": "\0", + a: "\x07", + b: "\b", + e: "\x1B", + f: "\f", + n: "\n", + r: "\r", + t: " ", + v: "\v", + N: "\x85", + _: "\xA0", + L: "\u2028", + P: "\u2029", + " ": " ", + '"': '"', + "/": "/", + "\\": "\\", + " ": " " + }; + function parseCharCode(source, offset, length, onError) { + const cc = source.substr(offset, length); + const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc); + const code = ok ? parseInt(cc, 16) : NaN; + if (isNaN(code)) { + const raw = source.substr(offset - 2, length + 2); + onError(offset - 2, "BAD_DQ_ESCAPE", `Invalid escape sequence ${raw}`); + return raw; + } + return String.fromCodePoint(code); + } + exports.resolveFlowScalar = resolveFlowScalar; + } +}); + +// node_modules/yaml/dist/compose/compose-scalar.js +var require_compose_scalar = __commonJS({ + "node_modules/yaml/dist/compose/compose-scalar.js"(exports) { + "use strict"; + var identity = require_identity(); + var Scalar = require_Scalar(); + var resolveBlockScalar = require_resolve_block_scalar(); + var resolveFlowScalar = require_resolve_flow_scalar(); + function composeScalar(ctx, token, tagToken, onError) { + const { value, type, comment, range } = token.type === "block-scalar" ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError) : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError); + const tagName = tagToken ? ctx.directives.tagName(tagToken.source, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg)) : null; + let tag; + if (ctx.options.stringKeys && ctx.atKey) { + tag = ctx.schema[identity.SCALAR]; + } else if (tagName) + tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError); + else if (token.type === "scalar") + tag = findScalarTagByTest(ctx, value, token, onError); + else + tag = ctx.schema[identity.SCALAR]; + let scalar; + try { + const res = tag.resolve(value, (msg) => onError(tagToken ?? token, "TAG_RESOLVE_FAILED", msg), ctx.options); + scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res); + } catch (error) { + const msg = error instanceof Error ? error.message : String(error); + onError(tagToken ?? token, "TAG_RESOLVE_FAILED", msg); + scalar = new Scalar.Scalar(value); + } + scalar.range = range; + scalar.source = value; + if (type) + scalar.type = type; + if (tagName) + scalar.tag = tagName; + if (tag.format) + scalar.format = tag.format; + if (comment) + scalar.comment = comment; + return scalar; + } + function findScalarTagByName(schema, value, tagName, tagToken, onError) { + var _a; + if (tagName === "!") + return schema[identity.SCALAR]; + const matchWithTest = []; + for (const tag of schema.tags) { + if (!tag.collection && tag.tag === tagName) { + if (tag.default && tag.test) + matchWithTest.push(tag); + else + return tag; + } + } + for (const tag of matchWithTest) + if ((_a = tag.test) == null ? void 0 : _a.test(value)) + return tag; + const kt = schema.knownTags[tagName]; + if (kt && !kt.collection) { + schema.tags.push(Object.assign({}, kt, { default: false, test: void 0 })); + return kt; + } + onError(tagToken, "TAG_RESOLVE_FAILED", `Unresolved tag: ${tagName}`, tagName !== "tag:yaml.org,2002:str"); + return schema[identity.SCALAR]; + } + function findScalarTagByTest({ atKey, directives, schema }, value, token, onError) { + const tag = schema.tags.find((tag2) => { + var _a; + return (tag2.default === true || atKey && tag2.default === "key") && ((_a = tag2.test) == null ? void 0 : _a.test(value)); + }) || schema[identity.SCALAR]; + if (schema.compat) { + const compat = schema.compat.find((tag2) => { + var _a; + return tag2.default && ((_a = tag2.test) == null ? void 0 : _a.test(value)); + }) ?? schema[identity.SCALAR]; + if (tag.tag !== compat.tag) { + const ts = directives.tagString(tag.tag); + const cs = directives.tagString(compat.tag); + const msg = `Value may be parsed as either ${ts} or ${cs}`; + onError(token, "TAG_RESOLVE_FAILED", msg, true); + } + } + return tag; + } + exports.composeScalar = composeScalar; + } +}); + +// node_modules/yaml/dist/compose/util-empty-scalar-position.js +var require_util_empty_scalar_position = __commonJS({ + "node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) { + "use strict"; + function emptyScalarPosition(offset, before, pos) { + if (before) { + if (pos === null) + pos = before.length; + for (let i = pos - 1; i >= 0; --i) { + let st = before[i]; + switch (st.type) { + case "space": + case "comment": + case "newline": + offset -= st.source.length; + continue; + } + st = before[++i]; + while ((st == null ? void 0 : st.type) === "space") { + offset += st.source.length; + st = before[++i]; + } + break; + } + } + return offset; + } + exports.emptyScalarPosition = emptyScalarPosition; + } +}); + +// node_modules/yaml/dist/compose/compose-node.js +var require_compose_node = __commonJS({ + "node_modules/yaml/dist/compose/compose-node.js"(exports) { + "use strict"; + var Alias = require_Alias(); + var identity = require_identity(); + var composeCollection = require_compose_collection(); + var composeScalar = require_compose_scalar(); + var resolveEnd = require_resolve_end(); + var utilEmptyScalarPosition = require_util_empty_scalar_position(); + var CN = { composeNode, composeEmptyNode }; + function composeNode(ctx, token, props, onError) { + const atKey = ctx.atKey; + const { spaceBefore, comment, anchor, tag } = props; + let node; + let isSrcToken = true; + switch (token.type) { + case "alias": + node = composeAlias(ctx, token, onError); + if (anchor || tag) + onError(token, "ALIAS_PROPS", "An alias node must not specify any properties"); + break; + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + case "block-scalar": + node = composeScalar.composeScalar(ctx, token, tag, onError); + if (anchor) + node.anchor = anchor.source.substring(1); + break; + case "block-map": + case "block-seq": + case "flow-collection": + node = composeCollection.composeCollection(CN, ctx, token, props, onError); + if (anchor) + node.anchor = anchor.source.substring(1); + break; + default: { + const message = token.type === "error" ? token.message : `Unsupported token (type: ${token.type})`; + onError(token, "UNEXPECTED_TOKEN", message); + node = composeEmptyNode(ctx, token.offset, void 0, null, props, onError); + isSrcToken = false; + } + } + if (anchor && node.anchor === "") + onError(anchor, "BAD_ALIAS", "Anchor cannot be an empty string"); + if (atKey && ctx.options.stringKeys && (!identity.isScalar(node) || typeof node.value !== "string" || node.tag && node.tag !== "tag:yaml.org,2002:str")) { + const msg = "With stringKeys, all keys must be strings"; + onError(tag ?? token, "NON_STRING_KEY", msg); + } + if (spaceBefore) + node.spaceBefore = true; + if (comment) { + if (token.type === "scalar" && token.source === "") + node.comment = comment; + else + node.commentBefore = comment; + } + if (ctx.options.keepSourceTokens && isSrcToken) + node.srcToken = token; + return node; + } + function composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) { + const token = { + type: "scalar", + offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos), + indent: -1, + source: "" + }; + const node = composeScalar.composeScalar(ctx, token, tag, onError); + if (anchor) { + node.anchor = anchor.source.substring(1); + if (node.anchor === "") + onError(anchor, "BAD_ALIAS", "Anchor cannot be an empty string"); + } + if (spaceBefore) + node.spaceBefore = true; + if (comment) { + node.comment = comment; + node.range[2] = end; + } + return node; + } + function composeAlias({ options }, { offset, source, end }, onError) { + const alias = new Alias.Alias(source.substring(1)); + if (alias.source === "") + onError(offset, "BAD_ALIAS", "Alias cannot be an empty string"); + if (alias.source.endsWith(":")) + onError(offset + source.length - 1, "BAD_ALIAS", "Alias ending in : is ambiguous", true); + const valueEnd = offset + source.length; + const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError); + alias.range = [offset, valueEnd, re.offset]; + if (re.comment) + alias.comment = re.comment; + return alias; + } + exports.composeEmptyNode = composeEmptyNode; + exports.composeNode = composeNode; + } +}); + +// node_modules/yaml/dist/compose/compose-doc.js +var require_compose_doc = __commonJS({ + "node_modules/yaml/dist/compose/compose-doc.js"(exports) { + "use strict"; + var Document = require_Document(); + var composeNode = require_compose_node(); + var resolveEnd = require_resolve_end(); + var resolveProps = require_resolve_props(); + function composeDoc(options, directives, { offset, start, value, end }, onError) { + const opts = Object.assign({ _directives: directives }, options); + const doc = new Document.Document(void 0, opts); + const ctx = { + atKey: false, + atRoot: true, + directives: doc.directives, + options: doc.options, + schema: doc.schema + }; + const props = resolveProps.resolveProps(start, { + indicator: "doc-start", + next: value ?? (end == null ? void 0 : end[0]), + offset, + onError, + parentIndent: 0, + startOnNewline: true + }); + if (props.found) { + doc.directives.docStart = true; + if (value && (value.type === "block-map" || value.type === "block-seq") && !props.hasNewline) + onError(props.end, "MISSING_CHAR", "Block collection cannot start on same line with directives-end marker"); + } + doc.contents = value ? composeNode.composeNode(ctx, value, props, onError) : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError); + const contentEnd = doc.contents.range[2]; + const re = resolveEnd.resolveEnd(end, contentEnd, false, onError); + if (re.comment) + doc.comment = re.comment; + doc.range = [offset, contentEnd, re.offset]; + return doc; + } + exports.composeDoc = composeDoc; + } +}); + +// node_modules/yaml/dist/compose/composer.js +var require_composer = __commonJS({ + "node_modules/yaml/dist/compose/composer.js"(exports) { + "use strict"; + var node_process = __require("process"); + var directives = require_directives(); + var Document = require_Document(); + var errors = require_errors(); + var identity = require_identity(); + var composeDoc = require_compose_doc(); + var resolveEnd = require_resolve_end(); + function getErrorPos(src) { + if (typeof src === "number") + return [src, src + 1]; + if (Array.isArray(src)) + return src.length === 2 ? src : [src[0], src[1]]; + const { offset, source } = src; + return [offset, offset + (typeof source === "string" ? source.length : 1)]; + } + function parsePrelude(prelude) { + var _a; + let comment = ""; + let atComment = false; + let afterEmptyLine = false; + for (let i = 0; i < prelude.length; ++i) { + const source = prelude[i]; + switch (source[0]) { + case "#": + comment += (comment === "" ? "" : afterEmptyLine ? "\n\n" : "\n") + (source.substring(1) || " "); + atComment = true; + afterEmptyLine = false; + break; + case "%": + if (((_a = prelude[i + 1]) == null ? void 0 : _a[0]) !== "#") + i += 1; + atComment = false; + break; + default: + if (!atComment) + afterEmptyLine = true; + atComment = false; + } + } + return { comment, afterEmptyLine }; + } + var Composer = class { + constructor(options = {}) { + this.doc = null; + this.atDirectives = false; + this.prelude = []; + this.errors = []; + this.warnings = []; + this.onError = (source, code, message, warning) => { + const pos = getErrorPos(source); + if (warning) + this.warnings.push(new errors.YAMLWarning(pos, code, message)); + else + this.errors.push(new errors.YAMLParseError(pos, code, message)); + }; + this.directives = new directives.Directives({ version: options.version || "1.2" }); + this.options = options; + } + decorate(doc, afterDoc) { + const { comment, afterEmptyLine } = parsePrelude(this.prelude); + if (comment) { + const dc = doc.contents; + if (afterDoc) { + doc.comment = doc.comment ? `${doc.comment} +${comment}` : comment; + } else if (afterEmptyLine || doc.directives.docStart || !dc) { + doc.commentBefore = comment; + } else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) { + let it = dc.items[0]; + if (identity.isPair(it)) + it = it.key; + const cb = it.commentBefore; + it.commentBefore = cb ? `${comment} +${cb}` : comment; + } else { + const cb = dc.commentBefore; + dc.commentBefore = cb ? `${comment} +${cb}` : comment; + } + } + if (afterDoc) { + Array.prototype.push.apply(doc.errors, this.errors); + Array.prototype.push.apply(doc.warnings, this.warnings); + } else { + doc.errors = this.errors; + doc.warnings = this.warnings; + } + this.prelude = []; + this.errors = []; + this.warnings = []; + } + streamInfo() { + return { + comment: parsePrelude(this.prelude).comment, + directives: this.directives, + errors: this.errors, + warnings: this.warnings + }; + } + *compose(tokens, forceDoc = false, endOffset = -1) { + for (const token of tokens) + yield* this.next(token); + yield* this.end(forceDoc, endOffset); + } + *next(token) { + if (node_process.env.LOG_STREAM) + console.dir(token, { depth: null }); + switch (token.type) { + case "directive": + this.directives.add(token.source, (offset, message, warning) => { + const pos = getErrorPos(token); + pos[0] += offset; + this.onError(pos, "BAD_DIRECTIVE", message, warning); + }); + this.prelude.push(token.source); + this.atDirectives = true; + break; + case "document": { + const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError); + if (this.atDirectives && !doc.directives.docStart) + this.onError(token, "MISSING_CHAR", "Missing directives-end/doc-start indicator line"); + this.decorate(doc, false); + if (this.doc) + yield this.doc; + this.doc = doc; + this.atDirectives = false; + break; + } + case "byte-order-mark": + case "space": + break; + case "comment": + case "newline": + this.prelude.push(token.source); + break; + case "error": { + const msg = token.source ? `${token.message}: ${JSON.stringify(token.source)}` : token.message; + const error = new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", msg); + if (this.atDirectives || !this.doc) + this.errors.push(error); + else + this.doc.errors.push(error); + break; + } + case "doc-end": { + if (!this.doc) { + const msg = "Unexpected doc-end without preceding document"; + this.errors.push(new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", msg)); + break; + } + this.doc.directives.docEnd = true; + const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError); + this.decorate(this.doc, true); + if (end.comment) { + const dc = this.doc.comment; + this.doc.comment = dc ? `${dc} +${end.comment}` : end.comment; + } + this.doc.range[2] = end.offset; + break; + } + default: + this.errors.push(new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", `Unsupported token ${token.type}`)); + } + } + *end(forceDoc = false, endOffset = -1) { + if (this.doc) { + this.decorate(this.doc, true); + yield this.doc; + this.doc = null; + } else if (forceDoc) { + const opts = Object.assign({ _directives: this.directives }, this.options); + const doc = new Document.Document(void 0, opts); + if (this.atDirectives) + this.onError(endOffset, "MISSING_CHAR", "Missing directives-end indicator line"); + doc.range = [0, endOffset, endOffset]; + this.decorate(doc, false); + yield doc; + } + } + }; + exports.Composer = Composer; + } +}); + +// node_modules/yaml/dist/parse/cst-scalar.js +var require_cst_scalar = __commonJS({ + "node_modules/yaml/dist/parse/cst-scalar.js"(exports) { + "use strict"; + var resolveBlockScalar = require_resolve_block_scalar(); + var resolveFlowScalar = require_resolve_flow_scalar(); + var errors = require_errors(); + var stringifyString = require_stringifyString(); + function resolveAsScalar(token, strict = true, onError) { + if (token) { + const _onError = (pos, code, message) => { + const offset = typeof pos === "number" ? pos : Array.isArray(pos) ? pos[0] : pos.offset; + if (onError) + onError(offset, code, message); + else + throw new errors.YAMLParseError([offset, offset + 1], code, message); + }; + switch (token.type) { + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + return resolveFlowScalar.resolveFlowScalar(token, strict, _onError); + case "block-scalar": + return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError); + } + } + return null; + } + function createScalarToken(value, context) { + const { implicitKey = false, indent, inFlow = false, offset = -1, type = "PLAIN" } = context; + const source = stringifyString.stringifyString({ type, value }, { + implicitKey, + indent: indent > 0 ? " ".repeat(indent) : "", + inFlow, + options: { blockQuote: true, lineWidth: -1 } + }); + const end = context.end ?? [ + { type: "newline", offset: -1, indent, source: "\n" } + ]; + switch (source[0]) { + case "|": + case ">": { + const he = source.indexOf("\n"); + const head = source.substring(0, he); + const body = source.substring(he + 1) + "\n"; + const props = [ + { type: "block-scalar-header", offset, indent, source: head } + ]; + if (!addEndtoBlockProps(props, end)) + props.push({ type: "newline", offset: -1, indent, source: "\n" }); + return { type: "block-scalar", offset, indent, props, source: body }; + } + case '"': + return { type: "double-quoted-scalar", offset, indent, source, end }; + case "'": + return { type: "single-quoted-scalar", offset, indent, source, end }; + default: + return { type: "scalar", offset, indent, source, end }; + } + } + function setScalarValue(token, value, context = {}) { + let { afterKey = false, implicitKey = false, inFlow = false, type } = context; + let indent = "indent" in token ? token.indent : null; + if (afterKey && typeof indent === "number") + indent += 2; + if (!type) + switch (token.type) { + case "single-quoted-scalar": + type = "QUOTE_SINGLE"; + break; + case "double-quoted-scalar": + type = "QUOTE_DOUBLE"; + break; + case "block-scalar": { + const header = token.props[0]; + if (header.type !== "block-scalar-header") + throw new Error("Invalid block scalar header"); + type = header.source[0] === ">" ? "BLOCK_FOLDED" : "BLOCK_LITERAL"; + break; + } + default: + type = "PLAIN"; + } + const source = stringifyString.stringifyString({ type, value }, { + implicitKey: implicitKey || indent === null, + indent: indent !== null && indent > 0 ? " ".repeat(indent) : "", + inFlow, + options: { blockQuote: true, lineWidth: -1 } + }); + switch (source[0]) { + case "|": + case ">": + setBlockScalarValue(token, source); + break; + case '"': + setFlowScalarValue(token, source, "double-quoted-scalar"); + break; + case "'": + setFlowScalarValue(token, source, "single-quoted-scalar"); + break; + default: + setFlowScalarValue(token, source, "scalar"); + } + } + function setBlockScalarValue(token, source) { + const he = source.indexOf("\n"); + const head = source.substring(0, he); + const body = source.substring(he + 1) + "\n"; + if (token.type === "block-scalar") { + const header = token.props[0]; + if (header.type !== "block-scalar-header") + throw new Error("Invalid block scalar header"); + header.source = head; + token.source = body; + } else { + const { offset } = token; + const indent = "indent" in token ? token.indent : -1; + const props = [ + { type: "block-scalar-header", offset, indent, source: head } + ]; + if (!addEndtoBlockProps(props, "end" in token ? token.end : void 0)) + props.push({ type: "newline", offset: -1, indent, source: "\n" }); + for (const key of Object.keys(token)) + if (key !== "type" && key !== "offset") + delete token[key]; + Object.assign(token, { type: "block-scalar", indent, props, source: body }); + } + } + function addEndtoBlockProps(props, end) { + if (end) + for (const st of end) + switch (st.type) { + case "space": + case "comment": + props.push(st); + break; + case "newline": + props.push(st); + return true; + } + return false; + } + function setFlowScalarValue(token, source, type) { + switch (token.type) { + case "scalar": + case "double-quoted-scalar": + case "single-quoted-scalar": + token.type = type; + token.source = source; + break; + case "block-scalar": { + const end = token.props.slice(1); + let oa = source.length; + if (token.props[0].type === "block-scalar-header") + oa -= token.props[0].source.length; + for (const tok of end) + tok.offset += oa; + delete token.props; + Object.assign(token, { type, source, end }); + break; + } + case "block-map": + case "block-seq": { + const offset = token.offset + source.length; + const nl = { type: "newline", offset, indent: token.indent, source: "\n" }; + delete token.items; + Object.assign(token, { type, source, end: [nl] }); + break; + } + default: { + const indent = "indent" in token ? token.indent : -1; + const end = "end" in token && Array.isArray(token.end) ? token.end.filter((st) => st.type === "space" || st.type === "comment" || st.type === "newline") : []; + for (const key of Object.keys(token)) + if (key !== "type" && key !== "offset") + delete token[key]; + Object.assign(token, { type, indent, source, end }); + } + } + } + exports.createScalarToken = createScalarToken; + exports.resolveAsScalar = resolveAsScalar; + exports.setScalarValue = setScalarValue; + } +}); + +// node_modules/yaml/dist/parse/cst-stringify.js +var require_cst_stringify = __commonJS({ + "node_modules/yaml/dist/parse/cst-stringify.js"(exports) { + "use strict"; + var stringify = (cst) => "type" in cst ? stringifyToken(cst) : stringifyItem(cst); + function stringifyToken(token) { + switch (token.type) { + case "block-scalar": { + let res = ""; + for (const tok of token.props) + res += stringifyToken(tok); + return res + token.source; + } + case "block-map": + case "block-seq": { + let res = ""; + for (const item of token.items) + res += stringifyItem(item); + return res; + } + case "flow-collection": { + let res = token.start.source; + for (const item of token.items) + res += stringifyItem(item); + for (const st of token.end) + res += st.source; + return res; + } + case "document": { + let res = stringifyItem(token); + if (token.end) + for (const st of token.end) + res += st.source; + return res; + } + default: { + let res = token.source; + if ("end" in token && token.end) + for (const st of token.end) + res += st.source; + return res; + } + } + } + function stringifyItem({ start, key, sep, value }) { + let res = ""; + for (const st of start) + res += st.source; + if (key) + res += stringifyToken(key); + if (sep) + for (const st of sep) + res += st.source; + if (value) + res += stringifyToken(value); + return res; + } + exports.stringify = stringify; + } +}); + +// node_modules/yaml/dist/parse/cst-visit.js +var require_cst_visit = __commonJS({ + "node_modules/yaml/dist/parse/cst-visit.js"(exports) { + "use strict"; + var BREAK = Symbol("break visit"); + var SKIP = Symbol("skip children"); + var REMOVE = Symbol("remove item"); + function visit(cst, visitor) { + if ("type" in cst && cst.type === "document") + cst = { start: cst.start, value: cst.value }; + _visit(Object.freeze([]), cst, visitor); + } + visit.BREAK = BREAK; + visit.SKIP = SKIP; + visit.REMOVE = REMOVE; + visit.itemAtPath = (cst, path2) => { + let item = cst; + for (const [field, index] of path2) { + const tok = item == null ? void 0 : item[field]; + if (tok && "items" in tok) { + item = tok.items[index]; + } else + return void 0; + } + return item; + }; + visit.parentCollection = (cst, path2) => { + const parent = visit.itemAtPath(cst, path2.slice(0, -1)); + const field = path2[path2.length - 1][0]; + const coll = parent == null ? void 0 : parent[field]; + if (coll && "items" in coll) + return coll; + throw new Error("Parent collection not found"); + }; + function _visit(path2, item, visitor) { + let ctrl = visitor(item, path2); + if (typeof ctrl === "symbol") + return ctrl; + for (const field of ["key", "value"]) { + const token = item[field]; + if (token && "items" in token) { + for (let i = 0; i < token.items.length; ++i) { + const ci = _visit(Object.freeze(path2.concat([[field, i]])), token.items[i], visitor); + if (typeof ci === "number") + i = ci - 1; + else if (ci === BREAK) + return BREAK; + else if (ci === REMOVE) { + token.items.splice(i, 1); + i -= 1; + } + } + if (typeof ctrl === "function" && field === "key") + ctrl = ctrl(item, path2); + } + } + return typeof ctrl === "function" ? ctrl(item, path2) : ctrl; + } + exports.visit = visit; + } +}); + +// node_modules/yaml/dist/parse/cst.js +var require_cst = __commonJS({ + "node_modules/yaml/dist/parse/cst.js"(exports) { + "use strict"; + var cstScalar = require_cst_scalar(); + var cstStringify = require_cst_stringify(); + var cstVisit = require_cst_visit(); + var BOM = "\uFEFF"; + var DOCUMENT = ""; + var FLOW_END = ""; + var SCALAR = ""; + var isCollection = (token) => !!token && "items" in token; + var isScalar = (token) => !!token && (token.type === "scalar" || token.type === "single-quoted-scalar" || token.type === "double-quoted-scalar" || token.type === "block-scalar"); + function prettyToken(token) { + switch (token) { + case BOM: + return ""; + case DOCUMENT: + return ""; + case FLOW_END: + return ""; + case SCALAR: + return ""; + default: + return JSON.stringify(token); + } + } + function tokenType(source) { + switch (source) { + case BOM: + return "byte-order-mark"; + case DOCUMENT: + return "doc-mode"; + case FLOW_END: + return "flow-error-end"; + case SCALAR: + return "scalar"; + case "---": + return "doc-start"; + case "...": + return "doc-end"; + case "": + case "\n": + case "\r\n": + return "newline"; + case "-": + return "seq-item-ind"; + case "?": + return "explicit-key-ind"; + case ":": + return "map-value-ind"; + case "{": + return "flow-map-start"; + case "}": + return "flow-map-end"; + case "[": + return "flow-seq-start"; + case "]": + return "flow-seq-end"; + case ",": + return "comma"; + } + switch (source[0]) { + case " ": + case " ": + return "space"; + case "#": + return "comment"; + case "%": + return "directive-line"; + case "*": + return "alias"; + case "&": + return "anchor"; + case "!": + return "tag"; + case "'": + return "single-quoted-scalar"; + case '"': + return "double-quoted-scalar"; + case "|": + case ">": + return "block-scalar-header"; + } + return null; + } + exports.createScalarToken = cstScalar.createScalarToken; + exports.resolveAsScalar = cstScalar.resolveAsScalar; + exports.setScalarValue = cstScalar.setScalarValue; + exports.stringify = cstStringify.stringify; + exports.visit = cstVisit.visit; + exports.BOM = BOM; + exports.DOCUMENT = DOCUMENT; + exports.FLOW_END = FLOW_END; + exports.SCALAR = SCALAR; + exports.isCollection = isCollection; + exports.isScalar = isScalar; + exports.prettyToken = prettyToken; + exports.tokenType = tokenType; + } +}); + +// node_modules/yaml/dist/parse/lexer.js +var require_lexer = __commonJS({ + "node_modules/yaml/dist/parse/lexer.js"(exports) { + "use strict"; + var cst = require_cst(); + function isEmpty(ch) { + switch (ch) { + case void 0: + case " ": + case "\n": + case "\r": + case " ": + return true; + default: + return false; + } + } + var hexDigits = new Set("0123456789ABCDEFabcdef"); + var tagChars = new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"); + var flowIndicatorChars = new Set(",[]{}"); + var invalidAnchorChars = new Set(" ,[]{}\n\r "); + var isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch); + var Lexer = class { + constructor() { + this.atEnd = false; + this.blockScalarIndent = -1; + this.blockScalarKeep = false; + this.buffer = ""; + this.flowKey = false; + this.flowLevel = 0; + this.indentNext = 0; + this.indentValue = 0; + this.lineEndPos = null; + this.next = null; + this.pos = 0; + } + *lex(source, incomplete = false) { + if (source) { + if (typeof source !== "string") + throw TypeError("source is not a string"); + this.buffer = this.buffer ? this.buffer + source : source; + this.lineEndPos = null; + } + this.atEnd = !incomplete; + let next = this.next ?? "stream"; + while (next && (incomplete || this.hasChars(1))) + next = yield* this.parseNext(next); + } + atLineEnd() { + let i = this.pos; + let ch = this.buffer[i]; + while (ch === " " || ch === " ") + ch = this.buffer[++i]; + if (!ch || ch === "#" || ch === "\n") + return true; + if (ch === "\r") + return this.buffer[i + 1] === "\n"; + return false; + } + charAt(n) { + return this.buffer[this.pos + n]; + } + continueScalar(offset) { + let ch = this.buffer[offset]; + if (this.indentNext > 0) { + let indent = 0; + while (ch === " ") + ch = this.buffer[++indent + offset]; + if (ch === "\r") { + const next = this.buffer[indent + offset + 1]; + if (next === "\n" || !next && !this.atEnd) + return offset + indent + 1; + } + return ch === "\n" || indent >= this.indentNext || !ch && !this.atEnd ? offset + indent : -1; + } + if (ch === "-" || ch === ".") { + const dt = this.buffer.substr(offset, 3); + if ((dt === "---" || dt === "...") && isEmpty(this.buffer[offset + 3])) + return -1; + } + return offset; + } + getLine() { + let end = this.lineEndPos; + if (typeof end !== "number" || end !== -1 && end < this.pos) { + end = this.buffer.indexOf("\n", this.pos); + this.lineEndPos = end; + } + if (end === -1) + return this.atEnd ? this.buffer.substring(this.pos) : null; + if (this.buffer[end - 1] === "\r") + end -= 1; + return this.buffer.substring(this.pos, end); + } + hasChars(n) { + return this.pos + n <= this.buffer.length; + } + setNext(state) { + this.buffer = this.buffer.substring(this.pos); + this.pos = 0; + this.lineEndPos = null; + this.next = state; + return null; + } + peek(n) { + return this.buffer.substr(this.pos, n); + } + *parseNext(next) { + switch (next) { + case "stream": + return yield* this.parseStream(); + case "line-start": + return yield* this.parseLineStart(); + case "block-start": + return yield* this.parseBlockStart(); + case "doc": + return yield* this.parseDocument(); + case "flow": + return yield* this.parseFlowCollection(); + case "quoted-scalar": + return yield* this.parseQuotedScalar(); + case "block-scalar": + return yield* this.parseBlockScalar(); + case "plain-scalar": + return yield* this.parsePlainScalar(); + } + } + *parseStream() { + let line = this.getLine(); + if (line === null) + return this.setNext("stream"); + if (line[0] === cst.BOM) { + yield* this.pushCount(1); + line = line.substring(1); + } + if (line[0] === "%") { + let dirEnd = line.length; + let cs = line.indexOf("#"); + while (cs !== -1) { + const ch = line[cs - 1]; + if (ch === " " || ch === " ") { + dirEnd = cs - 1; + break; + } else { + cs = line.indexOf("#", cs + 1); + } + } + while (true) { + const ch = line[dirEnd - 1]; + if (ch === " " || ch === " ") + dirEnd -= 1; + else + break; + } + const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true)); + yield* this.pushCount(line.length - n); + this.pushNewline(); + return "stream"; + } + if (this.atLineEnd()) { + const sp = yield* this.pushSpaces(true); + yield* this.pushCount(line.length - sp); + yield* this.pushNewline(); + return "stream"; + } + yield cst.DOCUMENT; + return yield* this.parseLineStart(); + } + *parseLineStart() { + const ch = this.charAt(0); + if (!ch && !this.atEnd) + return this.setNext("line-start"); + if (ch === "-" || ch === ".") { + if (!this.atEnd && !this.hasChars(4)) + return this.setNext("line-start"); + const s = this.peek(3); + if ((s === "---" || s === "...") && isEmpty(this.charAt(3))) { + yield* this.pushCount(3); + this.indentValue = 0; + this.indentNext = 0; + return s === "---" ? "doc" : "stream"; + } + } + this.indentValue = yield* this.pushSpaces(false); + if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1))) + this.indentNext = this.indentValue; + return yield* this.parseBlockStart(); + } + *parseBlockStart() { + const [ch0, ch1] = this.peek(2); + if (!ch1 && !this.atEnd) + return this.setNext("block-start"); + if ((ch0 === "-" || ch0 === "?" || ch0 === ":") && isEmpty(ch1)) { + const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true)); + this.indentNext = this.indentValue + 1; + this.indentValue += n; + return yield* this.parseBlockStart(); + } + return "doc"; + } + *parseDocument() { + yield* this.pushSpaces(true); + const line = this.getLine(); + if (line === null) + return this.setNext("doc"); + let n = yield* this.pushIndicators(); + switch (line[n]) { + case "#": + yield* this.pushCount(line.length - n); + case void 0: + yield* this.pushNewline(); + return yield* this.parseLineStart(); + case "{": + case "[": + yield* this.pushCount(1); + this.flowKey = false; + this.flowLevel = 1; + return "flow"; + case "}": + case "]": + yield* this.pushCount(1); + return "doc"; + case "*": + yield* this.pushUntil(isNotAnchorChar); + return "doc"; + case '"': + case "'": + return yield* this.parseQuotedScalar(); + case "|": + case ">": + n += yield* this.parseBlockScalarHeader(); + n += yield* this.pushSpaces(true); + yield* this.pushCount(line.length - n); + yield* this.pushNewline(); + return yield* this.parseBlockScalar(); + default: + return yield* this.parsePlainScalar(); + } + } + *parseFlowCollection() { + let nl, sp; + let indent = -1; + do { + nl = yield* this.pushNewline(); + if (nl > 0) { + sp = yield* this.pushSpaces(false); + this.indentValue = indent = sp; + } else { + sp = 0; + } + sp += yield* this.pushSpaces(true); + } while (nl + sp > 0); + const line = this.getLine(); + if (line === null) + return this.setNext("flow"); + if (indent !== -1 && indent < this.indentNext && line[0] !== "#" || indent === 0 && (line.startsWith("---") || line.startsWith("...")) && isEmpty(line[3])) { + const atFlowEndMarker = indent === this.indentNext - 1 && this.flowLevel === 1 && (line[0] === "]" || line[0] === "}"); + if (!atFlowEndMarker) { + this.flowLevel = 0; + yield cst.FLOW_END; + return yield* this.parseLineStart(); + } + } + let n = 0; + while (line[n] === ",") { + n += yield* this.pushCount(1); + n += yield* this.pushSpaces(true); + this.flowKey = false; + } + n += yield* this.pushIndicators(); + switch (line[n]) { + case void 0: + return "flow"; + case "#": + yield* this.pushCount(line.length - n); + return "flow"; + case "{": + case "[": + yield* this.pushCount(1); + this.flowKey = false; + this.flowLevel += 1; + return "flow"; + case "}": + case "]": + yield* this.pushCount(1); + this.flowKey = true; + this.flowLevel -= 1; + return this.flowLevel ? "flow" : "doc"; + case "*": + yield* this.pushUntil(isNotAnchorChar); + return "flow"; + case '"': + case "'": + this.flowKey = true; + return yield* this.parseQuotedScalar(); + case ":": { + const next = this.charAt(1); + if (this.flowKey || isEmpty(next) || next === ",") { + this.flowKey = false; + yield* this.pushCount(1); + yield* this.pushSpaces(true); + return "flow"; + } + } + default: + this.flowKey = false; + return yield* this.parsePlainScalar(); + } + } + *parseQuotedScalar() { + const quote = this.charAt(0); + let end = this.buffer.indexOf(quote, this.pos + 1); + if (quote === "'") { + while (end !== -1 && this.buffer[end + 1] === "'") + end = this.buffer.indexOf("'", end + 2); + } else { + while (end !== -1) { + let n = 0; + while (this.buffer[end - 1 - n] === "\\") + n += 1; + if (n % 2 === 0) + break; + end = this.buffer.indexOf('"', end + 1); + } + } + const qb = this.buffer.substring(0, end); + let nl = qb.indexOf("\n", this.pos); + if (nl !== -1) { + while (nl !== -1) { + const cs = this.continueScalar(nl + 1); + if (cs === -1) + break; + nl = qb.indexOf("\n", cs); + } + if (nl !== -1) { + end = nl - (qb[nl - 1] === "\r" ? 2 : 1); + } + } + if (end === -1) { + if (!this.atEnd) + return this.setNext("quoted-scalar"); + end = this.buffer.length; + } + yield* this.pushToIndex(end + 1, false); + return this.flowLevel ? "flow" : "doc"; + } + *parseBlockScalarHeader() { + this.blockScalarIndent = -1; + this.blockScalarKeep = false; + let i = this.pos; + while (true) { + const ch = this.buffer[++i]; + if (ch === "+") + this.blockScalarKeep = true; + else if (ch > "0" && ch <= "9") + this.blockScalarIndent = Number(ch) - 1; + else if (ch !== "-") + break; + } + return yield* this.pushUntil((ch) => isEmpty(ch) || ch === "#"); + } + *parseBlockScalar() { + let nl = this.pos - 1; + let indent = 0; + let ch; + loop: + for (let i2 = this.pos; ch = this.buffer[i2]; ++i2) { + switch (ch) { + case " ": + indent += 1; + break; + case "\n": + nl = i2; + indent = 0; + break; + case "\r": { + const next = this.buffer[i2 + 1]; + if (!next && !this.atEnd) + return this.setNext("block-scalar"); + if (next === "\n") + break; + } + default: + break loop; + } + } + if (!ch && !this.atEnd) + return this.setNext("block-scalar"); + if (indent >= this.indentNext) { + if (this.blockScalarIndent === -1) + this.indentNext = indent; + else { + this.indentNext = this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext); + } + do { + const cs = this.continueScalar(nl + 1); + if (cs === -1) + break; + nl = this.buffer.indexOf("\n", cs); + } while (nl !== -1); + if (nl === -1) { + if (!this.atEnd) + return this.setNext("block-scalar"); + nl = this.buffer.length; + } + } + let i = nl + 1; + ch = this.buffer[i]; + while (ch === " ") + ch = this.buffer[++i]; + if (ch === " ") { + while (ch === " " || ch === " " || ch === "\r" || ch === "\n") + ch = this.buffer[++i]; + nl = i - 1; + } else if (!this.blockScalarKeep) { + do { + let i2 = nl - 1; + let ch2 = this.buffer[i2]; + if (ch2 === "\r") + ch2 = this.buffer[--i2]; + const lastChar = i2; + while (ch2 === " ") + ch2 = this.buffer[--i2]; + if (ch2 === "\n" && i2 >= this.pos && i2 + 1 + indent > lastChar) + nl = i2; + else + break; + } while (true); + } + yield cst.SCALAR; + yield* this.pushToIndex(nl + 1, true); + return yield* this.parseLineStart(); + } + *parsePlainScalar() { + const inFlow = this.flowLevel > 0; + let end = this.pos - 1; + let i = this.pos - 1; + let ch; + while (ch = this.buffer[++i]) { + if (ch === ":") { + const next = this.buffer[i + 1]; + if (isEmpty(next) || inFlow && flowIndicatorChars.has(next)) + break; + end = i; + } else if (isEmpty(ch)) { + let next = this.buffer[i + 1]; + if (ch === "\r") { + if (next === "\n") { + i += 1; + ch = "\n"; + next = this.buffer[i + 1]; + } else + end = i; + } + if (next === "#" || inFlow && flowIndicatorChars.has(next)) + break; + if (ch === "\n") { + const cs = this.continueScalar(i + 1); + if (cs === -1) + break; + i = Math.max(i, cs - 2); + } + } else { + if (inFlow && flowIndicatorChars.has(ch)) + break; + end = i; + } + } + if (!ch && !this.atEnd) + return this.setNext("plain-scalar"); + yield cst.SCALAR; + yield* this.pushToIndex(end + 1, true); + return inFlow ? "flow" : "doc"; + } + *pushCount(n) { + if (n > 0) { + yield this.buffer.substr(this.pos, n); + this.pos += n; + return n; + } + return 0; + } + *pushToIndex(i, allowEmpty) { + const s = this.buffer.slice(this.pos, i); + if (s) { + yield s; + this.pos += s.length; + return s.length; + } else if (allowEmpty) + yield ""; + return 0; + } + *pushIndicators() { + switch (this.charAt(0)) { + case "!": + return (yield* this.pushTag()) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); + case "&": + return (yield* this.pushUntil(isNotAnchorChar)) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); + case "-": + case "?": + case ":": { + const inFlow = this.flowLevel > 0; + const ch1 = this.charAt(1); + if (isEmpty(ch1) || inFlow && flowIndicatorChars.has(ch1)) { + if (!inFlow) + this.indentNext = this.indentValue + 1; + else if (this.flowKey) + this.flowKey = false; + return (yield* this.pushCount(1)) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); + } + } + } + return 0; + } + *pushTag() { + if (this.charAt(1) === "<") { + let i = this.pos + 2; + let ch = this.buffer[i]; + while (!isEmpty(ch) && ch !== ">") + ch = this.buffer[++i]; + return yield* this.pushToIndex(ch === ">" ? i + 1 : i, false); + } else { + let i = this.pos + 1; + let ch = this.buffer[i]; + while (ch) { + if (tagChars.has(ch)) + ch = this.buffer[++i]; + else if (ch === "%" && hexDigits.has(this.buffer[i + 1]) && hexDigits.has(this.buffer[i + 2])) { + ch = this.buffer[i += 3]; + } else + break; + } + return yield* this.pushToIndex(i, false); + } + } + *pushNewline() { + const ch = this.buffer[this.pos]; + if (ch === "\n") + return yield* this.pushCount(1); + else if (ch === "\r" && this.charAt(1) === "\n") + return yield* this.pushCount(2); + else + return 0; + } + *pushSpaces(allowTabs) { + let i = this.pos - 1; + let ch; + do { + ch = this.buffer[++i]; + } while (ch === " " || allowTabs && ch === " "); + const n = i - this.pos; + if (n > 0) { + yield this.buffer.substr(this.pos, n); + this.pos = i; + } + return n; + } + *pushUntil(test) { + let i = this.pos; + let ch = this.buffer[i]; + while (!test(ch)) + ch = this.buffer[++i]; + return yield* this.pushToIndex(i, false); + } + }; + exports.Lexer = Lexer; + } +}); + +// node_modules/yaml/dist/parse/line-counter.js +var require_line_counter = __commonJS({ + "node_modules/yaml/dist/parse/line-counter.js"(exports) { + "use strict"; + var LineCounter = class { + constructor() { + this.lineStarts = []; + this.addNewLine = (offset) => this.lineStarts.push(offset); + this.linePos = (offset) => { + let low = 0; + let high = this.lineStarts.length; + while (low < high) { + const mid = low + high >> 1; + if (this.lineStarts[mid] < offset) + low = mid + 1; + else + high = mid; + } + if (this.lineStarts[low] === offset) + return { line: low + 1, col: 1 }; + if (low === 0) + return { line: 0, col: offset }; + const start = this.lineStarts[low - 1]; + return { line: low, col: offset - start + 1 }; + }; + } + }; + exports.LineCounter = LineCounter; + } +}); + +// node_modules/yaml/dist/parse/parser.js +var require_parser = __commonJS({ + "node_modules/yaml/dist/parse/parser.js"(exports) { + "use strict"; + var node_process = __require("process"); + var cst = require_cst(); + var lexer = require_lexer(); + function includesToken(list, type) { + for (let i = 0; i < list.length; ++i) + if (list[i].type === type) + return true; + return false; + } + function findNonEmptyIndex(list) { + for (let i = 0; i < list.length; ++i) { + switch (list[i].type) { + case "space": + case "comment": + case "newline": + break; + default: + return i; + } + } + return -1; + } + function isFlowToken(token) { + switch (token == null ? void 0 : token.type) { + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + case "flow-collection": + return true; + default: + return false; + } + } + function getPrevProps(parent) { + switch (parent.type) { + case "document": + return parent.start; + case "block-map": { + const it = parent.items[parent.items.length - 1]; + return it.sep ?? it.start; + } + case "block-seq": + return parent.items[parent.items.length - 1].start; + default: + return []; + } + } + function getFirstKeyStartProps(prev) { + var _a; + if (prev.length === 0) + return []; + let i = prev.length; + loop: + while (--i >= 0) { + switch (prev[i].type) { + case "doc-start": + case "explicit-key-ind": + case "map-value-ind": + case "seq-item-ind": + case "newline": + break loop; + } + } + while (((_a = prev[++i]) == null ? void 0 : _a.type) === "space") { + } + return prev.splice(i, prev.length); + } + function fixFlowSeqItems(fc) { + if (fc.start.type === "flow-seq-start") { + for (const it of fc.items) { + if (it.sep && !it.value && !includesToken(it.start, "explicit-key-ind") && !includesToken(it.sep, "map-value-ind")) { + if (it.key) + it.value = it.key; + delete it.key; + if (isFlowToken(it.value)) { + if (it.value.end) + Array.prototype.push.apply(it.value.end, it.sep); + else + it.value.end = it.sep; + } else + Array.prototype.push.apply(it.start, it.sep); + delete it.sep; + } + } + } + } + var Parser = class { + constructor(onNewLine) { + this.atNewLine = true; + this.atScalar = false; + this.indent = 0; + this.offset = 0; + this.onKeyLine = false; + this.stack = []; + this.source = ""; + this.type = ""; + this.lexer = new lexer.Lexer(); + this.onNewLine = onNewLine; + } + *parse(source, incomplete = false) { + if (this.onNewLine && this.offset === 0) + this.onNewLine(0); + for (const lexeme of this.lexer.lex(source, incomplete)) + yield* this.next(lexeme); + if (!incomplete) + yield* this.end(); + } + *next(source) { + this.source = source; + if (node_process.env.LOG_TOKENS) + console.log("|", cst.prettyToken(source)); + if (this.atScalar) { + this.atScalar = false; + yield* this.step(); + this.offset += source.length; + return; + } + const type = cst.tokenType(source); + if (!type) { + const message = `Not a YAML token: ${source}`; + yield* this.pop({ type: "error", offset: this.offset, message, source }); + this.offset += source.length; + } else if (type === "scalar") { + this.atNewLine = false; + this.atScalar = true; + this.type = "scalar"; + } else { + this.type = type; + yield* this.step(); + switch (type) { + case "newline": + this.atNewLine = true; + this.indent = 0; + if (this.onNewLine) + this.onNewLine(this.offset + source.length); + break; + case "space": + if (this.atNewLine && source[0] === " ") + this.indent += source.length; + break; + case "explicit-key-ind": + case "map-value-ind": + case "seq-item-ind": + if (this.atNewLine) + this.indent += source.length; + break; + case "doc-mode": + case "flow-error-end": + return; + default: + this.atNewLine = false; + } + this.offset += source.length; + } + } + *end() { + while (this.stack.length > 0) + yield* this.pop(); + } + get sourceToken() { + const st = { + type: this.type, + offset: this.offset, + indent: this.indent, + source: this.source + }; + return st; + } + *step() { + const top = this.peek(1); + if (this.type === "doc-end" && (!top || top.type !== "doc-end")) { + while (this.stack.length > 0) + yield* this.pop(); + this.stack.push({ + type: "doc-end", + offset: this.offset, + source: this.source + }); + return; + } + if (!top) + return yield* this.stream(); + switch (top.type) { + case "document": + return yield* this.document(top); + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + return yield* this.scalar(top); + case "block-scalar": + return yield* this.blockScalar(top); + case "block-map": + return yield* this.blockMap(top); + case "block-seq": + return yield* this.blockSequence(top); + case "flow-collection": + return yield* this.flowCollection(top); + case "doc-end": + return yield* this.documentEnd(top); + } + yield* this.pop(); + } + peek(n) { + return this.stack[this.stack.length - n]; + } + *pop(error) { + const token = error ?? this.stack.pop(); + if (!token) { + const message = "Tried to pop an empty stack"; + yield { type: "error", offset: this.offset, source: "", message }; + } else if (this.stack.length === 0) { + yield token; + } else { + const top = this.peek(1); + if (token.type === "block-scalar") { + token.indent = "indent" in top ? top.indent : 0; + } else if (token.type === "flow-collection" && top.type === "document") { + token.indent = 0; + } + if (token.type === "flow-collection") + fixFlowSeqItems(token); + switch (top.type) { + case "document": + top.value = token; + break; + case "block-scalar": + top.props.push(token); + break; + case "block-map": { + const it = top.items[top.items.length - 1]; + if (it.value) { + top.items.push({ start: [], key: token, sep: [] }); + this.onKeyLine = true; + return; + } else if (it.sep) { + it.value = token; + } else { + Object.assign(it, { key: token, sep: [] }); + this.onKeyLine = !it.explicitKey; + return; + } + break; + } + case "block-seq": { + const it = top.items[top.items.length - 1]; + if (it.value) + top.items.push({ start: [], value: token }); + else + it.value = token; + break; + } + case "flow-collection": { + const it = top.items[top.items.length - 1]; + if (!it || it.value) + top.items.push({ start: [], key: token, sep: [] }); + else if (it.sep) + it.value = token; + else + Object.assign(it, { key: token, sep: [] }); + return; + } + default: + yield* this.pop(); + yield* this.pop(token); + } + if ((top.type === "document" || top.type === "block-map" || top.type === "block-seq") && (token.type === "block-map" || token.type === "block-seq")) { + const last = token.items[token.items.length - 1]; + if (last && !last.sep && !last.value && last.start.length > 0 && findNonEmptyIndex(last.start) === -1 && (token.indent === 0 || last.start.every((st) => st.type !== "comment" || st.indent < token.indent))) { + if (top.type === "document") + top.end = last.start; + else + top.items.push({ start: last.start }); + token.items.splice(-1, 1); + } + } + } + } + *stream() { + switch (this.type) { + case "directive-line": + yield { type: "directive", offset: this.offset, source: this.source }; + return; + case "byte-order-mark": + case "space": + case "comment": + case "newline": + yield this.sourceToken; + return; + case "doc-mode": + case "doc-start": { + const doc = { + type: "document", + offset: this.offset, + start: [] + }; + if (this.type === "doc-start") + doc.start.push(this.sourceToken); + this.stack.push(doc); + return; + } + } + yield { + type: "error", + offset: this.offset, + message: `Unexpected ${this.type} token in YAML stream`, + source: this.source + }; + } + *document(doc) { + if (doc.value) + return yield* this.lineEnd(doc); + switch (this.type) { + case "doc-start": { + if (findNonEmptyIndex(doc.start) !== -1) { + yield* this.pop(); + yield* this.step(); + } else + doc.start.push(this.sourceToken); + return; + } + case "anchor": + case "tag": + case "space": + case "comment": + case "newline": + doc.start.push(this.sourceToken); + return; + } + const bv = this.startBlockValue(doc); + if (bv) + this.stack.push(bv); + else { + yield { + type: "error", + offset: this.offset, + message: `Unexpected ${this.type} token in YAML document`, + source: this.source + }; + } + } + *scalar(scalar) { + if (this.type === "map-value-ind") { + const prev = getPrevProps(this.peek(2)); + const start = getFirstKeyStartProps(prev); + let sep; + if (scalar.end) { + sep = scalar.end; + sep.push(this.sourceToken); + delete scalar.end; + } else + sep = [this.sourceToken]; + const map = { + type: "block-map", + offset: scalar.offset, + indent: scalar.indent, + items: [{ start, key: scalar, sep }] + }; + this.onKeyLine = true; + this.stack[this.stack.length - 1] = map; + } else + yield* this.lineEnd(scalar); + } + *blockScalar(scalar) { + switch (this.type) { + case "space": + case "comment": + case "newline": + scalar.props.push(this.sourceToken); + return; + case "scalar": + scalar.source = this.source; + this.atNewLine = true; + this.indent = 0; + if (this.onNewLine) { + let nl = this.source.indexOf("\n") + 1; + while (nl !== 0) { + this.onNewLine(this.offset + nl); + nl = this.source.indexOf("\n", nl) + 1; + } + } + yield* this.pop(); + break; + default: + yield* this.pop(); + yield* this.step(); + } + } + *blockMap(map) { + var _a; + const it = map.items[map.items.length - 1]; + switch (this.type) { + case "newline": + this.onKeyLine = false; + if (it.value) { + const end = "end" in it.value ? it.value.end : void 0; + const last = Array.isArray(end) ? end[end.length - 1] : void 0; + if ((last == null ? void 0 : last.type) === "comment") + end == null ? void 0 : end.push(this.sourceToken); + else + map.items.push({ start: [this.sourceToken] }); + } else if (it.sep) { + it.sep.push(this.sourceToken); + } else { + it.start.push(this.sourceToken); + } + return; + case "space": + case "comment": + if (it.value) { + map.items.push({ start: [this.sourceToken] }); + } else if (it.sep) { + it.sep.push(this.sourceToken); + } else { + if (this.atIndentedComment(it.start, map.indent)) { + const prev = map.items[map.items.length - 2]; + const end = (_a = prev == null ? void 0 : prev.value) == null ? void 0 : _a.end; + if (Array.isArray(end)) { + Array.prototype.push.apply(end, it.start); + end.push(this.sourceToken); + map.items.pop(); + return; + } + } + it.start.push(this.sourceToken); + } + return; + } + if (this.indent >= map.indent) { + const atMapIndent = !this.onKeyLine && this.indent === map.indent; + const atNextItem = atMapIndent && (it.sep || it.explicitKey) && this.type !== "seq-item-ind"; + let start = []; + if (atNextItem && it.sep && !it.value) { + const nl = []; + for (let i = 0; i < it.sep.length; ++i) { + const st = it.sep[i]; + switch (st.type) { + case "newline": + nl.push(i); + break; + case "space": + break; + case "comment": + if (st.indent > map.indent) + nl.length = 0; + break; + default: + nl.length = 0; + } + } + if (nl.length >= 2) + start = it.sep.splice(nl[1]); + } + switch (this.type) { + case "anchor": + case "tag": + if (atNextItem || it.value) { + start.push(this.sourceToken); + map.items.push({ start }); + this.onKeyLine = true; + } else if (it.sep) { + it.sep.push(this.sourceToken); + } else { + it.start.push(this.sourceToken); + } + return; + case "explicit-key-ind": + if (!it.sep && !it.explicitKey) { + it.start.push(this.sourceToken); + it.explicitKey = true; + } else if (atNextItem || it.value) { + start.push(this.sourceToken); + map.items.push({ start, explicitKey: true }); + } else { + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start: [this.sourceToken], explicitKey: true }] + }); + } + this.onKeyLine = true; + return; + case "map-value-ind": + if (it.explicitKey) { + if (!it.sep) { + if (includesToken(it.start, "newline")) { + Object.assign(it, { key: null, sep: [this.sourceToken] }); + } else { + const start2 = getFirstKeyStartProps(it.start); + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start: start2, key: null, sep: [this.sourceToken] }] + }); + } + } else if (it.value) { + map.items.push({ start: [], key: null, sep: [this.sourceToken] }); + } else if (includesToken(it.sep, "map-value-ind")) { + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start, key: null, sep: [this.sourceToken] }] + }); + } else if (isFlowToken(it.key) && !includesToken(it.sep, "newline")) { + const start2 = getFirstKeyStartProps(it.start); + const key = it.key; + const sep = it.sep; + sep.push(this.sourceToken); + delete it.key; + delete it.sep; + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start: start2, key, sep }] + }); + } else if (start.length > 0) { + it.sep = it.sep.concat(start, this.sourceToken); + } else { + it.sep.push(this.sourceToken); + } + } else { + if (!it.sep) { + Object.assign(it, { key: null, sep: [this.sourceToken] }); + } else if (it.value || atNextItem) { + map.items.push({ start, key: null, sep: [this.sourceToken] }); + } else if (includesToken(it.sep, "map-value-ind")) { + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start: [], key: null, sep: [this.sourceToken] }] + }); + } else { + it.sep.push(this.sourceToken); + } + } + this.onKeyLine = true; + return; + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": { + const fs2 = this.flowScalar(this.type); + if (atNextItem || it.value) { + map.items.push({ start, key: fs2, sep: [] }); + this.onKeyLine = true; + } else if (it.sep) { + this.stack.push(fs2); + } else { + Object.assign(it, { key: fs2, sep: [] }); + this.onKeyLine = true; + } + return; + } + default: { + const bv = this.startBlockValue(map); + if (bv) { + if (atMapIndent && bv.type !== "block-seq") { + map.items.push({ start }); + } + this.stack.push(bv); + return; + } + } + } + } + yield* this.pop(); + yield* this.step(); + } + *blockSequence(seq) { + var _a; + const it = seq.items[seq.items.length - 1]; + switch (this.type) { + case "newline": + if (it.value) { + const end = "end" in it.value ? it.value.end : void 0; + const last = Array.isArray(end) ? end[end.length - 1] : void 0; + if ((last == null ? void 0 : last.type) === "comment") + end == null ? void 0 : end.push(this.sourceToken); + else + seq.items.push({ start: [this.sourceToken] }); + } else + it.start.push(this.sourceToken); + return; + case "space": + case "comment": + if (it.value) + seq.items.push({ start: [this.sourceToken] }); + else { + if (this.atIndentedComment(it.start, seq.indent)) { + const prev = seq.items[seq.items.length - 2]; + const end = (_a = prev == null ? void 0 : prev.value) == null ? void 0 : _a.end; + if (Array.isArray(end)) { + Array.prototype.push.apply(end, it.start); + end.push(this.sourceToken); + seq.items.pop(); + return; + } + } + it.start.push(this.sourceToken); + } + return; + case "anchor": + case "tag": + if (it.value || this.indent <= seq.indent) + break; + it.start.push(this.sourceToken); + return; + case "seq-item-ind": + if (this.indent !== seq.indent) + break; + if (it.value || includesToken(it.start, "seq-item-ind")) + seq.items.push({ start: [this.sourceToken] }); + else + it.start.push(this.sourceToken); + return; + } + if (this.indent > seq.indent) { + const bv = this.startBlockValue(seq); + if (bv) { + this.stack.push(bv); + return; + } + } + yield* this.pop(); + yield* this.step(); + } + *flowCollection(fc) { + const it = fc.items[fc.items.length - 1]; + if (this.type === "flow-error-end") { + let top; + do { + yield* this.pop(); + top = this.peek(1); + } while (top && top.type === "flow-collection"); + } else if (fc.end.length === 0) { + switch (this.type) { + case "comma": + case "explicit-key-ind": + if (!it || it.sep) + fc.items.push({ start: [this.sourceToken] }); + else + it.start.push(this.sourceToken); + return; + case "map-value-ind": + if (!it || it.value) + fc.items.push({ start: [], key: null, sep: [this.sourceToken] }); + else if (it.sep) + it.sep.push(this.sourceToken); + else + Object.assign(it, { key: null, sep: [this.sourceToken] }); + return; + case "space": + case "comment": + case "newline": + case "anchor": + case "tag": + if (!it || it.value) + fc.items.push({ start: [this.sourceToken] }); + else if (it.sep) + it.sep.push(this.sourceToken); + else + it.start.push(this.sourceToken); + return; + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": { + const fs2 = this.flowScalar(this.type); + if (!it || it.value) + fc.items.push({ start: [], key: fs2, sep: [] }); + else if (it.sep) + this.stack.push(fs2); + else + Object.assign(it, { key: fs2, sep: [] }); + return; + } + case "flow-map-end": + case "flow-seq-end": + fc.end.push(this.sourceToken); + return; + } + const bv = this.startBlockValue(fc); + if (bv) + this.stack.push(bv); + else { + yield* this.pop(); + yield* this.step(); + } + } else { + const parent = this.peek(2); + if (parent.type === "block-map" && (this.type === "map-value-ind" && parent.indent === fc.indent || this.type === "newline" && !parent.items[parent.items.length - 1].sep)) { + yield* this.pop(); + yield* this.step(); + } else if (this.type === "map-value-ind" && parent.type !== "flow-collection") { + const prev = getPrevProps(parent); + const start = getFirstKeyStartProps(prev); + fixFlowSeqItems(fc); + const sep = fc.end.splice(1, fc.end.length); + sep.push(this.sourceToken); + const map = { + type: "block-map", + offset: fc.offset, + indent: fc.indent, + items: [{ start, key: fc, sep }] + }; + this.onKeyLine = true; + this.stack[this.stack.length - 1] = map; + } else { + yield* this.lineEnd(fc); + } + } + } + flowScalar(type) { + if (this.onNewLine) { + let nl = this.source.indexOf("\n") + 1; + while (nl !== 0) { + this.onNewLine(this.offset + nl); + nl = this.source.indexOf("\n", nl) + 1; + } + } + return { + type, + offset: this.offset, + indent: this.indent, + source: this.source + }; + } + startBlockValue(parent) { + switch (this.type) { + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + return this.flowScalar(this.type); + case "block-scalar-header": + return { + type: "block-scalar", + offset: this.offset, + indent: this.indent, + props: [this.sourceToken], + source: "" + }; + case "flow-map-start": + case "flow-seq-start": + return { + type: "flow-collection", + offset: this.offset, + indent: this.indent, + start: this.sourceToken, + items: [], + end: [] + }; + case "seq-item-ind": + return { + type: "block-seq", + offset: this.offset, + indent: this.indent, + items: [{ start: [this.sourceToken] }] + }; + case "explicit-key-ind": { + this.onKeyLine = true; + const prev = getPrevProps(parent); + const start = getFirstKeyStartProps(prev); + start.push(this.sourceToken); + return { + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start, explicitKey: true }] + }; + } + case "map-value-ind": { + this.onKeyLine = true; + const prev = getPrevProps(parent); + const start = getFirstKeyStartProps(prev); + return { + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start, key: null, sep: [this.sourceToken] }] + }; + } + } + return null; + } + atIndentedComment(start, indent) { + if (this.type !== "comment") + return false; + if (this.indent <= indent) + return false; + return start.every((st) => st.type === "newline" || st.type === "space"); + } + *documentEnd(docEnd) { + if (this.type !== "doc-mode") { + if (docEnd.end) + docEnd.end.push(this.sourceToken); + else + docEnd.end = [this.sourceToken]; + if (this.type === "newline") + yield* this.pop(); + } + } + *lineEnd(token) { + switch (this.type) { + case "comma": + case "doc-start": + case "doc-end": + case "flow-seq-end": + case "flow-map-end": + case "map-value-ind": + yield* this.pop(); + yield* this.step(); + break; + case "newline": + this.onKeyLine = false; + case "space": + case "comment": + default: + if (token.end) + token.end.push(this.sourceToken); + else + token.end = [this.sourceToken]; + if (this.type === "newline") + yield* this.pop(); + } + } + }; + exports.Parser = Parser; + } +}); + +// node_modules/yaml/dist/public-api.js +var require_public_api = __commonJS({ + "node_modules/yaml/dist/public-api.js"(exports) { + "use strict"; + var composer = require_composer(); + var Document = require_Document(); + var errors = require_errors(); + var log = require_log(); + var identity = require_identity(); + var lineCounter = require_line_counter(); + var parser = require_parser(); + function parseOptions(options) { + const prettyErrors = options.prettyErrors !== false; + const lineCounter$1 = options.lineCounter || prettyErrors && new lineCounter.LineCounter() || null; + return { lineCounter: lineCounter$1, prettyErrors }; + } + function parseAllDocuments(source, options = {}) { + const { lineCounter: lineCounter2, prettyErrors } = parseOptions(options); + const parser$1 = new parser.Parser(lineCounter2 == null ? void 0 : lineCounter2.addNewLine); + const composer$1 = new composer.Composer(options); + const docs = Array.from(composer$1.compose(parser$1.parse(source))); + if (prettyErrors && lineCounter2) + for (const doc of docs) { + doc.errors.forEach(errors.prettifyError(source, lineCounter2)); + doc.warnings.forEach(errors.prettifyError(source, lineCounter2)); + } + if (docs.length > 0) + return docs; + return Object.assign([], { empty: true }, composer$1.streamInfo()); + } + function parseDocument(source, options = {}) { + const { lineCounter: lineCounter2, prettyErrors } = parseOptions(options); + const parser$1 = new parser.Parser(lineCounter2 == null ? void 0 : lineCounter2.addNewLine); + const composer$1 = new composer.Composer(options); + let doc = null; + for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) { + if (!doc) + doc = _doc; + else if (doc.options.logLevel !== "silent") { + doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), "MULTIPLE_DOCS", "Source contains multiple documents; please use YAML.parseAllDocuments()")); + break; + } + } + if (prettyErrors && lineCounter2) { + doc.errors.forEach(errors.prettifyError(source, lineCounter2)); + doc.warnings.forEach(errors.prettifyError(source, lineCounter2)); + } + return doc; + } + function parse2(src, reviver, options) { + let _reviver = void 0; + if (typeof reviver === "function") { + _reviver = reviver; + } else if (options === void 0 && reviver && typeof reviver === "object") { + options = reviver; + } + const doc = parseDocument(src, options); + if (!doc) + return null; + doc.warnings.forEach((warning) => log.warn(doc.options.logLevel, warning)); + if (doc.errors.length > 0) { + if (doc.options.logLevel !== "silent") + throw doc.errors[0]; + else + doc.errors = []; + } + return doc.toJS(Object.assign({ reviver: _reviver }, options)); + } + function stringify(value, replacer, options) { + let _replacer = null; + if (typeof replacer === "function" || Array.isArray(replacer)) { + _replacer = replacer; + } else if (options === void 0 && replacer) { + options = replacer; + } + if (typeof options === "string") + options = options.length; + if (typeof options === "number") { + const indent = Math.round(options); + options = indent < 1 ? void 0 : indent > 8 ? { indent: 8 } : { indent }; + } + if (value === void 0) { + const { keepUndefined } = options ?? replacer ?? {}; + if (!keepUndefined) + return void 0; + } + if (identity.isDocument(value) && !_replacer) + return value.toString(options); + return new Document.Document(value, _replacer, options).toString(options); + } + exports.parse = parse2; + exports.parseAllDocuments = parseAllDocuments; + exports.parseDocument = parseDocument; + exports.stringify = stringify; + } +}); + +// node_modules/yaml/dist/index.js +var require_dist2 = __commonJS({ + "node_modules/yaml/dist/index.js"(exports) { + "use strict"; + var composer = require_composer(); + var Document = require_Document(); + var Schema = require_Schema(); + var errors = require_errors(); + var Alias = require_Alias(); + var identity = require_identity(); + var Pair = require_Pair(); + var Scalar = require_Scalar(); + var YAMLMap = require_YAMLMap(); + var YAMLSeq = require_YAMLSeq(); + var cst = require_cst(); + var lexer = require_lexer(); + var lineCounter = require_line_counter(); + var parser = require_parser(); + var publicApi = require_public_api(); + var visit = require_visit(); + exports.Composer = composer.Composer; + exports.Document = Document.Document; + exports.Schema = Schema.Schema; + exports.YAMLError = errors.YAMLError; + exports.YAMLParseError = errors.YAMLParseError; + exports.YAMLWarning = errors.YAMLWarning; + exports.Alias = Alias.Alias; + exports.isAlias = identity.isAlias; + exports.isCollection = identity.isCollection; + exports.isDocument = identity.isDocument; + exports.isMap = identity.isMap; + exports.isNode = identity.isNode; + exports.isPair = identity.isPair; + exports.isScalar = identity.isScalar; + exports.isSeq = identity.isSeq; + exports.Pair = Pair.Pair; + exports.Scalar = Scalar.Scalar; + exports.YAMLMap = YAMLMap.YAMLMap; + exports.YAMLSeq = YAMLSeq.YAMLSeq; + exports.CST = cst; + exports.Lexer = lexer.Lexer; + exports.LineCounter = lineCounter.LineCounter; + exports.Parser = parser.Parser; + exports.parse = publicApi.parse; + exports.parseAllDocuments = publicApi.parseAllDocuments; + exports.parseDocument = publicApi.parseDocument; + exports.stringify = publicApi.stringify; + exports.visit = visit.visit; + exports.visitAsync = visit.visitAsync; + } +}); + +// node_modules/universal-user-agent/index.js +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + if (typeof process === "object" && process.version !== void 0) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + return ""; +} + +// node_modules/@octokit/core/node_modules/before-after-hook/lib/register.js +function register(state, name, method, options) { + if (typeof method !== "function") { + throw new Error("method for before hook must be a function"); + } + if (!options) { + options = {}; + } + if (Array.isArray(name)) { + return name.reverse().reduce((callback, name2) => { + return register.bind(null, state, name2, callback, options); + }, method)(); + } + return Promise.resolve().then(() => { + if (!state.registry[name]) { + return method(options); + } + return state.registry[name].reduce((method2, registered) => { + return registered.hook.bind(null, method2, options); + }, method)(); + }); +} + +// node_modules/@octokit/core/node_modules/before-after-hook/lib/add.js +function addHook(state, kind, name, hook2) { + const orig = hook2; + if (!state.registry[name]) { + state.registry[name] = []; + } + if (kind === "before") { + hook2 = (method, options) => { + return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); + }; + } + if (kind === "after") { + hook2 = (method, options) => { + let result; + return Promise.resolve().then(method.bind(null, options)).then((result_) => { + result = result_; + return orig(result, options); + }).then(() => { + return result; + }); + }; + } + if (kind === "error") { + hook2 = (method, options) => { + return Promise.resolve().then(method.bind(null, options)).catch((error) => { + return orig(error, options); + }); + }; + } + state.registry[name].push({ + hook: hook2, + orig + }); +} + +// node_modules/@octokit/core/node_modules/before-after-hook/lib/remove.js +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + const index = state.registry[name].map((registered) => { + return registered.orig; + }).indexOf(method); + if (index === -1) { + return; + } + state.registry[name].splice(index, 1); +} + +// node_modules/@octokit/core/node_modules/before-after-hook/index.js +var bind = Function.bind; +var bindable = bind.bind(bind); +function bindApi(hook2, state, name) { + const removeHookRef = bindable(removeHook, null).apply( + null, + name ? [state, name] : [state] + ); + hook2.api = { remove: removeHookRef }; + hook2.remove = removeHookRef; + ["before", "error", "after", "wrap"].forEach((kind) => { + const args = name ? [state, kind, name] : [state, kind]; + hook2[kind] = hook2.api[kind] = bindable(addHook, null).apply(null, args); + }); +} +function Singular() { + const singularHookName = Symbol("Singular"); + const singularHookState = { + registry: {} + }; + const singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} +function Collection() { + const state = { + registry: {} + }; + const hook2 = register.bind(null, state); + bindApi(hook2, state); + return hook2; +} +var before_after_hook_default = { Singular, Collection }; + +// node_modules/@octokit/request/node_modules/@octokit/endpoint/dist-bundle/index.js +var VERSION = "0.0.0-development"; +var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; +var DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "" + } +}; +function lowercaseKeys(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} +function isPlainObject(value) { + if (typeof value !== "object" || value === null) + return false; + if (Object.prototype.toString.call(value) !== "[object Object]") + return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) + return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach((key) => { + if (isPlainObject(options[key])) { + if (!(key in defaults)) + Object.assign(result, { [key]: options[key] }); + else + result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { [key]: options[key] }); + } + }); + return result; +} +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === void 0) { + delete obj[key]; + } + } + return obj; +} +function merge(defaults, route, options) { + var _a; + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { method, url } : { url: method }, options); + } else { + options = Object.assign({}, route); + } + options.headers = lowercaseKeys(options.headers); + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); + if (options.url === "/graphql") { + if (defaults && ((_a = defaults.mediaType.previews) == null ? void 0 : _a.length)) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter( + (preview) => !mergedOptions.mediaType.previews.includes(preview) + ).concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); + } + return mergedOptions; +} +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + if (names.length === 0) { + return url; + } + return url + separator + names.map((name) => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} +var urlVariableRegex = /\{[^}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + if (!matches) { + return []; + } + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} +function omit(object, keysToOmit) { + const result = { __proto__: null }; + for (const key of Object.keys(object)) { + if (keysToOmit.indexOf(key) === -1) { + result[key] = object[key]; + } + } + return result; +} +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } + return part; + }).join(""); +} +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} +function isDefined(value) { + return value !== void 0 && value !== null; +} +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} +function getValues(context, operator, key, modifier) { + var value = context[key], result = []; + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + result.push( + encodeValue(operator, value, isKeyOperator(operator) ? key : "") + ); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + result.push( + encodeValue(operator, value2, isKeyOperator(operator) ? key : "") + ); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + tmp.push(encodeValue(operator, value2)); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + return result; +} +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} +function expand(template, context) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + template = template.replace( + /\{([^\{\}]+)\}|([^\{\}]+)/g, + function(_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + expression.split(/,/g).forEach(function(variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + if (operator && operator !== "+") { + var separator = ","; + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + } + ); + if (template === "/") { + return template; + } else { + return template.replace(/\/$/, ""); + } +} +function parse(options) { + var _a; + let method = options.method.toUpperCase(); + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, [ + "method", + "baseUrl", + "url", + "headers", + "request", + "mediaType" + ]); + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + if (!isBinaryRequest) { + if (options.mediaType.format) { + headers.accept = headers.accept.split(/,/).map( + (format) => format.replace( + /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, + `application/vnd$1$2.${options.mediaType.format}` + ) + ).join(","); + } + if (url.endsWith("/graphql")) { + if ((_a = options.mediaType.previews) == null ? void 0 : _a.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } + } + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } + } + } + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } + return Object.assign( + { method, url, headers }, + typeof body !== "undefined" ? { body } : null, + options.request ? { request: options.request } : null + ); +} +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS2 = merge(oldDefaults, newDefaults); + const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); + return Object.assign(endpoint2, { + DEFAULTS: DEFAULTS2, + defaults: withDefaults.bind(null, DEFAULTS2), + merge: merge.bind(null, DEFAULTS2), + parse + }); +} +var endpoint = withDefaults(null, DEFAULTS); + +// node_modules/@octokit/request/dist-bundle/index.js +var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1); + +// node_modules/@octokit/request-error/dist-src/index.js +var RequestError = class extends Error { + name; + status; + request; + response; + constructor(message, statusCode, options) { + super(message); + this.name = "HttpError"; + this.status = Number.parseInt(statusCode); + if (Number.isNaN(this.status)) { + this.status = 0; + } + if ("response" in options) { + this.response = options.response; + } + const requestCopy = Object.assign({}, options.request); + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace( + / .*$/, + " [REDACTED]" + ) + }); + } + requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + } +}; + +// node_modules/@octokit/request/dist-bundle/index.js +var VERSION2 = "0.0.0-development"; +var defaults_default = { + headers: { + "user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}` + } +}; +function isPlainObject2(value) { + if (typeof value !== "object" || value === null) + return false; + if (Object.prototype.toString.call(value) !== "[object Object]") + return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) + return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} +async function fetchWrapper(requestOptions) { + var _a, _b, _c, _d, _e; + const fetch2 = ((_a = requestOptions.request) == null ? void 0 : _a.fetch) || globalThis.fetch; + if (!fetch2) { + throw new Error( + "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" + ); + } + const log = ((_b = requestOptions.request) == null ? void 0 : _b.log) || console; + const parseSuccessResponseBody = ((_c = requestOptions.request) == null ? void 0 : _c.parseSuccessResponseBody) !== false; + const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body; + const requestHeaders = Object.fromEntries( + Object.entries(requestOptions.headers).map(([name, value]) => [ + name, + String(value) + ]) + ); + let fetchResponse; + try { + fetchResponse = await fetch2(requestOptions.url, { + method: requestOptions.method, + body, + redirect: (_d = requestOptions.request) == null ? void 0 : _d.redirect, + headers: requestHeaders, + signal: (_e = requestOptions.request) == null ? void 0 : _e.signal, + ...requestOptions.body && { duplex: "half" } + }); + } catch (error) { + let message = "Unknown Error"; + if (error instanceof Error) { + if (error.name === "AbortError") { + error.status = 500; + throw error; + } + message = error.message; + if (error.name === "TypeError" && "cause" in error) { + if (error.cause instanceof Error) { + message = error.cause.message; + } else if (typeof error.cause === "string") { + message = error.cause; + } + } + } + const requestError = new RequestError(message, 500, { + request: requestOptions + }); + requestError.cause = error; + throw requestError; + } + const status = fetchResponse.status; + const url = fetchResponse.url; + const responseHeaders = {}; + for (const [key, value] of fetchResponse.headers) { + responseHeaders[key] = value; + } + const octokitResponse = { + url, + status, + headers: responseHeaders, + data: "" + }; + if ("deprecation" in responseHeaders) { + const matches = responseHeaders.link && responseHeaders.link.match(/<([^>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn( + `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` + ); + } + if (status === 204 || status === 205) { + return octokitResponse; + } + if (requestOptions.method === "HEAD") { + if (status < 400) { + return octokitResponse; + } + throw new RequestError(fetchResponse.statusText, status, { + response: octokitResponse, + request: requestOptions + }); + } + if (status === 304) { + octokitResponse.data = await getResponseData(fetchResponse); + throw new RequestError("Not modified", status, { + response: octokitResponse, + request: requestOptions + }); + } + if (status >= 400) { + octokitResponse.data = await getResponseData(fetchResponse); + throw new RequestError(toErrorMessage(octokitResponse.data), status, { + response: octokitResponse, + request: requestOptions + }); + } + octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body; + return octokitResponse; +} +async function getResponseData(response) { + var _a; + const contentType = response.headers.get("content-type"); + if (!contentType) { + return response.text().catch(() => ""); + } + const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType); + if (mimetype.type === "application/json") { + let text = ""; + try { + text = await response.text(); + return JSON.parse(text); + } catch (err) { + return text; + } + } else if (mimetype.type.startsWith("text/") || ((_a = mimetype.parameters.charset) == null ? void 0 : _a.toLowerCase()) === "utf-8") { + return response.text().catch(() => ""); + } else { + return response.arrayBuffer().catch(() => new ArrayBuffer(0)); + } +} +function toErrorMessage(data) { + if (typeof data === "string") { + return data; + } + if (data instanceof ArrayBuffer) { + return "Unknown error"; + } + if ("message" in data) { + const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : ""; + return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`; + } + return `Unknown error: ${JSON.stringify(data)}`; +} +function withDefaults2(oldEndpoint, newDefaults) { + const endpoint2 = oldEndpoint.defaults(newDefaults); + const newApi = function(route, parameters) { + const endpointOptions = endpoint2.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint2.parse(endpointOptions)); + } + const request2 = (route2, parameters2) => { + return fetchWrapper( + endpoint2.parse(endpoint2.merge(route2, parameters2)) + ); + }; + Object.assign(request2, { + endpoint: endpoint2, + defaults: withDefaults2.bind(null, endpoint2) + }); + return endpointOptions.request.hook(request2, endpointOptions); + }; + return Object.assign(newApi, { + endpoint: endpoint2, + defaults: withDefaults2.bind(null, endpoint2) + }); +} +var request = withDefaults2(endpoint, defaults_default); + +// node_modules/@octokit/graphql/dist-bundle/index.js +var VERSION3 = "0.0.0-development"; +function _buildMessageForResponseErrors(data) { + return `Request failed due to following response errors: +` + data.errors.map((e) => ` - ${e.message}`).join("\n"); +} +var GraphqlResponseError = class extends Error { + constructor(request2, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request2; + this.headers = headers; + this.response = response; + this.errors = response.errors; + this.data = response.data; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + name = "GraphqlResponseError"; + errors; + data; +}; +var NON_VARIABLE_OPTIONS = [ + "method", + "baseUrl", + "url", + "headers", + "request", + "query", + "mediaType" +]; +var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request2, query2, options) { + if (options) { + if (typeof query2 === "string" && "query" in options) { + return Promise.reject( + new Error(`[@octokit/graphql] "query" cannot be used as variable name`) + ); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject( + new Error( + `[@octokit/graphql] "${key}" cannot be used as variable name` + ) + ); + } + } + const parsedOptions = typeof query2 === "string" ? Object.assign({ query: query2 }, options) : query2; + const requestOptions = Object.keys( + parsedOptions + ).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + if (!result.variables) { + result.variables = {}; + } + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + return request2(requestOptions).then((response) => { + if (response.data.errors) { + const headers = {}; + for (const key of Object.keys(response.headers)) { + headers[key] = response.headers[key]; + } + throw new GraphqlResponseError( + requestOptions, + headers, + response.data + ); + } + return response.data.data; + }); +} +function withDefaults3(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); + const newApi = (query2, options) => { + return graphql(newRequest, query2, options); + }; + return Object.assign(newApi, { + defaults: withDefaults3.bind(null, newRequest), + endpoint: newRequest.endpoint + }); +} +var graphql2 = withDefaults3(request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION3} ${getUserAgent()}` + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return withDefaults3(customRequest, { + method: "POST", + url: "/graphql" + }); +} + +// node_modules/@octokit/core/node_modules/@octokit/auth-token/dist-bundle/index.js +var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +var REGEX_IS_INSTALLATION = /^ghs_/; +var REGEX_IS_USER_TO_SERVER = /^ghu_/; +async function auth(token) { + const isApp = token.split(/\./).length === 3; + const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); + const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); + const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; + return { + type: "token", + token, + tokenType + }; +} +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + return `token ${token}`; +} +async function hook(token, request2, route, parameters) { + const endpoint2 = request2.endpoint.merge( + route, + parameters + ); + endpoint2.headers.authorization = withAuthorizationPrefix(token); + return request2(endpoint2); +} +var createTokenAuth = function createTokenAuth2(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } + if (typeof token !== "string") { + throw new Error( + "[@octokit/auth-token] Token passed to createTokenAuth is not a string" + ); + } + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; + +// node_modules/@octokit/core/dist-src/version.js +var VERSION4 = "6.1.3"; + +// node_modules/@octokit/core/dist-src/index.js +var noop = () => { +}; +var consoleWarn = console.warn.bind(console); +var consoleError = console.error.bind(console); +var userAgentTrail = `octokit-core.js/${VERSION4} ${getUserAgent()}`; +var Octokit = class { + static defaults(defaults) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + if (typeof defaults === "function") { + super(defaults(options)); + return; + } + super( + Object.assign( + {}, + defaults, + options, + options.userAgent && defaults.userAgent ? { + userAgent: `${options.userAgent} ${defaults.userAgent}` + } : null + ) + ); + } + }; + return OctokitWithDefaults; + } + static plugin(...newPlugins) { + const currentPlugins = this.plugins; + const NewOctokit = class extends this { + static plugins = currentPlugins.concat( + newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) + ); + }; + return NewOctokit; + } + constructor(options = {}) { + const hook2 = new before_after_hook_default.Collection(); + const requestDefaults = { + baseUrl: request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + hook: hook2.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; + requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; + } + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; + } + if (options.timeZone) { + requestDefaults.headers["time-zone"] = options.timeZone; + } + this.request = request.defaults(requestDefaults); + this.graphql = withCustomRequest(this.request).defaults(requestDefaults); + this.log = Object.assign( + { + debug: noop, + info: noop, + warn: consoleWarn, + error: consoleError + }, + options.log + ); + this.hook = hook2; + if (!options.authStrategy) { + if (!options.auth) { + this.auth = async () => ({ + type: "unauthenticated" + }); + } else { + const auth2 = createTokenAuth(options.auth); + hook2.wrap("request", auth2.hook); + this.auth = auth2; + } + } else { + const { authStrategy, ...otherOptions } = options; + const auth2 = authStrategy( + Object.assign( + { + request: this.request, + log: this.log, + octokit: this, + octokitOptions: otherOptions + }, + options.auth + ) + ); + hook2.wrap("request", auth2.hook); + this.auth = auth2; + } + const classConstructor = this.constructor; + for (let i = 0; i < classConstructor.plugins.length; ++i) { + Object.assign(this, classConstructor.plugins[i](this, options)); + } + } + request; + graphql; + log; + hook; + auth; +}; +__publicField(Octokit, "VERSION", VERSION4); +__publicField(Octokit, "plugins", []); + +// node_modules/@octokit/plugin-request-log/dist-src/version.js +var VERSION5 = "5.3.1"; + +// node_modules/@octokit/plugin-request-log/dist-src/index.js +function requestLog(octokit) { + octokit.hook.wrap("request", (request2, options) => { + octokit.log.debug("request", options); + const start = Date.now(); + const requestOptions = octokit.request.endpoint.parse(options); + const path2 = requestOptions.url.replace(options.baseUrl, ""); + return request2(options).then((response) => { + const requestId = response.headers["x-github-request-id"]; + octokit.log.info( + `${requestOptions.method} ${path2} - ${response.status} with id ${requestId} in ${Date.now() - start}ms` + ); + return response; + }).catch((error) => { + var _a; + const requestId = ((_a = error.response) == null ? void 0 : _a.headers["x-github-request-id"]) || "UNKNOWN"; + octokit.log.error( + `${requestOptions.method} ${path2} - ${error.status} with id ${requestId} in ${Date.now() - start}ms` + ); + throw error; + }); + }); +} +requestLog.VERSION = VERSION5; + +// node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js +var VERSION6 = "0.0.0-development"; +function normalizePaginatedListResponse(response) { + if (!response.data) { + return { + ...response, + data: [] + }; + } + const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) + return response; + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + response.data.total_count = totalCount; + return response; +} +function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) + return { done: true }; + try { + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || "").match( + /<([^>]+)>;\s*rel="next"/ + ) || [])[1]; + return { value: normalizedResponse }; + } catch (error) { + if (error.status !== 409) + throw error; + url = ""; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } + } + }) + }; +} +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = void 0; + } + return gather( + octokit, + [], + iterator(octokit, route, parameters)[Symbol.asyncIterator](), + mapFn + ); +} +function gather(octokit, results, iterator2, mapFn) { + return iterator2.next().then((result) => { + if (result.done) { + return results; + } + let earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat( + mapFn ? mapFn(result.value, done) : result.value.data + ); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator2, mapFn); + }); +} +var composePaginateRest = Object.assign(paginate, { + iterator +}); +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION6; + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js +var VERSION7 = "13.3.0"; + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js +var Endpoints = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: [ + "POST /orgs/{org}/actions/runners/{runner_id}/labels" + ], + addCustomLabelsToSelfHostedRunnerForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + addRepoAccessToSelfHostedRunnerGroupInOrg: [ + "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + approveWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" + ], + cancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" + ], + createEnvironmentVariable: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/variables" + ], + createOrUpdateEnvironmentSecret: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" + ], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + createOrgVariable: ["POST /orgs/{org}/actions/variables"], + createRegistrationTokenForOrg: [ + "POST /orgs/{org}/actions/runners/registration-token" + ], + createRegistrationTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/registration-token" + ], + createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], + createRemoveTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/remove-token" + ], + createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], + createWorkflowDispatch: [ + "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" + ], + deleteActionsCacheById: [ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" + ], + deleteActionsCacheByKey: [ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" + ], + deleteArtifact: [ + "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" + ], + deleteEnvironmentSecret: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" + ], + deleteEnvironmentVariable: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], + deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + deleteRepoVariable: [ + "DELETE /repos/{owner}/{repo}/actions/variables/{name}" + ], + deleteSelfHostedRunnerFromOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}" + ], + deleteSelfHostedRunnerFromRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], + deleteWorkflowRunLogs: [ + "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + disableSelectedRepositoryGithubActionsOrganization: [ + "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + disableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" + ], + downloadArtifact: [ + "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" + ], + downloadJobLogsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" + ], + downloadWorkflowRunAttemptLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" + ], + downloadWorkflowRunLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + enableSelectedRepositoryGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + enableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" + ], + forceCancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel" + ], + generateRunnerJitconfigForOrg: [ + "POST /orgs/{org}/actions/runners/generate-jitconfig" + ], + generateRunnerJitconfigForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" + ], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], + getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], + getActionsCacheUsageByRepoForOrg: [ + "GET /orgs/{org}/actions/cache/usage-by-repository" + ], + getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], + getAllowedActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/selected-actions" + ], + getAllowedActionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + getCustomOidcSubClaimForRepo: [ + "GET /repos/{owner}/{repo}/actions/oidc/customization/sub" + ], + getEnvironmentPublicKey: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key" + ], + getEnvironmentSecret: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" + ], + getEnvironmentVariable: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" + ], + getGithubActionsDefaultWorkflowPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions/workflow" + ], + getGithubActionsDefaultWorkflowPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/workflow" + ], + getGithubActionsPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions" + ], + getGithubActionsPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions" + ], + getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], + getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], + getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], + getPendingDeploymentsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + getRepoPermissions: [ + "GET /repos/{owner}/{repo}/actions/permissions", + {}, + { renamed: ["actions", "getGithubActionsPermissionsRepository"] } + ], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], + getReviewsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals" + ], + getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], + getSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], + getWorkflowAccessToRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/access" + ], + getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], + getWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}" + ], + getWorkflowRunUsage: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing" + ], + getWorkflowUsage: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing" + ], + listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], + listEnvironmentSecrets: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets" + ], + listEnvironmentVariables: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/variables" + ], + listJobsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" + ], + listJobsForWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs" + ], + listLabelsForSelfHostedRunnerForOrg: [ + "GET /orgs/{org}/actions/runners/{runner_id}/labels" + ], + listLabelsForSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], + listOrgVariables: ["GET /orgs/{org}/actions/variables"], + listRepoOrganizationSecrets: [ + "GET /repos/{owner}/{repo}/actions/organization-secrets" + ], + listRepoOrganizationVariables: [ + "GET /repos/{owner}/{repo}/actions/organization-variables" + ], + listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], + listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], + listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], + listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], + listRunnerApplicationsForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/downloads" + ], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + listSelectedReposForOrgVariable: [ + "GET /orgs/{org}/actions/variables/{name}/repositories" + ], + listSelectedRepositoriesEnabledGithubActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/repositories" + ], + listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], + listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], + listWorkflowRunArtifacts: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts" + ], + listWorkflowRuns: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs" + ], + listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], + reRunJobForWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun" + ], + reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], + reRunWorkflowFailedJobs: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs" + ], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels" + ], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + removeCustomLabelFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}" + ], + removeCustomLabelFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgVariable: [ + "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + reviewCustomGatesForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule" + ], + reviewPendingDeploymentsForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + setAllowedActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/selected-actions" + ], + setAllowedActionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + setCustomLabelsForSelfHostedRunnerForOrg: [ + "PUT /orgs/{org}/actions/runners/{runner_id}/labels" + ], + setCustomLabelsForSelfHostedRunnerForRepo: [ + "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + setCustomOidcSubClaimForRepo: [ + "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub" + ], + setGithubActionsDefaultWorkflowPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/workflow" + ], + setGithubActionsDefaultWorkflowPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/workflow" + ], + setGithubActionsPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions" + ], + setGithubActionsPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories" + ], + setSelectedRepositoriesEnabledGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories" + ], + setWorkflowAccessToRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/access" + ], + updateEnvironmentVariable: [ + "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" + ], + updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], + updateRepoVariable: [ + "PATCH /repos/{owner}/{repo}/actions/variables/{name}" + ] + }, + activity: { + checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], + deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], + deleteThreadSubscription: [ + "DELETE /notifications/threads/{thread_id}/subscription" + ], + getFeeds: ["GET /feeds"], + getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], + getThread: ["GET /notifications/threads/{thread_id}"], + getThreadSubscriptionForAuthenticatedUser: [ + "GET /notifications/threads/{thread_id}/subscription" + ], + listEventsForAuthenticatedUser: ["GET /users/{username}/events"], + listNotificationsForAuthenticatedUser: ["GET /notifications"], + listOrgEventsForAuthenticatedUser: [ + "GET /users/{username}/events/orgs/{org}" + ], + listPublicEvents: ["GET /events"], + listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], + listPublicEventsForUser: ["GET /users/{username}/events/public"], + listPublicOrgEvents: ["GET /orgs/{org}/events"], + listReceivedEventsForUser: ["GET /users/{username}/received_events"], + listReceivedPublicEventsForUser: [ + "GET /users/{username}/received_events/public" + ], + listRepoEvents: ["GET /repos/{owner}/{repo}/events"], + listRepoNotificationsForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/notifications" + ], + listReposStarredByAuthenticatedUser: ["GET /user/starred"], + listReposStarredByUser: ["GET /users/{username}/starred"], + listReposWatchedByUser: ["GET /users/{username}/subscriptions"], + listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], + listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], + listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], + markNotificationsAsRead: ["PUT /notifications"], + markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], + markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"], + markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], + setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], + setThreadSubscription: [ + "PUT /notifications/threads/{thread_id}/subscription" + ], + starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], + unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] + }, + apps: { + addRepoToInstallation: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] } + ], + addRepoToInstallationForAuthenticatedUser: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}" + ], + checkToken: ["POST /applications/{client_id}/token"], + createFromManifest: ["POST /app-manifests/{code}/conversions"], + createInstallationAccessToken: [ + "POST /app/installations/{installation_id}/access_tokens" + ], + deleteAuthorization: ["DELETE /applications/{client_id}/grant"], + deleteInstallation: ["DELETE /app/installations/{installation_id}"], + deleteToken: ["DELETE /applications/{client_id}/token"], + getAuthenticated: ["GET /app"], + getBySlug: ["GET /apps/{app_slug}"], + getInstallation: ["GET /app/installations/{installation_id}"], + getOrgInstallation: ["GET /orgs/{org}/installation"], + getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], + getSubscriptionPlanForAccount: [ + "GET /marketplace_listing/accounts/{account_id}" + ], + getSubscriptionPlanForAccountStubbed: [ + "GET /marketplace_listing/stubbed/accounts/{account_id}" + ], + getUserInstallation: ["GET /users/{username}/installation"], + getWebhookConfigForApp: ["GET /app/hook/config"], + getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], + listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], + listAccountsForPlanStubbed: [ + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts" + ], + listInstallationReposForAuthenticatedUser: [ + "GET /user/installations/{installation_id}/repositories" + ], + listInstallationRequestsForAuthenticatedApp: [ + "GET /app/installation-requests" + ], + listInstallations: ["GET /app/installations"], + listInstallationsForAuthenticatedUser: ["GET /user/installations"], + listPlans: ["GET /marketplace_listing/plans"], + listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], + listReposAccessibleToInstallation: ["GET /installation/repositories"], + listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], + listSubscriptionsForAuthenticatedUserStubbed: [ + "GET /user/marketplace_purchases/stubbed" + ], + listWebhookDeliveries: ["GET /app/hook/deliveries"], + redeliverWebhookDelivery: [ + "POST /app/hook/deliveries/{delivery_id}/attempts" + ], + removeRepoFromInstallation: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] } + ], + removeRepoFromInstallationForAuthenticatedUser: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}" + ], + resetToken: ["PATCH /applications/{client_id}/token"], + revokeInstallationAccessToken: ["DELETE /installation/token"], + scopeToken: ["POST /applications/{client_id}/token/scoped"], + suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], + unsuspendInstallation: [ + "DELETE /app/installations/{installation_id}/suspended" + ], + updateWebhookConfigForApp: ["PATCH /app/hook/config"] + }, + billing: { + getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], + getGithubActionsBillingUser: [ + "GET /users/{username}/settings/billing/actions" + ], + getGithubBillingUsageReportOrg: [ + "GET /organizations/{org}/settings/billing/usage" + ], + getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], + getGithubPackagesBillingUser: [ + "GET /users/{username}/settings/billing/packages" + ], + getSharedStorageBillingOrg: [ + "GET /orgs/{org}/settings/billing/shared-storage" + ], + getSharedStorageBillingUser: [ + "GET /users/{username}/settings/billing/shared-storage" + ] + }, + checks: { + create: ["POST /repos/{owner}/{repo}/check-runs"], + createSuite: ["POST /repos/{owner}/{repo}/check-suites"], + get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], + getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], + listAnnotations: [ + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations" + ], + listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], + listForSuite: [ + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs" + ], + listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], + rerequestRun: [ + "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest" + ], + rerequestSuite: [ + "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest" + ], + setSuitesPreferences: [ + "PATCH /repos/{owner}/{repo}/check-suites/preferences" + ], + update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] + }, + codeScanning: { + commitAutofix: [ + "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits" + ], + createAutofix: [ + "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix" + ], + createVariantAnalysis: [ + "POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses" + ], + deleteAnalysis: [ + "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}" + ], + deleteCodeqlDatabase: [ + "DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + ], + getAlert: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", + {}, + { renamedParameters: { alert_id: "alert_number" } } + ], + getAnalysis: [ + "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}" + ], + getAutofix: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix" + ], + getCodeqlDatabase: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + ], + getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], + getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], + getVariantAnalysis: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}" + ], + getVariantAnalysisRepoTask: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}" + ], + listAlertInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances" + ], + listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], + listAlertsInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", + {}, + { renamed: ["codeScanning", "listAlertInstances"] } + ], + listCodeqlDatabases: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases" + ], + listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}" + ], + updateDefaultSetup: [ + "PATCH /repos/{owner}/{repo}/code-scanning/default-setup" + ], + uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] + }, + codeSecurity: { + attachConfiguration: [ + "POST /orgs/{org}/code-security/configurations/{configuration_id}/attach" + ], + attachEnterpriseConfiguration: [ + "POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach" + ], + createConfiguration: ["POST /orgs/{org}/code-security/configurations"], + createConfigurationForEnterprise: [ + "POST /enterprises/{enterprise}/code-security/configurations" + ], + deleteConfiguration: [ + "DELETE /orgs/{org}/code-security/configurations/{configuration_id}" + ], + deleteConfigurationForEnterprise: [ + "DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}" + ], + detachConfiguration: [ + "DELETE /orgs/{org}/code-security/configurations/detach" + ], + getConfiguration: [ + "GET /orgs/{org}/code-security/configurations/{configuration_id}" + ], + getConfigurationForRepository: [ + "GET /repos/{owner}/{repo}/code-security-configuration" + ], + getConfigurationsForEnterprise: [ + "GET /enterprises/{enterprise}/code-security/configurations" + ], + getConfigurationsForOrg: ["GET /orgs/{org}/code-security/configurations"], + getDefaultConfigurations: [ + "GET /orgs/{org}/code-security/configurations/defaults" + ], + getDefaultConfigurationsForEnterprise: [ + "GET /enterprises/{enterprise}/code-security/configurations/defaults" + ], + getRepositoriesForConfiguration: [ + "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories" + ], + getRepositoriesForEnterpriseConfiguration: [ + "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories" + ], + getSingleConfigurationForEnterprise: [ + "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}" + ], + setConfigurationAsDefault: [ + "PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults" + ], + setConfigurationAsDefaultForEnterprise: [ + "PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults" + ], + updateConfiguration: [ + "PATCH /orgs/{org}/code-security/configurations/{configuration_id}" + ], + updateEnterpriseConfiguration: [ + "PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}" + ] + }, + codesOfConduct: { + getAllCodesOfConduct: ["GET /codes_of_conduct"], + getConductCode: ["GET /codes_of_conduct/{key}"] + }, + codespaces: { + addRepositoryForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + checkPermissionsForDevcontainer: [ + "GET /repos/{owner}/{repo}/codespaces/permissions_check" + ], + codespaceMachinesForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/machines" + ], + createForAuthenticatedUser: ["POST /user/codespaces"], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + createOrUpdateSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}" + ], + createWithPrForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces" + ], + createWithRepoForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/codespaces" + ], + deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: [ + "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + deleteSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}" + ], + exportForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/exports" + ], + getCodespacesForUserInOrg: [ + "GET /orgs/{org}/members/{username}/codespaces" + ], + getExportDetailsForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/exports/{export_id}" + ], + getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], + getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], + getPublicKeyForAuthenticatedUser: [ + "GET /user/codespaces/secrets/public-key" + ], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + getSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}" + ], + listDevcontainersInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/devcontainers" + ], + listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: [ + "GET /orgs/{org}/codespaces", + {}, + { renamedParameters: { org_id: "org" } } + ], + listInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces" + ], + listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], + listRepositoriesForSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}/repositories" + ], + listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + preFlightWithRepoForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/new" + ], + publishForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/publish" + ], + removeRepositoryForSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + repoMachinesForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/machines" + ], + setRepositoriesForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], + stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: [ + "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop" + ], + updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] + }, + copilot: { + addCopilotSeatsForTeams: [ + "POST /orgs/{org}/copilot/billing/selected_teams" + ], + addCopilotSeatsForUsers: [ + "POST /orgs/{org}/copilot/billing/selected_users" + ], + cancelCopilotSeatAssignmentForTeams: [ + "DELETE /orgs/{org}/copilot/billing/selected_teams" + ], + cancelCopilotSeatAssignmentForUsers: [ + "DELETE /orgs/{org}/copilot/billing/selected_users" + ], + copilotMetricsForOrganization: ["GET /orgs/{org}/copilot/metrics"], + copilotMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/metrics"], + getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], + getCopilotSeatDetailsForUser: [ + "GET /orgs/{org}/members/{username}/copilot" + ], + listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"], + usageMetricsForOrg: ["GET /orgs/{org}/copilot/usage"], + usageMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/usage"] + }, + dependabot: { + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], + getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/dependabot/alerts" + ], + listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], + listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}" + ] + }, + dependencyGraph: { + createRepositorySnapshot: [ + "POST /repos/{owner}/{repo}/dependency-graph/snapshots" + ], + diffRange: [ + "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}" + ], + exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"] + }, + emojis: { get: ["GET /emojis"] }, + gists: { + checkIsStarred: ["GET /gists/{gist_id}/star"], + create: ["POST /gists"], + createComment: ["POST /gists/{gist_id}/comments"], + delete: ["DELETE /gists/{gist_id}"], + deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], + fork: ["POST /gists/{gist_id}/forks"], + get: ["GET /gists/{gist_id}"], + getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], + getRevision: ["GET /gists/{gist_id}/{sha}"], + list: ["GET /gists"], + listComments: ["GET /gists/{gist_id}/comments"], + listCommits: ["GET /gists/{gist_id}/commits"], + listForUser: ["GET /users/{username}/gists"], + listForks: ["GET /gists/{gist_id}/forks"], + listPublic: ["GET /gists/public"], + listStarred: ["GET /gists/starred"], + star: ["PUT /gists/{gist_id}/star"], + unstar: ["DELETE /gists/{gist_id}/star"], + update: ["PATCH /gists/{gist_id}"], + updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] + }, + git: { + createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], + createCommit: ["POST /repos/{owner}/{repo}/git/commits"], + createRef: ["POST /repos/{owner}/{repo}/git/refs"], + createTag: ["POST /repos/{owner}/{repo}/git/tags"], + createTree: ["POST /repos/{owner}/{repo}/git/trees"], + deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], + getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], + getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], + getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], + getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], + getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], + listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], + updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] + }, + gitignore: { + getAllTemplates: ["GET /gitignore/templates"], + getTemplate: ["GET /gitignore/templates/{name}"] + }, + interactions: { + getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], + getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], + getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], + getRestrictionsForYourPublicRepos: [ + "GET /user/interaction-limits", + {}, + { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] } + ], + removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], + removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], + removeRestrictionsForRepo: [ + "DELETE /repos/{owner}/{repo}/interaction-limits" + ], + removeRestrictionsForYourPublicRepos: [ + "DELETE /user/interaction-limits", + {}, + { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] } + ], + setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], + setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], + setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], + setRestrictionsForYourPublicRepos: [ + "PUT /user/interaction-limits", + {}, + { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] } + ] + }, + issues: { + addAssignees: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], + addSubIssue: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues" + ], + checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], + checkUserCanBeAssignedToIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}" + ], + create: ["POST /repos/{owner}/{repo}/issues"], + createComment: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/comments" + ], + createLabel: ["POST /repos/{owner}/{repo}/labels"], + createMilestone: ["POST /repos/{owner}/{repo}/milestones"], + deleteComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}" + ], + deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], + deleteMilestone: [ + "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}" + ], + get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], + getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], + getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], + getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], + getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], + list: ["GET /issues"], + listAssignees: ["GET /repos/{owner}/{repo}/assignees"], + listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], + listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], + listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], + listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], + listEventsForTimeline: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline" + ], + listForAuthenticatedUser: ["GET /user/issues"], + listForOrg: ["GET /orgs/{org}/issues"], + listForRepo: ["GET /repos/{owner}/{repo}/issues"], + listLabelsForMilestone: [ + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels" + ], + listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], + listLabelsOnIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + listMilestones: ["GET /repos/{owner}/{repo}/milestones"], + listSubIssues: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues" + ], + lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], + removeAllLabels: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + removeAssignees: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + removeLabel: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}" + ], + removeSubIssue: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue" + ], + reprioritizeSubIssue: [ + "PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority" + ], + setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], + unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], + update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], + updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], + updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], + updateMilestone: [ + "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}" + ] + }, + licenses: { + get: ["GET /licenses/{license}"], + getAllCommonlyUsed: ["GET /licenses"], + getForRepo: ["GET /repos/{owner}/{repo}/license"] + }, + markdown: { + render: ["POST /markdown"], + renderRaw: [ + "POST /markdown/raw", + { headers: { "content-type": "text/plain; charset=utf-8" } } + ] + }, + meta: { + get: ["GET /meta"], + getAllVersions: ["GET /versions"], + getOctocat: ["GET /octocat"], + getZen: ["GET /zen"], + root: ["GET /"] + }, + migrations: { + deleteArchiveForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/archive" + ], + deleteArchiveForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/archive" + ], + downloadArchiveForOrg: [ + "GET /orgs/{org}/migrations/{migration_id}/archive" + ], + getArchiveForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/archive" + ], + getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], + getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], + listForAuthenticatedUser: ["GET /user/migrations"], + listForOrg: ["GET /orgs/{org}/migrations"], + listReposForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/repositories" + ], + listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], + listReposForUser: [ + "GET /user/migrations/{migration_id}/repositories", + {}, + { renamed: ["migrations", "listReposForAuthenticatedUser"] } + ], + startForAuthenticatedUser: ["POST /user/migrations"], + startForOrg: ["POST /orgs/{org}/migrations"], + unlockRepoForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock" + ], + unlockRepoForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock" + ] + }, + oidc: { + getOidcCustomSubTemplateForOrg: [ + "GET /orgs/{org}/actions/oidc/customization/sub" + ], + updateOidcCustomSubTemplateForOrg: [ + "PUT /orgs/{org}/actions/oidc/customization/sub" + ] + }, + orgs: { + addSecurityManagerTeam: [ + "PUT /orgs/{org}/security-managers/teams/{team_slug}", + {}, + { + deprecated: "octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team" + } + ], + assignTeamToOrgRole: [ + "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}" + ], + assignUserToOrgRole: [ + "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}" + ], + blockUser: ["PUT /orgs/{org}/blocks/{username}"], + cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], + checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], + checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], + checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], + convertMemberToOutsideCollaborator: [ + "PUT /orgs/{org}/outside_collaborators/{username}" + ], + createInvitation: ["POST /orgs/{org}/invitations"], + createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"], + createOrUpdateCustomPropertiesValuesForRepos: [ + "PATCH /orgs/{org}/properties/values" + ], + createOrUpdateCustomProperty: [ + "PUT /orgs/{org}/properties/schema/{custom_property_name}" + ], + createWebhook: ["POST /orgs/{org}/hooks"], + delete: ["DELETE /orgs/{org}"], + deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], + enableOrDisableSecurityProductOnAllOrgRepos: [ + "POST /orgs/{org}/{security_product}/{enablement}", + {}, + { + deprecated: "octokit.rest.orgs.enableOrDisableSecurityProductOnAllOrgRepos() is deprecated, see https://docs.github.com/rest/orgs/orgs#enable-or-disable-a-security-feature-for-an-organization" + } + ], + get: ["GET /orgs/{org}"], + getAllCustomProperties: ["GET /orgs/{org}/properties/schema"], + getCustomProperty: [ + "GET /orgs/{org}/properties/schema/{custom_property_name}" + ], + getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], + getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], + getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"], + getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], + getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], + getWebhookDelivery: [ + "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + list: ["GET /organizations"], + listAppInstallations: ["GET /orgs/{org}/installations"], + listAttestations: ["GET /orgs/{org}/attestations/{subject_digest}"], + listBlockedUsers: ["GET /orgs/{org}/blocks"], + listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"], + listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], + listForAuthenticatedUser: ["GET /user/orgs"], + listForUser: ["GET /users/{username}/orgs"], + listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], + listMembers: ["GET /orgs/{org}/members"], + listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], + listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"], + listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"], + listOrgRoles: ["GET /orgs/{org}/organization-roles"], + listOrganizationFineGrainedPermissions: [ + "GET /orgs/{org}/organization-fine-grained-permissions" + ], + listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], + listPatGrantRepositories: [ + "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories" + ], + listPatGrantRequestRepositories: [ + "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories" + ], + listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], + listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], + listPendingInvitations: ["GET /orgs/{org}/invitations"], + listPublicMembers: ["GET /orgs/{org}/public_members"], + listSecurityManagerTeams: [ + "GET /orgs/{org}/security-managers", + {}, + { + deprecated: "octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams" + } + ], + listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /orgs/{org}/hooks"], + pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: [ + "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeCustomProperty: [ + "DELETE /orgs/{org}/properties/schema/{custom_property_name}" + ], + removeMember: ["DELETE /orgs/{org}/members/{username}"], + removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], + removeOutsideCollaborator: [ + "DELETE /orgs/{org}/outside_collaborators/{username}" + ], + removePublicMembershipForAuthenticatedUser: [ + "DELETE /orgs/{org}/public_members/{username}" + ], + removeSecurityManagerTeam: [ + "DELETE /orgs/{org}/security-managers/teams/{team_slug}", + {}, + { + deprecated: "octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team" + } + ], + reviewPatGrantRequest: [ + "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}" + ], + reviewPatGrantRequestsInBulk: [ + "POST /orgs/{org}/personal-access-token-requests" + ], + revokeAllOrgRolesTeam: [ + "DELETE /orgs/{org}/organization-roles/teams/{team_slug}" + ], + revokeAllOrgRolesUser: [ + "DELETE /orgs/{org}/organization-roles/users/{username}" + ], + revokeOrgRoleTeam: [ + "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}" + ], + revokeOrgRoleUser: [ + "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}" + ], + setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], + setPublicMembershipForAuthenticatedUser: [ + "PUT /orgs/{org}/public_members/{username}" + ], + unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], + update: ["PATCH /orgs/{org}"], + updateMembershipForAuthenticatedUser: [ + "PATCH /user/memberships/orgs/{org}" + ], + updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], + updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], + updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], + updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] + }, + packages: { + deletePackageForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}" + ], + deletePackageForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}" + ], + deletePackageForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}" + ], + deletePackageVersionForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getAllPackageVersionsForAPackageOwnedByAnOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", + {}, + { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] } + ], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions", + {}, + { + renamed: [ + "packages", + "getAllPackageVersionsForPackageOwnedByAuthenticatedUser" + ] + } + ], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions" + ], + getPackageForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}" + ], + getPackageForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}" + ], + getPackageForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}" + ], + getPackageVersionForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + listDockerMigrationConflictingPackagesForAuthenticatedUser: [ + "GET /user/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForOrganization: [ + "GET /orgs/{org}/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForUser: [ + "GET /users/{username}/docker/conflicts" + ], + listPackagesForAuthenticatedUser: ["GET /user/packages"], + listPackagesForOrganization: ["GET /orgs/{org}/packages"], + listPackagesForUser: ["GET /users/{username}/packages"], + restorePackageForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageVersionForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ] + }, + privateRegistries: { + createOrgPrivateRegistry: ["POST /orgs/{org}/private-registries"], + deleteOrgPrivateRegistry: [ + "DELETE /orgs/{org}/private-registries/{secret_name}" + ], + getOrgPrivateRegistry: ["GET /orgs/{org}/private-registries/{secret_name}"], + getOrgPublicKey: ["GET /orgs/{org}/private-registries/public-key"], + listOrgPrivateRegistries: ["GET /orgs/{org}/private-registries"], + updateOrgPrivateRegistry: [ + "PATCH /orgs/{org}/private-registries/{secret_name}" + ] + }, + projects: { + addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], + createCard: ["POST /projects/columns/{column_id}/cards"], + createColumn: ["POST /projects/{project_id}/columns"], + createForAuthenticatedUser: ["POST /user/projects"], + createForOrg: ["POST /orgs/{org}/projects"], + createForRepo: ["POST /repos/{owner}/{repo}/projects"], + delete: ["DELETE /projects/{project_id}"], + deleteCard: ["DELETE /projects/columns/cards/{card_id}"], + deleteColumn: ["DELETE /projects/columns/{column_id}"], + get: ["GET /projects/{project_id}"], + getCard: ["GET /projects/columns/cards/{card_id}"], + getColumn: ["GET /projects/columns/{column_id}"], + getPermissionForUser: [ + "GET /projects/{project_id}/collaborators/{username}/permission" + ], + listCards: ["GET /projects/columns/{column_id}/cards"], + listCollaborators: ["GET /projects/{project_id}/collaborators"], + listColumns: ["GET /projects/{project_id}/columns"], + listForOrg: ["GET /orgs/{org}/projects"], + listForRepo: ["GET /repos/{owner}/{repo}/projects"], + listForUser: ["GET /users/{username}/projects"], + moveCard: ["POST /projects/columns/cards/{card_id}/moves"], + moveColumn: ["POST /projects/columns/{column_id}/moves"], + removeCollaborator: [ + "DELETE /projects/{project_id}/collaborators/{username}" + ], + update: ["PATCH /projects/{project_id}"], + updateCard: ["PATCH /projects/columns/cards/{card_id}"], + updateColumn: ["PATCH /projects/columns/{column_id}"] + }, + pulls: { + checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + create: ["POST /repos/{owner}/{repo}/pulls"], + createReplyForReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies" + ], + createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + createReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + deletePendingReview: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + deleteReviewComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ], + dismissReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals" + ], + get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], + getReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + list: ["GET /repos/{owner}/{repo}/pulls"], + listCommentsForReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments" + ], + listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], + listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], + listRequestedReviewers: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + listReviewComments: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], + listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + removeRequestedReviewers: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + requestReviewers: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + submitReview: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events" + ], + update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], + updateBranch: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch" + ], + updateReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + updateReviewComment: [ + "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ] + }, + rateLimit: { get: ["GET /rate_limit"] }, + reactions: { + createForCommitComment: [ + "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + createForIssue: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions" + ], + createForIssueComment: [ + "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + createForPullRequestReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + createForRelease: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + createForTeamDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + createForTeamDiscussionInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ], + deleteForCommitComment: [ + "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForIssue: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}" + ], + deleteForIssueComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForPullRequestComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForRelease: [ + "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}" + ], + deleteForTeamDiscussion: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}" + ], + deleteForTeamDiscussionComment: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}" + ], + listForCommitComment: [ + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + listForIssueComment: [ + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + listForPullRequestReviewComment: [ + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + listForRelease: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + listForTeamDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + listForTeamDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ] + }, + repos: { + acceptInvitation: [ + "PATCH /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] } + ], + acceptInvitationForAuthenticatedUser: [ + "PATCH /user/repository_invitations/{invitation_id}" + ], + addAppAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], + addStatusCheckContexts: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + addTeamAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + addUserAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + cancelPagesDeployment: [ + "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel" + ], + checkAutomatedSecurityFixes: [ + "GET /repos/{owner}/{repo}/automated-security-fixes" + ], + checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], + checkPrivateVulnerabilityReporting: [ + "GET /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + checkVulnerabilityAlerts: [ + "GET /repos/{owner}/{repo}/vulnerability-alerts" + ], + codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], + compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], + compareCommitsWithBasehead: [ + "GET /repos/{owner}/{repo}/compare/{basehead}" + ], + createAttestation: ["POST /repos/{owner}/{repo}/attestations"], + createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], + createCommitComment: [ + "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + createCommitSignatureProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], + createDeployKey: ["POST /repos/{owner}/{repo}/keys"], + createDeployment: ["POST /repos/{owner}/{repo}/deployments"], + createDeploymentBranchPolicy: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + createDeploymentProtectionRule: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + createDeploymentStatus: [ + "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], + createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], + createForAuthenticatedUser: ["POST /user/repos"], + createFork: ["POST /repos/{owner}/{repo}/forks"], + createInOrg: ["POST /orgs/{org}/repos"], + createOrUpdateCustomPropertiesValues: [ + "PATCH /repos/{owner}/{repo}/properties/values" + ], + createOrUpdateEnvironment: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}" + ], + createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], + createOrgRuleset: ["POST /orgs/{org}/rulesets"], + createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"], + createPagesSite: ["POST /repos/{owner}/{repo}/pages"], + createRelease: ["POST /repos/{owner}/{repo}/releases"], + createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], + createUsingTemplate: [ + "POST /repos/{template_owner}/{template_repo}/generate" + ], + createWebhook: ["POST /repos/{owner}/{repo}/hooks"], + declineInvitation: [ + "DELETE /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "declineInvitationForAuthenticatedUser"] } + ], + declineInvitationForAuthenticatedUser: [ + "DELETE /user/repository_invitations/{invitation_id}" + ], + delete: ["DELETE /repos/{owner}/{repo}"], + deleteAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + deleteAdminBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + deleteAnEnvironment: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}" + ], + deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], + deleteBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection" + ], + deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], + deleteCommitSignatureProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], + deleteDeployment: [ + "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}" + ], + deleteDeploymentBranchPolicy: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], + deleteInvitation: [ + "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], + deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], + deletePullRequestReviewProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], + deleteReleaseAsset: [ + "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], + disableAutomatedSecurityFixes: [ + "DELETE /repos/{owner}/{repo}/automated-security-fixes" + ], + disableDeploymentProtectionRule: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + disablePrivateVulnerabilityReporting: [ + "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + disableVulnerabilityAlerts: [ + "DELETE /repos/{owner}/{repo}/vulnerability-alerts" + ], + downloadArchive: [ + "GET /repos/{owner}/{repo}/zipball/{ref}", + {}, + { renamed: ["repos", "downloadZipballArchive"] } + ], + downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], + downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], + enableAutomatedSecurityFixes: [ + "PUT /repos/{owner}/{repo}/automated-security-fixes" + ], + enablePrivateVulnerabilityReporting: [ + "PUT /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + enableVulnerabilityAlerts: [ + "PUT /repos/{owner}/{repo}/vulnerability-alerts" + ], + generateReleaseNotes: [ + "POST /repos/{owner}/{repo}/releases/generate-notes" + ], + get: ["GET /repos/{owner}/{repo}"], + getAccessRestrictions: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + getAdminBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + getAllDeploymentProtectionRules: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], + getAllStatusCheckContexts: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts" + ], + getAllTopics: ["GET /repos/{owner}/{repo}/topics"], + getAppsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps" + ], + getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], + getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], + getBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection" + ], + getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], + getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], + getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], + getCollaboratorPermissionLevel: [ + "GET /repos/{owner}/{repo}/collaborators/{username}/permission" + ], + getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], + getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], + getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], + getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], + getCommitSignatureProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], + getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], + getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], + getCustomDeploymentProtectionRule: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"], + getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], + getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], + getDeploymentBranchPolicy: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + getDeploymentStatus: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}" + ], + getEnvironment: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}" + ], + getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], + getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], + getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"], + getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"], + getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], + getOrgRulesets: ["GET /orgs/{org}/rulesets"], + getPages: ["GET /repos/{owner}/{repo}/pages"], + getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], + getPagesDeployment: [ + "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}" + ], + getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], + getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], + getPullRequestReviewProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], + getReadme: ["GET /repos/{owner}/{repo}/readme"], + getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], + getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], + getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], + getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], + getRepoRuleSuite: [ + "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}" + ], + getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], + getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], + getStatusChecksProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + getTeamsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams" + ], + getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], + getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], + getUsersWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users" + ], + getViews: ["GET /repos/{owner}/{repo}/traffic/views"], + getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], + getWebhookConfigForRepo: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + getWebhookDelivery: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + listActivities: ["GET /repos/{owner}/{repo}/activity"], + listAttestations: [ + "GET /repos/{owner}/{repo}/attestations/{subject_digest}" + ], + listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], + listBranches: ["GET /repos/{owner}/{repo}/branches"], + listBranchesForHeadCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head" + ], + listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], + listCommentsForCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], + listCommitStatusesForRef: [ + "GET /repos/{owner}/{repo}/commits/{ref}/statuses" + ], + listCommits: ["GET /repos/{owner}/{repo}/commits"], + listContributors: ["GET /repos/{owner}/{repo}/contributors"], + listCustomDeploymentRuleIntegrations: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps" + ], + listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], + listDeploymentBranchPolicies: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + listDeploymentStatuses: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], + listDeployments: ["GET /repos/{owner}/{repo}/deployments"], + listForAuthenticatedUser: ["GET /user/repos"], + listForOrg: ["GET /orgs/{org}/repos"], + listForUser: ["GET /users/{username}/repos"], + listForks: ["GET /repos/{owner}/{repo}/forks"], + listInvitations: ["GET /repos/{owner}/{repo}/invitations"], + listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], + listLanguages: ["GET /repos/{owner}/{repo}/languages"], + listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], + listPublic: ["GET /repositories"], + listPullRequestsAssociatedWithCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls" + ], + listReleaseAssets: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/assets" + ], + listReleases: ["GET /repos/{owner}/{repo}/releases"], + listTags: ["GET /repos/{owner}/{repo}/tags"], + listTeams: ["GET /repos/{owner}/{repo}/teams"], + listWebhookDeliveries: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries" + ], + listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], + merge: ["POST /repos/{owner}/{repo}/merges"], + mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], + pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: [ + "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeAppAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + removeCollaborator: [ + "DELETE /repos/{owner}/{repo}/collaborators/{username}" + ], + removeStatusCheckContexts: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + removeStatusCheckProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + removeTeamAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + removeUserAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], + replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], + requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], + setAdminBranchProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + setAppAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + setStatusCheckContexts: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + setTeamAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + setUserAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], + transfer: ["POST /repos/{owner}/{repo}/transfer"], + update: ["PATCH /repos/{owner}/{repo}"], + updateBranchProtection: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection" + ], + updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], + updateDeploymentBranchPolicy: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], + updateInvitation: [ + "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], + updatePullRequestReviewProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], + updateReleaseAsset: [ + "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + updateStatusCheckPotection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", + {}, + { renamed: ["repos", "updateStatusCheckProtection"] } + ], + updateStatusCheckProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], + updateWebhookConfigForRepo: [ + "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + uploadReleaseAsset: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", + { baseUrl: "https://uploads.github.com" } + ] + }, + search: { + code: ["GET /search/code"], + commits: ["GET /search/commits"], + issuesAndPullRequests: ["GET /search/issues"], + labels: ["GET /search/labels"], + repos: ["GET /search/repositories"], + topics: ["GET /search/topics"], + users: ["GET /search/users"] + }, + secretScanning: { + createPushProtectionBypass: [ + "POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses" + ], + getAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ], + getScanHistory: ["GET /repos/{owner}/{repo}/secret-scanning/scan-history"], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/secret-scanning/alerts" + ], + listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], + listLocationsForAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ] + }, + securityAdvisories: { + createFork: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks" + ], + createPrivateVulnerabilityReport: [ + "POST /repos/{owner}/{repo}/security-advisories/reports" + ], + createRepositoryAdvisory: [ + "POST /repos/{owner}/{repo}/security-advisories" + ], + createRepositoryAdvisoryCveRequest: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" + ], + getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], + getRepositoryAdvisory: [ + "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ], + listGlobalAdvisories: ["GET /advisories"], + listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], + listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], + updateRepositoryAdvisory: [ + "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ] + }, + teams: { + addOrUpdateMembershipForUserInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + addOrUpdateProjectPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + addOrUpdateRepoPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + checkPermissionsForProjectInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + checkPermissionsForRepoInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + create: ["POST /orgs/{org}/teams"], + createDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], + deleteDiscussionCommentInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + deleteDiscussionInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], + getByName: ["GET /orgs/{org}/teams/{team_slug}"], + getDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + getDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + getMembershipForUserInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + list: ["GET /orgs/{org}/teams"], + listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], + listDiscussionCommentsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], + listForAuthenticatedUser: ["GET /user/teams"], + listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], + listPendingInvitationsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/invitations" + ], + listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], + listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], + removeMembershipForUserInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + removeProjectInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + removeRepoInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + updateDiscussionCommentInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + updateDiscussionInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] + }, + users: { + addEmailForAuthenticated: [ + "POST /user/emails", + {}, + { renamed: ["users", "addEmailForAuthenticatedUser"] } + ], + addEmailForAuthenticatedUser: ["POST /user/emails"], + addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], + block: ["PUT /user/blocks/{username}"], + checkBlocked: ["GET /user/blocks/{username}"], + checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], + checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], + createGpgKeyForAuthenticated: [ + "POST /user/gpg_keys", + {}, + { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } + ], + createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], + createPublicSshKeyForAuthenticated: [ + "POST /user/keys", + {}, + { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } + ], + createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteEmailForAuthenticated: [ + "DELETE /user/emails", + {}, + { renamed: ["users", "deleteEmailForAuthenticatedUser"] } + ], + deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], + deleteGpgKeyForAuthenticated: [ + "DELETE /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } + ], + deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], + deletePublicSshKeyForAuthenticated: [ + "DELETE /user/keys/{key_id}", + {}, + { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } + ], + deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], + deleteSshSigningKeyForAuthenticatedUser: [ + "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + follow: ["PUT /user/following/{username}"], + getAuthenticated: ["GET /user"], + getById: ["GET /user/{account_id}"], + getByUsername: ["GET /users/{username}"], + getContextForUser: ["GET /users/{username}/hovercard"], + getGpgKeyForAuthenticated: [ + "GET /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } + ], + getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], + getPublicSshKeyForAuthenticated: [ + "GET /user/keys/{key_id}", + {}, + { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } + ], + getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: [ + "GET /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + list: ["GET /users"], + listAttestations: ["GET /users/{username}/attestations/{subject_digest}"], + listBlockedByAuthenticated: [ + "GET /user/blocks", + {}, + { renamed: ["users", "listBlockedByAuthenticatedUser"] } + ], + listBlockedByAuthenticatedUser: ["GET /user/blocks"], + listEmailsForAuthenticated: [ + "GET /user/emails", + {}, + { renamed: ["users", "listEmailsForAuthenticatedUser"] } + ], + listEmailsForAuthenticatedUser: ["GET /user/emails"], + listFollowedByAuthenticated: [ + "GET /user/following", + {}, + { renamed: ["users", "listFollowedByAuthenticatedUser"] } + ], + listFollowedByAuthenticatedUser: ["GET /user/following"], + listFollowersForAuthenticatedUser: ["GET /user/followers"], + listFollowersForUser: ["GET /users/{username}/followers"], + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: [ + "GET /user/gpg_keys", + {}, + { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } + ], + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: [ + "GET /user/public_emails", + {}, + { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } + ], + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: [ + "GET /user/keys", + {}, + { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } + ], + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], + listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: [ + "PATCH /user/email/visibility", + {}, + { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } + ], + setPrimaryEmailVisibilityForAuthenticatedUser: [ + "PATCH /user/email/visibility" + ], + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] + } +}; +var endpoints_default = Endpoints; + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js +var endpointMethodsMap = /* @__PURE__ */ new Map(); +for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint2] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint2; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { + method, + url + }, + defaults + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); + } + endpointMethodsMap.get(scope).set(methodName, { + scope, + methodName, + endpointDefaults, + decorations + }); + } +} +var handler = { + has({ scope }, methodName) { + return endpointMethodsMap.get(scope).has(methodName); + }, + getOwnPropertyDescriptor(target, methodName) { + return { + value: this.get(target, methodName), + configurable: true, + writable: true, + enumerable: true + }; + }, + defineProperty(target, methodName, descriptor) { + Object.defineProperty(target.cache, methodName, descriptor); + return true; + }, + deleteProperty(target, methodName) { + delete target.cache[methodName]; + return true; + }, + ownKeys({ scope }) { + return [...endpointMethodsMap.get(scope).keys()]; + }, + set(target, methodName, value) { + return target.cache[methodName] = value; + }, + get({ octokit, scope, cache }, methodName) { + if (cache[methodName]) { + return cache[methodName]; + } + const method = endpointMethodsMap.get(scope).get(methodName); + if (!method) { + return void 0; + } + const { endpointDefaults, decorations } = method; + if (decorations) { + cache[methodName] = decorate( + octokit, + scope, + methodName, + endpointDefaults, + decorations + ); + } else { + cache[methodName] = octokit.request.defaults(endpointDefaults); + } + return cache[methodName]; + } +}; +function endpointsToMethods(octokit) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); + } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + function withDecorations(...args) { + let options = requestWithDefaults.endpoint.merge(...args); + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: void 0 + }); + return requestWithDefaults(options); + } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn( + `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` + ); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries( + decorations.renamedParameters + )) { + if (name in options2) { + octokit.log.warn( + `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` + ); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); + } + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); +} + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION7; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION7; + +// node_modules/@octokit/rest/dist-src/version.js +var VERSION8 = "21.1.0"; + +// node_modules/@octokit/rest/dist-src/index.js +var Octokit2 = Octokit.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults( + { + userAgent: `octokit-rest.js/${VERSION8}` + } +); + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/github.js +var import_typed_graphqlify = __toESM(require_dist()); +var GithubClient = class { + constructor(_octokitOptions) { + this._octokitOptions = _octokitOptions; + this._octokit = new Octokit2({ ...this._octokitOptions }); + this.pulls = this._octokit.pulls; + this.orgs = this._octokit.orgs; + this.repos = this._octokit.repos; + this.issues = this._octokit.issues; + this.git = this._octokit.git; + this.rateLimit = this._octokit.rateLimit; + this.teams = this._octokit.teams; + this.search = this._octokit.search; + this.rest = this._octokit.rest; + this.paginate = this._octokit.paginate; + this.checks = this._octokit.checks; + } +}; +var AuthenticatedGithubClient = class extends GithubClient { + constructor(_token) { + super({ auth: _token }); + this._token = _token; + this._graphql = this._octokit.graphql.defaults({ + headers: { authorization: `token ${this._token}` } + }); + } + async graphql(queryObject, params2 = {}) { + return await this._graphql((0, import_typed_graphqlify.query)(queryObject).toString(), params2); + } +}; +function isGithubApiError(obj) { + return obj instanceof Error && obj.constructor.name === "RequestError" && obj.request !== void 0; +} + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/dry-run.js +function addDryRunFlag(args) { + return args.option("dry-run", { + type: "boolean", + default: false, + description: "Whether to do a dry run", + coerce: (dryRun) => { + if (dryRun) { + process.env["DRY_RUN"] = "1"; + } + return dryRun; + } + }); +} +function isDryRun() { + return process.env["DRY_RUN"] !== void 0; +} +var DryRunError = class extends Error { + constructor() { + super("Cannot call this function in dryRun mode."); + } +}; + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/git-client.js +import { spawnSync } from "child_process"; + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/github-urls.js +import { URL } from "url"; +var GITHUB_TOKEN_SETTINGS_URL = "https://github.com/settings/tokens"; +var GITHUB_TOKEN_GENERATE_URL = "https://github.com/settings/tokens/new"; +function addTokenToGitHttpsUrl(githubHttpsUrl, token) { + const url = new URL(githubHttpsUrl); + url.password = token; + url.username = "x-access-token"; + return url.href; +} +function getRepositoryGitUrl(config, githubToken) { + if (config.useSsh) { + return `git@github.com:${config.owner}/${config.name}.git`; + } + const baseHttpUrl = `https://github.com/${config.owner}/${config.name}.git`; + if (githubToken !== void 0) { + return addTokenToGitHttpsUrl(baseHttpUrl, githubToken); + } + return baseHttpUrl; +} +function getListCommitsInBranchUrl(client, branchName) { + const { owner, repo } = client.remoteParams; + return `https://github.com/${owner}/${repo}/commits/${branchName}`; +} +function getFileContentsUrl(client, ref, relativeFilePath) { + const { owner, repo } = client.remoteParams; + return `https://github.com/${owner}/${repo}/blob/${ref}/${relativeFilePath}`; +} + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/git-client.js +var GitCommandError = class extends Error { + constructor(client, unsanitizedArgs) { + super(`Command failed: git ${client.sanitizeConsoleOutput(unsanitizedArgs.join(" "))}`); + } +}; +var GitClient = class { + constructor(config, baseDir = determineRepoBaseDirFromCwd()) { + this.baseDir = baseDir; + this.github = new GithubClient(); + this.gitBinPath = "git"; + this.config = config; + this.remoteConfig = config.github; + this.remoteParams = { owner: config.github.owner, repo: config.github.name }; + this.mainBranchName = config.github.mainBranchName; + } + run(args, options) { + const result = this.runGraceful(args, options); + if (result.status !== 0) { + throw new GitCommandError(this, args); + } + return result; + } + runGraceful(args, options = {}) { + const gitCommand = args[0]; + if (isDryRun() && gitCommand === "push") { + Log.debug(`"git push" is not able to be run in dryRun mode.`); + throw new DryRunError(); + } + args = ["-c", "credential.helper=", ...args]; + Log.debug("Executing: git", this.sanitizeConsoleOutput(args.join(" "))); + const result = spawnSync(this.gitBinPath, args, { + cwd: this.baseDir, + stdio: "pipe", + ...options, + encoding: "utf8" + }); + Log.debug(`Status: ${result.status}, Error: ${!!result.error}, Signal: ${result.signal}`); + if (result.status !== 0 && result.stderr !== null) { + process.stderr.write(this.sanitizeConsoleOutput(result.stderr)); + } + Log.debug("Stdout:", result.stdout); + Log.debug("Stderr:", result.stderr); + Log.debug("Process Error:", result.error); + if (result.error !== void 0) { + process.stderr.write(this.sanitizeConsoleOutput(result.error.message)); + } + return result; + } + getRepoGitUrl() { + return getRepositoryGitUrl(this.remoteConfig); + } + hasCommit(branchName, sha) { + return this.run(["branch", branchName, "--contains", sha]).stdout !== ""; + } + isShallowRepo() { + return this.run(["rev-parse", "--is-shallow-repository"]).stdout.trim() === "true"; + } + getCurrentBranchOrRevision() { + const branchName = this.run(["rev-parse", "--abbrev-ref", "HEAD"]).stdout.trim(); + if (branchName === "HEAD") { + return this.run(["rev-parse", "HEAD"]).stdout.trim(); + } + return branchName; + } + hasUncommittedChanges() { + this.runGraceful(["update-index", "-q", "--refresh"]); + return this.runGraceful(["diff-index", "--quiet", "HEAD"]).status !== 0; + } + checkout(branchOrRevision, cleanState) { + if (cleanState) { + this.runGraceful(["am", "--abort"], { stdio: "ignore" }); + this.runGraceful(["cherry-pick", "--abort"], { stdio: "ignore" }); + this.runGraceful(["rebase", "--abort"], { stdio: "ignore" }); + this.runGraceful(["reset", "--hard"], { stdio: "ignore" }); + } + return this.runGraceful(["checkout", branchOrRevision], { stdio: "ignore" }).status === 0; + } + allChangesFilesSince(shaOrRef = "HEAD") { + return Array.from(/* @__PURE__ */ new Set([ + ...gitOutputAsArray(this.runGraceful(["diff", "--name-only", "--diff-filter=d", shaOrRef])), + ...gitOutputAsArray(this.runGraceful(["ls-files", "--others", "--exclude-standard"])) + ])); + } + allStagedFiles() { + return gitOutputAsArray(this.runGraceful(["diff", "--name-only", "--diff-filter=ACM", "--staged"])); + } + allFiles() { + return gitOutputAsArray(this.runGraceful(["ls-files"])); + } + sanitizeConsoleOutput(value) { + return value; + } + static async get() { + if (GitClient._unauthenticatedInstance === null) { + GitClient._unauthenticatedInstance = (async () => { + return new GitClient(await getConfig([assertValidGithubConfig])); + })(); + } + return GitClient._unauthenticatedInstance; + } +}; +GitClient._unauthenticatedInstance = null; +function gitOutputAsArray(gitCommandResult) { + return gitCommandResult.stdout.split("\n").map((x) => x.trim()).filter((x) => !!x); +} + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/graphql-queries.js +var import_typed_graphqlify2 = __toESM(require_dist()); +var findOwnedForksOfRepoQuery = (0, import_typed_graphqlify2.params)({ + $owner: "String!", + $name: "String!" +}, { + repository: (0, import_typed_graphqlify2.params)({ owner: "$owner", name: "$name" }, { + forks: (0, import_typed_graphqlify2.params)({ affiliations: "OWNER", first: 1, orderBy: { field: "NAME", direction: "ASC" } }, { + nodes: [ + { + owner: { + login: import_typed_graphqlify2.types.string + }, + name: import_typed_graphqlify2.types.string + } + ] + }) + }) +}); + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/git/authenticated-git-client.js +var AuthenticatedGitClient = class extends GitClient { + constructor(githubToken, userType, config, baseDir) { + super(config, baseDir); + this.githubToken = githubToken; + this.userType = userType; + this._githubTokenRegex = new RegExp(this.githubToken, "g"); + this._cachedOauthScopes = null; + this._cachedForkRepositories = null; + this.github = new AuthenticatedGithubClient(this.githubToken); + } + sanitizeConsoleOutput(value) { + return value.replace(this._githubTokenRegex, ""); + } + getRepoGitUrl() { + return getRepositoryGitUrl(this.remoteConfig, this.githubToken); + } + async hasOauthScopes(testFn) { + if (this.userType === "bot") { + return true; + } + const scopes = await this._fetchAuthScopesForToken(); + const missingScopes = []; + testFn(scopes, missingScopes); + if (missingScopes.length === 0) { + return true; + } + const error = `The provided does not have required permissions due to missing scope(s): ${yellow(missingScopes.join(", "))} + +Update the token in use at: + ${GITHUB_TOKEN_SETTINGS_URL} + +Alternatively, a new token can be created at: ${GITHUB_TOKEN_GENERATE_URL} +`; + return { error }; + } + async getForkOfAuthenticatedUser() { + const forks = await this.getAllForksOfAuthenticatedUser(); + if (forks.length === 0) { + throw Error("Unable to find fork a for currently authenticated user."); + } + return forks[0]; + } + async getAllForksOfAuthenticatedUser() { + if (this._cachedForkRepositories !== null) { + return this._cachedForkRepositories; + } + const { owner, name } = this.remoteConfig; + const result = await this.github.graphql(findOwnedForksOfRepoQuery, { owner, name }); + return this._cachedForkRepositories = result.repository.forks.nodes.map((node) => ({ + owner: node.owner.login, + name: node.name + })); + } + _fetchAuthScopesForToken() { + if (this._cachedOauthScopes !== null) { + return this._cachedOauthScopes; + } + return this._cachedOauthScopes = this.github.rateLimit.get().then((response) => { + const scopes = response.headers["x-oauth-scopes"]; + if (scopes === void 0) { + throw Error("Unable to retrieve OAuth scopes for token provided to Git client."); + } + return scopes.split(",").map((scope) => scope.trim()).filter((scope) => scope !== ""); + }); + } + static async get() { + if (AuthenticatedGitClient._token === null) { + throw new Error("No instance of `AuthenticatedGitClient` has been configured."); + } + if (AuthenticatedGitClient._authenticatedInstance === null) { + AuthenticatedGitClient._authenticatedInstance = (async (token, userType) => { + return new AuthenticatedGitClient(token, userType, await getConfig([assertValidGithubConfig])); + })(AuthenticatedGitClient._token, AuthenticatedGitClient._userType); + } + return AuthenticatedGitClient._authenticatedInstance; + } + static configure(token, userType = "user") { + if (AuthenticatedGitClient._token) { + throw Error("Unable to configure `AuthenticatedGitClient` as it has been configured already."); + } + AuthenticatedGitClient._token = token; + AuthenticatedGitClient._userType = userType; + } +}; +AuthenticatedGitClient._token = null; +AuthenticatedGitClient._authenticatedInstance = null; + +// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/release-trains.js +var ReleaseTrain = class { + constructor(branchName, version) { + this.branchName = branchName; + this.version = version; + this.isMajor = this.version.minor === 0 && this.version.patch === 0; + } +}; + +// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/version-branches.js +var import_semver = __toESM(require_semver2()); +var versionBranchNameRegex = /^(\d+)\.(\d+)\.x$/; +var exceptionalMinorPackageIndicator = "__ngDevExceptionalMinor__"; +function getNextBranchName(github) { + return github.mainBranchName; +} +async function getVersionInfoForBranch(repo, branchName) { + const { data } = await repo.api.repos.getContent({ + owner: repo.owner, + repo: repo.name, + path: "/package.json", + ref: branchName + }); + const content = data.content; + if (!content) { + throw Error(`Unable to read "package.json" file from repository.`); + } + const pkgJson = JSON.parse(Buffer.from(content, "base64").toString()); + const parsedVersion = import_semver.default.parse(pkgJson.version); + if (parsedVersion === null) { + throw Error(`Invalid version detected in following branch: ${branchName}.`); + } + return { + version: parsedVersion, + isExceptionalMinor: pkgJson[exceptionalMinorPackageIndicator] === true + }; +} +function isVersionBranch(branchName) { + return versionBranchNameRegex.test(branchName); +} +async function getBranchesForMajorVersions(repo, majorVersions) { + const branchData = await repo.api.paginate(repo.api.repos.listBranches, { + owner: repo.owner, + repo: repo.name, + protected: true + }); + const branches = []; + for (const { name } of branchData) { + if (!isVersionBranch(name)) { + continue; + } + const parsed = convertVersionBranchToSemVer(name); + if (parsed !== null && majorVersions.includes(parsed.major)) { + branches.push({ name, parsed }); + } + } + return branches.sort((a, b) => import_semver.default.rcompare(a.parsed, b.parsed)); +} +function convertVersionBranchToSemVer(branchName) { + return import_semver.default.parse(branchName.replace(versionBranchNameRegex, "$1.$2.0")); +} + +// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/active-release-trains.js +var import_semver2 = __toESM(require_semver2()); +var ActiveReleaseTrains = class { + constructor(trains) { + this.trains = trains; + this.releaseCandidate = this.trains.releaseCandidate; + this.next = this.trains.next; + this.latest = this.trains.latest; + this.exceptionalMinor = this.trains.exceptionalMinor; + } + isFeatureFreeze() { + return this.releaseCandidate !== null && this.releaseCandidate.version.prerelease[0] === "next"; + } + static async fetch(repo) { + return fetchActiveReleaseTrains(repo); + } +}; +async function fetchActiveReleaseTrains(repo) { + const nextBranchName = repo.nextBranchName; + const { version: nextVersion } = await getVersionInfoForBranch(repo, nextBranchName); + const next = new ReleaseTrain(nextBranchName, nextVersion); + const majorVersionsToFetch = []; + const checks = { + canHaveExceptionalMinor: () => false, + isValidReleaseCandidateVersion: () => false, + isValidExceptionalMinorVersion: () => false + }; + if (nextVersion.minor === 0) { + majorVersionsToFetch.push(nextVersion.major - 1, nextVersion.major - 2); + checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major - 1; + checks.canHaveExceptionalMinor = (rc) => rc === null || rc.isMajor; + checks.isValidExceptionalMinorVersion = (v, rc) => v.major === (rc === null ? nextVersion.major : rc.version.major) - 1; + } else if (nextVersion.minor === 1) { + majorVersionsToFetch.push(nextVersion.major, nextVersion.major - 1); + checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major; + checks.canHaveExceptionalMinor = (rc) => rc !== null && rc.isMajor; + checks.isValidExceptionalMinorVersion = (v, rc) => v.major === rc.version.major - 1; + } else { + majorVersionsToFetch.push(nextVersion.major); + checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major; + checks.canHaveExceptionalMinor = () => false; + } + const branches = await getBranchesForMajorVersions(repo, majorVersionsToFetch); + const { latest, releaseCandidate, exceptionalMinor } = await findActiveReleaseTrainsFromVersionBranches(repo, next, branches, checks); + if (latest === null) { + throw Error(`Unable to determine the latest release-train. The following branches have been considered: [${branches.map((b) => b.name).join(", ")}]`); + } + return new ActiveReleaseTrains({ releaseCandidate, next, latest, exceptionalMinor }); +} +async function findActiveReleaseTrainsFromVersionBranches(repo, next, branches, checks) { + const nextReleaseTrainVersion = import_semver2.default.parse(`${next.version.major}.${next.version.minor}.0`); + const nextBranchName = repo.nextBranchName; + let latest = null; + let releaseCandidate = null; + let exceptionalMinor = null; + for (const { name, parsed } of branches) { + if (import_semver2.default.gt(parsed, nextReleaseTrainVersion)) { + throw Error(`Discovered unexpected version-branch "${name}" for a release-train that is more recent than the release-train currently in the "${nextBranchName}" branch. Please either delete the branch if created by accident, or update the outdated version in the next branch (${nextBranchName}).`); + } else if (import_semver2.default.eq(parsed, nextReleaseTrainVersion)) { + throw Error(`Discovered unexpected version-branch "${name}" for a release-train that is already active in the "${nextBranchName}" branch. Please either delete the branch if created by accident, or update the version in the next branch (${nextBranchName}).`); + } + const { version, isExceptionalMinor } = await getVersionInfoForBranch(repo, name); + const releaseTrain = new ReleaseTrain(name, version); + const isPrerelease = version.prerelease[0] === "rc" || version.prerelease[0] === "next"; + if (isExceptionalMinor) { + if (exceptionalMinor !== null) { + throw Error(`Unable to determine latest release-train. Found an additional exceptional minor version branch: "${name}". Already discovered: ${exceptionalMinor.branchName}.`); + } + if (!checks.canHaveExceptionalMinor(releaseCandidate)) { + throw Error(`Unable to determine latest release-train. Found an unexpected exceptional minor version branch: "${name}". No exceptional minor is currently allowed.`); + } + if (!checks.isValidExceptionalMinorVersion(version, releaseCandidate)) { + throw Error(`Unable to determine latest release-train. Found an invalid exceptional minor version branch: "${name}". Invalid version: ${version}.`); + } + exceptionalMinor = releaseTrain; + continue; + } + if (isPrerelease) { + if (exceptionalMinor !== null) { + throw Error(`Unable to determine latest release-train. Discovered a feature-freeze/release-candidate version branch (${name}) that is older than an in-progress exceptional minor (${exceptionalMinor.branchName}).`); + } + if (releaseCandidate !== null) { + throw Error(`Unable to determine latest release-train. Found two consecutive pre-release version branches. No exceptional minors are allowed currently, and there cannot be multiple feature-freeze/release-candidate branches: "${name}".`); + } + if (!checks.isValidReleaseCandidateVersion(version)) { + throw Error(`Discovered unexpected old feature-freeze/release-candidate branch. Expected no version-branch in feature-freeze/release-candidate mode for v${version.major}.`); + } + releaseCandidate = releaseTrain; + continue; + } + latest = releaseTrain; + break; + } + return { releaseCandidate, exceptionalMinor, latest }; +} + +// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/npm-registry.js +var _npmPackageInfoCache = {}; +async function fetchProjectNpmPackageInfo(config) { + return await fetchPackageInfoFromNpmRegistry(config.representativeNpmPackage); +} +async function isVersionPublishedToNpm(version, config) { + const { versions } = await fetchProjectNpmPackageInfo(config); + return versions[version.format()] !== void 0; +} +async function fetchPackageInfoFromNpmRegistry(pkgName) { + if (_npmPackageInfoCache[pkgName] === void 0) { + _npmPackageInfoCache[pkgName] = fetch(`https://registry.npmjs.org/${pkgName}`).then((r) => r.json()); + } + return await _npmPackageInfoCache[pkgName]; +} + +// bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/long-term-support.js +var import_semver3 = __toESM(require_semver2()); +var majorActiveSupportDuration = 6; +var majorLongTermSupportDuration = 12; +var ltsNpmDistTagRegex = /^v(\d+)-lts$/; +async function fetchLongTermSupportBranchesFromNpm(config) { + const { "dist-tags": distTags, time } = await fetchProjectNpmPackageInfo(config); + const today = new Date(); + const active = []; + const inactive = []; + for (const npmDistTag in distTags) { + if (isLtsDistTag(npmDistTag)) { + const version = import_semver3.default.parse(distTags[npmDistTag]); + const branchName = `${version.major}.${version.minor}.x`; + const majorReleaseDate = new Date(time[`${version.major}.0.0`]); + const ltsEndDate = computeLtsEndDateOfMajor(majorReleaseDate); + const ltsBranch = { name: branchName, version, npmDistTag }; + if (today <= ltsEndDate) { + active.push(ltsBranch); + } else { + inactive.push(ltsBranch); + } + } + } + active.sort((a, b) => import_semver3.default.rcompare(a.version, b.version)); + inactive.sort((a, b) => import_semver3.default.rcompare(a.version, b.version)); + return { active, inactive }; +} +function isLtsDistTag(tagName) { + return ltsNpmDistTagRegex.test(tagName); +} +function computeLtsEndDateOfMajor(majorReleaseDate) { + return new Date(majorReleaseDate.getFullYear(), majorReleaseDate.getMonth() + majorActiveSupportDuration + majorLongTermSupportDuration, majorReleaseDate.getDate(), majorReleaseDate.getHours(), majorReleaseDate.getMinutes(), majorReleaseDate.getSeconds(), majorReleaseDate.getMilliseconds()); +} +function getLtsNpmDistTagOfMajor(major) { + return `v${major}-lts`; +} + +// bazel-out/k8-fastbuild/bin/ng-dev/commit-message/config.js +function assertValidCommitMessageConfig(config) { + if (config.commitMessage === void 0) { + throw new ConfigValidationError(`No configuration defined for "commitMessage"`); + } +} +var ScopeRequirement; +(function(ScopeRequirement2) { + ScopeRequirement2[ScopeRequirement2["Required"] = 0] = "Required"; + ScopeRequirement2[ScopeRequirement2["Optional"] = 1] = "Optional"; + ScopeRequirement2[ScopeRequirement2["Forbidden"] = 2] = "Forbidden"; +})(ScopeRequirement || (ScopeRequirement = {})); +var ReleaseNotesLevel; +(function(ReleaseNotesLevel2) { + ReleaseNotesLevel2[ReleaseNotesLevel2["Hidden"] = 0] = "Hidden"; + ReleaseNotesLevel2[ReleaseNotesLevel2["Visible"] = 1] = "Visible"; +})(ReleaseNotesLevel || (ReleaseNotesLevel = {})); +var COMMIT_TYPES = { + build: { + name: "build", + description: "Changes to local repository build system and tooling", + scope: ScopeRequirement.Optional, + releaseNotesLevel: ReleaseNotesLevel.Hidden + }, + ci: { + name: "ci", + description: "Changes to CI configuration and CI specific tooling", + scope: ScopeRequirement.Forbidden, + releaseNotesLevel: ReleaseNotesLevel.Hidden + }, + docs: { + name: "docs", + description: "Changes which exclusively affects documentation.", + scope: ScopeRequirement.Optional, + releaseNotesLevel: ReleaseNotesLevel.Hidden + }, + feat: { + name: "feat", + description: "Creates a new feature", + scope: ScopeRequirement.Required, + releaseNotesLevel: ReleaseNotesLevel.Visible + }, + fix: { + name: "fix", + description: "Fixes a previously discovered failure/bug", + scope: ScopeRequirement.Required, + releaseNotesLevel: ReleaseNotesLevel.Visible + }, + perf: { + name: "perf", + description: "Improves performance without any change in functionality or API", + scope: ScopeRequirement.Required, + releaseNotesLevel: ReleaseNotesLevel.Visible + }, + refactor: { + name: "refactor", + description: "Refactor without any change in functionality or API (includes style changes)", + scope: ScopeRequirement.Optional, + releaseNotesLevel: ReleaseNotesLevel.Hidden + }, + release: { + name: "release", + description: "A release point in the repository", + scope: ScopeRequirement.Forbidden, + releaseNotesLevel: ReleaseNotesLevel.Hidden + }, + test: { + name: "test", + description: "Improvements or corrections made to the project's test suite", + scope: ScopeRequirement.Optional, + releaseNotesLevel: ReleaseNotesLevel.Hidden + } +}; + +// bazel-out/k8-fastbuild/bin/ng-dev/format/config.js +function assertValidFormatConfig(config) { + const errors = []; + if (config.format === void 0) { + throw new ConfigValidationError(`No configuration defined for "format"`); + } + for (const [key, value] of Object.entries(config.format)) { + switch (typeof value) { + case "boolean": + break; + case "object": + checkFormatterConfig(key, value, errors); + break; + default: + errors.push(`"format.${key}" is not a boolean or Formatter object`); + } + } + if (errors.length) { + throw new ConfigValidationError('Invalid "format" configuration', errors); + } +} +function checkFormatterConfig(key, config, errors) { + if (config.matchers === void 0) { + errors.push(`Missing "format.${key}.matchers" value`); + } +} + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/resolve-yarn-bin.js +var import_which = __toESM(require_lib()); +import * as fs from "fs"; +import * as path from "path"; + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/nodejs-errors.js +function isNodeJSWrappedError(value, errorType) { + return value instanceof errorType; +} + +// bazel-out/k8-fastbuild/bin/ng-dev/utils/resolve-yarn-bin.js +var import_yaml = __toESM(require_dist2()); +import lockfile from "@yarnpkg/lockfile"; +var yarnConfigFiles = [ + { fileName: ".yarnrc", parse: (c) => lockfile.parse(c).object }, + { fileName: ".yarnrc.yml", parse: (c) => (0, import_yaml.parse)(c) } +]; +async function resolveYarnScriptForProject(projectDir) { + let info; + const yarnPathFromConfig = await getYarnPathFromConfigurationIfPresent(projectDir); + if (yarnPathFromConfig !== null) { + info = { binary: "node", args: [yarnPathFromConfig] }; + } + if (!info) { + const yarnPathFromNpmBin = await getYarnPathFromNpmGlobalBinaries(); + if (yarnPathFromNpmBin !== null) { + info = { binary: yarnPathFromNpmBin, args: [] }; + } + } + info ?? (info = { binary: "yarn", args: [] }); + const yarnVersion = await getYarnVersion(info); + if (yarnVersion && Number(yarnVersion.split(".")[0]) < 2) { + info.args.push("--silent"); + info.legacy = true; + } + return info; +} +async function getYarnPathFromNpmGlobalBinaries() { + const npmGlobalBinPath = await getNpmGlobalBinPath(); + if (npmGlobalBinPath === null) { + return null; + } + try { + return await (0, import_which.default)("yarn", { path: npmGlobalBinPath }); + } catch (e) { + Log.debug("Could not find Yarn within NPM global binary directory. Error:", e); + return null; + } +} +async function getNpmGlobalBinPath() { + try { + return (await ChildProcess.spawn("npm", ["bin", "--global"], { mode: "silent" })).stdout.trim(); + } catch (e) { + Log.debug("Could not determine NPM global binary directory. Error:", e); + return null; + } +} +async function getYarnPathFromConfigurationIfPresent(projectDir) { + const yarnRc = await findAndParseYarnConfiguration(projectDir); + if (yarnRc === null) { + return null; + } + const yarnPath = yarnRc["yarn-path"] ?? yarnRc["yarnPath"]; + if (yarnPath === void 0) { + return null; + } + return path.resolve(projectDir, yarnPath); +} +async function getYarnVersion(info) { + try { + return (await ChildProcess.spawn(info.binary, [...info.args, "--version"], { mode: "silent" })).stdout.trim(); + } catch (e) { + Log.debug("Could not determine Yarn version. Error:", e); + return null; + } +} +async function findAndParseYarnConfiguration(projectDir) { + const files = await Promise.all(yarnConfigFiles.map(async (entry) => ({ + entry, + content: await readFileGracefully(path.join(projectDir, entry.fileName)) + }))); + const config = files.find((entry) => entry.content !== null); + if (config === void 0) { + return null; + } + try { + return config.entry.parse(config.content); + } catch (e) { + Log.debug(`Could not parse determined Yarn configuration file (${config.entry.fileName}).`); + Log.debug(`Error:`, e); + return null; + } +} +async function readFileGracefully(filePath) { + try { + return await fs.promises.readFile(filePath, "utf8"); + } catch (error) { + if (isNodeJSWrappedError(error, Error) && error.code === "ENOENT") { + return null; + } + throw error; + } +} + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/config/index.js +function assertValidPullRequestConfig(config) { + const errors = []; + if (config.pullRequest === void 0) { + throw new ConfigValidationError("No pullRequest configuration found. Set the `pullRequest` configuration."); + } + if (config.pullRequest.githubApiMerge === void 0) { + errors.push("No explicit choice of merge strategy. Please set `githubApiMerge`."); + } + if (errors.length) { + throw new ConfigValidationError("Invalid `pullRequest` configuration", errors); + } +} + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/base.js +var createTypedObject = (LabelConstructor) => { + return (val) => { + for (const key in val) { + val[key] = new LabelConstructor(val[key]); + } + return val; + }; +}; +var Label = class { + constructor(params2) { + this.params = params2; + this.repositories = this.params.repositories || [ + ManagedRepositories.ANGULAR, + ManagedRepositories.ANGULAR_CLI, + ManagedRepositories.COMPONENTS, + ManagedRepositories.DEV_INFRA + ]; + this.name = this.params.name; + this.description = this.params.description; + this.color = this.params.color; + } +}; +var ManagedRepositories; +(function(ManagedRepositories2) { + ManagedRepositories2["COMPONENTS"] = "components"; + ManagedRepositories2["ANGULAR"] = "angular"; + ManagedRepositories2["ANGULAR_CLI"] = "angular-cli"; + ManagedRepositories2["DEV_INFRA"] = "dev-infra"; +})(ManagedRepositories || (ManagedRepositories = {})); + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/target.js +var TargetLabel = class extends Label { + constructor() { + super(...arguments); + this.__hasTargetLabelMarker__ = true; + } +}; +var targetLabels = createTypedObject(TargetLabel)({ + TARGET_FEATURE: { + description: "This PR is targeted for a feature branch (outside of main and semver branches)", + name: "target: feature" + }, + TARGET_LTS: { + description: "This PR is targeting a version currently in long-term support", + name: "target: lts" + }, + TARGET_MAJOR: { + description: "This PR is targeted for the next major release", + name: "target: major" + }, + TARGET_MINOR: { + description: "This PR is targeted for the next minor release", + name: "target: minor" + }, + TARGET_PATCH: { + description: "This PR is targeted for the next patch release", + name: "target: patch" + }, + TARGET_RC: { + description: "This PR is targeted for the next release-candidate", + name: "target: rc" + } +}); + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/managed.js +var ManagedLabel = class extends Label { + constructor() { + super(...arguments); + this.commitCheck = this.params.commitCheck; + } +}; +var managedLabels = createTypedObject(ManagedLabel)({ + DETECTED_BREAKING_CHANGE: { + description: "PR contains a commit with a breaking change", + name: "detected: breaking change", + commitCheck: (c) => c.breakingChanges.length !== 0 + }, + DETECTED_DEPRECATION: { + description: "PR contains a commit with a deprecation", + name: "detected: deprecation", + commitCheck: (c) => c.deprecations.length !== 0 + }, + DETECTED_FEATURE: { + description: "PR contains a feature commit", + name: "detected: feature", + commitCheck: (c) => c.type === "feat" + }, + DETECTED_DOCS_CHANGE: { + description: "Related to the documentation", + name: "area: docs", + commitCheck: (c) => c.type === "docs" + }, + DETECTED_INFRA_CHANGE: { + description: "Related the build and CI infrastructure of the project", + name: "area: build & ci", + commitCheck: (c) => c.type === "build" || c.type === "ci" + }, + DETECTED_PERF_CHANGE: { + description: "Issues related to performance", + name: "area: performance", + commitCheck: (c) => c.type === "perf" + }, + DETECTED_HTTP_CHANGE: { + description: "Issues related to HTTP and HTTP Client", + name: "area: common/http", + commitCheck: (c) => c.scope === "common/http" || c.scope === "http", + repositories: [ManagedRepositories.ANGULAR] + }, + DETECTED_COMPILER_CHANGE: { + description: "Issues related to `ngc`, Angular's template compiler", + name: "area: compiler", + commitCheck: (c) => c.scope === "compiler" || c.scope === "compiler-cli", + repositories: [ManagedRepositories.ANGULAR] + }, + DETECTED_PLATFORM_BROWSER_CHANGE: { + description: "Issues related to the framework runtime", + name: "area: core", + commitCheck: (c) => c.scope === "platform-browser" || c.scope === "core" || c.scope === "platform-browser-dynamic", + repositories: [ManagedRepositories.ANGULAR] + }, + DETECTED_PLATFORM_SERVER_CHANGE: { + description: "Issues related to server-side rendering", + name: "area: server", + commitCheck: (c) => c.scope === "platform-server", + repositories: [ManagedRepositories.ANGULAR] + }, + DETECTED_ZONES_CHANGE: { + description: "Issues related to zone.js", + name: "area: zones", + commitCheck: (c) => c.scope === "zone.js", + repositories: [ManagedRepositories.ANGULAR] + }, + DETECTED_LOCALIZE_CHANGE: { + description: "Issues related to localization and internationalization", + name: "area: i18n", + commitCheck: (c) => c.scope === "localize", + repositories: [ManagedRepositories.ANGULAR] + } +}); + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/action.js +var ActionLabel = class extends Label { +}; +var actionLabels = createTypedObject(ActionLabel)({ + ACTION_MERGE: { + description: "The PR is ready for merge by the caretaker", + name: "action: merge" + }, + ACTION_CLEANUP: { + description: "The PR is in need of cleanup, either due to needing a rebase or in response to comments from reviews", + name: "action: cleanup" + }, + ACTION_PRESUBMIT: { + description: "The PR is in need of a google3 presubmit", + name: "action: presubmit" + }, + ACTION_GLOBAL_PRESUBMIT: { + description: "The PR is in need of a google3 global presubmit", + name: "action: global presubmit" + }, + ACTION_REVIEW: { + description: "The PR is still awaiting reviews from at least one requested reviewer", + name: "action: review" + } +}); + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/merge.js +var MergeLabel = class extends Label { +}; +var mergeLabels = createTypedObject(MergeLabel)({ + MERGE_PRESERVE_COMMITS: { + description: "When the PR is merged, a rebase and merge should be performed", + name: "merge: preserve commits" + }, + MERGE_SQUASH_COMMITS: { + description: "When the PR is merged, a squash and merge should be performed", + name: "merge: squash commits" + }, + MERGE_FIX_COMMIT_MESSAGE: { + description: "When the PR is merged, rewrites/fixups of the commit messages are needed", + name: "merge: fix commit message" + }, + MERGE_CARETAKER_NOTE: { + description: "Alert the caretaker performing the merge to check the PR for an out of normal action needed or note", + name: "merge: caretaker note" + } +}); + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/priority.js +var PriorityLabel = class extends Label { +}; +var priorityLabels = createTypedObject(PriorityLabel)({ + P0: { + name: "P0", + description: "Issue that causes an outage, breakage, or major function to be unusable, with no known workarounds" + }, + P1: { + name: "P1", + description: "Impacts a large percentage of users; if a workaround exists it is partial or overly painful" + }, + P2: { + name: "P2", + description: "The issue is important to a large percentage of users, with a workaround" + }, + P3: { + name: "P3", + description: "An issue that is relevant to core functions, but does not impede progress. Important, but not urgent" + }, + P4: { + name: "P4", + description: "A relatively minor issue that is not relevant to core functions" + }, + P5: { + name: "P5", + description: "The team acknowledges the request but does not plan to address it, it remains open for discussion" + } +}); + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/requires.js +var RequiresLabel = class extends Label { +}; +var requiresLabels = createTypedObject(RequiresLabel)({ + REQUIRES_TGP: { + name: "requires: TGP", + description: "This PR requires a passing TGP before merging is allowed" + } +}); + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/feature.js +var FeatureLabel = class extends Label { +}; +var featureLabels = createTypedObject(FeatureLabel)({ + FEATURE_IN_BACKLOG: { + name: "feature: in backlog", + description: "Feature request for which voting has completed and is now in the backlog" + }, + FEATURE_VOTES_REQUIRED: { + name: "feature: votes required", + description: "Feature request which is currently still in the voting phase" + }, + FEATURE_UNDER_CONSIDERATION: { + name: "feature: under consideration", + description: "Feature request for which voting has completed and the request is now under consideration" + }, + FEATURE_INSUFFICIENT_VOTES: { + name: "feature: insufficient votes", + description: "Label to add when the not a sufficient number of votes or comments from unique authors" + } +}); + +// bazel-out/k8-fastbuild/bin/ng-dev/pr/common/labels/index.js +var allLabels = { + ...managedLabels, + ...actionLabels, + ...mergeLabels, + ...targetLabels, + ...priorityLabels, + ...featureLabels, + ...requiresLabels +}; + +// bazel-out/k8-fastbuild/bin/ng-dev/release/precheck/index.js +import { debug } from "console"; +var ReleasePrecheckError = class extends Error { +}; +async function assertPassingReleasePrechecks(config, newVersion, builtPackagesWithInfo) { + if (config.prereleaseCheck === void 0) { + Log.warn(" \u26A0 Skipping release pre-checks. No checks configured."); + return true; + } + try { + await config.prereleaseCheck(newVersion.format(), builtPackagesWithInfo); + Log.info(green(" \u2713 Release pre-checks passing.")); + return true; + } catch (e) { + if (e instanceof ReleasePrecheckError) { + debug(e.message); + Log.error(` \u2718 Release pre-checks failed. Please check the output above.`); + } else { + Log.error(e, "\n"); + Log.error(` \u2718 Release pre-checks errored with unexpected runtime error.`); + } + return false; + } +} + +export { + require_dist, + addDryRunFlag, + GraphqlResponseError, + GithubClient, + AuthenticatedGithubClient, + isGithubApiError, + GITHUB_TOKEN_GENERATE_URL, + addTokenToGitHttpsUrl, + getRepositoryGitUrl, + getListCommitsInBranchUrl, + getFileContentsUrl, + GitCommandError, + GitClient, + AuthenticatedGitClient, + require_semver2 as require_semver, + ReleaseTrain, + exceptionalMinorPackageIndicator, + getNextBranchName, + getVersionInfoForBranch, + isVersionBranch, + getBranchesForMajorVersions, + convertVersionBranchToSemVer, + ActiveReleaseTrains, + _npmPackageInfoCache, + fetchProjectNpmPackageInfo, + isVersionPublishedToNpm, + fetchLongTermSupportBranchesFromNpm, + isLtsDistTag, + computeLtsEndDateOfMajor, + getLtsNpmDistTagOfMajor, + assertValidCommitMessageConfig, + ScopeRequirement, + ReleaseNotesLevel, + COMMIT_TYPES, + assertValidFormatConfig, + require_dist2, + resolveYarnScriptForProject, + getYarnPathFromNpmGlobalBinaries, + assertValidPullRequestConfig, + Label, + targetLabels, + managedLabels, + actionLabels, + mergeLabels, + priorityLabels, + requiresLabels, + allLabels, + ReleasePrecheckError, + assertPassingReleasePrechecks +}; +/** + * @license + * Copyright Google LLC + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +//# sourceMappingURL=chunk-PSBRY2K3.mjs.map diff --git a/bundles/chunk-PSBRY2K3.mjs.map b/bundles/chunk-PSBRY2K3.mjs.map new file mode 100755 index 0000000..150e0e9 --- /dev/null +++ b/bundles/chunk-PSBRY2K3.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/fast-content-type-parse/index.js", "../../../../../node_modules/typed-graphqlify/src/render.ts", "../../../../../node_modules/typed-graphqlify/src/graphqlify.ts", "../../../../../node_modules/typed-graphqlify/src/types.ts", "../../../../../node_modules/semver/internal/constants.js", "../../../../../node_modules/semver/internal/debug.js", "../../../../../node_modules/semver/internal/re.js", "../../../../../node_modules/semver/internal/parse-options.js", "../../../../../node_modules/semver/internal/identifiers.js", "../../../../../node_modules/semver/classes/semver.js", "../../../../../node_modules/semver/functions/parse.js", "../../../../../node_modules/semver/functions/valid.js", "../../../../../node_modules/semver/functions/clean.js", "../../../../../node_modules/semver/functions/inc.js", "../../../../../node_modules/semver/functions/diff.js", "../../../../../node_modules/semver/functions/major.js", "../../../../../node_modules/semver/functions/minor.js", "../../../../../node_modules/semver/functions/patch.js", "../../../../../node_modules/semver/functions/prerelease.js", "../../../../../node_modules/semver/functions/compare.js", "../../../../../node_modules/semver/functions/rcompare.js", "../../../../../node_modules/semver/functions/compare-loose.js", "../../../../../node_modules/semver/functions/compare-build.js", "../../../../../node_modules/semver/functions/sort.js", "../../../../../node_modules/semver/functions/rsort.js", "../../../../../node_modules/semver/functions/gt.js", "../../../../../node_modules/semver/functions/lt.js", "../../../../../node_modules/semver/functions/eq.js", "../../../../../node_modules/semver/functions/neq.js", "../../../../../node_modules/semver/functions/gte.js", "../../../../../node_modules/semver/functions/lte.js", "../../../../../node_modules/semver/functions/cmp.js", "../../../../../node_modules/semver/functions/coerce.js", "../../../../../node_modules/semver/internal/lrucache.js", "../../../../../node_modules/semver/classes/range.js", "../../../../../node_modules/semver/classes/comparator.js", "../../../../../node_modules/semver/functions/satisfies.js", "../../../../../node_modules/semver/ranges/to-comparators.js", "../../../../../node_modules/semver/ranges/max-satisfying.js", "../../../../../node_modules/semver/ranges/min-satisfying.js", "../../../../../node_modules/semver/ranges/min-version.js", "../../../../../node_modules/semver/ranges/valid.js", "../../../../../node_modules/semver/ranges/outside.js", "../../../../../node_modules/semver/ranges/gtr.js", "../../../../../node_modules/semver/ranges/ltr.js", "../../../../../node_modules/semver/ranges/intersects.js", "../../../../../node_modules/semver/ranges/simplify.js", "../../../../../node_modules/semver/ranges/subset.js", "../../../../../node_modules/semver/index.js", "../../../../../node_modules/which/node_modules/isexe/src/posix.ts", "../../../../../node_modules/which/node_modules/isexe/src/win32.ts", "../../../../../node_modules/which/node_modules/isexe/dist/cjs/options.js", "../../../../../node_modules/which/node_modules/isexe/src/index.ts", "../../../../../node_modules/which/lib/index.js", "../../../../../node_modules/yaml/dist/nodes/identity.js", "../../../../../node_modules/yaml/dist/visit.js", "../../../../../node_modules/yaml/dist/doc/directives.js", "../../../../../node_modules/yaml/dist/doc/anchors.js", "../../../../../node_modules/yaml/dist/doc/applyReviver.js", "../../../../../node_modules/yaml/dist/nodes/toJS.js", "../../../../../node_modules/yaml/dist/nodes/Node.js", "../../../../../node_modules/yaml/dist/nodes/Alias.js", "../../../../../node_modules/yaml/dist/nodes/Scalar.js", "../../../../../node_modules/yaml/dist/doc/createNode.js", "../../../../../node_modules/yaml/dist/nodes/Collection.js", "../../../../../node_modules/yaml/dist/stringify/stringifyComment.js", "../../../../../node_modules/yaml/dist/stringify/foldFlowLines.js", "../../../../../node_modules/yaml/dist/stringify/stringifyString.js", "../../../../../node_modules/yaml/dist/stringify/stringify.js", "../../../../../node_modules/yaml/dist/stringify/stringifyPair.js", "../../../../../node_modules/yaml/dist/log.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js", "../../../../../node_modules/yaml/dist/nodes/addPairToJSMap.js", "../../../../../node_modules/yaml/dist/nodes/Pair.js", "../../../../../node_modules/yaml/dist/stringify/stringifyCollection.js", "../../../../../node_modules/yaml/dist/nodes/YAMLMap.js", "../../../../../node_modules/yaml/dist/schema/common/map.js", "../../../../../node_modules/yaml/dist/nodes/YAMLSeq.js", "../../../../../node_modules/yaml/dist/schema/common/seq.js", "../../../../../node_modules/yaml/dist/schema/common/string.js", "../../../../../node_modules/yaml/dist/schema/common/null.js", "../../../../../node_modules/yaml/dist/schema/core/bool.js", "../../../../../node_modules/yaml/dist/stringify/stringifyNumber.js", "../../../../../node_modules/yaml/dist/schema/core/float.js", "../../../../../node_modules/yaml/dist/schema/core/int.js", "../../../../../node_modules/yaml/dist/schema/core/schema.js", "../../../../../node_modules/yaml/dist/schema/json/schema.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/float.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/int.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js", "../../../../../node_modules/yaml/dist/schema/tags.js", "../../../../../node_modules/yaml/dist/schema/Schema.js", "../../../../../node_modules/yaml/dist/stringify/stringifyDocument.js", "../../../../../node_modules/yaml/dist/doc/Document.js", "../../../../../node_modules/yaml/dist/errors.js", "../../../../../node_modules/yaml/dist/compose/resolve-props.js", "../../../../../node_modules/yaml/dist/compose/util-contains-newline.js", "../../../../../node_modules/yaml/dist/compose/util-flow-indent-check.js", "../../../../../node_modules/yaml/dist/compose/util-map-includes.js", "../../../../../node_modules/yaml/dist/compose/resolve-block-map.js", "../../../../../node_modules/yaml/dist/compose/resolve-block-seq.js", "../../../../../node_modules/yaml/dist/compose/resolve-end.js", "../../../../../node_modules/yaml/dist/compose/resolve-flow-collection.js", "../../../../../node_modules/yaml/dist/compose/compose-collection.js", "../../../../../node_modules/yaml/dist/compose/resolve-block-scalar.js", "../../../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js", "../../../../../node_modules/yaml/dist/compose/compose-scalar.js", "../../../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js", "../../../../../node_modules/yaml/dist/compose/compose-node.js", "../../../../../node_modules/yaml/dist/compose/compose-doc.js", "../../../../../node_modules/yaml/dist/compose/composer.js", "../../../../../node_modules/yaml/dist/parse/cst-scalar.js", "../../../../../node_modules/yaml/dist/parse/cst-stringify.js", "../../../../../node_modules/yaml/dist/parse/cst-visit.js", "../../../../../node_modules/yaml/dist/parse/cst.js", "../../../../../node_modules/yaml/dist/parse/lexer.js", "../../../../../node_modules/yaml/dist/parse/line-counter.js", "../../../../../node_modules/yaml/dist/parse/parser.js", "../../../../../node_modules/yaml/dist/public-api.js", "../../../../../node_modules/yaml/dist/index.js", "../../../../../node_modules/universal-user-agent/index.js", "../../../../../node_modules/@octokit/core/node_modules/before-after-hook/lib/register.js", "../../../../../node_modules/@octokit/core/node_modules/before-after-hook/lib/add.js", "../../../../../node_modules/@octokit/core/node_modules/before-after-hook/lib/remove.js", "../../../../../node_modules/@octokit/core/node_modules/before-after-hook/index.js", "../../../../../node_modules/@octokit/request/node_modules/@octokit/endpoint/dist-bundle/index.js", "../../../../../node_modules/@octokit/request/dist-bundle/index.js", "../../../../../node_modules/@octokit/request-error/dist-src/index.js", "../../../../../node_modules/@octokit/graphql/dist-bundle/index.js", "../../../../../node_modules/@octokit/core/node_modules/@octokit/auth-token/dist-bundle/index.js", "../../../../../node_modules/@octokit/core/dist-src/version.js", "../../../../../node_modules/@octokit/core/dist-src/index.js", "../../../../../node_modules/@octokit/plugin-request-log/dist-src/version.js", "../../../../../node_modules/@octokit/plugin-request-log/dist-src/index.js", "../../../../../node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js", "../../../../../node_modules/@octokit/src/version.ts", "../../../../../node_modules/@octokit/src/generated/endpoints.ts", "../../../../../node_modules/@octokit/src/endpoints-to-methods.ts", "../../../../../node_modules/@octokit/src/index.ts", "../../../../../node_modules/@octokit/rest/dist-src/version.js", "../../../../../node_modules/@octokit/rest/dist-src/index.js", "../../../../../ng-dev/utils/git/github.ts", "../../../../../ng-dev/utils/dry-run.ts", "../../../../../ng-dev/utils/git/git-client.ts", "../../../../../ng-dev/utils/git/github-urls.ts", "../../../../../ng-dev/utils/git/graphql-queries.ts", "../../../../../ng-dev/utils/git/authenticated-git-client.ts", "../../../../../ng-dev/release/versioning/release-trains.ts", "../../../../../ng-dev/release/versioning/version-branches.ts", "../../../../../ng-dev/release/versioning/active-release-trains.ts", "../../../../../ng-dev/release/versioning/npm-registry.ts", "../../../../../ng-dev/release/versioning/long-term-support.ts", "../../../../../ng-dev/commit-message/config.ts", "../../../../../ng-dev/format/config.ts", "../../../../../ng-dev/utils/resolve-yarn-bin.ts", "../../../../../ng-dev/utils/nodejs-errors.ts", "../../../../../ng-dev/pr/config/index.ts", "../../../../../ng-dev/pr/common/labels/base.ts", "../../../../../ng-dev/pr/common/labels/target.ts", "../../../../../ng-dev/pr/common/labels/managed.ts", "../../../../../ng-dev/pr/common/labels/action.ts", "../../../../../ng-dev/pr/common/labels/merge.ts", "../../../../../ng-dev/pr/common/labels/priority.ts", "../../../../../ng-dev/pr/common/labels/requires.ts", "../../../../../ng-dev/pr/common/labels/feature.ts", "../../../../../ng-dev/pr/common/labels/index.ts", "../../../../../ng-dev/release/precheck/index.ts"], + "sourcesContent": ["'use strict'\n\nconst NullObject = function NullObject () { }\nNullObject.prototype = Object.create(null)\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nconst paramRE = /; *([!#$%&'*+.^\\w`|~-]+)=(\"(?:[\\v\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\v\\u0020-\\u00ff])*\"|[!#$%&'*+.^\\w`|~-]+) */gu\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nconst quotedPairRE = /\\\\([\\v\\u0020-\\u00ff])/gu\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nconst mediaTypeRE = /^[!#$%&'*+.^\\w|~-]+\\/[!#$%&'*+.^\\w|~-]+$/u\n\n// default ContentType to prevent repeated object creation\nconst defaultContentType = { type: '', parameters: new NullObject() }\nObject.freeze(defaultContentType.parameters)\nObject.freeze(defaultContentType)\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} header\n * @return {Object}\n * @public\n */\n\nfunction parse (header) {\n if (typeof header !== 'string') {\n throw new TypeError('argument header is required and must be a string')\n }\n\n let index = header.indexOf(';')\n const type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (mediaTypeRE.test(type) === false) {\n throw new TypeError('invalid media type')\n }\n\n const result = {\n type: type.toLowerCase(),\n parameters: new NullObject()\n }\n\n // parse parameters\n if (index === -1) {\n return result\n }\n\n let key\n let match\n let value\n\n paramRE.lastIndex = index\n\n while ((match = paramRE.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .slice(1, value.length - 1)\n\n quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1'))\n }\n\n result.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n\n return result\n}\n\nfunction safeParse (header) {\n if (typeof header !== 'string') {\n return defaultContentType\n }\n\n let index = header.indexOf(';')\n const type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (mediaTypeRE.test(type) === false) {\n return defaultContentType\n }\n\n const result = {\n type: type.toLowerCase(),\n parameters: new NullObject()\n }\n\n // parse parameters\n if (index === -1) {\n return result\n }\n\n let key\n let match\n let value\n\n paramRE.lastIndex = index\n\n while ((match = paramRE.exec(header))) {\n if (match.index !== index) {\n return defaultContentType\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .slice(1, value.length - 1)\n\n quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1'))\n }\n\n result.parameters[key] = value\n }\n\n if (index !== header.length) {\n return defaultContentType\n }\n\n return result\n}\n\nmodule.exports.default = { parse, safeParse }\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.defaultContentType = defaultContentType\n", "/**\n * Defines the type of the object\n */\nexport enum GraphQLType {\n SCALAR,\n INLINE_FRAGMENT,\n FRAGMENT,\n}\n\n/**\n * The symbol to use to store the object GQL type\n */\nexport const typeSymbol = Symbol('GraphQL Type')\n\n/**\n * The symbol to use to store the object parameters.\n */\nexport const paramsSymbol = Symbol('GraphQL Params')\n\n/**\n * The parameters type.\n */\nexport interface Params {\n [key: string]: string | boolean | number | null | Params | Array\n}\n\n/**\n * A GQL inline fragment.\n */\nexport interface GraphQLInlineFragment {\n [typeSymbol]: GraphQLType.INLINE_FRAGMENT\n typeName: string\n internal: Record\n}\n\n/**\n * Checks whether an object is a fragment object.\n */\nfunction isInlineFragmentObject(value: unknown): value is GraphQLInlineFragment {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as any)[typeSymbol] === GraphQLType.INLINE_FRAGMENT\n )\n}\n\n/**\n * A GQL fragment.\n */\nexport interface GraphQLFragment {\n [typeSymbol]: GraphQLType.FRAGMENT\n name: string\n typeName: string\n internal: Record\n}\n\n/**\n * Checks whether an object is a fragment object.\n */\nfunction isFragmentObject(value: unknown): value is GraphQLFragment {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as any)[typeSymbol] === GraphQLType.FRAGMENT\n )\n}\n\n/**\n * A GQL scalar object.\n * Stores the params of the scalar if any were given.\n */\nexport interface GraphQLScalar {\n [typeSymbol]: GraphQLType.SCALAR\n [paramsSymbol]?: Params\n}\n\n/**\n * Checks whether an object is a scalar object.\n */\nfunction isScalarObject(value: unknown): value is GraphQLScalar {\n return (\n typeof value === 'object' && value !== null && (value as any)[typeSymbol] === GraphQLType.SCALAR\n )\n}\n\n/**\n * Provides the context for the current render.\n */\ninterface RenderContext {\n fragments: Map\n}\n\n/**\n * Renders the name if it was given.\n */\nfunction renderName(name: string | undefined): string {\n return name === undefined ? '' : name\n}\n\n/**\n * Renders the parameters if they were given.\n * @param params The query parameters\n * @param brackets Whether to surround the rendered parameter with parentheses (default: true)\n * @param array Whether to exclude the array index from the rendered parameter (default: false)\n * @returns The rendered parameter(s)\n */\nfunction renderParams(\n params?: Params | Array | null,\n brackets: boolean = true,\n array: boolean = false,\n): string {\n if (!params) {\n // If no params are given, don't render anything.\n return ''\n }\n\n const builder: string[] = []\n for (const [key, value] of Object.entries(params)) {\n let params: string\n if (value === null) {\n params = `null`\n } else if (Array.isArray(value)) {\n params = `[${renderParams(value as Array, false, true)}]`\n } else if (typeof value === 'object') {\n params = `{${renderParams(value as Params, false)}}`\n } else {\n params = `${value}`\n }\n builder.push(array ? `${params}` : `${key}:${params}`)\n }\n\n let built = builder.join(',')\n if (brackets) {\n built = `(${built})`\n }\n return built\n}\n\n/**\n * Renders a GQL scalar.\n */\nfunction renderScalar(name: string | undefined, params?: Params): string {\n // Scalars have no content, just a name.\n return renderName(name) + renderParams(params)\n}\n\n/**\n * Renders a GQL inline fragment.\n */\nfunction renderInlineFragment(fragment: GraphQLInlineFragment, context: RenderContext): string {\n return `...on ${fragment.typeName}${renderObject(undefined, fragment.internal, context)}`\n}\n\n/**\n * Renders a GQL fragment.\n */\nfunction renderFragment(fragment: GraphQLFragment, context: RenderContext): string {\n return `fragment ${fragment.name} on ${fragment.typeName}${renderObject(\n undefined,\n fragment.internal,\n context,\n )}`\n}\n\n/**\n * Renders a GQL array.\n */\nfunction renderArray(name: string | undefined, arr: unknown[], context: RenderContext): string {\n // Get first item.\n const first = arr[0]\n\n // Ensure we have something.\n if (first === undefined || first === null) {\n throw new Error('Cannot render array with no first value')\n }\n\n // Move params onto rendered item.\n ;(first as any)[paramsSymbol] = (arr as any)[paramsSymbol]\n\n // Render type normally.\n return renderType(name, first, context)\n}\n\n/**\n * Renders the given value into its given GQL.\n */\nfunction renderType(name: string | undefined, value: unknown, context: RenderContext): string {\n switch (typeof value) {\n case 'bigint':\n case 'boolean':\n case 'number':\n case 'string':\n throw new Error(`Rendering type ${typeof value} directly is disallowed`)\n case 'object':\n // Ignore null fields.\n if (value === null) {\n throw new Error('Cannot render null')\n }\n if (isScalarObject(value)) {\n return `${renderScalar(name, value[paramsSymbol])} `\n } else if (Array.isArray(value)) {\n return renderArray(name, value, context)\n } else {\n return renderObject(name, value, context)\n }\n case 'undefined':\n // Ignore undefined values.\n return ''\n default:\n throw new Error(`Cannot render type ${typeof value}`)\n }\n}\n\n/**\n * Renders a object to GQL.\n */\nfunction renderObject(name: string | undefined, obj: object, context: RenderContext): string {\n const fields: string[] = []\n\n // Iterate normal properties and render them accordingly.\n for (const [key, value] of Object.entries(obj)) {\n fields.push(renderType(key, value, context))\n }\n\n // Search for fragment & inline fragment symbols and render them.\n for (const sym of Object.getOwnPropertySymbols(obj)) {\n const value = (obj as any)[sym]\n if (isInlineFragmentObject(value)) {\n fields.push(renderInlineFragment(value, context))\n } else if (isFragmentObject(value)) {\n context.fragments.set(sym, value)\n fields.push(`...${value.name}`)\n }\n }\n\n // Validate that we have fields to render.\n if (fields.length === 0) {\n throw new Error('Object cannot have no fields')\n }\n\n // Render function object.\n return `${renderName(name)}${renderParams((obj as any)[paramsSymbol])}{${fields.join('').trim()}}`\n}\n\n/**\n * Performs a complete render of a given object.\n */\nexport function render(value: Record): string {\n // Construct main render context.\n const context: RenderContext = {\n fragments: new Map(),\n }\n\n // Render main body.\n let rend = renderObject(undefined, value, context)\n\n // Render the fragments defined in each context until we have no more to render.\n const rendered = new Map()\n let executingContext = context // The context we're currently executing over.\n let currentContext: RenderContext = {\n // The current context for execution.\n fragments: new Map(),\n }\n while (executingContext.fragments.size > 0) {\n // Use Array.from due to ES5 target without downLevelIteration enabled.\n for (const [sym, fragment] of Array.from(executingContext.fragments.entries())) {\n // We only need to render the fragment once, even if it's used multiple times.\n if (!rendered.has(sym)) {\n rendered.set(sym, renderFragment(fragment, currentContext))\n }\n }\n\n // Set the next context to execute to the one we just used.\n executingContext = currentContext\n currentContext = {\n // Reset current context.\n fragments: new Map(),\n }\n }\n\n return rend + Array.from(rendered.values()).join('')\n}\n\nexport function fragmentToString(value: Record): string {\n // Construct main render context.\n const context: RenderContext = {\n fragments: new Map(),\n }\n\n // Render main body.\n renderObject(undefined, value, context)\n\n // Render the fragments defined in each context until we have no more to render.\n const currentContext: RenderContext = {\n // The current context for execution.\n fragments: new Map(),\n }\n\n let output = ''\n for (const [, fragment] of Array.from(context.fragments.entries())) {\n output = output + renderFragment(fragment, currentContext)\n }\n\n return output\n}\n", "import { GraphQLFragment, GraphQLType, Params, paramsSymbol, render, typeSymbol } from './render'\n\nexport interface QueryObject {\n [x: string]: any\n}\n\n/**\n * Create a typed-graphqlify instance which contains GraphQL query.\n * To convert the instance to GraphQL string, run `.toString()` method.\n * To convert the instance to TypeScript type, refer `.data` property.\n *\n * ```typescript\n * const data: typeof getUserQuery.data = await executeGraphql(getUserQuery.toString())\n * ```\n */\nexport interface CompiledResult {\n toString: () => string\n data: D\n variable: V\n result: { data: D }\n}\n\nfunction createOperate(operateType: string) {\n function operate(queryObject: T): CompiledResult\n function operate(\n operationName: string,\n queryObject: T,\n ): CompiledResult\n function operate(\n opNameOrQueryObject: string | T,\n queryObject?: T,\n ): CompiledResult {\n if (typeof opNameOrQueryObject === 'string') {\n if (!queryObject) {\n throw new Error('queryObject is not set')\n }\n return {\n toString: () => `${operateType} ${opNameOrQueryObject}${render(queryObject)}`,\n } as any\n }\n return {\n toString: () => `${operateType}${render(opNameOrQueryObject)}`,\n } as any\n }\n return operate\n}\n\n/**\n * Create a typed-graphqlify instance which contains GraphQL query.\n */\nexport const query = createOperate('query')\n\n/**\n * Create a typed-graphqlify instance which contains GraphQL mutation.\n */\nexport const mutation = createOperate('mutation')\n\n/**\n * Create a typed-graphqlify instance which contains GraphQL subscription.\n */\nexport const subscription = createOperate('subscription')\n\n/**\n * You can also use `params` helper which is useful for inline arguments.\n *\n * ```typescript\n * import { mutation, params, rawString } from 'typed-graphqlify'\n *\n * mutation('updateUserMutation', {\n * updateUser: params(\n * {\n * input: {\n * name: rawString('Ben'),\n * slug: rawString('/ben'),\n * },\n * },\n * {\n * id: types.number,\n * name: types.string,\n * },\n * ),\n * })\n * ```\n */\nexport function params(params: Params, input: T): T {\n if (typeof params !== 'object') {\n throw new Error('Params have to be an object')\n }\n if (typeof input !== 'object') {\n throw new Error(`Cannot apply params to JS ${typeof params}`)\n }\n\n ;(input as any)[paramsSymbol] = params\n return input\n}\n\n/**\n * Use `alias` to write GraphQL alias. It should be placed as a dynamic property.\n *\n * ```graphql\n * query getMaleUser {\n * maleUser: user {\n * id\n * name\n * }\n * }\n * ```\n * import { alias, query, types } from 'typed-graphqlify'\n *\n * query('getMaleUser', {\n * [alias('maleUser', 'user')]: {\n * id: types.number,\n * name: types.string,\n * },\n * }\n */\nexport function alias(alias: T, target: string): T {\n return `${alias}:${target}` as T\n}\n\n/**\n * Use the `fragment` helper to create GraphQL Fragment, and spread the result into places the fragment is used.\n *\n * ```typescript\n * import { alias, fragment, query } from 'typed-graphqlify'\n *\n * const bankAccountFragment = fragment('bankAccountFragment', 'BankAccount', {\n * id: types.number,\n * branch: types.string,\n * })\n *\n * const userFragment = fragment('userFragment', 'User', {\n * id: types.number,\n * name: types.string,\n * bankAccount: {\n * ...bankAccountFragment,\n * },\n * })\n *\n * query({\n * [alias('user', 'user(id: 1)')], {\n * ...userFragment,\n * },\n * [alias('maleUsers', 'users(sex: MALE)')], {\n * ...userFragment,\n * },\n * }\n * ```\n */\nexport function fragment>(\n name: string,\n typeName: string,\n input: T,\n): T {\n const fragment: GraphQLFragment = {\n [typeSymbol]: GraphQLType.FRAGMENT,\n name,\n typeName,\n internal: input,\n }\n\n return { [Symbol(`Fragment(${name} on ${typeName})`)]: fragment } as any\n}\n\n/**\n * prevent `String` param being rendered as enum.\n */\nexport function rawString(input: string) {\n return JSON.stringify(input)\n}\n", "import { typeSymbol, GraphQLType, GraphQLScalar, GraphQLInlineFragment } from './render'\n\n// Utility type\ntype ValueOf = T[keyof T]\ntype ElementType> = T extends ReadonlyArray\n ? ElementType\n : never\n\n/**\n * Add `types.optional` or `optional` helper method to define optional field.\n *\n * ```typescript\n * import { optional, query, types } from 'typed-graphqlify'\n *\n * query('getUser', {\n * user: {\n * id: types.number,\n * name: types.optional.string, // <-- user.name is `string | undefined`\n * bankAccount: optional({ // <-- user.bankAccount is `{ id: number } | undefined`\n * id: types.number,\n * }),\n * },\n * }\n * ```\n */\nexport function optional(obj: T): T | undefined | null {\n return obj\n}\n\nexport function on(typeName: string, internal: T): Partial {\n const fragment: GraphQLInlineFragment = {\n [typeSymbol]: GraphQLType.INLINE_FRAGMENT,\n typeName,\n internal,\n }\n return { [Symbol(`InlineFragment(${typeName})`)]: fragment } as any\n}\n\nexport function onUnion(types: Record): T {\n let fragments: Record = {}\n for (const [typeName, internal] of Object.entries(types)) {\n fragments = {\n ...fragments,\n ...on(typeName, internal),\n }\n }\n return fragments as any\n}\n\nfunction scalarType(): any {\n const scalar: GraphQLScalar = {\n [typeSymbol]: GraphQLType.SCALAR,\n }\n return scalar\n}\n\nexport class types {\n static get number(): number {\n return scalarType()\n }\n\n static get string(): string {\n return scalarType()\n }\n\n static get boolean(): boolean {\n return scalarType()\n }\n\n static constant(_c: T): T {\n return scalarType()\n }\n\n static oneOf>(_e: T): ElementType\n static oneOf(_e: T): ValueOf | keyof T\n static oneOf>(_e: T) {\n return scalarType()\n }\n\n static custom(): T {\n return scalarType()\n }\n\n static optional: {\n number?: number\n string?: string\n boolean?: boolean\n constant: (_c: T) => T | undefined\n oneOf: (_e: T) => ValueOf | undefined\n custom: () => T | undefined\n } = types\n}\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n", "class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n", "const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "/**\n * This is the Posix implementation of isexe, which uses the file\n * mode and uid/gid values.\n *\n * @module\n */\n\nimport { Stats, statSync } from 'fs'\nimport { stat } from 'fs/promises'\nimport { IsexeOptions } from './options'\n\n/**\n * Determine whether a path is executable according to the mode and\n * current (or specified) user and group IDs.\n */\nexport const isexe = async (\n path: string,\n options: IsexeOptions = {}\n): Promise => {\n const { ignoreErrors = false } = options\n try {\n return checkStat(await stat(path), options)\n } catch (e) {\n const er = e as NodeJS.ErrnoException\n if (ignoreErrors || er.code === 'EACCES') return false\n throw er\n }\n}\n\n/**\n * Synchronously determine whether a path is executable according to\n * the mode and current (or specified) user and group IDs.\n */\nexport const sync = (\n path: string,\n options: IsexeOptions = {}\n): boolean => {\n const { ignoreErrors = false } = options\n try {\n return checkStat(statSync(path), options)\n } catch (e) {\n const er = e as NodeJS.ErrnoException\n if (ignoreErrors || er.code === 'EACCES') return false\n throw er\n }\n}\n\nconst checkStat = (stat: Stats, options: IsexeOptions) =>\n stat.isFile() && checkMode(stat, options)\n\nconst checkMode = (stat: Stats, options: IsexeOptions) => {\n const myUid = options.uid ?? process.getuid?.()\n const myGroups = options.groups ?? process.getgroups?.() ?? []\n const myGid = options.gid ?? process.getgid?.() ?? myGroups[0]\n if (myUid === undefined || myGid === undefined) {\n throw new Error('cannot get uid or gid')\n }\n\n const groups = new Set([myGid, ...myGroups])\n\n const mod = stat.mode\n const uid = stat.uid\n const gid = stat.gid\n\n const u = parseInt('100', 8)\n const g = parseInt('010', 8)\n const o = parseInt('001', 8)\n const ug = u | g\n\n return !!(\n mod & o ||\n (mod & g && groups.has(gid)) ||\n (mod & u && uid === myUid) ||\n (mod & ug && myUid === 0)\n )\n}\n", "/**\n * This is the Windows implementation of isexe, which uses the file\n * extension and PATHEXT setting.\n *\n * @module\n */\n\nimport { Stats, statSync } from 'fs'\nimport { stat } from 'fs/promises'\nimport { IsexeOptions } from './options'\n\n/**\n * Determine whether a path is executable based on the file extension\n * and PATHEXT environment variable (or specified pathExt option)\n */\nexport const isexe = async (\n path: string,\n options: IsexeOptions = {}\n): Promise => {\n const { ignoreErrors = false } = options\n try {\n return checkStat(await stat(path), path, options)\n } catch (e) {\n const er = e as NodeJS.ErrnoException\n if (ignoreErrors || er.code === 'EACCES') return false\n throw er\n }\n}\n\n/**\n * Synchronously determine whether a path is executable based on the file\n * extension and PATHEXT environment variable (or specified pathExt option)\n */\nexport const sync = (\n path: string,\n options: IsexeOptions = {}\n): boolean => {\n const { ignoreErrors = false } = options\n try {\n return checkStat(statSync(path), path, options)\n } catch (e) {\n const er = e as NodeJS.ErrnoException\n if (ignoreErrors || er.code === 'EACCES') return false\n throw er\n }\n}\n\nconst checkPathExt = (path: string, options: IsexeOptions) => {\n const { pathExt = process.env.PATHEXT || '' } = options\n const peSplit = pathExt.split(';')\n if (peSplit.indexOf('') !== -1) {\n return true\n }\n\n for (let i = 0; i < peSplit.length; i++) {\n const p = peSplit[i].toLowerCase()\n const ext = path.substring(path.length - p.length).toLowerCase()\n\n if (p && ext === p) {\n return true\n }\n }\n return false\n}\n\nconst checkStat = (stat: Stats, path: string, options: IsexeOptions) =>\n stat.isFile() && checkPathExt(path, options)\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=options.js.map", "import * as posix from './posix.js'\nimport * as win32 from './win32.js'\nexport * from './options.js'\nexport { win32, posix }\n\nconst platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform\nconst impl = platform === 'win32' ? win32 : posix\n\n/**\n * Determine whether a path is executable on the current platform.\n */\nexport const isexe = impl.isexe\n/**\n * Synchronously determine whether a path is executable on the\n * current platform.\n */\nexport const sync = impl.sync\n", "const { isexe, sync: isexeSync } = require('isexe')\nconst { join, delimiter, sep, posix } = require('path')\n\nconst isWindows = process.platform === 'win32'\n\n// used to check for slashed in commands passed in. always checks for the posix\n// seperator on all platforms, and checks for the current separator when not on\n// a posix platform. don't use the isWindows check for this since that is mocked\n// in tests but we still need the code to actually work when called. that is also\n// why it is ignored from coverage.\n/* istanbul ignore next */\nconst rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? '' : sep}]`.replace(/(\\\\)/g, '\\\\$1'))\nconst rRel = new RegExp(`^\\\\.${rSlash.source}`)\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, {\n path: optPath = process.env.PATH,\n pathExt: optPathExt = process.env.PATHEXT,\n delimiter: optDelimiter = delimiter,\n}) => {\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(rSlash) ? [''] : [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(optPath || /* istanbul ignore next: very unusual */ '').split(optDelimiter),\n ]\n\n if (isWindows) {\n const pathExtExe = optPathExt ||\n ['.EXE', '.CMD', '.BAT', '.COM'].join(optDelimiter)\n const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()])\n if (cmd.includes('.') && pathExt[0] !== '') {\n pathExt.unshift('')\n }\n return { pathEnv, pathExt, pathExtExe }\n }\n\n return { pathEnv, pathExt: [''] }\n}\n\nconst getPathPart = (raw, cmd) => {\n const pathPart = /^\".*\"$/.test(raw) ? raw.slice(1, -1) : raw\n const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : ''\n return prefix + join(pathPart, cmd)\n}\n\nconst which = async (cmd, opt = {}) => {\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (const envPart of pathEnv) {\n const p = getPathPart(envPart, cmd)\n\n for (const ext of pathExt) {\n const withExt = p + ext\n const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true })\n if (is) {\n if (!opt.all) {\n return withExt\n }\n found.push(withExt)\n }\n }\n }\n\n if (opt.all && found.length) {\n return found\n }\n\n if (opt.nothrow) {\n return null\n }\n\n throw getNotFoundError(cmd)\n}\n\nconst whichSync = (cmd, opt = {}) => {\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (const pathEnvPart of pathEnv) {\n const p = getPathPart(pathEnvPart, cmd)\n\n for (const ext of pathExt) {\n const withExt = p + ext\n const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true })\n if (is) {\n if (!opt.all) {\n return withExt\n }\n found.push(withExt)\n }\n }\n }\n\n if (opt.all && found.length) {\n return found\n }\n\n if (opt.nothrow) {\n return null\n }\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n", "'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n if (!prevAnchors)\n prevAnchors = anchorNames(doc);\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n", "'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n", "'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n", "'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n", "'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc) {\n let found = undefined;\n visit.visit(doc, {\n Node: (_key, node) => {\n if (node === this)\n return visit.visit.BREAK;\n if (node.anchor === this.source)\n found = node;\n }\n });\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n", "'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n if (!ref.anchor)\n ref.anchor = onAnchor(value);\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n", "'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n", "'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (!value ||\n /^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - empty string, '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n", "'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? typeof obj;\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag;\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n if (!tagObj)\n tagObj = getTagObject(ctx.doc.schema.tags, node);\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n", "'use strict';\n\nvar node_process = require('node:process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n", "'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n", "'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n", "'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n", "'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n", "'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n", "'use strict';\n\nvar node_buffer = require('node:buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n if (!type)\n type = Scalar.Scalar.BLOCK_LITERAL;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value.toISOString().replace(/(T00:00:00)?\\.000Z$/, '')\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n", "'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n", "'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n", "'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '\u2026' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '\u2026';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '\u2026\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n", "'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n", "'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n", "'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n", "'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n", "'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n", "'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // \u2192 key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt?.collection) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n", "'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n if (pos === null)\n pos = before.length;\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n", "'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n", "'use strict';\n\nvar node_process = require('node:process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n", "'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n", "'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n", "'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` \u2013 Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` \u2013 Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` \u2013 Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` \u2013 The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n", "'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n", "'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n", "'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n", "'use strict';\n\nvar node_process = require('node:process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (atMapIndent && bv.type !== 'block-seq') {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n", "'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n", "'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n", "export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${\n process.arch\n })`;\n }\n\n return \"\";\n}\n", "// @ts-check\n\nexport function register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce((callback, name) => {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(() => {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce((method, registered) => {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n", "// @ts-check\n\nexport function addHook(state, kind, name, hook) {\n const orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = (method, options) => {\n let result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then((result_) => {\n result = result_;\n return orig(result, options);\n })\n .then(() => {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch((error) => {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n", "// @ts-check\n\nexport function removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n const index = state.registry[name]\n .map((registered) => {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n", "// @ts-check\n\nimport { register } from \"./lib/register.js\";\nimport { addHook } from \"./lib/add.js\";\nimport { removeHook } from \"./lib/remove.js\";\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nconst bind = Function.bind;\nconst bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n const removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach((kind) => {\n const args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction Singular() {\n const singularHookName = Symbol(\"Singular\");\n const singularHookState = {\n registry: {},\n };\n const singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction Collection() {\n const state = {\n registry: {},\n };\n\n const hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nexport default { Singular, Collection };\n", "// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, { [key]: options[key] });\n else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\nexport {\n endpoint\n};\n", "// pkg/dist-src/index.js\nimport { endpoint } from \"@octokit/endpoint\";\n\n// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/defaults.js\nvar defaults_default = {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n }\n};\n\n// pkg/dist-src/fetch-wrapper.js\nimport { safeParse } from \"fast-content-type-parse\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nimport { RequestError } from \"@octokit/request-error\";\nasync function fetchWrapper(requestOptions) {\n const fetch = requestOptions.request?.fetch || globalThis.fetch;\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n const log = requestOptions.request?.log || console;\n const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;\n const requestHeaders = Object.fromEntries(\n Object.entries(requestOptions.headers).map(([name, value]) => [\n name,\n String(value)\n ])\n );\n let fetchResponse;\n try {\n fetchResponse = await fetch(requestOptions.url, {\n method: requestOptions.method,\n body,\n redirect: requestOptions.request?.redirect,\n headers: requestHeaders,\n signal: requestOptions.request?.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n });\n } catch (error) {\n let message = \"Unknown Error\";\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n error.status = 500;\n throw error;\n }\n message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n }\n const requestError = new RequestError(message, 500, {\n request: requestOptions\n });\n requestError.cause = error;\n throw requestError;\n }\n const status = fetchResponse.status;\n const url = fetchResponse.url;\n const responseHeaders = {};\n for (const [key, value] of fetchResponse.headers) {\n responseHeaders[key] = value;\n }\n const octokitResponse = {\n url,\n status,\n headers: responseHeaders,\n data: \"\"\n };\n if (\"deprecation\" in responseHeaders) {\n const matches = responseHeaders.link && responseHeaders.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return octokitResponse;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return octokitResponse;\n }\n throw new RequestError(fetchResponse.statusText, status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status === 304) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(\"Not modified\", status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status >= 400) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(toErrorMessage(octokitResponse.data), status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;\n return octokitResponse;\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n return response.text().catch(() => \"\");\n }\n const mimetype = safeParse(contentType);\n if (mimetype.type === \"application/json\") {\n let text = \"\";\n try {\n text = await response.text();\n return JSON.parse(text);\n } catch (err) {\n return text;\n }\n } else if (mimetype.type.startsWith(\"text/\") || mimetype.parameters.charset?.toLowerCase() === \"utf-8\") {\n return response.text().catch(() => \"\");\n } else {\n return response.arrayBuffer().catch(() => new ArrayBuffer(0));\n }\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return \"Unknown error\";\n }\n if (\"message\" in data) {\n const suffix = \"documentation_url\" in data ? ` - ${data.documentation_url}` : \"\";\n return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(\", \")}${suffix}` : `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(endpoint, defaults_default);\nexport {\n request\n};\n", "class RequestError extends Error {\n name;\n /**\n * http status code\n */\n status;\n /**\n * Request options that lead to the error.\n */\n request;\n /**\n * Response object if a response was received\n */\n response;\n constructor(message, statusCode, options) {\n super(message);\n this.name = \"HttpError\";\n this.status = Number.parseInt(statusCode);\n if (Number.isNaN(this.status)) {\n this.status = 0;\n }\n if (\"response\" in options) {\n this.response = options.response;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n / .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n }\n}\nexport {\n RequestError\n};\n", "// pkg/dist-src/index.js\nimport { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/with-defaults.js\nimport { request as Request2 } from \"@octokit/request\";\n\n// pkg/dist-src/graphql.js\nimport { request as Request } from \"@octokit/request\";\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n name = \"GraphqlResponseError\";\n errors;\n data;\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\nexport {\n GraphqlResponseError,\n graphql2 as graphql,\n withCustomRequest\n};\n", "// pkg/dist-src/auth.js\nvar REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nvar REGEX_IS_INSTALLATION = /^ghs_/;\nvar REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\nexport {\n createTokenAuth\n};\n", "const VERSION = \"6.1.3\";\nexport {\n VERSION\n};\n", "import { getUserAgent } from \"universal-user-agent\";\nimport Hook from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version.js\";\nconst noop = () => {\n};\nconst consoleWarn = console.warn.bind(console);\nconst consoleError = console.error.bind(console);\nconst userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;\nclass Octokit {\n static VERSION = VERSION;\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static plugins = [];\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new Hook.Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: consoleWarn,\n error: consoleError\n },\n options.log\n );\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = createTokenAuth(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n // assigned during constructor\n request;\n graphql;\n log;\n hook;\n // TODO: type `octokit.auth` based on passed options.authStrategy\n auth;\n}\nexport {\n Octokit\n};\n", "const VERSION = \"5.3.1\";\nexport {\n VERSION\n};\n", "import { VERSION } from \"./version.js\";\nfunction requestLog(octokit) {\n octokit.hook.wrap(\"request\", (request, options) => {\n octokit.log.debug(\"request\", options);\n const start = Date.now();\n const requestOptions = octokit.request.endpoint.parse(options);\n const path = requestOptions.url.replace(options.baseUrl, \"\");\n return request(options).then((response) => {\n const requestId = response.headers[\"x-github-request-id\"];\n octokit.log.info(\n `${requestOptions.method} ${path} - ${response.status} with id ${requestId} in ${Date.now() - start}ms`\n );\n return response;\n }).catch((error) => {\n const requestId = error.response?.headers[\"x-github-request-id\"] || \"UNKNOWN\";\n octokit.log.error(\n `${requestOptions.method} ${path} - ${error.status} with id ${requestId} in ${Date.now() - start}ms`\n );\n throw error;\n });\n });\n}\nrequestLog.VERSION = VERSION;\nexport {\n requestLog\n};\n", "// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/normalize-paginated-list-response.js\nfunction normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization) return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n\n// pkg/dist-src/iterator.js\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url) return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409) throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\n\n// pkg/dist-src/paginate.js\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\n\n// pkg/dist-src/compose-paginate.js\nvar composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\n// pkg/dist-src/generated/paginating-endpoints.js\nvar paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/code-security/configurations\",\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runner-groups\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/attestations/{subject_digest}\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/code-security/configurations\",\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/copilot/metrics\",\n \"GET /orgs/{org}/copilot/usage\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}\",\n \"GET /orgs/{org}/insights/api/subject-stats\",\n \"GET /orgs/{org}/insights/api/user-stats/{user_id}\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/private-registries\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/team/{team_slug}/copilot/metrics\",\n \"GET /orgs/{org}/team/{team_slug}/copilot/usage\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/attestations/{subject_digest}\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/attestations/{subject_digest}\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\n\n// pkg/dist-src/paginating-endpoints.js\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n// pkg/dist-src/index.js\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\nexport {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n};\n", "export const VERSION = \"13.3.0\";\n", "import type { EndpointsDefaultsAndDecorations } from \"../types.js\";\nconst Endpoints: EndpointsDefaultsAndDecorations = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n addRepoAccessToSelfHostedRunnerGroupInOrg: [\n \"PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\",\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\",\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\",\n ],\n createEnvironmentVariable: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\",\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\",\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\",\n ],\n createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\",\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\",\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\",\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\",\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n deleteEnvironmentVariable: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n deleteRepoVariable: [\n \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\",\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\",\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\",\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\",\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\",\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\",\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\",\n ],\n forceCancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\",\n ],\n generateRunnerJitconfigForOrg: [\n \"POST /orgs/{org}/actions/runners/generate-jitconfig\",\n ],\n generateRunnerJitconfigForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\",\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\",\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getCustomOidcSubClaimForRepo: [\n \"GET /repos/{owner}/{repo}/actions/oidc/customization/sub\",\n ],\n getEnvironmentPublicKey: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key\",\n ],\n getEnvironmentSecret: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n getEnvironmentVariable: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\",\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] },\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\",\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\",\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\",\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\",\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets\",\n ],\n listEnvironmentVariables: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n listRepoOrganizationSecrets: [\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n ],\n listRepoOrganizationVariables: [\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\",\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n listSelectedReposForOrgVariable: [\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\",\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\",\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n removeSelectedRepoFromOrgVariable: [\n \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\",\n ],\n reviewCustomGatesForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\",\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\",\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n setCustomOidcSubClaimForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/oidc/customization/sub\",\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\",\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n setSelectedReposForOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories\",\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\",\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n updateEnvironmentVariable: [\n \"PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}\",\n ],\n updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n updateRepoVariable: [\n \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\",\n ],\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\",\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\",\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\",\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\",\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\",\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsDone: [\"DELETE /notifications/threads/{thread_id}\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\",\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"],\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] },\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\",\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\",\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\",\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\",\n ],\n listInstallationRequestsForAuthenticatedApp: [\n \"GET /app/installation-requests\",\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\",\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\",\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] },\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\",\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"],\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\",\n ],\n getGithubBillingUsageReportOrg: [\n \"GET /organizations/{org}/settings/billing/usage\",\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\",\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\",\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\",\n ],\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\",\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\",\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n },\n codeScanning: {\n commitAutofix: [\n \"POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits\",\n ],\n createAutofix: [\n \"POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix\",\n ],\n createVariantAnalysis: [\n \"POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses\",\n ],\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\",\n ],\n deleteCodeqlDatabase: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } },\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\",\n ],\n getAutofix: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix\",\n ],\n getCodeqlDatabase: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\",\n ],\n getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n getVariantAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}\",\n ],\n getVariantAnalysisRepoTask: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}\",\n ],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] },\n ],\n listCodeqlDatabases: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\",\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n ],\n updateDefaultSetup: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\",\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"],\n },\n codeSecurity: {\n attachConfiguration: [\n \"POST /orgs/{org}/code-security/configurations/{configuration_id}/attach\",\n ],\n attachEnterpriseConfiguration: [\n \"POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach\",\n ],\n createConfiguration: [\"POST /orgs/{org}/code-security/configurations\"],\n createConfigurationForEnterprise: [\n \"POST /enterprises/{enterprise}/code-security/configurations\",\n ],\n deleteConfiguration: [\n \"DELETE /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n deleteConfigurationForEnterprise: [\n \"DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n detachConfiguration: [\n \"DELETE /orgs/{org}/code-security/configurations/detach\",\n ],\n getConfiguration: [\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n getConfigurationForRepository: [\n \"GET /repos/{owner}/{repo}/code-security-configuration\",\n ],\n getConfigurationsForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations\",\n ],\n getConfigurationsForOrg: [\"GET /orgs/{org}/code-security/configurations\"],\n getDefaultConfigurations: [\n \"GET /orgs/{org}/code-security/configurations/defaults\",\n ],\n getDefaultConfigurationsForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations/defaults\",\n ],\n getRepositoriesForConfiguration: [\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories\",\n ],\n getRepositoriesForEnterpriseConfiguration: [\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories\",\n ],\n getSingleConfigurationForEnterprise: [\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n setConfigurationAsDefault: [\n \"PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults\",\n ],\n setConfigurationAsDefaultForEnterprise: [\n \"PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults\",\n ],\n updateConfiguration: [\n \"PATCH /orgs/{org}/code-security/configurations/{configuration_id}\",\n ],\n updateEnterpriseConfiguration: [\n \"PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}\",\n ],\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"],\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n checkPermissionsForDevcontainer: [\n \"GET /repos/{owner}/{repo}/codespaces/permissions_check\",\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\",\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\",\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\",\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\",\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\",\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\",\n ],\n getCodespacesForUserInOrg: [\n \"GET /orgs/{org}/members/{username}/codespaces\",\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\",\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\",\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\",\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } },\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n ],\n preFlightWithRepoForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/new\",\n ],\n publishForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/publish\",\n ],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\",\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\",\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"],\n },\n copilot: {\n addCopilotSeatsForTeams: [\n \"POST /orgs/{org}/copilot/billing/selected_teams\",\n ],\n addCopilotSeatsForUsers: [\n \"POST /orgs/{org}/copilot/billing/selected_users\",\n ],\n cancelCopilotSeatAssignmentForTeams: [\n \"DELETE /orgs/{org}/copilot/billing/selected_teams\",\n ],\n cancelCopilotSeatAssignmentForUsers: [\n \"DELETE /orgs/{org}/copilot/billing/selected_users\",\n ],\n copilotMetricsForOrganization: [\"GET /orgs/{org}/copilot/metrics\"],\n copilotMetricsForTeam: [\"GET /orgs/{org}/team/{team_slug}/copilot/metrics\"],\n getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n getCopilotSeatDetailsForUser: [\n \"GET /orgs/{org}/members/{username}/copilot\",\n ],\n listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"],\n usageMetricsForOrg: [\"GET /orgs/{org}/copilot/usage\"],\n usageMetricsForTeam: [\"GET /orgs/{org}/team/{team_slug}/copilot/usage\"],\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\",\n ],\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\",\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\",\n ],\n exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"],\n },\n emojis: { get: [\"GET /emojis\"] },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"],\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"],\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"],\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] },\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\",\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] },\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] },\n ],\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n addSubIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n ],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n checkUserCanBeAssignedToIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\",\n ],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\",\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n listSubIssues: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n ],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\",\n ],\n removeSubIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue\",\n ],\n reprioritizeSubIssue: [\n \"PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority\",\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"],\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } },\n ],\n },\n meta: {\n get: [\"GET /meta\"],\n getAllVersions: [\"GET /versions\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"],\n },\n migrations: {\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\",\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\",\n ],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] },\n ],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n },\n oidc: {\n getOidcCustomSubTemplateForOrg: [\n \"GET /orgs/{org}/actions/oidc/customization/sub\",\n ],\n updateOidcCustomSubTemplateForOrg: [\n \"PUT /orgs/{org}/actions/oidc/customization/sub\",\n ],\n },\n orgs: {\n addSecurityManagerTeam: [\n \"PUT /orgs/{org}/security-managers/teams/{team_slug}\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team\",\n },\n ],\n assignTeamToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\",\n ],\n assignUserToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/users/{username}/{role_id}\",\n ],\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\",\n ],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n createOrUpdateCustomPropertiesValuesForRepos: [\n \"PATCH /orgs/{org}/properties/values\",\n ],\n createOrUpdateCustomProperty: [\n \"PUT /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n delete: [\"DELETE /orgs/{org}\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n enableOrDisableSecurityProductOnAllOrgRepos: [\n \"POST /orgs/{org}/{security_product}/{enablement}\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.enableOrDisableSecurityProductOnAllOrgRepos() is deprecated, see https://docs.github.com/rest/orgs/orgs#enable-or-disable-a-security-feature-for-an-organization\",\n },\n ],\n get: [\"GET /orgs/{org}\"],\n getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n getCustomProperty: [\n \"GET /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getOrgRole: [\"GET /orgs/{org}/organization-roles/{role_id}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listAttestations: [\"GET /orgs/{org}/attestations/{subject_digest}\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOrgRoleTeams: [\"GET /orgs/{org}/organization-roles/{role_id}/teams\"],\n listOrgRoleUsers: [\"GET /orgs/{org}/organization-roles/{role_id}/users\"],\n listOrgRoles: [\"GET /orgs/{org}/organization-roles\"],\n listOrganizationFineGrainedPermissions: [\n \"GET /orgs/{org}/organization-fine-grained-permissions\",\n ],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPatGrantRepositories: [\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n ],\n listPatGrantRequestRepositories: [\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n ],\n listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listSecurityManagerTeams: [\n \"GET /orgs/{org}/security-managers\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams\",\n },\n ],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeCustomProperty: [\n \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\",\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\",\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\",\n ],\n removeSecurityManagerTeam: [\n \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\",\n {},\n {\n deprecated:\n \"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team\",\n },\n ],\n reviewPatGrantRequest: [\n \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\",\n ],\n reviewPatGrantRequestsInBulk: [\n \"POST /orgs/{org}/personal-access-token-requests\",\n ],\n revokeAllOrgRolesTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}\",\n ],\n revokeAllOrgRolesUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}\",\n ],\n revokeOrgRoleTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\",\n ],\n revokeOrgRoleUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}\",\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\",\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\",\n ],\n updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"],\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\",\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\",\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] },\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\",\n ],\n },\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\",\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\",\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\",\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n \"GET /user/docker/conflicts\",\n ],\n listDockerMigrationConflictingPackagesForOrganization: [\n \"GET /orgs/{org}/docker/conflicts\",\n ],\n listDockerMigrationConflictingPackagesForUser: [\n \"GET /users/{username}/docker/conflicts\",\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n },\n privateRegistries: {\n createOrgPrivateRegistry: [\"POST /orgs/{org}/private-registries\"],\n deleteOrgPrivateRegistry: [\n \"DELETE /orgs/{org}/private-registries/{secret_name}\",\n ],\n getOrgPrivateRegistry: [\"GET /orgs/{org}/private-registries/{secret_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/private-registries/public-key\"],\n listOrgPrivateRegistries: [\"GET /orgs/{org}/private-registries\"],\n updateOrgPrivateRegistry: [\n \"PATCH /orgs/{org}/private-registries/{secret_name}\",\n ],\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\",\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\",\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"],\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\",\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\",\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\",\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\",\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] },\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n cancelPagesDeployment: [\n \"POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel\",\n ],\n checkAutomatedSecurityFixes: [\n \"GET /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkPrivateVulnerabilityReporting: [\n \"GET /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\",\n ],\n createAttestation: [\"POST /repos/{owner}/{repo}/attestations\"],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentBranchPolicy: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n ],\n createDeploymentProtectionRule: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\",\n ],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateCustomPropertiesValues: [\n \"PATCH /repos/{owner}/{repo}/properties/values\",\n ],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployments\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\",\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] },\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\",\n ],\n deleteDeploymentBranchPolicy: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n disableDeploymentProtectionRule: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\",\n ],\n disablePrivateVulnerabilityReporting: [\n \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] },\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n enablePrivateVulnerabilityReporting: [\n \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\",\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\",\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n getAllDeploymentProtectionRules: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\",\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\",\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getCustomDeploymentProtectionRule: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\",\n ],\n getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentBranchPolicy: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\",\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesDeployment: [\n \"GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}\",\n ],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getRepoRuleSuite: [\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\",\n ],\n getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n listAttestations: [\n \"GET /repos/{owner}/{repo}/attestations/{subject_digest}\",\n ],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\",\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listCustomDeploymentRuleIntegrations: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n ],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentBranchPolicies: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n ],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\",\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateDeploymentBranchPolicy: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\",\n ],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] },\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" },\n ],\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"],\n },\n secretScanning: {\n createPushProtectionBypass: [\n \"POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n getScanHistory: [\"GET /repos/{owner}/{repo}/secret-scanning/scan-history\"],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n },\n securityAdvisories: {\n createFork: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks\",\n ],\n createPrivateVulnerabilityReport: [\n \"POST /repos/{owner}/{repo}/security-advisories/reports\",\n ],\n createRepositoryAdvisory: [\n \"POST /repos/{owner}/{repo}/security-advisories\",\n ],\n createRepositoryAdvisoryCveRequest: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\",\n ],\n getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n getRepositoryAdvisory: [\n \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\",\n ],\n listGlobalAdvisories: [\"GET /advisories\"],\n listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n updateRepositoryAdvisory: [\n \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\",\n ],\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"],\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] },\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] },\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] },\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] },\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] },\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] },\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n deleteSshSigningKeyForAuthenticatedUser: [\n \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\",\n ],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getById: [\"GET /user/{account_id}\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] },\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] },\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n getSshSigningKeyForAuthenticatedUser: [\n \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\",\n ],\n list: [\"GET /users\"],\n listAttestations: [\"GET /users/{username}/attestations/{subject_digest}\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] },\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] },\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] },\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] },\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] },\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] },\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] },\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\",\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"],\n },\n};\n\nexport default Endpoints;\n", "import type { Octokit } from \"@octokit/core\";\nimport type { EndpointOptions, RequestParameters, Route } from \"@octokit/types\";\nimport ENDPOINTS from \"./generated/endpoints.js\";\nimport type { RestEndpointMethods } from \"./generated/method-types.js\";\nimport type { EndpointDecorations } from \"./types.js\";\n\n// The following code was refactored in: https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/622\n// to optimise the runtime performance of Octokit initialization.\n//\n// This optimization involves two key changes:\n// 1. Pre-Computation: The endpoint methods are pre-computed once at module load\n// time instead of each invocation of `endpointsToMethods()`.\n// 2. Lazy initialization and caching: We use a Proxy for each scope to only\n// initialize methods that are actually called. This reduces runtime overhead\n// as the initialization involves deep merging of objects. The initialized\n// methods are then cached for future use.\n\nconst endpointMethodsMap = new Map();\nfor (const [scope, endpoints] of Object.entries(ENDPOINTS)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign(\n {\n method,\n url,\n },\n defaults,\n );\n\n if (!endpointMethodsMap.has(scope)) {\n endpointMethodsMap.set(scope, new Map());\n }\n\n endpointMethodsMap.get(scope).set(methodName, {\n scope,\n methodName,\n endpointDefaults,\n decorations,\n });\n }\n}\n\ntype ProxyTarget = {\n octokit: Octokit;\n scope: string;\n cache: Record any>;\n};\n\nconst handler = {\n has({ scope }: ProxyTarget, methodName: string) {\n return endpointMethodsMap.get(scope).has(methodName);\n },\n getOwnPropertyDescriptor(target: ProxyTarget, methodName: string) {\n return {\n value: this.get(target, methodName), // ensures method is in the cache\n configurable: true,\n writable: true,\n enumerable: true,\n };\n },\n defineProperty(\n target: ProxyTarget,\n methodName: string,\n descriptor: PropertyDescriptor,\n ) {\n Object.defineProperty(target.cache, methodName, descriptor);\n return true;\n },\n deleteProperty(target: ProxyTarget, methodName: string) {\n delete target.cache[methodName];\n return true;\n },\n ownKeys({ scope }: ProxyTarget) {\n return [...endpointMethodsMap.get(scope).keys()];\n },\n set(target: ProxyTarget, methodName: string, value: any) {\n return (target.cache[methodName] = value);\n },\n get({ octokit, scope, cache }: ProxyTarget, methodName: string) {\n if (cache[methodName]) {\n return cache[methodName];\n }\n\n const method = endpointMethodsMap.get(scope).get(methodName);\n if (!method) {\n return undefined;\n }\n\n const { endpointDefaults, decorations } = method;\n\n if (decorations) {\n cache[methodName] = decorate(\n octokit,\n scope,\n methodName,\n endpointDefaults,\n decorations,\n );\n } else {\n cache[methodName] = octokit.request.defaults(endpointDefaults);\n }\n\n return cache[methodName];\n },\n};\n\nexport function endpointsToMethods(octokit: Octokit): RestEndpointMethods {\n const newMethods = {} as { [key: string]: object };\n\n for (const scope of endpointMethodsMap.keys()) {\n newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n }\n\n return newMethods as RestEndpointMethods;\n}\n\nfunction decorate(\n octokit: Octokit,\n scope: string,\n methodName: string,\n defaults: EndpointOptions,\n decorations: EndpointDecorations,\n) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n\n /* istanbul ignore next */\n function withDecorations(\n ...args: [Route, RequestParameters?] | [EndpointOptions]\n ) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args);\n\n // There are currently no other decorations than `.mapToData`\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined,\n });\n return requestWithDefaults(options);\n }\n\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(\n `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`,\n );\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n\n for (const [name, alias] of Object.entries(\n decorations.renamedParameters,\n )) {\n if (name in options) {\n octokit.log.warn(\n `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`,\n );\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n delete options[name];\n }\n }\n return requestWithDefaults(options);\n }\n\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n", "import type { Octokit } from \"@octokit/core\";\n\nexport type { RestEndpointMethodTypes } from \"./generated/parameters-and-response-types.js\";\nimport { VERSION } from \"./version.js\";\nimport type { Api } from \"./types.js\";\nimport { endpointsToMethods } from \"./endpoints-to-methods.js\";\n\n// Export the type for downstream users in order to fix a TypeScript error\n// The inferred type of 'Octokit' cannot be named without a reference to '../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.js'. This is likely not portable. A type annotation is necessary.\nexport type { Api };\n\nexport function restEndpointMethods(octokit: Octokit): Api {\n const api = endpointsToMethods(octokit);\n return {\n rest: api,\n };\n}\nrestEndpointMethods.VERSION = VERSION;\n\nexport function legacyRestEndpointMethods(octokit: Octokit): Api[\"rest\"] & Api {\n const api = endpointsToMethods(octokit);\n return {\n ...api,\n rest: api,\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n", "const VERSION = \"21.1.0\";\nexport {\n VERSION\n};\n", "import { Octokit as Core } from \"@octokit/core\";\nimport { requestLog } from \"@octokit/plugin-request-log\";\nimport {\n paginateRest\n} from \"@octokit/plugin-paginate-rest\";\nimport { legacyRestEndpointMethods } from \"@octokit/plugin-rest-endpoint-methods\";\nimport { VERSION } from \"./version.js\";\nconst Octokit = Core.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults(\n {\n userAgent: `octokit-rest.js/${VERSION}`\n }\n);\nexport {\n Octokit\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport type {OctokitOptions} from '@octokit/core';\n\nimport {Octokit} from '@octokit/rest';\nimport {RequestParameters} from '@octokit/types';\nimport {RequestError} from '@octokit/request-error';\nimport {query} from 'typed-graphqlify';\n\n/**\n * An object representation of a Graphql Query to be used as a response type and\n * to generate a Graphql query string.\n */\nexport type GraphqlQueryObject = Parameters[1];\n\n/** Interface describing a Github repository. */\nexport interface GithubRepo {\n /** Owner login of the repository. */\n owner: string;\n /** Name of the repository. */\n name: string;\n}\n\n/** A Github client for interacting with the Github APIs. */\nexport class GithubClient {\n /** The octokit instance actually performing API requests. */\n protected _octokit = new Octokit({...this._octokitOptions});\n\n readonly pulls: Octokit['pulls'] = this._octokit.pulls;\n readonly orgs: Octokit['orgs'] = this._octokit.orgs;\n readonly repos: Octokit['repos'] = this._octokit.repos;\n readonly issues: Octokit['issues'] = this._octokit.issues;\n readonly git: Octokit['git'] = this._octokit.git;\n readonly rateLimit: Octokit['rateLimit'] = this._octokit.rateLimit;\n readonly teams: Octokit['teams'] = this._octokit.teams;\n readonly search: Octokit['search'] = this._octokit.search;\n readonly rest: Octokit['rest'] = this._octokit.rest;\n readonly paginate: Octokit['paginate'] = this._octokit.paginate;\n readonly checks: Octokit['checks'] = this._octokit.checks;\n\n constructor(private _octokitOptions?: OctokitOptions) {}\n}\n\n/**\n * Extension of the `GithubClient` that provides utilities which are specific\n * to authenticated instances.\n */\nexport class AuthenticatedGithubClient extends GithubClient {\n /** The graphql instance with authentication set during construction. */\n private _graphql = this._octokit.graphql.defaults({\n headers: {authorization: `token ${this._token}`},\n });\n\n constructor(private _token: string) {\n // Set the token for the octokit instance.\n super({auth: _token});\n }\n\n /** Perform a query using Github's Graphql API. */\n async graphql(queryObject: T, params: RequestParameters = {}) {\n return (await this._graphql(query(queryObject).toString(), params)) as T;\n }\n}\n\n/** Whether the given object corresponds to an Octokit API request error. */\nexport function isGithubApiError(obj: unknown): obj is RequestError {\n return (\n obj instanceof Error &&\n // Note: Cannot use `instanceof` here because Octokit may use a different\n // version of `@octokit/request-error` due to version mismatch/hoisting.\n obj.constructor.name === 'RequestError' &&\n (obj as Partial).request !== undefined\n );\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv} from 'yargs';\n\n/**\n * Add a --dry-run flag to the available options for the yargs argv object. When present, sets an\n * environment variable noting dry run mode.\n */\nexport function addDryRunFlag(args: Argv) {\n return args.option('dry-run' as 'dryRun', {\n type: 'boolean',\n default: false,\n description: 'Whether to do a dry run',\n coerce: (dryRun: boolean) => {\n if (dryRun) {\n process.env['DRY_RUN'] = '1';\n }\n return dryRun;\n },\n });\n}\n\n/** Whether the current environment is in dry run mode. */\nexport function isDryRun(): boolean {\n return process.env['DRY_RUN'] !== undefined;\n}\n\n/** Error to be thrown when a function or method is called in dryRun mode and shouldn't be. */\nexport class DryRunError extends Error {\n constructor() {\n super('Cannot call this function in dryRun mode.');\n }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {DryRunError, isDryRun} from '../dry-run.js';\nimport {GithubConfig, assertValidGithubConfig, getConfig} from '../config.js';\nimport {SpawnSyncOptions, SpawnSyncReturns, spawnSync} from 'child_process';\nimport {Log} from '../logging.js';\n\nimport {GithubClient} from './github.js';\nimport {getRepositoryGitUrl} from './github-urls.js';\nimport {determineRepoBaseDirFromCwd} from '../repo-directory.js';\n\n/** Error for failed Git commands. */\nexport class GitCommandError extends Error {\n // Note: Do not expose the unsanitized arguments as a public property. NodeJS\n // could print the properties of an error instance and leak e.g. a token.\n constructor(client: GitClient, unsanitizedArgs: string[]) {\n // Errors are not guaranteed to be caught. To ensure that we don't\n // accidentally leak the Github token that might be used in a command,\n // we sanitize the command that will be part of the error message.\n super(`Command failed: git ${client.sanitizeConsoleOutput(unsanitizedArgs.join(' '))}`);\n }\n}\n\n/** The options available for the `GitClient``run` and `runGraceful` methods. */\ntype GitCommandRunOptions = SpawnSyncOptions;\n\n/** Class that can be used to perform Git interactions with a given remote. **/\nexport class GitClient {\n /** Short-hand for accessing the default remote configuration. */\n readonly remoteConfig: GithubConfig;\n\n /** Octokit request parameters object for targeting the configured remote. */\n readonly remoteParams: {owner: string; repo: string};\n\n /** Name of the primary branch of the upstream remote. */\n readonly mainBranchName: string;\n\n /** Instance of the Github client. */\n readonly github = new GithubClient();\n\n /** The configuration, containing the github specific configuration. */\n readonly config: {github: GithubConfig};\n\n /**\n * Path to the Git executable. By default, `git` is assumed to exist\n * in the shell environment (using `$PATH`).\n */\n readonly gitBinPath: string = 'git';\n\n constructor(\n /** The configuration, containing the github specific configuration. */\n config: {github: GithubConfig},\n /** The full path to the root of the repository base. */\n readonly baseDir = determineRepoBaseDirFromCwd(),\n ) {\n this.config = config;\n this.remoteConfig = config.github;\n this.remoteParams = {owner: config.github.owner, repo: config.github.name};\n this.mainBranchName = config.github.mainBranchName;\n }\n\n /** Executes the given git command. Throws if the command fails. */\n run(args: string[], options?: GitCommandRunOptions): Omit, 'status'> {\n const result = this.runGraceful(args, options);\n if (result.status !== 0) {\n throw new GitCommandError(this, args);\n }\n // Omit `status` from the type so that it's obvious that the status is never\n // non-zero as explained in the method description.\n return result as Omit, 'status'>;\n }\n\n /**\n * Spawns a given Git command process. Does not throw if the command fails. Additionally,\n * if there is any stderr output, the output will be printed. This makes it easier to\n * info failed commands.\n */\n runGraceful(args: string[], options: GitCommandRunOptions = {}): SpawnSyncReturns {\n /** The git command to be run. */\n const gitCommand = args[0];\n\n if (isDryRun() && gitCommand === 'push') {\n Log.debug(`\"git push\" is not able to be run in dryRun mode.`);\n throw new DryRunError();\n }\n\n // Clear the credential helper that is used, preventing the temporary token from being saved as a\n // valid token for future use.\n args = ['-c', 'credential.helper=', ...args];\n // To improve the debugging experience in case something fails, we print all executed Git\n // commands at the DEBUG level to better understand the git actions occurring.\n // Note that we sanitize the command before printing it to the console. We do not want to\n // print an access token if it is contained in the command. It's common to share errors with\n // others if the tool failed, and we do not want to leak tokens.\n Log.debug('Executing: git', this.sanitizeConsoleOutput(args.join(' ')));\n\n const result = spawnSync(this.gitBinPath, args, {\n cwd: this.baseDir,\n stdio: 'pipe',\n ...options,\n // Encoding is always `utf8` and not overridable. This ensures that this method\n // always returns `string` as output instead of buffers.\n encoding: 'utf8',\n });\n\n Log.debug(`Status: ${result.status}, Error: ${!!result.error}, Signal: ${result.signal}`);\n\n if (result.status !== 0 && result.stderr !== null) {\n // Git sometimes prints the command if it failed. This means that it could\n // potentially leak the Github token used for accessing the remote. To avoid\n // printing a token, we sanitize the string before printing the stderr output.\n process.stderr.write(this.sanitizeConsoleOutput(result.stderr));\n }\n\n Log.debug('Stdout:', result.stdout);\n Log.debug('Stderr:', result.stderr);\n Log.debug('Process Error:', result.error);\n\n if (result.error !== undefined) {\n // Git sometimes prints the command if it failed. This means that it could\n // potentially leak the Github token used for accessing the remote. To avoid\n // printing a token, we sanitize the string before printing the stderr output.\n process.stderr.write(this.sanitizeConsoleOutput(result.error.message));\n }\n\n return result;\n }\n\n /** Git URL that resolves to the configured repository. */\n getRepoGitUrl() {\n return getRepositoryGitUrl(this.remoteConfig);\n }\n\n /** Whether the given branch contains the specified SHA. */\n hasCommit(branchName: string, sha: string): boolean {\n return this.run(['branch', branchName, '--contains', sha]).stdout !== '';\n }\n\n /** Whether the local repository is configured as shallow. */\n isShallowRepo(): boolean {\n return this.run(['rev-parse', '--is-shallow-repository']).stdout.trim() === 'true';\n }\n\n /** Gets the currently checked out branch or revision. */\n getCurrentBranchOrRevision(): string {\n const branchName = this.run(['rev-parse', '--abbrev-ref', 'HEAD']).stdout.trim();\n // If no branch name could be resolved. i.e. `HEAD` has been returned, then Git\n // is currently in a detached state. In those cases, we just want to return the\n // currently checked out revision/SHA.\n if (branchName === 'HEAD') {\n return this.run(['rev-parse', 'HEAD']).stdout.trim();\n }\n return branchName;\n }\n\n /** Gets whether the current Git repository has uncommitted changes. */\n hasUncommittedChanges(): boolean {\n // We also need to refresh the index in case some files have been touched\n // but not modified. The diff-index command will not check contents so we\n // manually need to refresh and cleanup the index before performing the diff.\n // Relevant info: https://git-scm.com/docs/git-diff-index#_non_cached_mode,\n // https://git-scm.com/docs/git-update-index and https://stackoverflow.com/a/34808299.\n this.runGraceful(['update-index', '-q', '--refresh']);\n\n return this.runGraceful(['diff-index', '--quiet', 'HEAD']).status !== 0;\n }\n\n /**\n * Checks out a requested branch or revision, optionally cleaning the state of the repository\n * before attempting the checking. Returns a boolean indicating whether the branch or revision\n * was cleanly checked out.\n */\n checkout(branchOrRevision: string, cleanState: boolean): boolean {\n if (cleanState) {\n // Abort any outstanding ams.\n this.runGraceful(['am', '--abort'], {stdio: 'ignore'});\n // Abort any outstanding cherry-picks.\n this.runGraceful(['cherry-pick', '--abort'], {stdio: 'ignore'});\n // Abort any outstanding rebases.\n this.runGraceful(['rebase', '--abort'], {stdio: 'ignore'});\n // Clear any changes in the current repo.\n this.runGraceful(['reset', '--hard'], {stdio: 'ignore'});\n }\n return this.runGraceful(['checkout', branchOrRevision], {stdio: 'ignore'}).status === 0;\n }\n\n /** Retrieve a list of all files in the repository changed since the provided shaOrRef. */\n allChangesFilesSince(shaOrRef = 'HEAD'): string[] {\n return Array.from(\n new Set([\n ...gitOutputAsArray(this.runGraceful(['diff', '--name-only', '--diff-filter=d', shaOrRef])),\n ...gitOutputAsArray(this.runGraceful(['ls-files', '--others', '--exclude-standard'])),\n ]),\n );\n }\n\n /** Retrieve a list of all files currently staged in the repostitory. */\n allStagedFiles(): string[] {\n return gitOutputAsArray(\n this.runGraceful(['diff', '--name-only', '--diff-filter=ACM', '--staged']),\n );\n }\n\n /** Retrieve a list of all files tracked in the repository. */\n allFiles(): string[] {\n return gitOutputAsArray(this.runGraceful(['ls-files']));\n }\n\n /**\n * Sanitizes the given console message. This method can be overridden by\n * derived classes. e.g. to sanitize access tokens from Git commands.\n */\n sanitizeConsoleOutput(value: string) {\n return value;\n }\n\n /** The singleton instance of the unauthenticated `GitClient`. */\n private static _unauthenticatedInstance: Promise | null = null;\n\n /**\n * Static method to get the singleton instance of the `GitClient`,\n * creating it, if not created yet.\n */\n static async get(): Promise {\n // If there is no cached instance, create one and cache the promise immediately.\n // This avoids constructing a client twice accidentally when e.g. waiting for the\n // configuration to be loaded.\n if (GitClient._unauthenticatedInstance === null) {\n GitClient._unauthenticatedInstance = (async () => {\n return new GitClient(await getConfig([assertValidGithubConfig]));\n })();\n }\n\n return GitClient._unauthenticatedInstance;\n }\n}\n\n/**\n * Takes the output from `run` and `runGraceful` and returns an array of strings for each\n * new line. Git commands typically return multiple output values for a command a set of\n * strings separated by new lines.\n *\n * Note: This is specifically created as a locally available function for usage as convenience\n * utility within `GitClient`'s methods to create outputs as array.\n */\nfunction gitOutputAsArray(gitCommandResult: SpawnSyncReturns): string[] {\n return gitCommandResult.stdout\n .split('\\n')\n .map((x) => x.trim())\n .filter((x) => !!x);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {URL} from 'url';\n\nimport {GithubConfig} from '../config.js';\nimport {GitClient} from './git-client.js';\n\n/** URL to the Github page where personal access tokens can be managed. */\nexport const GITHUB_TOKEN_SETTINGS_URL = 'https://github.com/settings/tokens';\n\n/** URL to the Github page where personal access tokens can be generated. */\nexport const GITHUB_TOKEN_GENERATE_URL = 'https://github.com/settings/tokens/new';\n\n/** Adds the provided token to the given Github HTTPs remote url. */\nexport function addTokenToGitHttpsUrl(githubHttpsUrl: string, token: string) {\n const url = new URL(githubHttpsUrl);\n url.password = token;\n url.username = 'x-access-token';\n return url.href;\n}\n\n/** Gets the repository Git URL for the given github config. */\nexport function getRepositoryGitUrl(\n config: Pick,\n githubToken?: string,\n): string {\n if (config.useSsh) {\n return `git@github.com:${config.owner}/${config.name}.git`;\n }\n const baseHttpUrl = `https://github.com/${config.owner}/${config.name}.git`;\n if (githubToken !== undefined) {\n return addTokenToGitHttpsUrl(baseHttpUrl, githubToken);\n }\n return baseHttpUrl;\n}\n\n/** Gets a Github URL that refers to a list of recent commits within a specified branch. */\nexport function getListCommitsInBranchUrl(client: GitClient, branchName: string) {\n const {owner, repo} = client.remoteParams;\n return `https://github.com/${owner}/${repo}/commits/${branchName}`;\n}\n\n/** Gets a Github URL for viewing the file contents of a specified file for the given ref. */\nexport function getFileContentsUrl(client: GitClient, ref: string, relativeFilePath: string) {\n const {owner, repo} = client.remoteParams;\n return `https://github.com/${owner}/${repo}/blob/${ref}/${relativeFilePath}`;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {params, types} from 'typed-graphqlify';\n\n/**\n * Graphql Github API query that can be used to find forks of a given repository\n * that are owned by the current viewer authenticated with the Github API.\n */\nexport const findOwnedForksOfRepoQuery = params(\n {\n $owner: 'String!',\n $name: 'String!',\n },\n {\n repository: params(\n {owner: '$owner', name: '$name'},\n {\n forks: params(\n {affiliations: 'OWNER', first: 1, orderBy: {field: 'NAME', direction: 'ASC'}},\n {\n nodes: [\n {\n owner: {\n login: types.string,\n },\n name: types.string,\n },\n ],\n },\n ),\n },\n ),\n },\n);\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertValidGithubConfig, getConfig, GithubConfig} from '../config.js';\nimport {findOwnedForksOfRepoQuery} from './graphql-queries.js';\nimport {yellow} from '../logging.js';\n\nimport {GitClient} from './git-client.js';\nimport {AuthenticatedGithubClient, GithubRepo} from './github.js';\nimport {\n getRepositoryGitUrl,\n GITHUB_TOKEN_GENERATE_URL,\n GITHUB_TOKEN_SETTINGS_URL,\n} from './github-urls.js';\n\n/** Describes a function that can be used to test for given Github OAuth scopes. */\nexport type OAuthScopeTestFunction = (scopes: string[], missing: string[]) => void;\n\n/** The possible types of users which could be used for authentication. */\ntype UserType = 'bot' | 'user';\n\n/**\n * Extension of the `GitClient` with additional utilities which are useful for\n * authenticated Git client instances.\n */\nexport class AuthenticatedGitClient extends GitClient {\n /**\n * Regular expression that matches the provided Github token. Used for\n * sanitizing the token from Git child process output.\n */\n private readonly _githubTokenRegex: RegExp = new RegExp(this.githubToken, 'g');\n\n /** The OAuth scopes available for the provided Github token. */\n private _cachedOauthScopes: Promise | null = null;\n\n /** Cached fork repositories of the authenticated user. */\n private _cachedForkRepositories: GithubRepo[] | null = null;\n\n /** Instance of an authenticated github client. */\n override readonly github = new AuthenticatedGithubClient(this.githubToken);\n\n protected constructor(\n readonly githubToken: string,\n readonly userType: UserType,\n config: {github: GithubConfig},\n baseDir?: string,\n ) {\n super(config, baseDir);\n }\n\n /** Sanitizes a given message by omitting the provided Github token if present. */\n override sanitizeConsoleOutput(value: string): string {\n return value.replace(this._githubTokenRegex, '');\n }\n\n /** Git URL that resolves to the configured repository. */\n override getRepoGitUrl() {\n return getRepositoryGitUrl(this.remoteConfig, this.githubToken);\n }\n\n /**\n * Assert the GitClient instance is using a token with permissions for the all of the\n * provided OAuth scopes.\n */\n async hasOauthScopes(testFn: OAuthScopeTestFunction): Promise {\n // Because bot accounts do not have the same structure for OAuth scopes, we always assume they\n // have the correct access.\n if (this.userType === 'bot') {\n return true;\n }\n\n const scopes = await this._fetchAuthScopesForToken();\n const missingScopes: string[] = [];\n // Test Github OAuth scopes and collect missing ones.\n testFn(scopes, missingScopes);\n // If no missing scopes are found, return true to indicate all OAuth Scopes are available.\n if (missingScopes.length === 0) {\n return true;\n }\n\n // Pre-constructed error message to log to the user, providing missing scopes and\n // remediation instructions.\n const error =\n `The provided does not have required permissions due to missing scope(s): ` +\n `${yellow(missingScopes.join(', '))}\\n\\n` +\n `Update the token in use at:\\n` +\n ` ${GITHUB_TOKEN_SETTINGS_URL}\\n\\n` +\n `Alternatively, a new token can be created at: ${GITHUB_TOKEN_GENERATE_URL}\\n`;\n\n return {error};\n }\n\n /** Gets an owned fork for the configured project of the authenticated user. */\n async getForkOfAuthenticatedUser(): Promise {\n const forks = await this.getAllForksOfAuthenticatedUser();\n\n if (forks.length === 0) {\n throw Error('Unable to find fork a for currently authenticated user.');\n }\n\n return forks[0];\n }\n\n /**\n * Finds all forks owned by the currently authenticated user in the Git client,\n *\n * The determined fork repositories are cached as we assume that the authenticated\n * user will not change during execution, or that no new forks are created.\n */\n async getAllForksOfAuthenticatedUser(): Promise {\n if (this._cachedForkRepositories !== null) {\n return this._cachedForkRepositories;\n }\n\n const {owner, name} = this.remoteConfig;\n const result = await this.github.graphql(findOwnedForksOfRepoQuery, {owner, name});\n\n return (this._cachedForkRepositories = result.repository.forks.nodes.map((node) => ({\n owner: node.owner.login,\n name: node.name,\n })));\n }\n\n /** Fetch the OAuth scopes for the loaded Github token. */\n private _fetchAuthScopesForToken() {\n // If the OAuth scopes have already been loaded, return the Promise containing them.\n if (this._cachedOauthScopes !== null) {\n return this._cachedOauthScopes;\n }\n // OAuth scopes are loaded via the /rate_limit endpoint to prevent\n // usage of a request against that rate_limit for this lookup.\n return (this._cachedOauthScopes = this.github.rateLimit.get().then((response) => {\n const scopes = response.headers['x-oauth-scopes'];\n\n // If no token is provided, or if the Github client is authenticated incorrectly,\n // the `x-oauth-scopes` response header is not set. We error in such cases as it\n // signifies a faulty of the\n if (scopes === undefined) {\n throw Error('Unable to retrieve OAuth scopes for token provided to Git client.');\n }\n\n return scopes\n .split(',')\n .map((scope) => scope.trim())\n .filter((scope) => scope !== '');\n }));\n }\n\n /** The previously configured access token. */\n private static _token: string | null = null;\n /** The singleton instance of the `AuthenticatedGitClient`. */\n private static _authenticatedInstance: Promise | null = null;\n /** The previously configured user type. */\n private static _userType: 'user' | 'bot';\n\n /**\n * Static method to get the singleton instance of the `AuthenticatedGitClient`,\n * creating it if it has not yet been created.\n */\n static override async get(): Promise {\n if (AuthenticatedGitClient._token === null) {\n throw new Error('No instance of `AuthenticatedGitClient` has been configured.');\n }\n\n // If there is no cached authenticated instance, create one and cache the promise\n // immediately. This avoids constructing a client twice accidentally when e.g. waiting\n // for the configuration to be loaded.\n if (AuthenticatedGitClient._authenticatedInstance === null) {\n AuthenticatedGitClient._authenticatedInstance = (async (\n token: string,\n userType: UserType,\n ) => {\n return new AuthenticatedGitClient(\n token,\n userType,\n await getConfig([assertValidGithubConfig]),\n );\n })(AuthenticatedGitClient._token, AuthenticatedGitClient._userType);\n }\n\n return AuthenticatedGitClient._authenticatedInstance;\n }\n\n /** Configures an authenticated git client. */\n static configure(token: string, userType: UserType = 'user'): void {\n if (AuthenticatedGitClient._token) {\n throw Error(\n 'Unable to configure `AuthenticatedGitClient` as it has been configured already.',\n );\n }\n\n AuthenticatedGitClient._token = token;\n AuthenticatedGitClient._userType = userType;\n }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/** Class describing a release-train. */\nexport class ReleaseTrain {\n /** Whether the release train is currently targeting a major. */\n isMajor = this.version.minor === 0 && this.version.patch === 0;\n\n constructor(\n /** Name of the branch for this release-train. */\n public branchName: string,\n /** Most recent version for this release train. */\n public version: semver.SemVer,\n ) {}\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {GithubClient, GithubRepo} from '../../utils/git/github.js';\nimport {GithubConfig} from '../../utils/config.js';\n\n/** Regular expression that matches version-branches. */\nconst versionBranchNameRegex = /^(\\d+)\\.(\\d+)\\.x$/;\n\n/** Field in `package.json` that is used to indicate an in-progress exceptional minor. */\nexport const exceptionalMinorPackageIndicator = '__ngDevExceptionalMinor__' as const;\n\n/** Object describing a repository that can be released, together with an API client. */\nexport interface ReleaseRepoWithApi extends GithubRepo {\n /** API client that can access the repository. */\n api: GithubClient;\n /** Name of the next branch. */\n nextBranchName: string;\n}\n\n/** Type describing a version-branch. */\nexport interface VersionBranch {\n /** Name of the branch in Git. e.g. `10.0.x`. */\n name: string;\n /**\n * Parsed SemVer version for the version-branch. Version branches technically do\n * not follow the SemVer format, but we can have representative SemVer versions\n * that can be used for comparisons, sorting and other checks.\n */\n parsed: semver.SemVer;\n}\n\n/** Describes the concrete version of a version branch. */\nexport interface VersionInfo {\n version: semver.SemVer;\n isExceptionalMinor: boolean;\n}\n\n/** Type describing the parsed contents of a `package.json`. */\nexport type PackageJson = {\n version: string;\n [exceptionalMinorPackageIndicator]?: boolean;\n [otherUnknownFields: string]: unknown;\n};\n\n/**\n * Gets the name of the next branch from the Github configuration.\n *\n * Note that there is a clear separation between the main branch of the\n * upstream remote repository and the `next` release-train branch.\n */\nexport function getNextBranchName(github: GithubConfig): string {\n return github.mainBranchName;\n}\n\n/** Gets the version info for a branch by reading the `package.json` upstream. */\nexport async function getVersionInfoForBranch(\n repo: ReleaseRepoWithApi,\n branchName: string,\n): Promise {\n const {data} = await repo.api.repos.getContent({\n owner: repo.owner,\n repo: repo.name,\n path: '/package.json',\n ref: branchName,\n });\n // Workaround for: https://github.com/octokit/rest.js/issues/32.\n // TODO: Remove cast once types of Octokit `getContent` are fixed.\n const content = (data as {content?: string}).content;\n if (!content) {\n throw Error(`Unable to read \"package.json\" file from repository.`);\n }\n const pkgJson = JSON.parse(Buffer.from(content, 'base64').toString()) as PackageJson;\n const parsedVersion = semver.parse(pkgJson.version);\n if (parsedVersion === null) {\n throw Error(`Invalid version detected in following branch: ${branchName}.`);\n }\n return {\n version: parsedVersion,\n isExceptionalMinor: pkgJson[exceptionalMinorPackageIndicator] === true,\n };\n}\n\n/** Whether the given branch corresponds to a version branch. */\nexport function isVersionBranch(branchName: string): boolean {\n return versionBranchNameRegex.test(branchName);\n}\n\n/**\n * Gets the version branches for the specified major versions in descending\n * order. i.e. latest version branches first.\n */\nexport async function getBranchesForMajorVersions(\n repo: ReleaseRepoWithApi,\n majorVersions: number[],\n): Promise {\n const branchData = await repo.api.paginate(repo.api.repos.listBranches, {\n owner: repo.owner,\n repo: repo.name,\n protected: true,\n });\n const branches: VersionBranch[] = [];\n\n for (const {name} of branchData) {\n if (!isVersionBranch(name)) {\n continue;\n }\n // Convert the version-branch into a SemVer version that can be used with the\n // SemVer utilities. e.g. to determine semantic order, compare versions.\n const parsed = convertVersionBranchToSemVer(name);\n // Collect all version-branches that match the specified major versions.\n if (parsed !== null && majorVersions.includes(parsed.major)) {\n branches.push({name, parsed});\n }\n }\n\n // Sort captured version-branches in descending order.\n return branches.sort((a, b) => semver.rcompare(a.parsed, b.parsed));\n}\n\n/**\n * Converts a given version-branch into a SemVer version that can be used with SemVer\n * utilities. e.g. to determine semantic order, extract major digit, compare.\n *\n * For example `10.0.x` will become `10.0.0` in SemVer. The patch digit is not\n * relevant but needed for parsing. SemVer does not allow `x` as patch digit.\n */\nexport function convertVersionBranchToSemVer(branchName: string): semver.SemVer | null {\n return semver.parse(branchName.replace(versionBranchNameRegex, '$1.$2.0'));\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseTrain} from './release-trains.js';\nimport {\n getBranchesForMajorVersions,\n getVersionInfoForBranch,\n ReleaseRepoWithApi,\n VersionBranch,\n} from './version-branches.js';\n\ninterface DeterminationCheckFns {\n canHaveExceptionalMinor: (rc: ReleaseTrain | null) => boolean;\n isValidReleaseCandidateVersion: (v: semver.SemVer) => boolean;\n isValidExceptionalMinorVersion: (v: semver.SemVer, rc: ReleaseTrain | null) => boolean;\n}\n\n/** The active release trains for a project. */\nexport class ActiveReleaseTrains {\n /** Release-train currently in the \"release-candidate\" or \"feature-freeze\" phase. */\n readonly releaseCandidate: ReleaseTrain | null = this.trains.releaseCandidate;\n /** Release-train in the `next` phase. */\n readonly next: ReleaseTrain = this.trains.next;\n /** Release-train currently in the \"latest\" phase. */\n readonly latest: ReleaseTrain = this.trains.latest;\n /** Release-train for an exceptional minor in progress. */\n readonly exceptionalMinor: ReleaseTrain | null = this.trains.exceptionalMinor;\n\n constructor(\n private trains: {\n releaseCandidate: ReleaseTrain | null;\n exceptionalMinor: ReleaseTrain | null;\n next: ReleaseTrain;\n latest: ReleaseTrain;\n },\n ) {}\n\n /** Whether the active release trains indicate the repository is in a feature freeze state. */\n isFeatureFreeze() {\n return this.releaseCandidate !== null && this.releaseCandidate.version.prerelease[0] === 'next';\n }\n\n /** Fetches the active release trains for the configured project. */\n static async fetch(repo: ReleaseRepoWithApi): Promise {\n return fetchActiveReleaseTrains(repo);\n }\n}\n\n/** Fetches the active release trains for the configured project. */\nasync function fetchActiveReleaseTrains(repo: ReleaseRepoWithApi): Promise {\n const nextBranchName = repo.nextBranchName;\n const {version: nextVersion} = await getVersionInfoForBranch(repo, nextBranchName);\n const next = new ReleaseTrain(nextBranchName, nextVersion);\n const majorVersionsToFetch: number[] = [];\n const checks: DeterminationCheckFns = {\n canHaveExceptionalMinor: () => false,\n isValidReleaseCandidateVersion: () => false,\n isValidExceptionalMinorVersion: () => false,\n };\n\n if (nextVersion.minor === 0) {\n // CASE 1: Next is for a new major. Potential release-candidate/feature-freeze train\n // can only be for the previous major. Usually patch is in the same minor as for RC/FF,\n // but technically two majors can be in the works, so we also need to consider the second\n // previous major\n\n // Example scenarios:\n // * next = v15.0.x, rc/ff = v14.4.x, exc-minor = disallowed, patch = v14.3.x\n // * next = v15.0.x rc/ff = null, exc-minor = null, patch = v14.3.x\n // * next = v15.0.x rc/ff = null, exc-minor = v14.4.x, patch = v14.3.x\n // Cases where two majors are in the works (unlikely- but technically possible)\n // * next = v15.0.x, rc/ff = v14.0.0, exc-minor = null, patch = v13.2.x\n // * next = v15.0.x, rc/ff = v14.0.0, exc-minor = v13.3.x, patch = v13.2.x\n majorVersionsToFetch.push(nextVersion.major - 1, nextVersion.major - 2);\n checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major - 1;\n checks.canHaveExceptionalMinor = (rc) => rc === null || rc.isMajor;\n checks.isValidExceptionalMinorVersion = (v, rc) =>\n v.major === (rc === null ? nextVersion.major : rc.version.major) - 1;\n } else if (nextVersion.minor === 1) {\n // CASE 2: Next is for the first minor of a major release. Potential release-candidate/feature-freeze\n // train is always guaranteed to be in the same major. Depending on if there is RC/FF, the patch train\n // would be in the same major, or in the previous one. Example scenarios:\n // * next = v15.1.x, rc/ff = v15.0.x, exc-minor = null, patch = v14.5.x\n // * next = v15.1.x, rc/ff = v15.0.x, exc-minor = v14.6.x, patch = v14.5.x\n // * next = v15.1.x, rc/ff = null, exc-minor = disallowed, patch = v15.0.x\n majorVersionsToFetch.push(nextVersion.major, nextVersion.major - 1);\n checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major;\n checks.canHaveExceptionalMinor = (rc) => rc !== null && rc.isMajor;\n checks.isValidExceptionalMinorVersion = (v, rc) => v.major === rc!.version.major - 1;\n } else {\n // CASE 3: Next for a normal minor (other cases as above). Potential release-candidate/feature-freeze\n // train and the patch train are always guaranteed to be in the same major. Example scenarios:\n // * next = v15.2.x, rc/ff = v15.1.x, exc-minor = disallowed, patch = v15.0.x\n // * next = v15.2.x, rc/ff = null, exc-minor = disallowed, patch = v15.1.x\n majorVersionsToFetch.push(nextVersion.major);\n checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major;\n checks.canHaveExceptionalMinor = () => false;\n }\n\n // Collect all version-branches that should be considered for the latest version-branch,\n // a potential exceptional minor train or feature-freeze/release-candidate train.\n const branches = await getBranchesForMajorVersions(repo, majorVersionsToFetch);\n const {latest, releaseCandidate, exceptionalMinor} =\n await findActiveReleaseTrainsFromVersionBranches(repo, next, branches, checks);\n\n if (latest === null) {\n throw Error(\n `Unable to determine the latest release-train. The following branches ` +\n `have been considered: [${branches.map((b) => b.name).join(', ')}]`,\n );\n }\n\n return new ActiveReleaseTrains({releaseCandidate, next, latest, exceptionalMinor});\n}\n\n/** Finds the currently active release trains from the specified version branches. */\nasync function findActiveReleaseTrainsFromVersionBranches(\n repo: ReleaseRepoWithApi,\n next: ReleaseTrain,\n branches: VersionBranch[],\n checks: DeterminationCheckFns,\n): Promise<{\n latest: ReleaseTrain | null;\n releaseCandidate: ReleaseTrain | null;\n exceptionalMinor: ReleaseTrain | null;\n}> {\n // Version representing the release-train currently in the next phase. Note that we ignore\n // patch and pre-release segments in order to be able to compare the next release train to\n // other release trains from version branches (which follow the `N.N.x` pattern).\n const nextReleaseTrainVersion = semver.parse(`${next.version.major}.${next.version.minor}.0`)!;\n const nextBranchName = repo.nextBranchName;\n\n let latest: ReleaseTrain | null = null;\n let releaseCandidate: ReleaseTrain | null = null;\n let exceptionalMinor: ReleaseTrain | null = null;\n\n // Iterate through the captured branches and find the latest non-prerelease branch and a\n // potential release candidate branch. From the collected branches we iterate descending\n // order (most recent semantic version-branch first). The first branch is either the latest\n // active version branch (i.e. patch), a feature-freeze/release-candidate branch (ff/rc) or\n // an in-progress exceptional minor:\n // * A FF/RC or exceptional minor branch cannot be more recent than the current next\n // version-branch, so we stop iterating once we found such a branch.\n // * As soon as we discover a version-branch not being an RC/FF or exceptional minor,\n // we know it is the active patch branch. We stop looking further.\n // * If we find a FF/RC branch, we continue looking for the next version-branch as\n // that one has to be an exceptional minor, or the latest active version-branch.\n for (const {name, parsed} of branches) {\n // It can happen that version branches have been accidentally created which are more recent\n // than the release-train in the next branch (i.e. `main`). We could ignore such branches\n // silently, but it might be symptomatic for an outdated version in the `next` branch, or an\n // accidentally created branch by the caretaker. In either way we want to raise awareness.\n if (semver.gt(parsed, nextReleaseTrainVersion)) {\n throw Error(\n `Discovered unexpected version-branch \"${name}\" for a release-train that is ` +\n `more recent than the release-train currently in the \"${nextBranchName}\" branch. ` +\n `Please either delete the branch if created by accident, or update the outdated ` +\n `version in the next branch (${nextBranchName}).`,\n );\n } else if (semver.eq(parsed, nextReleaseTrainVersion)) {\n throw Error(\n `Discovered unexpected version-branch \"${name}\" for a release-train that is already ` +\n `active in the \"${nextBranchName}\" branch. Please either delete the branch if ` +\n `created by accident, or update the version in the next branch (${nextBranchName}).`,\n );\n }\n\n const {version, isExceptionalMinor} = await getVersionInfoForBranch(repo, name);\n const releaseTrain = new ReleaseTrain(name, version);\n const isPrerelease = version.prerelease[0] === 'rc' || version.prerelease[0] === 'next';\n\n if (isExceptionalMinor) {\n if (exceptionalMinor !== null) {\n throw Error(\n `Unable to determine latest release-train. Found an additional exceptional minor ` +\n `version branch: \"${name}\". Already discovered: ${exceptionalMinor.branchName}.`,\n );\n }\n if (!checks.canHaveExceptionalMinor(releaseCandidate)) {\n throw Error(\n `Unable to determine latest release-train. Found an unexpected exceptional minor ` +\n `version branch: \"${name}\". No exceptional minor is currently allowed.`,\n );\n }\n if (!checks.isValidExceptionalMinorVersion(version, releaseCandidate)) {\n throw Error(\n `Unable to determine latest release-train. Found an invalid exceptional ` +\n `minor version branch: \"${name}\". Invalid version: ${version}.`,\n );\n }\n exceptionalMinor = releaseTrain;\n continue;\n }\n\n if (isPrerelease) {\n if (exceptionalMinor !== null) {\n throw Error(\n `Unable to determine latest release-train. Discovered a feature-freeze/release-candidate ` +\n `version branch (${name}) that is older than an in-progress exceptional ` +\n `minor (${exceptionalMinor.branchName}).`,\n );\n }\n if (releaseCandidate !== null) {\n throw Error(\n `Unable to determine latest release-train. Found two consecutive ` +\n `pre-release version branches. No exceptional minors are allowed currently, and ` +\n `there cannot be multiple feature-freeze/release-candidate branches: \"${name}\".`,\n );\n }\n if (!checks.isValidReleaseCandidateVersion(version)) {\n throw Error(\n `Discovered unexpected old feature-freeze/release-candidate branch. Expected no ` +\n `version-branch in feature-freeze/release-candidate mode for v${version.major}.`,\n );\n }\n releaseCandidate = releaseTrain;\n continue;\n }\n\n // The first non-prerelease and non-exceptional-minor branch is always picked up\n // as the release-train for `latest`. Once we discovered the latest release train,\n // we skip looking further as there are no possible older active release trains.\n latest = releaseTrain;\n break;\n }\n\n return {releaseCandidate: releaseCandidate, exceptionalMinor, latest};\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseConfig} from '../config/index.js';\nimport {LtsNpmDistTag} from './long-term-support.js';\n\n/**\n * Type describing the possible NPM dist tags used by Angular packages:\n * - latest: Stable versions. These are releases from the \"latest\" train.\n * - next: Next versions. These are releases from the FF/RC or \"next\" train.\n * - do-not-use-exceptional-minor: Exceptional minors have their own NPM dist tag since\n * we would not want to override `latest`, nor would we want to revert `@next` if\n * the version is already ahead. The tags are expected to be deleted after the minor\n * becomes stable.\n */\nexport type NpmDistTag = 'latest' | 'next' | 'do-not-use-exceptional-minor' | LtsNpmDistTag;\n\n/** Type describing an NPM package fetched from the registry. */\nexport interface NpmPackageInfo {\n /** Maps of versions and their package JSON objects. */\n 'versions': {[name: string]: undefined | object};\n /** Map of NPM dist-tags and their chosen version. */\n 'dist-tags': {[tagName: string]: string | undefined};\n /** Map of versions and their ISO release time. */\n 'time': {[name: string]: string};\n}\n\n/**\n * Cache for requested NPM package information. A cache is desirable as the NPM\n * registry requests are usually very large and slow.\n */\nexport const _npmPackageInfoCache: {[pkgName: string]: Promise} = {};\n\n/** Fetches the NPM package representing the project. */\nexport async function fetchProjectNpmPackageInfo(config: ReleaseConfig): Promise {\n return await fetchPackageInfoFromNpmRegistry(config.representativeNpmPackage);\n}\n\n/** Gets whether the given version is published to NPM or not */\nexport async function isVersionPublishedToNpm(\n version: semver.SemVer,\n config: ReleaseConfig,\n): Promise {\n const {versions} = await fetchProjectNpmPackageInfo(config);\n return versions[version.format()] !== undefined;\n}\n\n/** Fetches the specified NPM package from the NPM registry. */\nasync function fetchPackageInfoFromNpmRegistry(pkgName: string): Promise {\n if (_npmPackageInfoCache[pkgName] === undefined) {\n _npmPackageInfoCache[pkgName] = fetch(`https://registry.npmjs.org/${pkgName}`).then(\n (r) => r.json() as Promise,\n );\n }\n return await _npmPackageInfoCache[pkgName];\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseConfig} from '../config/index.js';\n\nimport {fetchProjectNpmPackageInfo} from './npm-registry.js';\n\n/** Type describing a NPM dist tag indicating long-term support. */\nexport type LtsNpmDistTag = `v${number}-lts`;\n\n/** Interface describing determined LTS branches. */\nexport interface LtsBranches {\n /** List of active LTS version branches. */\n active: LtsBranch[];\n /** List of inactive LTS version branches. */\n inactive: LtsBranch[];\n}\n\n/** Interface describing an LTS version branch. */\nexport interface LtsBranch {\n /** Name of the branch. */\n name: string;\n /** Most recent version for the given LTS branch. */\n version: semver.SemVer;\n /** NPM dist tag for the LTS version. */\n npmDistTag: LtsNpmDistTag;\n}\n\n/**\n * Number of months a major version in Angular is actively supported. See:\n * https://angular.io/guide/releases#support-policy-and-schedule.\n */\nconst majorActiveSupportDuration = 6;\n\n/**\n * Number of months a major version has active long-term support. See:\n * https://angular.io/guide/releases#support-policy-and-schedule.\n */\nconst majorLongTermSupportDuration = 12;\n\n/** Regular expression that matches LTS NPM dist tags. */\nconst ltsNpmDistTagRegex = /^v(\\d+)-lts$/;\n\n/** Finds all long-term support release trains from the specified NPM package. */\nexport async function fetchLongTermSupportBranchesFromNpm(\n config: ReleaseConfig,\n): Promise {\n const {'dist-tags': distTags, time} = await fetchProjectNpmPackageInfo(config);\n const today = new Date();\n const active: LtsBranch[] = [];\n const inactive: LtsBranch[] = [];\n\n // Iterate through the NPM package information and determine active/inactive LTS versions with\n // their corresponding branches. We assume that an LTS tagged version in NPM belongs to the\n // last-minor branch of a given major (i.e. we assume there are no outdated LTS NPM dist tags).\n for (const npmDistTag in distTags) {\n if (isLtsDistTag(npmDistTag)) {\n const version = semver.parse(distTags[npmDistTag])!;\n const branchName = `${version.major}.${version.minor}.x`;\n const majorReleaseDate = new Date(time[`${version.major}.0.0`]);\n const ltsEndDate = computeLtsEndDateOfMajor(majorReleaseDate);\n const ltsBranch: LtsBranch = {name: branchName, version, npmDistTag};\n // Depending on whether the LTS phase is still active, add the branch\n // to the list of active or inactive LTS branches.\n if (today <= ltsEndDate) {\n active.push(ltsBranch);\n } else {\n inactive.push(ltsBranch);\n }\n }\n }\n\n // Sort LTS branches in descending order. i.e. most recent ones first.\n active.sort((a, b) => semver.rcompare(a.version, b.version));\n inactive.sort((a, b) => semver.rcompare(a.version, b.version));\n\n return {active, inactive};\n}\n\n/** Gets whether the specified tag corresponds to a LTS dist tag. */\nexport function isLtsDistTag(tagName: string): tagName is LtsNpmDistTag {\n return ltsNpmDistTagRegex.test(tagName);\n}\n\n/**\n * Computes the date when long-term support ends for a major released at the\n * specified date.\n */\nexport function computeLtsEndDateOfMajor(majorReleaseDate: Date): Date {\n return new Date(\n majorReleaseDate.getFullYear(),\n majorReleaseDate.getMonth() + majorActiveSupportDuration + majorLongTermSupportDuration,\n majorReleaseDate.getDate(),\n majorReleaseDate.getHours(),\n majorReleaseDate.getMinutes(),\n majorReleaseDate.getSeconds(),\n majorReleaseDate.getMilliseconds(),\n );\n}\n\n/** Gets the long-term support NPM dist tag for a given major version. */\nexport function getLtsNpmDistTagOfMajor(major: number): LtsNpmDistTag {\n // LTS versions should be tagged in NPM in the following format: `v{major}-lts`.\n return `v${major}-lts` as const;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ConfigValidationError, NgDevConfig} from '../utils/config.js';\n\n/** Configuration for commit-message comands. */\nexport interface CommitMessageConfig {\n maxLineLength: number;\n minBodyLength: number;\n minBodyLengthTypeExcludes?: string[];\n scopes: string[];\n disallowFixup?: boolean;\n}\n\n/** Assert the provided config contains a `CommitMessageConfig`. */\nexport function assertValidCommitMessageConfig(\n config: T & Partial<{commitMessage: CommitMessageConfig}>,\n): asserts config is T & {commitMessage: CommitMessageConfig} {\n if (config.commitMessage === undefined) {\n throw new ConfigValidationError(`No configuration defined for \"commitMessage\"`);\n }\n}\n\n/** Scope requirement level to be set for each commit type. */\nexport enum ScopeRequirement {\n Required,\n Optional,\n Forbidden,\n}\n\nexport enum ReleaseNotesLevel {\n Hidden,\n Visible,\n}\n\n/** A commit type */\nexport interface CommitType {\n description: string;\n name: string;\n scope: ScopeRequirement;\n releaseNotesLevel: ReleaseNotesLevel;\n}\n\n/** The valid commit types for Angular commit messages. */\nexport const COMMIT_TYPES: {[key: string]: CommitType} = {\n build: {\n name: 'build',\n description: 'Changes to local repository build system and tooling',\n scope: ScopeRequirement.Optional,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n ci: {\n name: 'ci',\n description: 'Changes to CI configuration and CI specific tooling',\n scope: ScopeRequirement.Forbidden,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n docs: {\n name: 'docs',\n description: 'Changes which exclusively affects documentation.',\n scope: ScopeRequirement.Optional,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n feat: {\n name: 'feat',\n description: 'Creates a new feature',\n scope: ScopeRequirement.Required,\n releaseNotesLevel: ReleaseNotesLevel.Visible,\n },\n fix: {\n name: 'fix',\n description: 'Fixes a previously discovered failure/bug',\n scope: ScopeRequirement.Required,\n releaseNotesLevel: ReleaseNotesLevel.Visible,\n },\n perf: {\n name: 'perf',\n description: 'Improves performance without any change in functionality or API',\n scope: ScopeRequirement.Required,\n releaseNotesLevel: ReleaseNotesLevel.Visible,\n },\n refactor: {\n name: 'refactor',\n description: 'Refactor without any change in functionality or API (includes style changes)',\n scope: ScopeRequirement.Optional,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n release: {\n name: 'release',\n description: 'A release point in the repository',\n scope: ScopeRequirement.Forbidden,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n test: {\n name: 'test',\n description: \"Improvements or corrections made to the project's test suite\",\n scope: ScopeRequirement.Optional,\n releaseNotesLevel: ReleaseNotesLevel.Hidden,\n },\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ConfigValidationError, NgDevConfig} from '../utils/config.js';\n\ninterface Formatter {\n matchers: string[];\n}\n\nexport interface FormatConfig {\n [key: string]: boolean | Formatter;\n}\n\n/** Retrieve and validate the config as `FormatConfig`. */\nexport function assertValidFormatConfig(\n config: T & Partial<{format: FormatConfig}>,\n): asserts config is T & {format: FormatConfig} {\n // List of errors encountered validating the config.\n const errors: string[] = [];\n if (config.format === undefined) {\n throw new ConfigValidationError(`No configuration defined for \"format\"`);\n }\n\n for (const [key, value] of Object.entries(config.format!)) {\n switch (typeof value) {\n case 'boolean':\n break;\n case 'object':\n checkFormatterConfig(key, value, errors);\n break;\n default:\n errors.push(`\"format.${key}\" is not a boolean or Formatter object`);\n }\n }\n if (errors.length) {\n throw new ConfigValidationError('Invalid \"format\" configuration', errors);\n }\n}\n\n/** Validate an individual Formatter config. */\nfunction checkFormatterConfig(key: string, config: Partial, errors: string[]) {\n if (config.matchers === undefined) {\n errors.push(`Missing \"format.${key}.matchers\" value`);\n }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport which from 'which';\n\nimport {isNodeJSWrappedError} from './nodejs-errors.js';\nimport lockfile from '@yarnpkg/lockfile';\nimport {parse as parseYaml} from 'yaml';\nimport {ChildProcess} from './child-process.js';\nimport {Log} from './logging.js';\n\n/** Type describing a Yarn configuration and its potential properties. */\nexport interface YarnConfiguration {\n 'yarnPath': string | undefined;\n 'yarn-path': string | undefined;\n}\n\n/** Type describing a configuration with its corresponding parsing mechanism. */\nexport type ConfigWithParser = {fileName: string; parse: (c: string) => YarnConfiguration};\n\n/** Interface describing a command that will invoke Yarn. */\nexport interface YarnCommandInfo {\n binary: string;\n args: string[];\n legacy?: boolean;\n}\n\n/** List of Yarn configuration files and their parsing mechanisms. */\nexport const yarnConfigFiles: ConfigWithParser[] = [\n {fileName: '.yarnrc', parse: (c) => lockfile.parse(c).object},\n {fileName: '.yarnrc.yml', parse: (c) => parseYaml(c)},\n];\n\n/**\n * Resolves Yarn for the given project directory.\n *\n * This function exists so that Yarn can be invoked from within Yarn-initiated processes.\n * Yarn uses some magical logic where it creates a temporary directory to make Yarn resolvable.\n * This temporary directory is then wired up in `process.env.PATH` and can break for example\n * when a command switches branches, causing the originally invoked Yarn checked-in file to\n * become unavailable.\n */\nexport async function resolveYarnScriptForProject(projectDir: string): Promise {\n let info: YarnCommandInfo | undefined;\n\n const yarnPathFromConfig = await getYarnPathFromConfigurationIfPresent(projectDir);\n if (yarnPathFromConfig !== null) {\n info = {binary: 'node', args: [yarnPathFromConfig]};\n }\n\n if (!info) {\n const yarnPathFromNpmBin = await getYarnPathFromNpmGlobalBinaries();\n if (yarnPathFromNpmBin !== null) {\n info = {binary: yarnPathFromNpmBin, args: []};\n }\n }\n\n info ??= {binary: 'yarn', args: []};\n\n const yarnVersion = await getYarnVersion(info);\n if (yarnVersion && Number(yarnVersion.split('.')[0]) < 2) {\n info.args.push('--silent');\n info.legacy = true;\n }\n\n return info;\n}\n\n/** Gets the path to the Yarn binary from the NPM global binary directory. */\nexport async function getYarnPathFromNpmGlobalBinaries(): Promise {\n const npmGlobalBinPath = await getNpmGlobalBinPath();\n if (npmGlobalBinPath === null) {\n return null;\n }\n try {\n return await which('yarn', {path: npmGlobalBinPath});\n } catch (e) {\n Log.debug('Could not find Yarn within NPM global binary directory. Error:', e);\n return null;\n }\n}\n\n/** Gets the path to the system-wide global NPM binary directory. */\nasync function getNpmGlobalBinPath(): Promise {\n try {\n return (await ChildProcess.spawn('npm', ['bin', '--global'], {mode: 'silent'})).stdout.trim();\n } catch (e) {\n Log.debug('Could not determine NPM global binary directory. Error:', e);\n return null;\n }\n}\n\n/** Gets the Yarn path from the Yarn configuration if present. */\nasync function getYarnPathFromConfigurationIfPresent(projectDir: string): Promise {\n const yarnRc = await findAndParseYarnConfiguration(projectDir);\n if (yarnRc === null) {\n return null;\n }\n\n const yarnPath = yarnRc['yarn-path'] ?? yarnRc['yarnPath'];\n if (yarnPath === undefined) {\n return null;\n }\n\n return path.resolve(projectDir, yarnPath);\n}\n\nasync function getYarnVersion(info: YarnCommandInfo): Promise {\n try {\n return (\n await ChildProcess.spawn(info.binary, [...info.args, '--version'], {mode: 'silent'})\n ).stdout.trim();\n } catch (e) {\n Log.debug('Could not determine Yarn version. Error:', e);\n return null;\n }\n}\n\n/** Finds and parses the Yarn configuration file for the given project. */\nasync function findAndParseYarnConfiguration(\n projectDir: string,\n): Promise {\n const files = await Promise.all(\n yarnConfigFiles.map(async (entry) => ({\n entry,\n content: await readFileGracefully(path.join(projectDir, entry.fileName)),\n })),\n );\n const config = files.find((entry) => entry.content !== null);\n if (config === undefined) {\n return null;\n }\n\n try {\n return config.entry.parse(config.content!);\n } catch (e) {\n Log.debug(`Could not parse determined Yarn configuration file (${config.entry.fileName}).`);\n Log.debug(`Error:`, e);\n return null;\n }\n}\n\n/**\n * Reads the specified file gracefully.\n * @returns The file contents. Null if the file does not exist.\n */\nasync function readFileGracefully(filePath: string): Promise {\n try {\n return await fs.promises.readFile(filePath, 'utf8');\n } catch (error) {\n if (isNodeJSWrappedError(error, Error) && error.code === 'ENOENT') {\n return null;\n }\n throw error;\n }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Type narrowing function that becomes true if the given error is of type `T`.\n * The narrowed type will include the NodeJS `ErrnoException` properties.\n */\nexport function isNodeJSWrappedError Error>(\n value: Error | unknown,\n errorType: T,\n): value is InstanceType & NodeJS.ErrnoException {\n return value instanceof errorType;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ConfigValidationError, GithubConfig, NgDevConfig} from '../../utils/config.js';\n\n/**\n * Possible merge methods supported by the Github API.\n * https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button.\n */\nexport type GithubApiMergeMethod = 'merge' | 'squash' | 'rebase';\n\n/** Configuration for the Github API merge strategy. */\nexport interface GithubApiMergeStrategyConfig {\n /** Default method used for merging pull requests */\n default: GithubApiMergeMethod;\n /** Labels which specify a different merge method than the default. */\n labels?: {pattern: string; method: GithubApiMergeMethod}[];\n}\n\n/** Configuration for the merge script. */\nexport interface PullRequestConfig {\n /**\n * Configuration for the upstream remote. All of these options are optional as\n * defaults are provided by the common dev-infra github configuration.\n */\n remote?: GithubConfig;\n\n /** Required base commits for given branches. */\n requiredBaseCommits?: {[branchName: string]: string};\n\n /** List of statuses that are required before a pull request can be merged. */\n requiredStatuses?: {type: 'check' | 'status'; name: string}[];\n\n /**\n * Whether pull requests should be merged using the Github API. This can be enabled\n * if projects want to have their pull requests show up as `Merged` in the Github UI.\n * The downside is that fixup or squash commits no longer work as the Github API does\n * not support this.\n */\n githubApiMerge: false | GithubApiMergeStrategyConfig;\n\n /**\n * List of commit scopes which are exempted from target label content requirements. i.e. no `feat`\n * scopes in patch branches, no breaking changes in minor or patch changes.\n */\n targetLabelExemptScopes?: string[];\n\n /**\n * Optional map of validations to enable/disable, merged with the defaults from ng-dev.\n */\n validators?: PullRequestValidationConfig;\n\n /**\n * Whether target labeling should be disabled. Special option for repositories\n * not working with the canonical versioning and branching of Angular projects.\n *\n * Generally not recommended as Angular-owned projects are supposed to consistently\n * follow the canonical branching/versioning.\n */\n __noTargetLabeling?: boolean;\n}\n\n/** Loads and validates the merge configuration. */\nexport function assertValidPullRequestConfig(\n config: T & Partial<{pullRequest: PullRequestConfig}>,\n): asserts config is T & {pullRequest: PullRequestConfig} {\n const errors: string[] = [];\n if (config.pullRequest === undefined) {\n throw new ConfigValidationError(\n 'No pullRequest configuration found. Set the `pullRequest` configuration.',\n );\n }\n\n if (config.pullRequest.githubApiMerge === undefined) {\n errors.push('No explicit choice of merge strategy. Please set `githubApiMerge`.');\n }\n\n if (errors.length) {\n throw new ConfigValidationError('Invalid `pullRequest` configuration', errors);\n }\n}\n\nexport interface PullRequestValidationConfig {\n [key: `assert${string}`]: boolean;\n}\n", "export const createTypedObject = any>(LabelConstructor: T) => {\n return (val: Record[0]>) => {\n for (const key in val) {\n val[key] = new LabelConstructor(val[key]);\n }\n return val as unknown as Record>;\n };\n};\n\nexport interface LabelParams {\n /* The label string. */\n name: string;\n /* The label description. */\n description: string;\n /* The hexadecimal color code for the label, without the leading */\n color?: string;\n /** The repositories the label is to be used in. */\n repositories?: ManagedRepositories[];\n}\n\nexport class Label {\n /** The repositories the label is to be used in. */\n repositories = this.params.repositories || [\n ManagedRepositories.ANGULAR,\n ManagedRepositories.ANGULAR_CLI,\n ManagedRepositories.COMPONENTS,\n ManagedRepositories.DEV_INFRA,\n ];\n /* The label string. */\n name = this.params.name;\n /* The label description. */\n description = this.params.description;\n /* The hexadecimal color code for the label, without the leading */\n color = this.params.color;\n\n constructor(public readonly params: T) {}\n}\n\nexport enum ManagedRepositories {\n COMPONENTS = 'components',\n ANGULAR = 'angular',\n ANGULAR_CLI = 'angular-cli',\n DEV_INFRA = 'dev-infra',\n}\n", "import {createTypedObject, Label} from './base.js';\n\nexport class TargetLabel extends Label {\n // Field to ensure other labels are not assignable to `TargetLabel`.\n __hasTargetLabelMarker__ = true;\n}\n\n/**\n * Record capturing available target label names in the Angular organization.\n * A target label is set on a pull request to specify where its changes should land.\n *\n * More details can be found here:\n * https://docs.google.com/document/d/197kVillDwx-RZtSVOBtPb4BBIAw0E9RT3q3v6DZkykU#heading=h.lkuypj38h15d\n */\nexport const targetLabels = createTypedObject(TargetLabel)({\n TARGET_FEATURE: {\n description: 'This PR is targeted for a feature branch (outside of main and semver branches)',\n name: 'target: feature',\n },\n TARGET_LTS: {\n description: 'This PR is targeting a version currently in long-term support',\n name: 'target: lts',\n },\n TARGET_MAJOR: {\n description: 'This PR is targeted for the next major release',\n name: 'target: major',\n },\n TARGET_MINOR: {\n description: 'This PR is targeted for the next minor release',\n name: 'target: minor',\n },\n TARGET_PATCH: {\n description: 'This PR is targeted for the next patch release',\n name: 'target: patch',\n },\n TARGET_RC: {\n description: 'This PR is targeted for the next release-candidate',\n name: 'target: rc',\n },\n});\n", "import {Commit} from '../../../commit-message/parse.js';\nimport {createTypedObject, Label, LabelParams, ManagedRepositories} from './base.js';\n\nexport interface ManageLabelParams extends LabelParams {\n /** A matching function, if the label is automatically applied by our github action, otherwise false. */\n commitCheck: (c: Commit) => boolean;\n}\n\nclass ManagedLabel extends Label {\n /** A matching function, if the label is automatically applied by our github action, otherwise false. */\n commitCheck: (c: Commit) => boolean = this.params.commitCheck;\n}\n\nexport const managedLabels = createTypedObject(ManagedLabel)({\n DETECTED_BREAKING_CHANGE: {\n description: 'PR contains a commit with a breaking change',\n name: 'detected: breaking change',\n commitCheck: (c: Commit) => c.breakingChanges.length !== 0,\n },\n DETECTED_DEPRECATION: {\n description: 'PR contains a commit with a deprecation',\n name: 'detected: deprecation',\n commitCheck: (c: Commit) => c.deprecations.length !== 0,\n },\n DETECTED_FEATURE: {\n description: 'PR contains a feature commit',\n name: 'detected: feature',\n commitCheck: (c: Commit) => c.type === 'feat',\n },\n DETECTED_DOCS_CHANGE: {\n description: 'Related to the documentation',\n name: 'area: docs',\n commitCheck: (c: Commit) => c.type === 'docs',\n },\n DETECTED_INFRA_CHANGE: {\n description: 'Related the build and CI infrastructure of the project',\n name: 'area: build & ci',\n commitCheck: (c: Commit) => c.type === 'build' || c.type === 'ci',\n },\n DETECTED_PERF_CHANGE: {\n description: 'Issues related to performance',\n name: 'area: performance',\n commitCheck: (c: Commit) => c.type === 'perf',\n },\n\n // angular/angular specific labels.\n DETECTED_HTTP_CHANGE: {\n description: 'Issues related to HTTP and HTTP Client',\n name: 'area: common/http',\n commitCheck: (c: Commit) => c.scope === 'common/http' || c.scope === 'http',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_COMPILER_CHANGE: {\n description: \"Issues related to `ngc`, Angular's template compiler\",\n name: 'area: compiler',\n commitCheck: (c: Commit) => c.scope === 'compiler' || c.scope === 'compiler-cli',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_PLATFORM_BROWSER_CHANGE: {\n description: 'Issues related to the framework runtime',\n name: 'area: core',\n commitCheck: (c: Commit) =>\n c.scope === 'platform-browser' ||\n c.scope === 'core' ||\n c.scope === 'platform-browser-dynamic',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_PLATFORM_SERVER_CHANGE: {\n description: 'Issues related to server-side rendering',\n name: 'area: server',\n commitCheck: (c: Commit) => c.scope === 'platform-server',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_ZONES_CHANGE: {\n description: 'Issues related to zone.js',\n name: 'area: zones',\n commitCheck: (c: Commit) => c.scope === 'zone.js',\n repositories: [ManagedRepositories.ANGULAR],\n },\n DETECTED_LOCALIZE_CHANGE: {\n description: 'Issues related to localization and internationalization',\n name: 'area: i18n',\n commitCheck: (c: Commit) => c.scope === 'localize',\n repositories: [ManagedRepositories.ANGULAR],\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass ActionLabel extends Label {}\n\nexport const actionLabels = createTypedObject(ActionLabel)({\n ACTION_MERGE: {\n description: 'The PR is ready for merge by the caretaker',\n name: 'action: merge',\n },\n ACTION_CLEANUP: {\n description:\n 'The PR is in need of cleanup, either due to needing a rebase or in response to comments from reviews',\n name: 'action: cleanup',\n },\n ACTION_PRESUBMIT: {\n description: 'The PR is in need of a google3 presubmit',\n name: 'action: presubmit',\n },\n ACTION_GLOBAL_PRESUBMIT: {\n description: 'The PR is in need of a google3 global presubmit',\n name: 'action: global presubmit',\n },\n ACTION_REVIEW: {\n description: 'The PR is still awaiting reviews from at least one requested reviewer',\n name: 'action: review',\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass MergeLabel extends Label {}\n\nexport const mergeLabels = createTypedObject(MergeLabel)({\n MERGE_PRESERVE_COMMITS: {\n description: 'When the PR is merged, a rebase and merge should be performed',\n name: 'merge: preserve commits',\n },\n MERGE_SQUASH_COMMITS: {\n description: 'When the PR is merged, a squash and merge should be performed',\n name: 'merge: squash commits',\n },\n MERGE_FIX_COMMIT_MESSAGE: {\n description: 'When the PR is merged, rewrites/fixups of the commit messages are needed',\n name: 'merge: fix commit message',\n },\n MERGE_CARETAKER_NOTE: {\n description:\n 'Alert the caretaker performing the merge to check the PR for an out of normal action needed or note',\n name: 'merge: caretaker note',\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass PriorityLabel extends Label {}\n\nexport const priorityLabels = createTypedObject(PriorityLabel)({\n P0: {\n name: 'P0',\n description:\n 'Issue that causes an outage, breakage, or major function to be unusable, with no known workarounds',\n },\n P1: {\n name: 'P1',\n description:\n 'Impacts a large percentage of users; if a workaround exists it is partial or overly painful',\n },\n P2: {\n name: 'P2',\n description: 'The issue is important to a large percentage of users, with a workaround',\n },\n P3: {\n name: 'P3',\n description:\n 'An issue that is relevant to core functions, but does not impede progress. Important, but not urgent',\n },\n P4: {\n name: 'P4',\n description: 'A relatively minor issue that is not relevant to core functions',\n },\n P5: {\n name: 'P5',\n description:\n 'The team acknowledges the request but does not plan to address it, it remains open for discussion',\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass RequiresLabel extends Label {}\n\nexport const requiresLabels = createTypedObject(RequiresLabel)({\n REQUIRES_TGP: {\n name: 'requires: TGP',\n description: 'This PR requires a passing TGP before merging is allowed',\n },\n});\n", "import {createTypedObject, Label} from './base.js';\n\nclass FeatureLabel extends Label {}\n\nexport const featureLabels = createTypedObject(FeatureLabel)({\n FEATURE_IN_BACKLOG: {\n name: 'feature: in backlog',\n description: 'Feature request for which voting has completed and is now in the backlog',\n },\n FEATURE_VOTES_REQUIRED: {\n name: 'feature: votes required',\n description: 'Feature request which is currently still in the voting phase',\n },\n FEATURE_UNDER_CONSIDERATION: {\n name: 'feature: under consideration',\n description:\n 'Feature request for which voting has completed and the request is now under consideration',\n },\n FEATURE_INSUFFICIENT_VOTES: {\n name: 'feature: insufficient votes',\n description:\n 'Label to add when the not a sufficient number of votes or comments from unique authors',\n },\n});\n", "import {managedLabels} from './managed.js';\nimport {actionLabels} from './action.js';\nimport {mergeLabels} from './merge.js';\nimport {targetLabels} from './target.js';\nimport {priorityLabels} from './priority.js';\nimport {featureLabels} from './feature.js';\nimport {requiresLabels} from './requires.js';\nimport {Label, LabelParams} from './base.js';\n\nexport const allLabels = {\n ...managedLabels,\n ...actionLabels,\n ...mergeLabels,\n ...targetLabels,\n ...priorityLabels,\n ...featureLabels,\n ...requiresLabels,\n};\n\n// Ensures that all labels in `allLabels` properly implement `Label`.\nconst _typeCheckEnforceAllLabels: Record> = allLabels;\n\nexport {managedLabels, actionLabels, mergeLabels, targetLabels, priorityLabels, requiresLabels};\nexport {Label};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {debug} from 'console';\nimport yargs from 'semver';\nimport {green, Log} from '../../utils/logging.js';\nimport {BuiltPackageWithInfo, ReleaseConfig} from '../config/index.js';\n\n/**\n * Error class that can be used to report precheck failures. Messaging with\n * respect to the pre-check error is required to be handled manually.\n */\nexport class ReleasePrecheckError extends Error {}\n\n/**\n * Runs the release prechecks and checks whether they are passing for the\n * specified release config, intended new version and built release packages.\n *\n * @returns A boolean that indicates whether the prechecks are passing or not.\n */\nexport async function assertPassingReleasePrechecks(\n config: ReleaseConfig,\n newVersion: yargs.SemVer,\n builtPackagesWithInfo: BuiltPackageWithInfo[],\n): Promise {\n if (config.prereleaseCheck === undefined) {\n Log.warn(' ⚠ Skipping release pre-checks. No checks configured.');\n return true;\n }\n\n // The user-defined release precheck function is supposed to throw errors upon unmet\n // checks. We catch this here and print a better message and determine the status.\n try {\n // Note: We do not pass the `SemVer` instance to the user-customizable precheck\n // function. This is because we bundled our version of `semver` and the version\n // used in the precheck logic might be different, causing unexpected issues.\n await config.prereleaseCheck(newVersion.format(), builtPackagesWithInfo);\n Log.info(green(' ✓ Release pre-checks passing.'));\n return true;\n } catch (e) {\n if (e instanceof ReleasePrecheckError) {\n // Note: Error messaging is expected to be handled manually.\n debug(e.message);\n Log.error(` ✘ Release pre-checks failed. Please check the output above.`);\n } else {\n Log.error(e, '\\n');\n Log.error(` ✘ Release pre-checks errored with unexpected runtime error.`);\n }\n\n return false;\n }\n}\n"], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAEA,QAAM,aAAa,SAASA,cAAc;AAAA,IAAE;AAC5C,eAAW,YAAY,uBAAO,OAAO,IAAI;AAgBzC,QAAM,UAAU;AAQhB,QAAM,eAAe;AASrB,QAAM,cAAc;AAGpB,QAAM,qBAAqB,EAAE,MAAM,IAAI,YAAY,IAAI,WAAW,EAAE;AACpE,WAAO,OAAO,mBAAmB,UAAU;AAC3C,WAAO,OAAO,kBAAkB;AAUhC,aAASC,OAAO,QAAQ;AACtB,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI,UAAU,kDAAkD;AAAA,MACxE;AAEA,UAAI,QAAQ,OAAO,QAAQ,GAAG;AAC9B,YAAM,OAAO,UAAU,KACnB,OAAO,MAAM,GAAG,KAAK,EAAE,KAAK,IAC5B,OAAO,KAAK;AAEhB,UAAI,YAAY,KAAK,IAAI,MAAM,OAAO;AACpC,cAAM,IAAI,UAAU,oBAAoB;AAAA,MAC1C;AAEA,YAAM,SAAS;AAAA,QACb,MAAM,KAAK,YAAY;AAAA,QACvB,YAAY,IAAI,WAAW;AAAA,MAC7B;AAGA,UAAI,UAAU,IAAI;AAChB,eAAO;AAAA,MACT;AAEA,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,cAAQ,YAAY;AAEpB,aAAQ,QAAQ,QAAQ,KAAK,MAAM,GAAI;AACrC,YAAI,MAAM,UAAU,OAAO;AACzB,gBAAM,IAAI,UAAU,0BAA0B;AAAA,QAChD;AAEA,iBAAS,MAAM,GAAG;AAClB,cAAM,MAAM,GAAG,YAAY;AAC3B,gBAAQ,MAAM;AAEd,YAAI,MAAM,OAAO,KAAK;AAEpB,kBAAQ,MACL,MAAM,GAAG,MAAM,SAAS,CAAC;AAE5B,uBAAa,KAAK,KAAK,MAAM,QAAQ,MAAM,QAAQ,cAAc,IAAI;AAAA,QACvE;AAEA,eAAO,WAAW,OAAO;AAAA,MAC3B;AAEA,UAAI,UAAU,OAAO,QAAQ;AAC3B,cAAM,IAAI,UAAU,0BAA0B;AAAA,MAChD;AAEA,aAAO;AAAA,IACT;AAEA,aAASC,WAAW,QAAQ;AAC1B,UAAI,OAAO,WAAW,UAAU;AAC9B,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,OAAO,QAAQ,GAAG;AAC9B,YAAM,OAAO,UAAU,KACnB,OAAO,MAAM,GAAG,KAAK,EAAE,KAAK,IAC5B,OAAO,KAAK;AAEhB,UAAI,YAAY,KAAK,IAAI,MAAM,OAAO;AACpC,eAAO;AAAA,MACT;AAEA,YAAM,SAAS;AAAA,QACb,MAAM,KAAK,YAAY;AAAA,QACvB,YAAY,IAAI,WAAW;AAAA,MAC7B;AAGA,UAAI,UAAU,IAAI;AAChB,eAAO;AAAA,MACT;AAEA,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,cAAQ,YAAY;AAEpB,aAAQ,QAAQ,QAAQ,KAAK,MAAM,GAAI;AACrC,YAAI,MAAM,UAAU,OAAO;AACzB,iBAAO;AAAA,QACT;AAEA,iBAAS,MAAM,GAAG;AAClB,cAAM,MAAM,GAAG,YAAY;AAC3B,gBAAQ,MAAM;AAEd,YAAI,MAAM,OAAO,KAAK;AAEpB,kBAAQ,MACL,MAAM,GAAG,MAAM,SAAS,CAAC;AAE5B,uBAAa,KAAK,KAAK,MAAM,QAAQ,MAAM,QAAQ,cAAc,IAAI;AAAA,QACvE;AAEA,eAAO,WAAW,OAAO;AAAA,MAC3B;AAEA,UAAI,UAAU,OAAO,QAAQ;AAC3B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAEA,WAAO,QAAQ,UAAU,EAAE,OAAAD,QAAO,WAAAC,WAAU;AAC5C,WAAO,QAAQ,QAAQD;AACvB,WAAO,QAAQ,YAAYC;AAC3B,WAAO,QAAQ,qBAAqB;AAAA;AAAA;;;;;;;ACrKxBC,YAAAA,cAAAA;AAAZ,KAAA,SAAY,aAAW;AACrB,kBAAA,YAAA,YAAA,KAAA;AACA,kBAAA,YAAA,qBAAA,KAAA;AACA,kBAAA,YAAA,cAAA,KAAA;IACF,GAJYA,QAAAA,gBAAAA,QAAAA,cAIX,CAAA,EAAA;QAKY,aAAa,OAAO,cAAc;QAKlC,eAAe,OAAO,gBAAgB;AAqBnD,aAAS,uBAAuB,OAAc;AAC5C,aACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAc,gBAAgBA,QAAAA,YAAY;IAE/C;AAeA,aAAS,iBAAiB,OAAc;AACtC,aACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAc,gBAAgBA,QAAAA,YAAY;IAE/C;AAcA,aAAS,eAAe,OAAc;AACpC,aACE,OAAO,UAAU,YAAY,UAAU,QAAS,MAAc,gBAAgBA,QAAAA,YAAY;IAE9F;AAYA,aAAS,WAAW,MAAwB;AAC1C,aAAO,SAAS,SAAY,KAAK;IACnC;AASA,aAAS,aACPC,SACA,UACA,OAAsB;AADtB,UAAA,aAAA,QAAA;AAAA,mBAAwB;MAAA;AACxB,UAAA,UAAA,QAAA;AAAA,gBAAsB;MAAA;AAEtB,UAAI,CAACA,SAAQ;AAEX,eAAO;MACR;AAED,UAAM,UAAoB,CAAA;AAC1B,eAAiD,KAAA,GAAtB,KAAA,OAAO,QAAQA,OAAM,GAArB,KAAsB,GAAA,QAAtB,MAAwB;AAAxC,YAAA,KAAA,GAAA,KAAC,MAAG,GAAA,IAAE,QAAK,GAAA;AACpB,YAAI,WAAM;AACV,YAAI,UAAU,MAAM;AAClB,qBAAS;QACV,WAAU,MAAM,QAAQ,KAAK,GAAG;AAC/B,qBAAS,IAAI,OAAA,aAAa,OAAwB,OAAO,IAAI,GAAC,GAAA;QAC/D,WAAU,OAAO,UAAU,UAAU;AACpC,qBAAS,IAAA,OAAI,aAAa,OAAiB,KAAK,GAAC,GAAA;QAClD,OAAM;AACL,qBAAS,GAAA,OAAG,KAAK;QAClB;AACD,gBAAQ,KAAK,QAAQ,GAAG,OAAA,QAAM,IAAK,GAAG,OAAA,KAAG,GAAA,EAAA,OAAI,QAAM,CAAE;MACtD;AAED,UAAI,QAAQ,QAAQ,KAAK,GAAG;AAC5B,UAAI,UAAU;AACZ,gBAAQ,IAAA,OAAI,OAAK,GAAA;MAClB;AACD,aAAO;IACT;AAKA,aAAS,aAAa,MAA0BA,SAAe;AAE7D,aAAO,WAAW,IAAI,IAAI,aAAaA,OAAM;IAC/C;AAKA,aAAS,qBAAqBC,WAAiC,SAAsB;AACnF,aAAO,SAAA,OAASA,UAAS,QAAQ,EAAA,OAAG,aAAa,QAAWA,UAAS,UAAU,OAAO,CAAC;IACzF;AAKA,aAAS,eAAeA,WAA2B,SAAsB;AACvE,aAAO,YAAA,OAAYA,UAAS,MAAI,MAAA,EAAA,OAAOA,UAAS,QAAQ,EAAG,OAAA,aACzD,QACAA,UAAS,UACT,OAAO,CACR;IACH;AAKA,aAAS,YAAY,MAA0B,KAAgB,SAAsB;AAEnF,UAAM,QAAQ,IAAI;AAGlB,UAAI,UAAU,UAAa,UAAU,MAAM;AACzC,cAAM,IAAI,MAAM,yCAAyC;MAC1D;AAGC,YAAc,gBAAiB,IAAY;AAG7C,aAAO,WAAW,MAAM,OAAO,OAAO;IACxC;AAKA,aAAS,WAAW,MAA0B,OAAgB,SAAsB;AAClF,cAAQ,OAAO,OAAK;QAClB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACH,gBAAM,IAAI,MAAM,kBAAA,OAAkB,OAAO,OAAK,yBAAA,CAAyB;QACzE,KAAK;AAEH,cAAI,UAAU,MAAM;AAClB,kBAAM,IAAI,MAAM,oBAAoB;UACrC;AACD,cAAI,eAAe,KAAK,GAAG;AACzB,mBAAO,GAAA,OAAG,aAAa,MAAM,MAAM,aAAa,GAAC,GAAA;UAClD,WAAU,MAAM,QAAQ,KAAK,GAAG;AAC/B,mBAAO,YAAY,MAAM,OAAO,OAAO;UACxC,OAAM;AACL,mBAAO,aAAa,MAAM,OAAO,OAAO;UACzC;QACH,KAAK;AAEH,iBAAO;QACT;AACE,gBAAM,IAAI,MAAM,sBAAA,OAAsB,OAAO,KAAK,CAAE;MACvD;IACH;AAKA,aAAS,aAAa,MAA0B,KAAa,SAAsB;AACjF,UAAM,SAAmB,CAAA;AAGzB,eAA8C,KAAA,GAAnB,KAAA,OAAO,QAAQ,GAAG,GAAlB,KAAmB,GAAA,QAAnB,MAAqB;AAArC,YAAA,KAAA,GAAA,KAAC,MAAG,GAAA,IAAE,QAAK,GAAA;AACpB,eAAO,KAAK,WAAW,KAAK,OAAO,OAAO,CAAC;MAC5C;AAGD,eAAmD,KAAA,GAAjC,KAAA,OAAO,sBAAsB,GAAG,GAAhC,KAAiC,GAAA,QAAjC,MAAmC;AAAhD,YAAM,MAAG,GAAA;AACZ,YAAM,QAAS,IAAY;AAC3B,YAAI,uBAAuB,KAAK,GAAG;AACjC,iBAAO,KAAK,qBAAqB,OAAO,OAAO,CAAC;QACjD,WAAU,iBAAiB,KAAK,GAAG;AAClC,kBAAQ,UAAU,IAAI,KAAK,KAAK;AAChC,iBAAO,KAAK,MAAA,OAAM,MAAM,IAAI,CAAE;QAC/B;MACF;AAGD,UAAI,OAAO,WAAW,GAAG;AACvB,cAAM,IAAI,MAAM,8BAA8B;MAC/C;AAGD,aAAO,GAAA,OAAG,WAAW,IAAI,CAAC,EAAA,OAAG,aAAc,IAAY,aAAa,GAAK,GAAA,EAAA,OAAA,OAAO,KAAK,EAAE,EAAE,KAAI,GAAE,GAAA;IACjG;AAKM,aAAU,OAAO,OAA8B;AAEnD,UAAM,UAAyB;QAC7B,WAAW,oBAAI,IAAG;;AAIpB,UAAI,OAAO,aAAa,QAAW,OAAO,OAAO;AAGjD,UAAM,WAAW,oBAAI,IAAG;AACxB,UAAI,mBAAmB;AACvB,UAAI,iBAAgC;QAElC,WAAW,oBAAI,IAAG;;AAEpB,aAAO,iBAAiB,UAAU,OAAO,GAAG;AAE1C,iBAA8B,KAAA,GAAA,KAAA,MAAM,KAAK,iBAAiB,UAAU,QAAO,CAAE,GAA/C,KAAgD,GAAA,QAAhD,MAAkD;AAArE,cAAA,KAAA,GAAA,KAAC,MAAG,GAAA,IAAEA,YAAQ,GAAA;AAEvB,cAAI,CAAC,SAAS,IAAI,GAAG,GAAG;AACtB,qBAAS,IAAI,KAAK,eAAeA,WAAU,cAAc,CAAC;UAC3D;QACF;AAGD,2BAAmB;AACnB,yBAAiB;UAEf,WAAW,oBAAI,IAAG;;MAErB;AAED,aAAO,OAAO,MAAM,KAAK,SAAS,OAAM,CAAE,EAAE,KAAK,EAAE;IACrD;AAEM,aAAU,iBAAiB,OAA8B;AAE7D,UAAM,UAAyB;QAC7B,WAAW,oBAAI,IAAG;;AAIpB,mBAAa,QAAW,OAAO,OAAO;AAGtC,UAAM,iBAAgC;QAEpC,WAAW,oBAAI,IAAG;;AAGpB,UAAI,SAAS;AACb,eAA2B,KAAA,GAAA,KAAA,MAAM,KAAK,QAAQ,UAAU,QAAO,CAAE,GAAtC,KAAuC,GAAA,QAAvC,MAAyC;AAAzD,YAAA,KAAA,GAAA,KAAGA,YAAQ,GAAA;AACpB,iBAAS,SAAS,eAAeA,WAAU,cAAc;MAC1D;AAED,aAAO;IACT;AC1RA,aAAS,cAAc,aAAmB;AAMxC,eAAS,QACP,qBACA,aAAe;AAEf,YAAI,OAAO,wBAAwB,UAAU;AAC3C,cAAI,CAAC,aAAa;AAChB,kBAAM,IAAI,MAAM,wBAAwB;UACzC;AACD,iBAAO;YACL,UAAU,WAAA;AAAM,qBAAA,GAAA,OAAG,aAAe,GAAA,EAAA,OAAA,mBAAmB,EAAG,OAAA,OAAO,WAAW,CAAC;YAAE;;QAEhF;AACD,eAAO;UACL,UAAU,WAAA;AAAM,mBAAA,GAAA,OAAG,WAAW,EAAA,OAAG,OAAO,mBAAmB,CAAC;UAAE;;;AAGlE,aAAO;IACT;QAKaC,SAAQ,cAAc,OAAO;QAK7B,WAAW,cAAc,UAAU;QAKnC,eAAe,cAAc,cAAc;AAwBxC,aAAAF,QAAUA,SAAgB,OAAQ;AAChD,UAAI,OAAOA,YAAW,UAAU;AAC9B,cAAM,IAAI,MAAM,6BAA6B;MAC9C;AACD,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,IAAI,MAAM,6BAAA,OAA6B,OAAOA,OAAM,CAAE;MAC7D;AAEC,YAAc,gBAAgBA;AAChC,aAAO;IACT;AAsBgB,aAAA,MAAwBG,QAAU,QAAc;AAC9D,aAAO,GAAG,OAAAA,QAAS,GAAA,EAAA,OAAA,MAAM;IAC3B;aA+BgB,SACd,MACA,UACA,OAAQ;;AAER,UAAMF,aAAQ,KAAA,CAAA,GACZ,GAAC,cAAaF,QAAAA,YAAY,UAC1B,GAAA,OAAI,MACJ,GAAA,WAAQ,UACR,GAAA,WAAU;AAGZ,aAAO,KAAE,CAAA,GAAA,GAAC,OAAO,YAAY,OAAA,MAAW,MAAA,EAAA,OAAA,UAAW,GAAA,CAAA,KAAIE,WAAQ;IACjE;AAKM,aAAU,UAAU,OAAa;AACrC,aAAO,KAAK,UAAU,KAAK;IAC7B;;;;;;;;;;;;;AChJM,aAAU,SAAY,KAAM;AAChC,aAAO;IACT;AAEgB,aAAA,GAAiB,UAAkB,UAAW;;AAC5D,UAAMA,aAAQ,KAAA,CAAA,GACZ,GAAC,cAAaF,QAAAA,YAAY,iBAC1B,GAAA,WAAQ,UACR,GAAA,WAAQ;AAEV,aAAO,KAAA,CAAA,GAAE,GAAC,OAAO,kBAAA,OAAkB,UAAQ,GAAA,CAAG,KAAIE,WAAQ;IAC5D;AAEM,aAAU,QAAWG,QAAwB;AACjD,UAAI,YAA4B,CAAA;AAChC,eAAwD,KAAA,GAArB,KAAA,OAAO,QAAQA,MAAK,GAApB,KAAqB,GAAA,QAArB,MAAuB;AAA/C,YAAA,KAAA,GAAA,KAAC,WAAQ,GAAA,IAAE,WAAQ,GAAA;AAC5B,oBAAS,SAAA,SAAA,CAAA,GACJ,SAAS,GACT,GAAG,UAAU,QAAQ,CAAC;MAE5B;AACD,aAAO;IACT;AAEA,aAAS,aAAU;;AACjB,UAAM,UAAM,KAAA,CAAA,GACV,GAAC,cAAaL,QAAAA,YAAY;AAE5B,aAAO;IACT;AAEA,QAAAK,SAAA,WAAA;AAAA,eAAAA,SAAA;;AACE,aAAA,eAAWA,QAAM,UAAA;QAAjB,KAAA,WAAA;AACE,iBAAO,WAAU;;;;MAClB,CAAA;AAED,aAAA,eAAWA,QAAM,UAAA;QAAjB,KAAA,WAAA;AACE,iBAAO,WAAU;;;;MAClB,CAAA;AAED,aAAA,eAAWA,QAAO,WAAA;QAAlB,KAAA,WAAA;AACE,iBAAO,WAAU;;;;MAClB,CAAA;AAEM,MAAAA,OAAQ,WAAf,SAAkC,IAAK;AACrC,eAAO,WAAU;;AAKZ,MAAAA,OAAK,QAAZ,SAAmD,IAAK;AACtD,eAAO,WAAU;;AAGZ,MAAAA,OAAA,SAAP,WAAA;AACE,eAAO,WAAU;;AAGZ,MAAAA,OAAQ,WAOXA;AACN,aAACA;IAAA,EAnCD;;;;;;;;;;;;;;;;;;;;ACxDA;AAAA;AAEA,QAAM,sBAAsB;AAE5B,QAAM,aAAa;AACnB,QAAM,mBAAmB,OAAO,oBACL;AAG3B,QAAM,4BAA4B;AAIlC,QAAM,wBAAwB,aAAa;AAE3C,QAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,yBAAyB;AAAA,MACzB,YAAY;AAAA,IACd;AAAA;AAAA;;;AClCA;AAAA;AAAA,QAAMC,SACJ,OAAO,YAAY,YACnB,QAAQ,OACR,QAAQ,IAAI,cACZ,cAAc,KAAK,QAAQ,IAAI,UAAU,IACvC,IAAI,SAAS,QAAQ,MAAM,UAAU,GAAG,IAAI,IAC5C,MAAM;AAAA,IAAC;AAEX,WAAO,UAAUA;AAAA;AAAA;;;ACRjB;AAAA;AAAA,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAMC,SAAQ;AACd,cAAU,OAAO,UAAU,CAAC;AAG5B,QAAM,KAAK,QAAQ,KAAK,CAAC;AACzB,QAAM,SAAS,QAAQ,SAAS,CAAC;AACjC,QAAM,MAAM,QAAQ,MAAM,CAAC;AAC3B,QAAM,IAAI,QAAQ,IAAI,CAAC;AACvB,QAAI,IAAI;AAER,QAAM,mBAAmB;AAQzB,QAAM,wBAAwB;AAAA,MAC5B,CAAC,OAAO,CAAC;AAAA,MACT,CAAC,OAAO,UAAU;AAAA,MAClB,CAAC,kBAAkB,qBAAqB;AAAA,IAC1C;AAEA,QAAM,gBAAgB,CAAC,UAAU;AAC/B,iBAAW,CAAC,OAAO,GAAG,KAAK,uBAAuB;AAChD,gBAAQ,MACL,MAAM,GAAG,QAAQ,EAAE,KAAK,GAAG,WAAW,MAAM,EAC5C,MAAM,GAAG,QAAQ,EAAE,KAAK,GAAG,WAAW,MAAM;AAAA,MACjD;AACA,aAAO;AAAA,IACT;AAEA,QAAM,cAAc,CAAC,MAAM,OAAO,aAAa;AAC7C,YAAM,OAAO,cAAc,KAAK;AAChC,YAAM,QAAQ;AACd,MAAAA,OAAM,MAAM,OAAO,KAAK;AACxB,QAAE,QAAQ;AACV,UAAI,SAAS;AACb,SAAG,SAAS,IAAI,OAAO,OAAO,WAAW,MAAM,MAAS;AACxD,aAAO,SAAS,IAAI,OAAO,MAAM,WAAW,MAAM,MAAS;AAAA,IAC7D;AAQA,gBAAY,qBAAqB,aAAa;AAC9C,gBAAY,0BAA0B,MAAM;AAM5C,gBAAY,wBAAwB,gBAAgB,mBAAmB;AAKvE,gBAAY,eAAe,IAAI,IAAI,EAAE,0BACd,IAAI,EAAE,0BACN,IAAI,EAAE,qBAAqB;AAElD,gBAAY,oBAAoB,IAAI,IAAI,EAAE,+BACd,IAAI,EAAE,+BACN,IAAI,EAAE,0BAA0B;AAK5D,gBAAY,wBAAwB,MAAM,IAAI,EAAE,sBAC5C,IAAI,EAAE,wBAAwB;AAElC,gBAAY,6BAA6B,MAAM,IAAI,EAAE,2BACjD,IAAI,EAAE,wBAAwB;AAMlC,gBAAY,cAAc,QAAQ,IAAI,EAAE,8BAC/B,IAAI,EAAE,2BAA2B;AAE1C,gBAAY,mBAAmB,SAAS,IAAI,EAAE,mCACrC,IAAI,EAAE,gCAAgC;AAK/C,gBAAY,mBAAmB,GAAG,mBAAmB;AAMrD,gBAAY,SAAS,UAAU,IAAI,EAAE,yBAC5B,IAAI,EAAE,sBAAsB;AAWrC,gBAAY,aAAa,KAAK,IAAI,EAAE,eACjC,IAAI,EAAE,eACP,IAAI,EAAE,SAAS;AAEjB,gBAAY,QAAQ,IAAI,IAAI,EAAE,aAAa;AAK3C,gBAAY,cAAc,WAAW,IAAI,EAAE,oBACxC,IAAI,EAAE,oBACP,IAAI,EAAE,SAAS;AAEjB,gBAAY,SAAS,IAAI,IAAI,EAAE,cAAc;AAE7C,gBAAY,QAAQ,cAAc;AAKlC,gBAAY,yBAAyB,GAAG,IAAI,EAAE,iCAAiC;AAC/E,gBAAY,oBAAoB,GAAG,IAAI,EAAE,4BAA4B;AAErE,gBAAY,eAAe,YAAY,IAAI,EAAE,4BAChB,IAAI,EAAE,4BACN,IAAI,EAAE,wBACV,IAAI,EAAE,gBACV,IAAI,EAAE,aACF;AAEzB,gBAAY,oBAAoB,YAAY,IAAI,EAAE,iCAChB,IAAI,EAAE,iCACN,IAAI,EAAE,6BACV,IAAI,EAAE,qBACV,IAAI,EAAE,aACF;AAE9B,gBAAY,UAAU,IAAI,IAAI,EAAE,YAAY,IAAI,EAAE,eAAe;AACjE,gBAAY,eAAe,IAAI,IAAI,EAAE,YAAY,IAAI,EAAE,oBAAoB;AAI3E,gBAAY,eAAe,GAAG,sBACJ,2CACI,6CACA,+BAA+B;AAC7D,gBAAY,UAAU,GAAG,IAAI,EAAE,0BAA0B;AACzD,gBAAY,cAAc,IAAI,EAAE,eAClB,MAAM,IAAI,EAAE,mBACN,IAAI,EAAE,sBACE;AAC5B,gBAAY,aAAa,IAAI,EAAE,SAAS,IAAI;AAC5C,gBAAY,iBAAiB,IAAI,EAAE,aAAa,IAAI;AAIpD,gBAAY,aAAa,SAAS;AAElC,gBAAY,aAAa,SAAS,IAAI,EAAE,kBAAkB,IAAI;AAC9D,YAAQ,mBAAmB;AAE3B,gBAAY,SAAS,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,eAAe;AACjE,gBAAY,cAAc,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,oBAAoB;AAI3E,gBAAY,aAAa,SAAS;AAElC,gBAAY,aAAa,SAAS,IAAI,EAAE,kBAAkB,IAAI;AAC9D,YAAQ,mBAAmB;AAE3B,gBAAY,SAAS,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,eAAe;AACjE,gBAAY,cAAc,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,oBAAoB;AAG3E,gBAAY,mBAAmB,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,kBAAkB;AAC9E,gBAAY,cAAc,IAAI,IAAI,EAAE,aAAa,IAAI,EAAE,iBAAiB;AAIxE,gBAAY,kBAAkB,SAAS,IAAI,EAAE,aACrC,IAAI,EAAE,eAAe,IAAI,EAAE,iBAAiB,IAAI;AACxD,YAAQ,wBAAwB;AAMhC,gBAAY,eAAe,SAAS,IAAI,EAAE,0BAEnB,IAAI,EAAE,oBACH;AAE1B,gBAAY,oBAAoB,SAAS,IAAI,EAAE,+BAEnB,IAAI,EAAE,yBACH;AAG/B,gBAAY,QAAQ,iBAAiB;AAErC,gBAAY,QAAQ,2BAA2B;AAC/C,gBAAY,WAAW,6BAA6B;AAAA;AAAA;;;ACxNpD;AAAA;AACA,QAAM,cAAc,OAAO,OAAO,EAAE,OAAO,KAAK,CAAC;AACjD,QAAM,YAAY,OAAO,OAAO,CAAE,CAAC;AACnC,QAAM,eAAe,aAAW;AAC9B,UAAI,CAAC,SAAS;AACZ,eAAO;AAAA,MACT;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,qBAAqB,CAAC,GAAG,MAAM;AACnC,YAAM,OAAO,QAAQ,KAAK,CAAC;AAC3B,YAAM,OAAO,QAAQ,KAAK,CAAC;AAE3B,UAAI,QAAQ,MAAM;AAChB,YAAI,CAAC;AACL,YAAI,CAAC;AAAA,MACP;AAEA,aAAO,MAAM,IAAI,IACZ,QAAQ,CAAC,OAAQ,KACjB,QAAQ,CAAC,OAAQ,IAClB,IAAI,IAAI,KACR;AAAA,IACN;AAEA,QAAM,sBAAsB,CAAC,GAAG,MAAM,mBAAmB,GAAG,CAAC;AAE7D,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACtBA;AAAA;AAAA,QAAMC,SAAQ;AACd,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAE1B,QAAM,eAAe;AACrB,QAAM,EAAE,mBAAmB,IAAI;AAC/B,QAAM,SAAN,MAAa;AAAA,MACX,YAAa,SAAS,SAAS;AAC7B,kBAAU,aAAa,OAAO;AAE9B,YAAI,mBAAmB,QAAQ;AAC7B,cAAI,QAAQ,UAAU,CAAC,CAAC,QAAQ,SAC5B,QAAQ,sBAAsB,CAAC,CAAC,QAAQ,mBAAmB;AAC7D,mBAAO;AAAA,UACT,OAAO;AACL,sBAAU,QAAQ;AAAA,UACpB;AAAA,QACF,WAAW,OAAO,YAAY,UAAU;AACtC,gBAAM,IAAI,UAAU,gDAAgD,OAAO,WAAW;AAAA,QACxF;AAEA,YAAI,QAAQ,SAAS,YAAY;AAC/B,gBAAM,IAAI;AAAA,YACR,0BAA0B;AAAA,UAC5B;AAAA,QACF;AAEA,QAAAA,OAAM,UAAU,SAAS,OAAO;AAChC,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AAGvB,aAAK,oBAAoB,CAAC,CAAC,QAAQ;AAEnC,cAAM,IAAI,QAAQ,KAAK,EAAE,MAAM,QAAQ,QAAQ,GAAG,EAAE,SAAS,GAAG,EAAE,KAAK;AAEvE,YAAI,CAAC,GAAG;AACN,gBAAM,IAAI,UAAU,oBAAoB,SAAS;AAAA,QACnD;AAEA,aAAK,MAAM;AAGX,aAAK,QAAQ,CAAC,EAAE;AAChB,aAAK,QAAQ,CAAC,EAAE;AAChB,aAAK,QAAQ,CAAC,EAAE;AAEhB,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAGA,YAAI,CAAC,EAAE,IAAI;AACT,eAAK,aAAa,CAAC;AAAA,QACrB,OAAO;AACL,eAAK,aAAa,EAAE,GAAG,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO;AAC5C,gBAAI,WAAW,KAAK,EAAE,GAAG;AACvB,oBAAM,MAAM,CAAC;AACb,kBAAI,OAAO,KAAK,MAAM,kBAAkB;AACtC,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAEA,aAAK,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AACvC,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,SAAU;AACR,aAAK,UAAU,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK;AACnD,YAAI,KAAK,WAAW,QAAQ;AAC1B,eAAK,WAAW,IAAI,KAAK,WAAW,KAAK,GAAG;AAAA,QAC9C;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,QAAS,OAAO;AACd,QAAAA,OAAM,kBAAkB,KAAK,SAAS,KAAK,SAAS,KAAK;AACzD,YAAI,EAAE,iBAAiB,SAAS;AAC9B,cAAI,OAAO,UAAU,YAAY,UAAU,KAAK,SAAS;AACvD,mBAAO;AAAA,UACT;AACA,kBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,YAAI,MAAM,YAAY,KAAK,SAAS;AAClC,iBAAO;AAAA,QACT;AAEA,eAAO,KAAK,YAAY,KAAK,KAAK,KAAK,WAAW,KAAK;AAAA,MACzD;AAAA,MAEA,YAAa,OAAO;AAClB,YAAI,EAAE,iBAAiB,SAAS;AAC9B,kBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,eACE,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK;AAAA,MAE9C;AAAA,MAEA,WAAY,OAAO;AACjB,YAAI,EAAE,iBAAiB,SAAS;AAC9B,kBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAGA,YAAI,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AACtD,iBAAO;AAAA,QACT,WAAW,CAAC,KAAK,WAAW,UAAU,MAAM,WAAW,QAAQ;AAC7D,iBAAO;AAAA,QACT,WAAW,CAAC,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AAC9D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI;AACR,WAAG;AACD,gBAAM,IAAI,KAAK,WAAW;AAC1B,gBAAM,IAAI,MAAM,WAAW;AAC3B,UAAAA,OAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,cAAI,MAAM,UAAa,MAAM,QAAW;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,GAAG;AAClB;AAAA,UACF,OAAO;AACL,mBAAO,mBAAmB,GAAG,CAAC;AAAA,UAChC;AAAA,QACF,SAAS,EAAE;AAAA,MACb;AAAA,MAEA,aAAc,OAAO;AACnB,YAAI,EAAE,iBAAiB,SAAS;AAC9B,kBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,YAAI,IAAI;AACR,WAAG;AACD,gBAAM,IAAI,KAAK,MAAM;AACrB,gBAAM,IAAI,MAAM,MAAM;AACtB,UAAAA,OAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,cAAI,MAAM,UAAa,MAAM,QAAW;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,GAAG;AAClB;AAAA,UACF,OAAO;AACL,mBAAO,mBAAmB,GAAG,CAAC;AAAA,UAChC;AAAA,QACF,SAAS,EAAE;AAAA,MACb;AAAA,MAIA,IAAK,SAAS,YAAY,gBAAgB;AACxC,gBAAQ,SAAS;AAAA,UACf,KAAK;AACH,iBAAK,WAAW,SAAS;AACzB,iBAAK,QAAQ;AACb,iBAAK,QAAQ;AACb,iBAAK;AACL,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UACF,KAAK;AACH,iBAAK,WAAW,SAAS;AACzB,iBAAK,QAAQ;AACb,iBAAK;AACL,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UACF,KAAK;AAIH,iBAAK,WAAW,SAAS;AACzB,iBAAK,IAAI,SAAS,YAAY,cAAc;AAC5C,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UAGF,KAAK;AACH,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK,IAAI,SAAS,YAAY,cAAc;AAAA,YAC9C;AACA,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UAEF,KAAK;AAKH,gBACE,KAAK,UAAU,KACf,KAAK,UAAU,KACf,KAAK,WAAW,WAAW,GAC3B;AACA,mBAAK;AAAA,YACP;AACA,iBAAK,QAAQ;AACb,iBAAK,QAAQ;AACb,iBAAK,aAAa,CAAC;AACnB;AAAA,UACF,KAAK;AAKH,gBAAI,KAAK,UAAU,KAAK,KAAK,WAAW,WAAW,GAAG;AACpD,mBAAK;AAAA,YACP;AACA,iBAAK,QAAQ;AACb,iBAAK,aAAa,CAAC;AACnB;AAAA,UACF,KAAK;AAKH,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK;AAAA,YACP;AACA,iBAAK,aAAa,CAAC;AACnB;AAAA,UAGF,KAAK,OAAO;AACV,kBAAM,OAAO,OAAO,cAAc,IAAI,IAAI;AAE1C,gBAAI,CAAC,cAAc,mBAAmB,OAAO;AAC3C,oBAAM,IAAI,MAAM,iDAAiD;AAAA,YACnE;AAEA,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK,aAAa,CAAC,IAAI;AAAA,YACzB,OAAO;AACL,kBAAI,IAAI,KAAK,WAAW;AACxB,qBAAO,EAAE,KAAK,GAAG;AACf,oBAAI,OAAO,KAAK,WAAW,OAAO,UAAU;AAC1C,uBAAK,WAAW;AAChB,sBAAI;AAAA,gBACN;AAAA,cACF;AACA,kBAAI,MAAM,IAAI;AAEZ,oBAAI,eAAe,KAAK,WAAW,KAAK,GAAG,KAAK,mBAAmB,OAAO;AACxE,wBAAM,IAAI,MAAM,uDAAuD;AAAA,gBACzE;AACA,qBAAK,WAAW,KAAK,IAAI;AAAA,cAC3B;AAAA,YACF;AACA,gBAAI,YAAY;AAGd,kBAAI,aAAa,CAAC,YAAY,IAAI;AAClC,kBAAI,mBAAmB,OAAO;AAC5B,6BAAa,CAAC,UAAU;AAAA,cAC1B;AACA,kBAAI,mBAAmB,KAAK,WAAW,IAAI,UAAU,MAAM,GAAG;AAC5D,oBAAI,MAAM,KAAK,WAAW,EAAE,GAAG;AAC7B,uBAAK,aAAa;AAAA,gBACpB;AAAA,cACF,OAAO;AACL,qBAAK,aAAa;AAAA,cACpB;AAAA,YACF;AACA;AAAA,UACF;AAAA,UACA;AACE,kBAAM,IAAI,MAAM,+BAA+B,SAAS;AAAA,QAC5D;AACA,aAAK,MAAM,KAAK,OAAO;AACvB,YAAI,KAAK,MAAM,QAAQ;AACrB,eAAK,OAAO,IAAI,KAAK,MAAM,KAAK,GAAG;AAAA,QACrC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC7SjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAMC,SAAQ,CAAC,SAAS,SAAS,cAAc,UAAU;AACvD,UAAI,mBAAmB,QAAQ;AAC7B,eAAO;AAAA,MACT;AACA,UAAI;AACF,eAAO,IAAI,OAAO,SAAS,OAAO;AAAA,MACpC,SAAS,IAAP;AACA,YAAI,CAAC,aAAa;AAChB,iBAAO;AAAA,QACT;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAEA,WAAO,UAAUA;AAAA;AAAA;;;ACfjB;AAAA;AAAA,QAAMC,SAAQ;AACd,QAAM,QAAQ,CAAC,SAAS,YAAY;AAClC,YAAM,IAAIA,OAAM,SAAS,OAAO;AAChC,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAMC,SAAQ;AACd,QAAM,QAAQ,CAAC,SAAS,YAAY;AAClC,YAAM,IAAIA,OAAM,QAAQ,KAAK,EAAE,QAAQ,UAAU,EAAE,GAAG,OAAO;AAC7D,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,SAAS;AAEf,QAAM,MAAM,CAAC,SAAS,SAAS,SAAS,YAAY,mBAAmB;AACrE,UAAI,OAAQ,YAAa,UAAU;AACjC,yBAAiB;AACjB,qBAAa;AACb,kBAAU;AAAA,MACZ;AAEA,UAAI;AACF,eAAO,IAAI;AAAA,UACT,mBAAmB,SAAS,QAAQ,UAAU;AAAA,UAC9C;AAAA,QACF,EAAE,IAAI,SAAS,YAAY,cAAc,EAAE;AAAA,MAC7C,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,QAAMC,SAAQ;AAEd,QAAM,OAAO,CAAC,UAAU,aAAa;AACnC,YAAM,KAAKA,OAAM,UAAU,MAAM,IAAI;AACrC,YAAM,KAAKA,OAAM,UAAU,MAAM,IAAI;AACrC,YAAM,aAAa,GAAG,QAAQ,EAAE;AAEhC,UAAI,eAAe,GAAG;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,WAAW,aAAa;AAC9B,YAAM,cAAc,WAAW,KAAK;AACpC,YAAM,aAAa,WAAW,KAAK;AACnC,YAAM,aAAa,CAAC,CAAC,YAAY,WAAW;AAC5C,YAAM,YAAY,CAAC,CAAC,WAAW,WAAW;AAE1C,UAAI,aAAa,CAAC,YAAY;AAQ5B,YAAI,CAAC,WAAW,SAAS,CAAC,WAAW,OAAO;AAC1C,iBAAO;AAAA,QACT;AAIA,YAAI,YAAY,OAAO;AAErB,iBAAO;AAAA,QACT;AAEA,YAAI,YAAY,OAAO;AAErB,iBAAO;AAAA,QACT;AAGA,eAAO;AAAA,MACT;AAGA,YAAM,SAAS,aAAa,QAAQ;AAEpC,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAO,SAAS;AAAA,MAClB;AAEA,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAO,SAAS;AAAA,MAClB;AAEA,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAO,SAAS;AAAA,MAClB;AAGA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AChEjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAMC,SAAQ;AACd,QAAM,aAAa,CAAC,SAAS,YAAY;AACvC,YAAM,SAASA,OAAM,SAAS,OAAO;AACrC,aAAQ,UAAU,OAAO,WAAW,SAAU,OAAO,aAAa;AAAA,IACpE;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,UAAU,CAAC,GAAG,GAAG,UACrB,IAAI,OAAO,GAAG,KAAK,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC;AAEnD,WAAO,UAAU;AAAA;AAAA;;;ACJjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,WAAW,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,eAAe,CAAC,GAAG,MAAM,QAAQ,GAAG,GAAG,IAAI;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,eAAe,CAAC,GAAG,GAAG,UAAU;AACpC,YAAM,WAAW,IAAI,OAAO,GAAG,KAAK;AACpC,YAAM,WAAW,IAAI,OAAO,GAAG,KAAK;AACpC,aAAO,SAAS,QAAQ,QAAQ,KAAK,SAAS,aAAa,QAAQ;AAAA,IACrE;AACA,WAAO,UAAU;AAAA;AAAA;;;ACNjB;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,OAAO,CAAC,MAAM,UAAU,KAAK,KAAK,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC;AAC3E,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,QAAQ,CAAC,MAAM,UAAU,KAAK,KAAK,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC;AAC5E,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,IAAI;AACnD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,IAAI;AACnD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,MAAM;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,MAAM;AACtD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,KAAK;AACX,QAAM,MAAM;AAEZ,QAAM,MAAM,CAAC,GAAG,IAAI,GAAG,UAAU;AAC/B,cAAQ,IAAI;AAAA,QACV,KAAK;AACH,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,iBAAO,MAAM;AAAA,QAEf,KAAK;AACH,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,iBAAO,MAAM;AAAA,QAEf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB;AACE,gBAAM,IAAI,UAAU,qBAAqB,IAAI;AAAA,MACjD;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;ACnDjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAMC,SAAQ;AACd,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAE1B,QAAM,SAAS,CAAC,SAAS,YAAY;AACnC,UAAI,mBAAmB,QAAQ;AAC7B,eAAO;AAAA,MACT;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,kBAAU,OAAO,OAAO;AAAA,MAC1B;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO;AAAA,MACT;AAEA,gBAAU,WAAW,CAAC;AAEtB,UAAI,QAAQ;AACZ,UAAI,CAAC,QAAQ,KAAK;AAChB,gBAAQ,QAAQ,MAAM,QAAQ,oBAAoB,GAAG,EAAE,cAAc,GAAG,EAAE,OAAO;AAAA,MACnF,OAAO;AAUL,cAAM,iBAAiB,QAAQ,oBAAoB,GAAG,EAAE,iBAAiB,GAAG,EAAE;AAC9E,YAAI;AACJ,gBAAQ,OAAO,eAAe,KAAK,OAAO,OACrC,CAAC,SAAS,MAAM,QAAQ,MAAM,GAAG,WAAW,QAAQ,SACvD;AACA,cAAI,CAAC,SACC,KAAK,QAAQ,KAAK,GAAG,WAAW,MAAM,QAAQ,MAAM,GAAG,QAAQ;AACnE,oBAAQ;AAAA,UACV;AACA,yBAAe,YAAY,KAAK,QAAQ,KAAK,GAAG,SAAS,KAAK,GAAG;AAAA,QACnE;AAEA,uBAAe,YAAY;AAAA,MAC7B;AAEA,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACT;AAEA,YAAM,QAAQ,MAAM;AACpB,YAAM,QAAQ,MAAM,MAAM;AAC1B,YAAM,QAAQ,MAAM,MAAM;AAC1B,YAAM,aAAa,QAAQ,qBAAqB,MAAM,KAAK,IAAI,MAAM,OAAO;AAC5E,YAAM,QAAQ,QAAQ,qBAAqB,MAAM,KAAK,IAAI,MAAM,OAAO;AAEvE,aAAOA,OAAM,GAAG,SAAS,SAAS,QAAQ,aAAa,SAAS,OAAO;AAAA,IACzE;AACA,WAAO,UAAU;AAAA;AAAA;;;AC3DjB;AAAA;AAAA,QAAM,WAAN,MAAe;AAAA,MACb,cAAe;AACb,aAAK,MAAM;AACX,aAAK,MAAM,oBAAI,IAAI;AAAA,MACrB;AAAA,MAEA,IAAK,KAAK;AACR,cAAM,QAAQ,KAAK,IAAI,IAAI,GAAG;AAC9B,YAAI,UAAU,QAAW;AACvB,iBAAO;AAAA,QACT,OAAO;AAEL,eAAK,IAAI,OAAO,GAAG;AACnB,eAAK,IAAI,IAAI,KAAK,KAAK;AACvB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,OAAQ,KAAK;AACX,eAAO,KAAK,IAAI,OAAO,GAAG;AAAA,MAC5B;AAAA,MAEA,IAAK,KAAK,OAAO;AACf,cAAM,UAAU,KAAK,OAAO,GAAG;AAE/B,YAAI,CAAC,WAAW,UAAU,QAAW;AAEnC,cAAI,KAAK,IAAI,QAAQ,KAAK,KAAK;AAC7B,kBAAM,WAAW,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE;AACxC,iBAAK,OAAO,QAAQ;AAAA,UACtB;AAEA,eAAK,IAAI,IAAI,KAAK,KAAK;AAAA,QACzB;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACvCjB;AAAA;AAAA,QAAM,mBAAmB;AAGzB,QAAM,QAAN,MAAY;AAAA,MACV,YAAa,OAAO,SAAS;AAC3B,kBAAU,aAAa,OAAO;AAE9B,YAAI,iBAAiB,OAAO;AAC1B,cACE,MAAM,UAAU,CAAC,CAAC,QAAQ,SAC1B,MAAM,sBAAsB,CAAC,CAAC,QAAQ,mBACtC;AACA,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,IAAI,MAAM,MAAM,KAAK,OAAO;AAAA,UACrC;AAAA,QACF;AAEA,YAAI,iBAAiB,YAAY;AAE/B,eAAK,MAAM,MAAM;AACjB,eAAK,MAAM,CAAC,CAAC,KAAK,CAAC;AACnB,eAAK,YAAY;AACjB,iBAAO;AAAA,QACT;AAEA,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AACvB,aAAK,oBAAoB,CAAC,CAAC,QAAQ;AAKnC,aAAK,MAAM,MAAM,KAAK,EAAE,QAAQ,kBAAkB,GAAG;AAGrD,aAAK,MAAM,KAAK,IACb,MAAM,IAAI,EAEV,IAAI,OAAK,KAAK,WAAW,EAAE,KAAK,CAAC,CAAC,EAIlC,OAAO,OAAK,EAAE,MAAM;AAEvB,YAAI,CAAC,KAAK,IAAI,QAAQ;AACpB,gBAAM,IAAI,UAAU,yBAAyB,KAAK,KAAK;AAAA,QACzD;AAGA,YAAI,KAAK,IAAI,SAAS,GAAG;AAEvB,gBAAM,QAAQ,KAAK,IAAI;AACvB,eAAK,MAAM,KAAK,IAAI,OAAO,OAAK,CAAC,UAAU,EAAE,EAAE,CAAC;AAChD,cAAI,KAAK,IAAI,WAAW,GAAG;AACzB,iBAAK,MAAM,CAAC,KAAK;AAAA,UACnB,WAAW,KAAK,IAAI,SAAS,GAAG;AAE9B,uBAAW,KAAK,KAAK,KAAK;AACxB,kBAAI,EAAE,WAAW,KAAK,MAAM,EAAE,EAAE,GAAG;AACjC,qBAAK,MAAM,CAAC,CAAC;AACb;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,aAAK,YAAY;AAAA,MACnB;AAAA,MAEA,IAAI,QAAS;AACX,YAAI,KAAK,cAAc,QAAW;AAChC,eAAK,YAAY;AACjB,mBAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,gBAAI,IAAI,GAAG;AACT,mBAAK,aAAa;AAAA,YACpB;AACA,kBAAM,QAAQ,KAAK,IAAI;AACvB,qBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,kBAAI,IAAI,GAAG;AACT,qBAAK,aAAa;AAAA,cACpB;AACA,mBAAK,aAAa,MAAM,GAAG,SAAS,EAAE,KAAK;AAAA,YAC7C;AAAA,UACF;AAAA,QACF;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,SAAU;AACR,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY,OAAO;AAGjB,cAAM,YACH,KAAK,QAAQ,qBAAqB,4BAClC,KAAK,QAAQ,SAAS;AACzB,cAAM,UAAU,WAAW,MAAM;AACjC,cAAM,SAAS,MAAM,IAAI,OAAO;AAChC,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT;AAEA,cAAM,QAAQ,KAAK,QAAQ;AAE3B,cAAM,KAAK,QAAQ,GAAG,EAAE,oBAAoB,GAAG,EAAE;AACjD,gBAAQ,MAAM,QAAQ,IAAI,cAAc,KAAK,QAAQ,iBAAiB,CAAC;AACvE,QAAAC,OAAM,kBAAkB,KAAK;AAG7B,gBAAQ,MAAM,QAAQ,GAAG,EAAE,iBAAiB,qBAAqB;AACjE,QAAAA,OAAM,mBAAmB,KAAK;AAG9B,gBAAQ,MAAM,QAAQ,GAAG,EAAE,YAAY,gBAAgB;AACvD,QAAAA,OAAM,cAAc,KAAK;AAGzB,gBAAQ,MAAM,QAAQ,GAAG,EAAE,YAAY,gBAAgB;AACvD,QAAAA,OAAM,cAAc,KAAK;AAKzB,YAAI,YAAY,MACb,MAAM,GAAG,EACT,IAAI,UAAQ,gBAAgB,MAAM,KAAK,OAAO,CAAC,EAC/C,KAAK,GAAG,EACR,MAAM,KAAK,EAEX,IAAI,UAAQ,YAAY,MAAM,KAAK,OAAO,CAAC;AAE9C,YAAI,OAAO;AAET,sBAAY,UAAU,OAAO,UAAQ;AACnC,YAAAA,OAAM,wBAAwB,MAAM,KAAK,OAAO;AAChD,mBAAO,CAAC,CAAC,KAAK,MAAM,GAAG,EAAE,gBAAgB;AAAA,UAC3C,CAAC;AAAA,QACH;AACA,QAAAA,OAAM,cAAc,SAAS;AAK7B,cAAM,WAAW,oBAAI,IAAI;AACzB,cAAM,cAAc,UAAU,IAAI,UAAQ,IAAI,WAAW,MAAM,KAAK,OAAO,CAAC;AAC5E,mBAAW,QAAQ,aAAa;AAC9B,cAAI,UAAU,IAAI,GAAG;AACnB,mBAAO,CAAC,IAAI;AAAA,UACd;AACA,mBAAS,IAAI,KAAK,OAAO,IAAI;AAAA,QAC/B;AACA,YAAI,SAAS,OAAO,KAAK,SAAS,IAAI,EAAE,GAAG;AACzC,mBAAS,OAAO,EAAE;AAAA,QACpB;AAEA,cAAM,SAAS,CAAC,GAAG,SAAS,OAAO,CAAC;AACpC,cAAM,IAAI,SAAS,MAAM;AACzB,eAAO;AAAA,MACT;AAAA,MAEA,WAAY,OAAO,SAAS;AAC1B,YAAI,EAAE,iBAAiB,QAAQ;AAC7B,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAC3C;AAEA,eAAO,KAAK,IAAI,KAAK,CAAC,oBAAoB;AACxC,iBACE,cAAc,iBAAiB,OAAO,KACtC,MAAM,IAAI,KAAK,CAAC,qBAAqB;AACnC,mBACE,cAAc,kBAAkB,OAAO,KACvC,gBAAgB,MAAM,CAAC,mBAAmB;AACxC,qBAAO,iBAAiB,MAAM,CAAC,oBAAoB;AACjD,uBAAO,eAAe,WAAW,iBAAiB,OAAO;AAAA,cAC3D,CAAC;AAAA,YACH,CAAC;AAAA,UAEL,CAAC;AAAA,QAEL,CAAC;AAAA,MACH;AAAA,MAGA,KAAM,SAAS;AACb,YAAI,CAAC,SAAS;AACZ,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,YAAY,UAAU;AAC/B,cAAI;AACF,sBAAU,IAAI,OAAO,SAAS,KAAK,OAAO;AAAA,UAC5C,SAAS,IAAP;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,cAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,KAAK,OAAO,GAAG;AAC/C,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAEjB,QAAM,MAAM;AACZ,QAAM,QAAQ,IAAI,IAAI;AAEtB,QAAM,eAAe;AACrB,QAAM,aAAa;AACnB,QAAMA,SAAQ;AACd,QAAM,SAAS;AACf,QAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAM,EAAE,yBAAyB,WAAW,IAAI;AAEhD,QAAM,YAAY,OAAK,EAAE,UAAU;AACnC,QAAM,QAAQ,OAAK,EAAE,UAAU;AAI/B,QAAM,gBAAgB,CAAC,aAAa,YAAY;AAC9C,UAAI,SAAS;AACb,YAAM,uBAAuB,YAAY,MAAM;AAC/C,UAAI,iBAAiB,qBAAqB,IAAI;AAE9C,aAAO,UAAU,qBAAqB,QAAQ;AAC5C,iBAAS,qBAAqB,MAAM,CAAC,oBAAoB;AACvD,iBAAO,eAAe,WAAW,iBAAiB,OAAO;AAAA,QAC3D,CAAC;AAED,yBAAiB,qBAAqB,IAAI;AAAA,MAC5C;AAEA,aAAO;AAAA,IACT;AAKA,QAAM,kBAAkB,CAAC,MAAM,YAAY;AACzC,MAAAA,OAAM,QAAQ,MAAM,OAAO;AAC3B,aAAO,cAAc,MAAM,OAAO;AAClC,MAAAA,OAAM,SAAS,IAAI;AACnB,aAAO,cAAc,MAAM,OAAO;AAClC,MAAAA,OAAM,UAAU,IAAI;AACpB,aAAO,eAAe,MAAM,OAAO;AACnC,MAAAA,OAAM,UAAU,IAAI;AACpB,aAAO,aAAa,MAAM,OAAO;AACjC,MAAAA,OAAM,SAAS,IAAI;AACnB,aAAO;AAAA,IACT;AAEA,QAAM,MAAM,QAAM,CAAC,MAAM,GAAG,YAAY,MAAM,OAAO,OAAO;AAS5D,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EACnC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,cAAc,GAAG,EAAE;AAClD,aAAO,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO;AACzC,QAAAA,OAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACR,WAAW,IAAI,CAAC,GAAG;AACjB,gBAAM,KAAK,UAAU,CAAC,IAAI;AAAA,QAC5B,WAAW,IAAI,CAAC,GAAG;AAEjB,gBAAM,KAAK,KAAK,QAAQ,KAAK,CAAC,IAAI;AAAA,QACpC,WAAW,IAAI;AACb,UAAAA,OAAM,mBAAmB,EAAE;AAC3B,gBAAM,KAAK,KAAK,KAAK,KAAK,OACrB,KAAK,CAAC,IAAI;AAAA,QACjB,OAAO;AAEL,gBAAM,KAAK,KAAK,KAAK,MAChB,KAAK,CAAC,IAAI;AAAA,QACjB;AAEA,QAAAA,OAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAUA,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EACnC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,MAAAA,OAAM,SAAS,MAAM,OAAO;AAC5B,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,cAAc,GAAG,EAAE;AAClD,YAAM,IAAI,QAAQ,oBAAoB,OAAO;AAC7C,aAAO,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO;AACzC,QAAAA,OAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACR,WAAW,IAAI,CAAC,GAAG;AACjB,gBAAM,KAAK,QAAQ,MAAM,CAAC,IAAI;AAAA,QAChC,WAAW,IAAI,CAAC,GAAG;AACjB,cAAI,MAAM,KAAK;AACb,kBAAM,KAAK,KAAK,MAAM,MAAM,KAAK,CAAC,IAAI;AAAA,UACxC,OAAO;AACL,kBAAM,KAAK,KAAK,MAAM,MAAM,CAAC,IAAI;AAAA,UACnC;AAAA,QACF,WAAW,IAAI;AACb,UAAAA,OAAM,mBAAmB,EAAE;AAC3B,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,KAAK,KAAK,KAAK,KAAK,OACrB,KAAK,KAAK,CAAC,IAAI;AAAA,YACtB,OAAO;AACL,oBAAM,KAAK,KAAK,KAAK,KAAK,OACrB,KAAK,CAAC,IAAI;AAAA,YACjB;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,KAAK,KAAK,KAAK,OACrB,CAAC,IAAI;AAAA,UACZ;AAAA,QACF,OAAO;AACL,UAAAA,OAAM,OAAO;AACb,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,KAAK,KAAK,KAAK,IAClB,MAAM,KAAK,KAAK,CAAC,IAAI;AAAA,YAC1B,OAAO;AACL,oBAAM,KAAK,KAAK,KAAK,IAClB,MAAM,KAAK,CAAC,IAAI;AAAA,YACrB;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,KAAK,KAAK,MAChB,CAAC,IAAI;AAAA,UACZ;AAAA,QACF;AAEA,QAAAA,OAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,QAAM,iBAAiB,CAAC,MAAM,YAAY;AACxC,MAAAA,OAAM,kBAAkB,MAAM,OAAO;AACrC,aAAO,KACJ,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,EACpC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KAAK,KAAK;AACjB,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,eAAe,GAAG,EAAE;AACnD,aAAO,KAAK,QAAQ,GAAG,CAAC,KAAK,MAAM,GAAG,GAAG,GAAG,OAAO;AACjD,QAAAA,OAAM,UAAU,MAAM,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAC5C,cAAM,KAAK,IAAI,CAAC;AAChB,cAAM,KAAK,MAAM,IAAI,CAAC;AACtB,cAAM,KAAK,MAAM,IAAI,CAAC;AACtB,cAAM,OAAO;AAEb,YAAI,SAAS,OAAO,MAAM;AACxB,iBAAO;AAAA,QACT;AAIA,aAAK,QAAQ,oBAAoB,OAAO;AAExC,YAAI,IAAI;AACN,cAAI,SAAS,OAAO,SAAS,KAAK;AAEhC,kBAAM;AAAA,UACR,OAAO;AAEL,kBAAM;AAAA,UACR;AAAA,QACF,WAAW,QAAQ,MAAM;AAGvB,cAAI,IAAI;AACN,gBAAI;AAAA,UACN;AACA,cAAI;AAEJ,cAAI,SAAS,KAAK;AAGhB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AACT,kBAAI;AACJ,kBAAI;AAAA,YACN,OAAO;AACL,kBAAI,CAAC,IAAI;AACT,kBAAI;AAAA,YACN;AAAA,UACF,WAAW,SAAS,MAAM;AAGxB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AAAA,YACX,OAAO;AACL,kBAAI,CAAC,IAAI;AAAA,YACX;AAAA,UACF;AAEA,cAAI,SAAS,KAAK;AAChB,iBAAK;AAAA,UACP;AAEA,gBAAM,GAAG,OAAO,KAAK,KAAK,IAAI;AAAA,QAChC,WAAW,IAAI;AACb,gBAAM,KAAK,QAAQ,OAAO,CAAC,IAAI;AAAA,QACjC,WAAW,IAAI;AACb,gBAAM,KAAK,KAAK,MAAM,OACjB,KAAK,CAAC,IAAI;AAAA,QACjB;AAEA,QAAAA,OAAM,iBAAiB,GAAG;AAE1B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAIA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,MAAAA,OAAM,gBAAgB,MAAM,OAAO;AAEnC,aAAO,KACJ,KAAK,EACL,QAAQ,GAAG,EAAE,OAAO,EAAE;AAAA,IAC3B;AAEA,QAAM,cAAc,CAAC,MAAM,YAAY;AACrC,MAAAA,OAAM,eAAe,MAAM,OAAO;AAClC,aAAO,KACJ,KAAK,EACL,QAAQ,GAAG,QAAQ,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE;AAAA,IACnE;AAQA,QAAM,gBAAgB,WAAS,CAAC,IAC9B,MAAM,IAAI,IAAI,IAAI,KAAK,IACvB,IAAI,IAAI,IAAI,IAAI,QAAQ;AACxB,UAAI,IAAI,EAAE,GAAG;AACX,eAAO;AAAA,MACT,WAAW,IAAI,EAAE,GAAG;AAClB,eAAO,KAAK,SAAS,QAAQ,OAAO;AAAA,MACtC,WAAW,IAAI,EAAE,GAAG;AAClB,eAAO,KAAK,MAAM,OAAO,QAAQ,OAAO;AAAA,MAC1C,WAAW,KAAK;AACd,eAAO,KAAK;AAAA,MACd,OAAO;AACL,eAAO,KAAK,OAAO,QAAQ,OAAO;AAAA,MACpC;AAEA,UAAI,IAAI,EAAE,GAAG;AACX,aAAK;AAAA,MACP,WAAW,IAAI,EAAE,GAAG;AAClB,aAAK,IAAI,CAAC,KAAK;AAAA,MACjB,WAAW,IAAI,EAAE,GAAG;AAClB,aAAK,IAAI,MAAM,CAAC,KAAK;AAAA,MACvB,WAAW,KAAK;AACd,aAAK,KAAK,MAAM,MAAM,MAAM;AAAA,MAC9B,WAAW,OAAO;AAChB,aAAK,IAAI,MAAM,MAAM,CAAC,KAAK;AAAA,MAC7B,OAAO;AACL,aAAK,KAAK;AAAA,MACZ;AAEA,aAAO,GAAG,QAAQ,KAAK,KAAK;AAAA,IAC9B;AAEA,QAAM,UAAU,CAAC,KAAK,SAAS,YAAY;AACzC,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAI,CAAC,IAAI,GAAG,KAAK,OAAO,GAAG;AACzB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAI,QAAQ,WAAW,UAAU,CAAC,QAAQ,mBAAmB;AAM3D,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAAA,OAAM,IAAI,GAAG,MAAM;AACnB,cAAI,IAAI,GAAG,WAAW,WAAW,KAAK;AACpC;AAAA,UACF;AAEA,cAAI,IAAI,GAAG,OAAO,WAAW,SAAS,GAAG;AACvC,kBAAM,UAAU,IAAI,GAAG;AACvB,gBAAI,QAAQ,UAAU,QAAQ,SAC1B,QAAQ,UAAU,QAAQ,SAC1B,QAAQ,UAAU,QAAQ,OAAO;AACnC,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAGA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACziBA;AAAA;AAAA,QAAM,MAAM,OAAO,YAAY;AAE/B,QAAM,aAAN,MAAiB;AAAA,MACf,WAAW,MAAO;AAChB,eAAO;AAAA,MACT;AAAA,MAEA,YAAa,MAAM,SAAS;AAC1B,kBAAU,aAAa,OAAO;AAE9B,YAAI,gBAAgB,YAAY;AAC9B,cAAI,KAAK,UAAU,CAAC,CAAC,QAAQ,OAAO;AAClC,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF;AAEA,eAAO,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG;AACxC,QAAAC,OAAM,cAAc,MAAM,OAAO;AACjC,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AACvB,aAAK,MAAM,IAAI;AAEf,YAAI,KAAK,WAAW,KAAK;AACvB,eAAK,QAAQ;AAAA,QACf,OAAO;AACL,eAAK,QAAQ,KAAK,WAAW,KAAK,OAAO;AAAA,QAC3C;AAEA,QAAAA,OAAM,QAAQ,IAAI;AAAA,MACpB;AAAA,MAEA,MAAO,MAAM;AACX,cAAM,IAAI,KAAK,QAAQ,QAAQ,GAAG,EAAE,mBAAmB,GAAG,EAAE;AAC5D,cAAM,IAAI,KAAK,MAAM,CAAC;AAEtB,YAAI,CAAC,GAAG;AACN,gBAAM,IAAI,UAAU,uBAAuB,MAAM;AAAA,QACnD;AAEA,aAAK,WAAW,EAAE,OAAO,SAAY,EAAE,KAAK;AAC5C,YAAI,KAAK,aAAa,KAAK;AACzB,eAAK,WAAW;AAAA,QAClB;AAGA,YAAI,CAAC,EAAE,IAAI;AACT,eAAK,SAAS;AAAA,QAChB,OAAO;AACL,eAAK,SAAS,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ,KAAK;AAAA,QACnD;AAAA,MACF;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAM,SAAS;AACb,QAAAA,OAAM,mBAAmB,SAAS,KAAK,QAAQ,KAAK;AAEpD,YAAI,KAAK,WAAW,OAAO,YAAY,KAAK;AAC1C,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,YAAY,UAAU;AAC/B,cAAI;AACF,sBAAU,IAAI,OAAO,SAAS,KAAK,OAAO;AAAA,UAC5C,SAAS,IAAP;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,IAAI,SAAS,KAAK,UAAU,KAAK,QAAQ,KAAK,OAAO;AAAA,MAC9D;AAAA,MAEA,WAAY,MAAM,SAAS;AACzB,YAAI,EAAE,gBAAgB,aAAa;AACjC,gBAAM,IAAI,UAAU,0BAA0B;AAAA,QAChD;AAEA,YAAI,KAAK,aAAa,IAAI;AACxB,cAAI,KAAK,UAAU,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,iBAAO,IAAI,MAAM,KAAK,OAAO,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA,QACvD,WAAW,KAAK,aAAa,IAAI;AAC/B,cAAI,KAAK,UAAU,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,iBAAO,IAAI,MAAM,KAAK,OAAO,OAAO,EAAE,KAAK,KAAK,MAAM;AAAA,QACxD;AAEA,kBAAU,aAAa,OAAO;AAG9B,YAAI,QAAQ,sBACT,KAAK,UAAU,cAAc,KAAK,UAAU,aAAa;AAC1D,iBAAO;AAAA,QACT;AACA,YAAI,CAAC,QAAQ,sBACV,KAAK,MAAM,WAAW,QAAQ,KAAK,KAAK,MAAM,WAAW,QAAQ,IAAI;AACtE,iBAAO;AAAA,QACT;AAGA,YAAI,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAClE,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAClE,iBAAO;AAAA,QACT;AAEA,YACG,KAAK,OAAO,YAAY,KAAK,OAAO,WACrC,KAAK,SAAS,SAAS,GAAG,KAAK,KAAK,SAAS,SAAS,GAAG,GAAG;AAC5D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAC5C,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAC5C,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAEjB,QAAM,eAAe;AACrB,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAC1B,QAAM,MAAM;AACZ,QAAMA,SAAQ;AACd,QAAM,SAAS;AACf,QAAM,QAAQ;AAAA;AAAA;;;AC5Id;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,YAAY,CAAC,SAAS,OAAO,YAAY;AAC7C,UAAI;AACF,gBAAQ,IAAI,MAAM,OAAO,OAAO;AAAA,MAClC,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AACA,aAAO,MAAM,KAAK,OAAO;AAAA,IAC3B;AACA,WAAO,UAAU;AAAA;AAAA;;;ACTjB;AAAA;AAAA,QAAM,QAAQ;AAGd,QAAM,gBAAgB,CAAC,OAAO,YAC5B,IAAI,MAAM,OAAO,OAAO,EAAE,IACvB,IAAI,UAAQ,KAAK,IAAI,OAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;AAEnE,WAAO,UAAU;AAAA;AAAA;;;ACPjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AAEd,QAAM,gBAAgB,CAAC,UAAU,OAAO,YAAY;AAClD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI;AACF,mBAAW,IAAI,MAAM,OAAO,OAAO;AAAA,MACrC,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,IAAI;AAEnC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAK,OAAO;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,gBAAgB,CAAC,UAAU,OAAO,YAAY;AAClD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI;AACF,mBAAW,IAAI,MAAM,OAAO,OAAO;AAAA,MACrC,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,GAAG;AAElC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAK,OAAO;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,KAAK;AAEX,QAAM,aAAa,CAAC,OAAO,UAAU;AACnC,cAAQ,IAAI,MAAM,OAAO,KAAK;AAE9B,UAAI,SAAS,IAAI,OAAO,OAAO;AAC/B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,eAAS,IAAI,OAAO,SAAS;AAC7B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,eAAS;AACT,eAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG;AACzC,cAAM,cAAc,MAAM,IAAI;AAE9B,YAAI,SAAS;AACb,oBAAY,QAAQ,CAAC,eAAe;AAElC,gBAAM,UAAU,IAAI,OAAO,WAAW,OAAO,OAAO;AACpD,kBAAQ,WAAW,UAAU;AAAA,YAC3B,KAAK;AACH,kBAAI,QAAQ,WAAW,WAAW,GAAG;AACnC,wBAAQ;AAAA,cACV,OAAO;AACL,wBAAQ,WAAW,KAAK,CAAC;AAAA,cAC3B;AACA,sBAAQ,MAAM,QAAQ,OAAO;AAAA,YAE/B,KAAK;AAAA,YACL,KAAK;AACH,kBAAI,CAAC,UAAU,GAAG,SAAS,MAAM,GAAG;AAClC,yBAAS;AAAA,cACX;AACA;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAEH;AAAA,YAEF;AACE,oBAAM,IAAI,MAAM,yBAAyB,WAAW,UAAU;AAAA,UAClE;AAAA,QACF,CAAC;AACD,YAAI,WAAW,CAAC,UAAU,GAAG,QAAQ,MAAM,IAAI;AAC7C,mBAAS;AAAA,QACX;AAAA,MACF;AAEA,UAAI,UAAU,MAAM,KAAK,MAAM,GAAG;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;AC5DjB,IAAAC,iBAAA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAAC,OAAO,YAAY;AACrC,UAAI;AAGF,eAAO,IAAI,MAAM,OAAO,OAAO,EAAE,SAAS;AAAA,MAC5C,SAAS,IAAP;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;ACVjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,MAAM;AAEZ,QAAM,UAAU,CAAC,SAAS,OAAO,MAAM,YAAY;AACjD,gBAAU,IAAI,OAAO,SAAS,OAAO;AACrC,cAAQ,IAAI,MAAM,OAAO,OAAO;AAEhC,UAAI,MAAM,OAAO,MAAM,MAAM;AAC7B,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF;AACE,gBAAM,IAAI,UAAU,uCAAuC;AAAA,MAC/D;AAGA,UAAI,UAAU,SAAS,OAAO,OAAO,GAAG;AACtC,eAAO;AAAA,MACT;AAKA,eAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG;AACzC,cAAM,cAAc,MAAM,IAAI;AAE9B,YAAI,OAAO;AACX,YAAI,MAAM;AAEV,oBAAY,QAAQ,CAAC,eAAe;AAClC,cAAI,WAAW,WAAW,KAAK;AAC7B,yBAAa,IAAI,WAAW,SAAS;AAAA,UACvC;AACA,iBAAO,QAAQ;AACf,gBAAM,OAAO;AACb,cAAI,KAAK,WAAW,QAAQ,KAAK,QAAQ,OAAO,GAAG;AACjD,mBAAO;AAAA,UACT,WAAW,KAAK,WAAW,QAAQ,IAAI,QAAQ,OAAO,GAAG;AACvD,kBAAM;AAAA,UACR;AAAA,QACF,CAAC;AAID,YAAI,KAAK,aAAa,QAAQ,KAAK,aAAa,OAAO;AACrD,iBAAO;AAAA,QACT;AAIA,aAAK,CAAC,IAAI,YAAY,IAAI,aAAa,SACnC,MAAM,SAAS,IAAI,MAAM,GAAG;AAC9B,iBAAO;AAAA,QACT,WAAW,IAAI,aAAa,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG;AAC9D,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC/EjB;AAAA;AACA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,SAAS,OAAO,YAAY,QAAQ,SAAS,OAAO,KAAK,OAAO;AAC7E,WAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,QAAM,UAAU;AAEhB,QAAM,MAAM,CAAC,SAAS,OAAO,YAAY,QAAQ,SAAS,OAAO,KAAK,OAAO;AAC7E,WAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAAC,IAAI,IAAI,YAAY;AACtC,WAAK,IAAI,MAAM,IAAI,OAAO;AAC1B,WAAK,IAAI,MAAM,IAAI,OAAO;AAC1B,aAAO,GAAG,WAAW,IAAI,OAAO;AAAA,IAClC;AACA,WAAO,UAAU;AAAA;AAAA;;;ACNjB;AAAA;AAGA,QAAM,YAAY;AAClB,QAAM,UAAU;AAChB,WAAO,UAAU,CAAC,UAAU,OAAO,YAAY;AAC7C,YAAM,MAAM,CAAC;AACb,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,YAAM,IAAI,SAAS,KAAK,CAAC,GAAG,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC;AACxD,iBAAW,WAAW,GAAG;AACvB,cAAM,WAAW,UAAU,SAAS,OAAO,OAAO;AAClD,YAAI,UAAU;AACZ,iBAAO;AACP,cAAI,CAAC,OAAO;AACV,oBAAQ;AAAA,UACV;AAAA,QACF,OAAO;AACL,cAAI,MAAM;AACR,gBAAI,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,UACxB;AACA,iBAAO;AACP,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,UAAI,OAAO;AACT,YAAI,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,MACxB;AAEA,YAAM,SAAS,CAAC;AAChB,iBAAW,CAAC,KAAK,GAAG,KAAK,KAAK;AAC5B,YAAI,QAAQ,KAAK;AACf,iBAAO,KAAK,GAAG;AAAA,QACjB,WAAW,CAAC,OAAO,QAAQ,EAAE,IAAI;AAC/B,iBAAO,KAAK,GAAG;AAAA,QACjB,WAAW,CAAC,KAAK;AACf,iBAAO,KAAK,KAAK,KAAK;AAAA,QACxB,WAAW,QAAQ,EAAE,IAAI;AACvB,iBAAO,KAAK,KAAK,KAAK;AAAA,QACxB,OAAO;AACL,iBAAO,KAAK,GAAG,SAAS,KAAK;AAAA,QAC/B;AAAA,MACF;AACA,YAAM,aAAa,OAAO,KAAK,MAAM;AACrC,YAAM,WAAW,OAAO,MAAM,QAAQ,WAAW,MAAM,MAAM,OAAO,KAAK;AACzE,aAAO,WAAW,SAAS,SAAS,SAAS,aAAa;AAAA,IAC5D;AAAA;AAAA;;;AC9CA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,YAAY;AAClB,QAAM,UAAU;AAsChB,QAAM,SAAS,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM;AACzC,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,MAAM,KAAK,OAAO;AAC5B,YAAM,IAAI,MAAM,KAAK,OAAO;AAC5B,UAAI,aAAa;AAEjB;AAAO,mBAAW,aAAa,IAAI,KAAK;AACtC,qBAAW,aAAa,IAAI,KAAK;AAC/B,kBAAM,QAAQ,aAAa,WAAW,WAAW,OAAO;AACxD,yBAAa,cAAc,UAAU;AACrC,gBAAI,OAAO;AACT,uBAAS;AAAA,YACX;AAAA,UACF;AAKA,cAAI,YAAY;AACd,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,+BAA+B,CAAC,IAAI,WAAW,WAAW,CAAC;AACjE,QAAM,iBAAiB,CAAC,IAAI,WAAW,SAAS,CAAC;AAEjD,QAAM,eAAe,CAAC,KAAK,KAAK,YAAY;AAC1C,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,WAAW,KAAK,IAAI,GAAG,WAAW,KAAK;AAC7C,YAAI,IAAI,WAAW,KAAK,IAAI,GAAG,WAAW,KAAK;AAC7C,iBAAO;AAAA,QACT,WAAW,QAAQ,mBAAmB;AACpC,gBAAM;AAAA,QACR,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,UAAI,IAAI,WAAW,KAAK,IAAI,GAAG,WAAW,KAAK;AAC7C,YAAI,QAAQ,mBAAmB;AAC7B,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,YAAM,QAAQ,oBAAI,IAAI;AACtB,UAAI,IAAI;AACR,iBAAW,KAAK,KAAK;AACnB,YAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,eAAK,SAAS,IAAI,GAAG,OAAO;AAAA,QAC9B,WAAW,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AACpD,eAAK,QAAQ,IAAI,GAAG,OAAO;AAAA,QAC7B,OAAO;AACL,gBAAM,IAAI,EAAE,MAAM;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,MAAM,OAAO,GAAG;AAClB,eAAO;AAAA,MACT;AAEA,UAAI;AACJ,UAAI,MAAM,IAAI;AACZ,mBAAW,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAAO;AAChD,YAAI,WAAW,GAAG;AAChB,iBAAO;AAAA,QACT,WAAW,aAAa,MAAM,GAAG,aAAa,QAAQ,GAAG,aAAa,OAAO;AAC3E,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,iBAAW,MAAM,OAAO;AACtB,YAAI,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AAEA,YAAI,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AAEA,mBAAW,KAAK,KAAK;AACnB,cAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,OAAO,GAAG;AACtC,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AACZ,UAAI,UAAU;AAGd,UAAI,eAAe,MACjB,CAAC,QAAQ,qBACT,GAAG,OAAO,WAAW,SAAS,GAAG,SAAS;AAC5C,UAAI,eAAe,MACjB,CAAC,QAAQ,qBACT,GAAG,OAAO,WAAW,SAAS,GAAG,SAAS;AAE5C,UAAI,gBAAgB,aAAa,WAAW,WAAW,KACnD,GAAG,aAAa,OAAO,aAAa,WAAW,OAAO,GAAG;AAC3D,uBAAe;AAAA,MACjB;AAEA,iBAAW,KAAK,KAAK;AACnB,mBAAW,YAAY,EAAE,aAAa,OAAO,EAAE,aAAa;AAC5D,mBAAW,YAAY,EAAE,aAAa,OAAO,EAAE,aAAa;AAC5D,YAAI,IAAI;AACN,cAAI,cAAc;AAChB,gBAAI,EAAE,OAAO,cAAc,EAAE,OAAO,WAAW,UAC3C,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,OAAO;AACzC,6BAAe;AAAA,YACjB;AAAA,UACF;AACA,cAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,qBAAS,SAAS,IAAI,GAAG,OAAO;AAChC,gBAAI,WAAW,KAAK,WAAW,IAAI;AACjC,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,GAAG,aAAa,QAAQ,CAAC,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,OAAO,GAAG;AAC5E,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,IAAI;AACN,cAAI,cAAc;AAChB,gBAAI,EAAE,OAAO,cAAc,EAAE,OAAO,WAAW,UAC3C,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,OAAO;AACzC,6BAAe;AAAA,YACjB;AAAA,UACF;AACA,cAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,oBAAQ,QAAQ,IAAI,GAAG,OAAO;AAC9B,gBAAI,UAAU,KAAK,UAAU,IAAI;AAC/B,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,GAAG,aAAa,QAAQ,CAAC,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,OAAO,GAAG;AAC5E,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,CAAC,EAAE,aAAa,MAAM,OAAO,aAAa,GAAG;AAC/C,iBAAO;AAAA,QACT;AAAA,MACF;AAKA,UAAI,MAAM,YAAY,CAAC,MAAM,aAAa,GAAG;AAC3C,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,YAAY,CAAC,MAAM,aAAa,GAAG;AAC3C,eAAO;AAAA,MACT;AAKA,UAAI,gBAAgB,cAAc;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAGA,QAAM,WAAW,CAAC,GAAG,GAAG,YAAY;AAClC,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAChD,aAAO,OAAO,IAAI,IACd,OAAO,IAAI,IACX,EAAE,aAAa,OAAO,EAAE,aAAa,OAAO,IAC5C;AAAA,IACN;AAGA,QAAM,UAAU,CAAC,GAAG,GAAG,YAAY;AACjC,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAChD,aAAO,OAAO,IAAI,IACd,OAAO,IAAI,IACX,EAAE,aAAa,OAAO,EAAE,aAAa,OAAO,IAC5C;AAAA,IACN;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACtPjB,IAAAC,kBAAA;AAAA;AACA,QAAM,aAAa;AACnB,QAAM,YAAY;AAClB,QAAM,SAAS;AACf,QAAM,cAAc;AACpB,QAAMC,SAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,WAAW;AACjB,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,aAAa;AACnB,QAAM,gBAAgB;AACtB,QAAM,SAAS;AACf,WAAO,UAAU;AAAA,MACf,OAAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,WAAW;AAAA,MACf,KAAK,WAAW;AAAA,MAChB,QAAQ,WAAW;AAAA,MACnB,qBAAqB,UAAU;AAAA,MAC/B,eAAe,UAAU;AAAA,MACzB,oBAAoB,YAAY;AAAA,MAChC,qBAAqB,YAAY;AAAA,IACnC;AAAA;AAAA;;;;;;;;ACjFA,QAAA,OAAA,UAAA;AACA,QAAA,aAAA,UAAA;AAOO,QAAM,QAAQ,OACnBC,OACA,UAAwB,CAAA,MACJ;AACpB,YAAM,EAAE,eAAe,MAAK,IAAK;AACjC,UAAI;AACF,eAAO,UAAU,OAAM,GAAA,WAAA,MAAKA,KAAI,GAAG,OAAO;eACnC,GAAP;AACA,cAAM,KAAK;AACX,YAAI,gBAAgB,GAAG,SAAS;AAAU,iBAAO;AACjD,cAAM;;IAEV;AAZa,YAAA,QAAK;AAkBX,QAAM,OAAO,CAClBA,OACA,UAAwB,CAAA,MACb;AACX,YAAM,EAAE,eAAe,MAAK,IAAK;AACjC,UAAI;AACF,eAAO,WAAU,GAAA,KAAA,UAASA,KAAI,GAAG,OAAO;eACjC,GAAP;AACA,cAAM,KAAK;AACX,YAAI,gBAAgB,GAAG,SAAS;AAAU,iBAAO;AACjD,cAAM;;IAEV;AAZa,YAAA,OAAI;AAcjB,QAAM,YAAY,CAAC,MAAa,YAC9B,KAAK,OAAM,KAAM,UAAU,MAAM,OAAO;AAE1C,QAAM,YAAY,CAAC,MAAa,YAAyB;;AACvD,YAAM,QAAQ,QAAQ,SAAO,aAAQ,WAAR;AAC7B,YAAM,WAAW,QAAQ,YAAU,aAAQ,cAAR,qCAAyB,CAAA;AAC5D,YAAM,QAAQ,QAAQ,SAAO,aAAQ,WAAR,qCAAsB,SAAS;AAC5D,UAAI,UAAU,UAAa,UAAU,QAAW;AAC9C,cAAM,IAAI,MAAM,uBAAuB;;AAGzC,YAAM,SAAS,oBAAI,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;AAE3C,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,KAAK;AAEjB,YAAM,IAAI,SAAS,OAAO,CAAC;AAC3B,YAAM,IAAI,SAAS,OAAO,CAAC;AAC3B,YAAM,IAAI,SAAS,OAAO,CAAC;AAC3B,YAAM,KAAK,IAAI;AAEf,aAAO,CAAC,EACN,MAAM,KACL,MAAM,KAAK,OAAO,IAAI,GAAG,KACzB,MAAM,KAAK,QAAQ,SACnB,MAAM,MAAM,UAAU;IAE3B;;;;;;;;;;ACpEA,QAAA,OAAA,UAAA;AACA,QAAA,aAAA,UAAA;AAOO,QAAM,QAAQ,OACnBC,OACA,UAAwB,CAAA,MACJ;AACpB,YAAM,EAAE,eAAe,MAAK,IAAK;AACjC,UAAI;AACF,eAAO,UAAU,OAAM,GAAA,WAAA,MAAKA,KAAI,GAAGA,OAAM,OAAO;eACzC,GAAP;AACA,cAAM,KAAK;AACX,YAAI,gBAAgB,GAAG,SAAS;AAAU,iBAAO;AACjD,cAAM;;IAEV;AAZa,YAAA,QAAK;AAkBX,QAAM,OAAO,CAClBA,OACA,UAAwB,CAAA,MACb;AACX,YAAM,EAAE,eAAe,MAAK,IAAK;AACjC,UAAI;AACF,eAAO,WAAU,GAAA,KAAA,UAASA,KAAI,GAAGA,OAAM,OAAO;eACvC,GAAP;AACA,cAAM,KAAK;AACX,YAAI,gBAAgB,GAAG,SAAS;AAAU,iBAAO;AACjD,cAAM;;IAEV;AAZa,YAAA,OAAI;AAcjB,QAAM,eAAe,CAACA,OAAc,YAAyB;AAC3D,YAAM,EAAE,UAAU,QAAQ,IAAI,WAAW,GAAE,IAAK;AAChD,YAAM,UAAU,QAAQ,MAAM,GAAG;AACjC,UAAI,QAAQ,QAAQ,EAAE,MAAM,IAAI;AAC9B,eAAO;;AAGT,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,cAAM,IAAI,QAAQ,GAAG,YAAW;AAChC,cAAM,MAAMA,MAAK,UAAUA,MAAK,SAAS,EAAE,MAAM,EAAE,YAAW;AAE9D,YAAI,KAAK,QAAQ,GAAG;AAClB,iBAAO;;;AAGX,aAAO;IACT;AAEA,QAAM,YAAY,CAAC,MAAaA,OAAc,YAC5C,KAAK,OAAM,KAAM,aAAaA,OAAM,OAAO;;;;;AClE7C;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACD5D,QAAA,QAAA,aAAA,eAAA;AAGgB,YAAA,QAAA;AAFhB,QAAA,QAAA,aAAA,eAAA;AAES,YAAA,QAAA;AADT,iBAAA,mBAAA,OAAA;AAGA,QAAM,WAAW,QAAQ,IAAI,yBAAyB,QAAQ;AAC9D,QAAM,OAAO,aAAa,UAAU,QAAQ;AAK/B,YAAA,QAAQ,KAAK;AAKb,YAAA,OAAO,KAAK;;;;;AChBzB;AAAA;AAAA,QAAM,EAAE,OAAO,MAAM,UAAU,IAAI;AACnC,QAAM,EAAE,MAAAC,OAAM,WAAW,KAAK,MAAM,IAAI,UAAQ;AAEhD,QAAM,YAAY,QAAQ,aAAa;AAQvC,QAAM,SAAS,IAAI,OAAO,IAAI,MAAM,MAAM,QAAQ,MAAM,MAAM,KAAK,OAAO,QAAQ,SAAS,MAAM,CAAC;AAClG,QAAM,OAAO,IAAI,OAAO,OAAO,OAAO,QAAQ;AAE9C,QAAM,mBAAmB,CAAC,QACxB,OAAO,OAAO,IAAI,MAAM,cAAc,KAAK,GAAG,EAAE,MAAM,SAAS,CAAC;AAElE,QAAM,cAAc,CAAC,KAAK;AAAA,MACxB,MAAM,UAAU,QAAQ,IAAI;AAAA,MAC5B,SAAS,aAAa,QAAQ,IAAI;AAAA,MAClC,WAAW,eAAe;AAAA,IAC5B,MAAM;AAGJ,YAAM,UAAU,IAAI,MAAM,MAAM,IAAI,CAAC,EAAE,IAAI;AAAA,QAEzC,GAAI,YAAY,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC;AAAA,QACnC,IAAI,WAAoD,IAAI,MAAM,YAAY;AAAA,MAChF;AAEA,UAAI,WAAW;AACb,cAAM,aAAa,cACjB,CAAC,QAAQ,QAAQ,QAAQ,MAAM,EAAE,KAAK,YAAY;AACpD,cAAM,UAAU,WAAW,MAAM,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;AAC3F,YAAI,IAAI,SAAS,GAAG,KAAK,QAAQ,OAAO,IAAI;AAC1C,kBAAQ,QAAQ,EAAE;AAAA,QACpB;AACA,eAAO,EAAE,SAAS,SAAS,WAAW;AAAA,MACxC;AAEA,aAAO,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;AAAA,IAClC;AAEA,QAAM,cAAc,CAAC,KAAK,QAAQ;AAChC,YAAM,WAAW,SAAS,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,EAAE,IAAI;AACzD,YAAM,SAAS,CAAC,YAAY,KAAK,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI;AAC/D,aAAO,SAASA,MAAK,UAAU,GAAG;AAAA,IACpC;AAEA,QAAMC,SAAQ,OAAO,KAAK,MAAM,CAAC,MAAM;AACrC,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI,YAAY,KAAK,GAAG;AAC7D,YAAM,QAAQ,CAAC;AAEf,iBAAW,WAAW,SAAS;AAC7B,cAAM,IAAI,YAAY,SAAS,GAAG;AAElC,mBAAW,OAAO,SAAS;AACzB,gBAAM,UAAU,IAAI;AACpB,gBAAM,KAAK,MAAM,MAAM,SAAS,EAAE,SAAS,YAAY,cAAc,KAAK,CAAC;AAC3E,cAAI,IAAI;AACN,gBAAI,CAAC,IAAI,KAAK;AACZ,qBAAO;AAAA,YACT;AACA,kBAAM,KAAK,OAAO;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,IAAI,OAAO,MAAM,QAAQ;AAC3B,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,SAAS;AACf,eAAO;AAAA,MACT;AAEA,YAAM,iBAAiB,GAAG;AAAA,IAC5B;AAEA,QAAM,YAAY,CAAC,KAAK,MAAM,CAAC,MAAM;AACnC,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI,YAAY,KAAK,GAAG;AAC7D,YAAM,QAAQ,CAAC;AAEf,iBAAW,eAAe,SAAS;AACjC,cAAM,IAAI,YAAY,aAAa,GAAG;AAEtC,mBAAW,OAAO,SAAS;AACzB,gBAAM,UAAU,IAAI;AACpB,gBAAM,KAAK,UAAU,SAAS,EAAE,SAAS,YAAY,cAAc,KAAK,CAAC;AACzE,cAAI,IAAI;AACN,gBAAI,CAAC,IAAI,KAAK;AACZ,qBAAO;AAAA,YACT;AACA,kBAAM,KAAK,OAAO;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,IAAI,OAAO,MAAM,QAAQ;AAC3B,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,SAAS;AACf,eAAO;AAAA,MACT;AAEA,YAAM,iBAAiB,GAAG;AAAA,IAC5B;AAEA,WAAO,UAAUA;AACjB,IAAAA,OAAM,OAAO;AAAA;AAAA;;;AC9Gb;AAAA;AAAA;AAEA,QAAM,QAAQ,OAAO,IAAI,YAAY;AACrC,QAAM,MAAM,OAAO,IAAI,eAAe;AACtC,QAAM,MAAM,OAAO,IAAI,UAAU;AACjC,QAAM,OAAO,OAAO,IAAI,WAAW;AACnC,QAAM,SAAS,OAAO,IAAI,aAAa;AACvC,QAAM,MAAM,OAAO,IAAI,UAAU;AACjC,QAAM,YAAY,OAAO,IAAI,gBAAgB;AAC7C,QAAM,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AACpF,QAAM,aAAa,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AACvF,QAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AAClF,QAAM,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AACnF,QAAM,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AACrF,QAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AAClF,aAAS,aAAa,MAAM;AACxB,UAAI,QAAQ,OAAO,SAAS;AACxB,gBAAQ,KAAK,YAAY;AAAA,UACrB,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,QACf;AACJ,aAAO;AAAA,IACX;AACA,aAAS,OAAO,MAAM;AAClB,UAAI,QAAQ,OAAO,SAAS;AACxB,gBAAQ,KAAK,YAAY;AAAA,UACrB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,QACf;AACJ,aAAO;AAAA,IACX;AACA,QAAM,YAAY,CAAC,UAAU,SAAS,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,CAAC,KAAK;AAE7E,YAAQ,QAAQ;AAChB,YAAQ,MAAM;AACd,YAAQ,MAAM;AACd,YAAQ,YAAY;AACpB,YAAQ,OAAO;AACf,YAAQ,SAAS;AACjB,YAAQ,MAAM;AACd,YAAQ,YAAY;AACpB,YAAQ,UAAU;AAClB,YAAQ,eAAe;AACvB,YAAQ,aAAa;AACrB,YAAQ,QAAQ;AAChB,YAAQ,SAAS;AACjB,YAAQ,SAAS;AACjB,YAAQ,WAAW;AACnB,YAAQ,QAAQ;AAAA;AAAA;;;ACpDhB;AAAA;AAAA;AAEA,QAAI,WAAW;AAEf,QAAM,QAAQ,OAAO,aAAa;AAClC,QAAM,OAAO,OAAO,eAAe;AACnC,QAAM,SAAS,OAAO,aAAa;AA+BnC,aAAS,MAAM,MAAM,SAAS;AAC1B,YAAM,WAAW,YAAY,OAAO;AACpC,UAAI,SAAS,WAAW,IAAI,GAAG;AAC3B,cAAM,KAAK,OAAO,MAAM,KAAK,UAAU,UAAU,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,YAAI,OAAO;AACP,eAAK,WAAW;AAAA,MACxB;AAEI,eAAO,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC,CAAC,CAAC;AAAA,IACtD;AAKA,UAAM,QAAQ;AAEd,UAAM,OAAO;AAEb,UAAM,SAAS;AACf,aAAS,OAAO,KAAK,MAAM,SAASC,OAAM;AACtC,YAAM,OAAO,YAAY,KAAK,MAAM,SAASA,KAAI;AACjD,UAAI,SAAS,OAAO,IAAI,KAAK,SAAS,OAAO,IAAI,GAAG;AAChD,oBAAY,KAAKA,OAAM,IAAI;AAC3B,eAAO,OAAO,KAAK,MAAM,SAASA,KAAI;AAAA,MAC1C;AACA,UAAI,OAAO,SAAS,UAAU;AAC1B,YAAI,SAAS,aAAa,IAAI,GAAG;AAC7B,UAAAA,QAAO,OAAO,OAAOA,MAAK,OAAO,IAAI,CAAC;AACtC,mBAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,EAAE,GAAG;AACxC,kBAAM,KAAK,OAAO,GAAG,KAAK,MAAM,IAAI,SAASA,KAAI;AACjD,gBAAI,OAAO,OAAO;AACd,kBAAI,KAAK;AAAA,qBACJ,OAAO;AACZ,qBAAO;AAAA,qBACF,OAAO,QAAQ;AACpB,mBAAK,MAAM,OAAO,GAAG,CAAC;AACtB,mBAAK;AAAA,YACT;AAAA,UACJ;AAAA,QACJ,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,UAAAA,QAAO,OAAO,OAAOA,MAAK,OAAO,IAAI,CAAC;AACtC,gBAAM,KAAK,OAAO,OAAO,KAAK,KAAK,SAASA,KAAI;AAChD,cAAI,OAAO;AACP,mBAAO;AAAA,mBACF,OAAO;AACZ,iBAAK,MAAM;AACf,gBAAM,KAAK,OAAO,SAAS,KAAK,OAAO,SAASA,KAAI;AACpD,cAAI,OAAO;AACP,mBAAO;AAAA,mBACF,OAAO;AACZ,iBAAK,QAAQ;AAAA,QACrB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAgCA,mBAAe,WAAW,MAAM,SAAS;AACrC,YAAM,WAAW,YAAY,OAAO;AACpC,UAAI,SAAS,WAAW,IAAI,GAAG;AAC3B,cAAM,KAAK,MAAM,YAAY,MAAM,KAAK,UAAU,UAAU,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACjF,YAAI,OAAO;AACP,eAAK,WAAW;AAAA,MACxB;AAEI,cAAM,YAAY,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC,CAAC,CAAC;AAAA,IACjE;AAKA,eAAW,QAAQ;AAEnB,eAAW,OAAO;AAElB,eAAW,SAAS;AACpB,mBAAe,YAAY,KAAK,MAAM,SAASA,OAAM;AACjD,YAAM,OAAO,MAAM,YAAY,KAAK,MAAM,SAASA,KAAI;AACvD,UAAI,SAAS,OAAO,IAAI,KAAK,SAAS,OAAO,IAAI,GAAG;AAChD,oBAAY,KAAKA,OAAM,IAAI;AAC3B,eAAO,YAAY,KAAK,MAAM,SAASA,KAAI;AAAA,MAC/C;AACA,UAAI,OAAO,SAAS,UAAU;AAC1B,YAAI,SAAS,aAAa,IAAI,GAAG;AAC7B,UAAAA,QAAO,OAAO,OAAOA,MAAK,OAAO,IAAI,CAAC;AACtC,mBAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,EAAE,GAAG;AACxC,kBAAM,KAAK,MAAM,YAAY,GAAG,KAAK,MAAM,IAAI,SAASA,KAAI;AAC5D,gBAAI,OAAO,OAAO;AACd,kBAAI,KAAK;AAAA,qBACJ,OAAO;AACZ,qBAAO;AAAA,qBACF,OAAO,QAAQ;AACpB,mBAAK,MAAM,OAAO,GAAG,CAAC;AACtB,mBAAK;AAAA,YACT;AAAA,UACJ;AAAA,QACJ,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,UAAAA,QAAO,OAAO,OAAOA,MAAK,OAAO,IAAI,CAAC;AACtC,gBAAM,KAAK,MAAM,YAAY,OAAO,KAAK,KAAK,SAASA,KAAI;AAC3D,cAAI,OAAO;AACP,mBAAO;AAAA,mBACF,OAAO;AACZ,iBAAK,MAAM;AACf,gBAAM,KAAK,MAAM,YAAY,SAAS,KAAK,OAAO,SAASA,KAAI;AAC/D,cAAI,OAAO;AACP,mBAAO;AAAA,mBACF,OAAO;AACZ,iBAAK,QAAQ;AAAA,QACrB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,YAAY,SAAS;AAC1B,UAAI,OAAO,YAAY,aAClB,QAAQ,cAAc,QAAQ,QAAQ,QAAQ,QAAQ;AACvD,eAAO,OAAO,OAAO;AAAA,UACjB,OAAO,QAAQ;AAAA,UACf,KAAK,QAAQ;AAAA,UACb,QAAQ,QAAQ;AAAA,UAChB,KAAK,QAAQ;AAAA,QACjB,GAAG,QAAQ,SAAS;AAAA,UAChB,KAAK,QAAQ;AAAA,UACb,QAAQ,QAAQ;AAAA,UAChB,KAAK,QAAQ;AAAA,QACjB,GAAG,QAAQ,cAAc;AAAA,UACrB,KAAK,QAAQ;AAAA,UACb,KAAK,QAAQ;AAAA,QACjB,GAAG,OAAO;AAAA,MACd;AACA,aAAO;AAAA,IACX;AACA,aAAS,YAAY,KAAK,MAAM,SAASA,OAAM;AAvM/C;AAwMI,UAAI,OAAO,YAAY;AACnB,eAAO,QAAQ,KAAK,MAAMA,KAAI;AAClC,UAAI,SAAS,MAAM,IAAI;AACnB,gBAAO,aAAQ,QAAR,iCAAc,KAAK,MAAMA;AACpC,UAAI,SAAS,MAAM,IAAI;AACnB,gBAAO,aAAQ,QAAR,iCAAc,KAAK,MAAMA;AACpC,UAAI,SAAS,OAAO,IAAI;AACpB,gBAAO,aAAQ,SAAR,iCAAe,KAAK,MAAMA;AACrC,UAAI,SAAS,SAAS,IAAI;AACtB,gBAAO,aAAQ,WAAR,iCAAiB,KAAK,MAAMA;AACvC,UAAI,SAAS,QAAQ,IAAI;AACrB,gBAAO,aAAQ,UAAR,iCAAgB,KAAK,MAAMA;AACtC,aAAO;AAAA,IACX;AACA,aAAS,YAAY,KAAKA,OAAM,MAAM;AAClC,YAAM,SAASA,MAAKA,MAAK,SAAS;AAClC,UAAI,SAAS,aAAa,MAAM,GAAG;AAC/B,eAAO,MAAM,OAAO;AAAA,MACxB,WACS,SAAS,OAAO,MAAM,GAAG;AAC9B,YAAI,QAAQ;AACR,iBAAO,MAAM;AAAA;AAEb,iBAAO,QAAQ;AAAA,MACvB,WACS,SAAS,WAAW,MAAM,GAAG;AAClC,eAAO,WAAW;AAAA,MACtB,OACK;AACD,cAAM,KAAK,SAAS,QAAQ,MAAM,IAAI,UAAU;AAChD,cAAM,IAAI,MAAM,4BAA4B,WAAW;AAAA,MAC3D;AAAA,IACJ;AAEA,YAAQ,QAAQ;AAChB,YAAQ,aAAa;AAAA;AAAA;;;AC3OrB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,QAAQ;AAEZ,QAAM,cAAc;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AACA,QAAM,gBAAgB,CAAC,OAAO,GAAG,QAAQ,cAAc,QAAM,YAAY,GAAG;AAC5E,QAAM,aAAN,MAAiB;AAAA,MACb,YAAY,MAAM,MAAM;AAKpB,aAAK,WAAW;AAEhB,aAAK,SAAS;AACd,aAAK,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,aAAa,IAAI;AAC1D,aAAK,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,aAAa,IAAI;AAAA,MAC9D;AAAA,MACA,QAAQ;AACJ,cAAM,OAAO,IAAI,WAAW,KAAK,MAAM,KAAK,IAAI;AAChD,aAAK,WAAW,KAAK;AACrB,eAAO;AAAA,MACX;AAAA,MAKA,aAAa;AACT,cAAM,MAAM,IAAI,WAAW,KAAK,MAAM,KAAK,IAAI;AAC/C,gBAAQ,KAAK,KAAK,SAAS;AAAA,UACvB,KAAK;AACD,iBAAK,iBAAiB;AACtB;AAAA,UACJ,KAAK;AACD,iBAAK,iBAAiB;AACtB,iBAAK,OAAO;AAAA,cACR,UAAU,WAAW,YAAY;AAAA,cACjC,SAAS;AAAA,YACb;AACA,iBAAK,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,WAAW;AACpD;AAAA,QACR;AACA,eAAO;AAAA,MACX;AAAA,MAKA,IAAI,MAAM,SAAS;AACf,YAAI,KAAK,gBAAgB;AACrB,eAAK,OAAO,EAAE,UAAU,WAAW,YAAY,UAAU,SAAS,MAAM;AACxE,eAAK,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,WAAW;AACpD,eAAK,iBAAiB;AAAA,QAC1B;AACA,cAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,QAAQ;AACxC,cAAM,OAAO,MAAM,MAAM;AACzB,gBAAQ,MAAM;AAAA,UACV,KAAK,QAAQ;AACT,gBAAI,MAAM,WAAW,GAAG;AACpB,sBAAQ,GAAG,iDAAiD;AAC5D,kBAAI,MAAM,SAAS;AACf,uBAAO;AAAA,YACf;AACA,kBAAM,CAAC,QAAQ,MAAM,IAAI;AACzB,iBAAK,KAAK,UAAU;AACpB,mBAAO;AAAA,UACX;AAAA,UACA,KAAK,SAAS;AACV,iBAAK,KAAK,WAAW;AACrB,gBAAI,MAAM,WAAW,GAAG;AACpB,sBAAQ,GAAG,iDAAiD;AAC5D,qBAAO;AAAA,YACX;AACA,kBAAM,CAAC,OAAO,IAAI;AAClB,gBAAI,YAAY,SAAS,YAAY,OAAO;AACxC,mBAAK,KAAK,UAAU;AACpB,qBAAO;AAAA,YACX,OACK;AACD,oBAAM,UAAU,aAAa,KAAK,OAAO;AACzC,sBAAQ,GAAG,4BAA4B,WAAW,OAAO;AACzD,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,UACA;AACI,oBAAQ,GAAG,qBAAqB,QAAQ,IAAI;AAC5C,mBAAO;AAAA,QACf;AAAA,MACJ;AAAA,MAOA,QAAQ,QAAQ,SAAS;AACrB,YAAI,WAAW;AACX,iBAAO;AACX,YAAI,OAAO,OAAO,KAAK;AACnB,kBAAQ,oBAAoB,QAAQ;AACpC,iBAAO;AAAA,QACX;AACA,YAAI,OAAO,OAAO,KAAK;AACnB,gBAAM,WAAW,OAAO,MAAM,GAAG,EAAE;AACnC,cAAI,aAAa,OAAO,aAAa,MAAM;AACvC,oBAAQ,qCAAqC,oBAAoB;AACjE,mBAAO;AAAA,UACX;AACA,cAAI,OAAO,OAAO,SAAS,OAAO;AAC9B,oBAAQ,iCAAiC;AAC7C,iBAAO;AAAA,QACX;AACA,cAAM,CAAC,EAAE,QAAQ,MAAM,IAAI,OAAO,MAAM,iBAAiB;AACzD,YAAI,CAAC;AACD,kBAAQ,OAAO,0BAA0B;AAC7C,cAAM,SAAS,KAAK,KAAK;AACzB,YAAI,QAAQ;AACR,cAAI;AACA,mBAAO,SAAS,mBAAmB,MAAM;AAAA,UAC7C,SACO,OAAP;AACI,oBAAQ,OAAO,KAAK,CAAC;AACrB,mBAAO;AAAA,UACX;AAAA,QACJ;AACA,YAAI,WAAW;AACX,iBAAO;AACX,gBAAQ,0BAA0B,QAAQ;AAC1C,eAAO;AAAA,MACX;AAAA,MAKA,UAAU,KAAK;AACX,mBAAW,CAAC,QAAQ,MAAM,KAAK,OAAO,QAAQ,KAAK,IAAI,GAAG;AACtD,cAAI,IAAI,WAAW,MAAM;AACrB,mBAAO,SAAS,cAAc,IAAI,UAAU,OAAO,MAAM,CAAC;AAAA,QAClE;AACA,eAAO,IAAI,OAAO,MAAM,MAAM,KAAK;AAAA,MACvC;AAAA,MACA,SAAS,KAAK;AACV,cAAM,QAAQ,KAAK,KAAK,WAClB,CAAC,SAAS,KAAK,KAAK,WAAW,OAAO,IACtC,CAAC;AACP,cAAM,aAAa,OAAO,QAAQ,KAAK,IAAI;AAC3C,YAAI;AACJ,YAAI,OAAO,WAAW,SAAS,KAAK,SAAS,OAAO,IAAI,QAAQ,GAAG;AAC/D,gBAAM,OAAO,CAAC;AACd,gBAAM,MAAM,IAAI,UAAU,CAAC,MAAM,SAAS;AACtC,gBAAI,SAAS,OAAO,IAAI,KAAK,KAAK;AAC9B,mBAAK,KAAK,OAAO;AAAA,UACzB,CAAC;AACD,qBAAW,OAAO,KAAK,IAAI;AAAA,QAC/B;AAEI,qBAAW,CAAC;AAChB,mBAAW,CAAC,QAAQ,MAAM,KAAK,YAAY;AACvC,cAAI,WAAW,QAAQ,WAAW;AAC9B;AACJ,cAAI,CAAC,OAAO,SAAS,KAAK,QAAM,GAAG,WAAW,MAAM,CAAC;AACjD,kBAAM,KAAK,QAAQ,UAAU,QAAQ;AAAA,QAC7C;AACA,eAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,IACJ;AACA,eAAW,cAAc,EAAE,UAAU,OAAO,SAAS,MAAM;AAC3D,eAAW,cAAc,EAAE,MAAM,qBAAqB;AAEtD,YAAQ,aAAa;AAAA;AAAA;;;ACjLrB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,QAAQ;AAOZ,aAAS,cAAc,QAAQ;AAC3B,UAAI,sBAAsB,KAAK,MAAM,GAAG;AACpC,cAAM,KAAK,KAAK,UAAU,MAAM;AAChC,cAAM,MAAM,6DAA6D;AACzE,cAAM,IAAI,MAAM,GAAG;AAAA,MACvB;AACA,aAAO;AAAA,IACX;AACA,aAAS,YAAY,MAAM;AACvB,YAAM,UAAU,oBAAI,IAAI;AACxB,YAAM,MAAM,MAAM;AAAA,QACd,MAAM,MAAM,MAAM;AACd,cAAI,KAAK;AACL,oBAAQ,IAAI,KAAK,MAAM;AAAA,QAC/B;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AAEA,aAAS,cAAc,QAAQ,SAAS;AACpC,eAAS,IAAI,GAAG,MAAM,EAAE,GAAG;AACvB,cAAM,OAAO,GAAG,SAAS;AACzB,YAAI,CAAC,QAAQ,IAAI,IAAI;AACjB,iBAAO;AAAA,MACf;AAAA,IACJ;AACA,aAAS,kBAAkB,KAAK,QAAQ;AACpC,YAAM,eAAe,CAAC;AACtB,YAAM,gBAAgB,oBAAI,IAAI;AAC9B,UAAI,cAAc;AAClB,aAAO;AAAA,QACH,UAAU,CAAC,WAAW;AAClB,uBAAa,KAAK,MAAM;AACxB,cAAI,CAAC;AACD,0BAAc,YAAY,GAAG;AACjC,gBAAM,SAAS,cAAc,QAAQ,WAAW;AAChD,sBAAY,IAAI,MAAM;AACtB,iBAAO;AAAA,QACX;AAAA,QAMA,YAAY,MAAM;AACd,qBAAW,UAAU,cAAc;AAC/B,kBAAM,MAAM,cAAc,IAAI,MAAM;AACpC,gBAAI,OAAO,QAAQ,YACf,IAAI,WACH,SAAS,SAAS,IAAI,IAAI,KAAK,SAAS,aAAa,IAAI,IAAI,IAAI;AAClE,kBAAI,KAAK,SAAS,IAAI;AAAA,YAC1B,OACK;AACD,oBAAM,QAAQ,IAAI,MAAM,4DAA4D;AACpF,oBAAM,SAAS;AACf,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,gBAAgB;AACxB,YAAQ,cAAc;AACtB,YAAQ,oBAAoB;AAC5B,YAAQ,gBAAgB;AAAA;AAAA;;;AC5ExB;AAAA;AAAA;AASA,aAAS,aAAa,SAAS,KAAK,KAAK,KAAK;AAC1C,UAAI,OAAO,OAAO,QAAQ,UAAU;AAChC,YAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,mBAAS,IAAI,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,GAAG;AAC5C,kBAAM,KAAK,IAAI;AACf,kBAAM,KAAK,aAAa,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE;AAEnD,gBAAI,OAAO;AACP,qBAAO,IAAI;AAAA,qBACN,OAAO;AACZ,kBAAI,KAAK;AAAA,UACjB;AAAA,QACJ,WACS,eAAe,KAAK;AACzB,qBAAW,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,GAAG;AACpC,kBAAM,KAAK,IAAI,IAAI,CAAC;AACpB,kBAAM,KAAK,aAAa,SAAS,KAAK,GAAG,EAAE;AAC3C,gBAAI,OAAO;AACP,kBAAI,OAAO,CAAC;AAAA,qBACP,OAAO;AACZ,kBAAI,IAAI,GAAG,EAAE;AAAA,UACrB;AAAA,QACJ,WACS,eAAe,KAAK;AACzB,qBAAW,MAAM,MAAM,KAAK,GAAG,GAAG;AAC9B,kBAAM,KAAK,aAAa,SAAS,KAAK,IAAI,EAAE;AAC5C,gBAAI,OAAO;AACP,kBAAI,OAAO,EAAE;AAAA,qBACR,OAAO,IAAI;AAChB,kBAAI,OAAO,EAAE;AACb,kBAAI,IAAI,EAAE;AAAA,YACd;AAAA,UACJ;AAAA,QACJ,OACK;AACD,qBAAW,CAAC,GAAG,EAAE,KAAK,OAAO,QAAQ,GAAG,GAAG;AACvC,kBAAM,KAAK,aAAa,SAAS,KAAK,GAAG,EAAE;AAC3C,gBAAI,OAAO;AACP,qBAAO,IAAI;AAAA,qBACN,OAAO;AACZ,kBAAI,KAAK;AAAA,UACjB;AAAA,QACJ;AAAA,MACJ;AACA,aAAO,QAAQ,KAAK,KAAK,KAAK,GAAG;AAAA,IACrC;AAEA,YAAQ,eAAe;AAAA;AAAA;;;ACxDvB;AAAA;AAAA;AAEA,QAAI,WAAW;AAYf,aAAS,KAAK,OAAO,KAAK,KAAK;AAE3B,UAAI,MAAM,QAAQ,KAAK;AACnB,eAAO,MAAM,IAAI,CAAC,GAAG,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;AACtD,UAAI,SAAS,OAAO,MAAM,WAAW,YAAY;AAE7C,YAAI,CAAC,OAAO,CAAC,SAAS,UAAU,KAAK;AACjC,iBAAO,MAAM,OAAO,KAAK,GAAG;AAChC,cAAM,OAAO,EAAE,YAAY,GAAG,OAAO,GAAG,KAAK,OAAU;AACvD,YAAI,QAAQ,IAAI,OAAO,IAAI;AAC3B,YAAI,WAAW,CAAAC,SAAO;AAClB,eAAK,MAAMA;AACX,iBAAO,IAAI;AAAA,QACf;AACA,cAAM,MAAM,MAAM,OAAO,KAAK,GAAG;AACjC,YAAI,IAAI;AACJ,cAAI,SAAS,GAAG;AACpB,eAAO;AAAA,MACX;AACA,UAAI,OAAO,UAAU,YAAY,EAAC,2BAAK;AACnC,eAAO,OAAO,KAAK;AACvB,aAAO;AAAA,IACX;AAEA,YAAQ,OAAO;AAAA;AAAA;;;ACtCf;AAAA;AAAA;AAEA,QAAI,eAAe;AACnB,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,QAAM,WAAN,MAAe;AAAA,MACX,YAAY,MAAM;AACd,eAAO,eAAe,MAAM,SAAS,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,MACnE;AAAA,MAEA,QAAQ;AACJ,cAAM,OAAO,OAAO,OAAO,OAAO,eAAe,IAAI,GAAG,OAAO,0BAA0B,IAAI,CAAC;AAC9F,YAAI,KAAK;AACL,eAAK,QAAQ,KAAK,MAAM,MAAM;AAClC,eAAO;AAAA,MACX;AAAA,MAEA,KAAK,KAAK,EAAE,UAAU,eAAe,UAAU,QAAQ,IAAI,CAAC,GAAG;AAC3D,YAAI,CAAC,SAAS,WAAW,GAAG;AACxB,gBAAM,IAAI,UAAU,iCAAiC;AACzD,cAAM,MAAM;AAAA,UACR,SAAS,oBAAI,IAAI;AAAA,UACjB;AAAA,UACA,MAAM;AAAA,UACN,UAAU,aAAa;AAAA,UACvB,cAAc;AAAA,UACd,eAAe,OAAO,kBAAkB,WAAW,gBAAgB;AAAA,QACvE;AACA,cAAM,MAAM,KAAK,KAAK,MAAM,IAAI,GAAG;AACnC,YAAI,OAAO,aAAa;AACpB,qBAAW,EAAE,OAAO,KAAAC,KAAI,KAAK,IAAI,QAAQ,OAAO;AAC5C,qBAASA,MAAK,KAAK;AAC3B,eAAO,OAAO,YAAY,aACpB,aAAa,aAAa,SAAS,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,IACvD;AAAA,MACV;AAAA,IACJ;AAEA,YAAQ,WAAW;AAAA;AAAA;;;ACvCnB;AAAA;AAAA;AAEA,QAAI,UAAU;AACd,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,OAAO;AAEX,QAAM,QAAN,cAAoB,KAAK,SAAS;AAAA,MAC9B,YAAY,QAAQ;AAChB,cAAM,SAAS,KAAK;AACpB,aAAK,SAAS;AACd,eAAO,eAAe,MAAM,OAAO;AAAA,UAC/B,MAAM;AACF,kBAAM,IAAI,MAAM,8BAA8B;AAAA,UAClD;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAKA,QAAQ,KAAK;AACT,YAAI,QAAQ;AACZ,cAAM,MAAM,KAAK;AAAA,UACb,MAAM,CAAC,MAAM,SAAS;AAClB,gBAAI,SAAS;AACT,qBAAO,MAAM,MAAM;AACvB,gBAAI,KAAK,WAAW,KAAK;AACrB,sBAAQ;AAAA,UAChB;AAAA,QACJ,CAAC;AACD,eAAO;AAAA,MACX;AAAA,MACA,OAAO,MAAM,KAAK;AACd,YAAI,CAAC;AACD,iBAAO,EAAE,QAAQ,KAAK,OAAO;AACjC,cAAM,EAAE,SAAAC,UAAS,KAAK,cAAc,IAAI;AACxC,cAAM,SAAS,KAAK,QAAQ,GAAG;AAC/B,YAAI,CAAC,QAAQ;AACT,gBAAM,MAAM,+DAA+D,KAAK;AAChF,gBAAM,IAAI,eAAe,GAAG;AAAA,QAChC;AACA,YAAI,OAAOA,SAAQ,IAAI,MAAM;AAC7B,YAAI,CAAC,MAAM;AAEP,eAAK,KAAK,QAAQ,MAAM,GAAG;AAC3B,iBAAOA,SAAQ,IAAI,MAAM;AAAA,QAC7B;AAEA,YAAI,CAAC,QAAQ,KAAK,QAAQ,QAAW;AACjC,gBAAM,MAAM;AACZ,gBAAM,IAAI,eAAe,GAAG;AAAA,QAChC;AACA,YAAI,iBAAiB,GAAG;AACpB,eAAK,SAAS;AACd,cAAI,KAAK,eAAe;AACpB,iBAAK,aAAa,cAAc,KAAK,QAAQA,QAAO;AACxD,cAAI,KAAK,QAAQ,KAAK,aAAa,eAAe;AAC9C,kBAAM,MAAM;AACZ,kBAAM,IAAI,eAAe,GAAG;AAAA,UAChC;AAAA,QACJ;AACA,eAAO,KAAK;AAAA,MAChB;AAAA,MACA,SAAS,KAAK,YAAY,cAAc;AACpC,cAAM,MAAM,IAAI,KAAK;AACrB,YAAI,KAAK;AACL,kBAAQ,cAAc,KAAK,MAAM;AACjC,cAAI,IAAI,QAAQ,oBAAoB,CAAC,IAAI,QAAQ,IAAI,KAAK,MAAM,GAAG;AAC/D,kBAAM,MAAM,+DAA+D,KAAK;AAChF,kBAAM,IAAI,MAAM,GAAG;AAAA,UACvB;AACA,cAAI,IAAI;AACJ,mBAAO,GAAG;AAAA,QAClB;AACA,eAAO;AAAA,MACX;AAAA,IACJ;AACA,aAAS,cAAc,KAAK,MAAMA,UAAS;AACvC,UAAI,SAAS,QAAQ,IAAI,GAAG;AACxB,cAAM,SAAS,KAAK,QAAQ,GAAG;AAC/B,cAAM,SAASA,YAAW,UAAUA,SAAQ,IAAI,MAAM;AACtD,eAAO,SAAS,OAAO,QAAQ,OAAO,aAAa;AAAA,MACvD,WACS,SAAS,aAAa,IAAI,GAAG;AAClC,YAAI,QAAQ;AACZ,mBAAW,QAAQ,KAAK,OAAO;AAC3B,gBAAM,IAAI,cAAc,KAAK,MAAMA,QAAO;AAC1C,cAAI,IAAI;AACJ,oBAAQ;AAAA,QAChB;AACA,eAAO;AAAA,MACX,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,cAAM,KAAK,cAAc,KAAK,KAAK,KAAKA,QAAO;AAC/C,cAAM,KAAK,cAAc,KAAK,KAAK,OAAOA,QAAO;AACjD,eAAO,KAAK,IAAI,IAAI,EAAE;AAAA,MAC1B;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,QAAQ;AAAA;AAAA;;;ACtGhB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,OAAO;AAEX,QAAM,gBAAgB,CAAC,UAAU,CAAC,SAAU,OAAO,UAAU,cAAc,OAAO,UAAU;AAC5F,QAAM,SAAN,cAAqB,KAAK,SAAS;AAAA,MAC/B,YAAY,OAAO;AACf,cAAM,SAAS,MAAM;AACrB,aAAK,QAAQ;AAAA,MACjB;AAAA,MACA,OAAO,KAAK,KAAK;AACb,gBAAO,2BAAK,QAAO,KAAK,QAAQ,KAAK,KAAK,KAAK,OAAO,KAAK,GAAG;AAAA,MAClE;AAAA,MACA,WAAW;AACP,eAAO,OAAO,KAAK,KAAK;AAAA,MAC5B;AAAA,IACJ;AACA,WAAO,eAAe;AACtB,WAAO,gBAAgB;AACvB,WAAO,QAAQ;AACf,WAAO,eAAe;AACtB,WAAO,eAAe;AAEtB,YAAQ,SAAS;AACjB,YAAQ,gBAAgB;AAAA;AAAA;;;AC1BxB;AAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,SAAS;AAEb,QAAM,mBAAmB;AACzB,aAAS,cAAc,OAAO,SAAS,MAAM;AACzC,UAAI,SAAS;AACT,cAAM,QAAQ,KAAK,OAAO,OAAK,EAAE,QAAQ,OAAO;AAChD,cAAM,SAAS,MAAM,KAAK,OAAK,CAAC,EAAE,MAAM,KAAK,MAAM;AACnD,YAAI,CAAC;AACD,gBAAM,IAAI,MAAM,OAAO,mBAAmB;AAC9C,eAAO;AAAA,MACX;AACA,aAAO,KAAK,KAAK,OAAE;AAfvB;AAe0B,wBAAE,aAAF,2BAAa,WAAU,CAAC,EAAE;AAAA,OAAM;AAAA,IAC1D;AACA,aAAS,WAAW,OAAO,SAAS,KAAK;AAjBzC;AAkBI,UAAI,SAAS,WAAW,KAAK;AACzB,gBAAQ,MAAM;AAClB,UAAI,SAAS,OAAO,KAAK;AACrB,eAAO;AACX,UAAI,SAAS,OAAO,KAAK,GAAG;AACxB,cAAM,OAAM,eAAI,OAAO,SAAS,MAAK,eAAzB,4BAAsC,IAAI,QAAQ,MAAM;AACpE,YAAI,MAAM,KAAK,KAAK;AACpB,eAAO;AAAA,MACX;AACA,UAAI,iBAAiB,UACjB,iBAAiB,UACjB,iBAAiB,WAChB,OAAO,WAAW,eAAe,iBAAiB,QACrD;AAEE,gBAAQ,MAAM,QAAQ;AAAA,MAC1B;AACA,YAAM,EAAE,uBAAuB,UAAU,UAAU,QAAQ,cAAc,IAAI;AAG7E,UAAI,MAAM;AACV,UAAI,yBAAyB,SAAS,OAAO,UAAU,UAAU;AAC7D,cAAM,cAAc,IAAI,KAAK;AAC7B,YAAI,KAAK;AACL,cAAI,CAAC,IAAI;AACL,gBAAI,SAAS,SAAS,KAAK;AAC/B,iBAAO,IAAI,MAAM,MAAM,IAAI,MAAM;AAAA,QACrC,OACK;AACD,gBAAM,EAAE,QAAQ,MAAM,MAAM,KAAK;AACjC,wBAAc,IAAI,OAAO,GAAG;AAAA,QAChC;AAAA,MACJ;AACA,UAAI,mCAAS,WAAW;AACpB,kBAAU,mBAAmB,QAAQ,MAAM,CAAC;AAChD,UAAI,SAAS,cAAc,OAAO,SAAS,OAAO,IAAI;AACtD,UAAI,CAAC,QAAQ;AACT,YAAI,SAAS,OAAO,MAAM,WAAW,YAAY;AAE7C,kBAAQ,MAAM,OAAO;AAAA,QACzB;AACA,YAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACrC,gBAAMC,QAAO,IAAI,OAAO,OAAO,KAAK;AACpC,cAAI;AACA,gBAAI,OAAOA;AACf,iBAAOA;AAAA,QACX;AACA,iBACI,iBAAiB,MACX,OAAO,SAAS,OAChB,OAAO,YAAY,OAAO,KAAK,IAC3B,OAAO,SAAS,OAChB,OAAO,SAAS;AAAA,MAClC;AACA,UAAI,UAAU;AACV,iBAAS,MAAM;AACf,eAAO,IAAI;AAAA,MACf;AACA,YAAM,QAAO,iCAAQ,cACf,OAAO,WAAW,IAAI,QAAQ,OAAO,GAAG,IACxC,SAAO,sCAAQ,cAAR,mBAAmB,UAAS,aAC/B,OAAO,UAAU,KAAK,IAAI,QAAQ,OAAO,GAAG,IAC5C,IAAI,OAAO,OAAO,KAAK;AACjC,UAAI;AACA,aAAK,MAAM;AAAA,eACN,CAAC,OAAO;AACb,aAAK,MAAM,OAAO;AACtB,UAAI;AACA,YAAI,OAAO;AACf,aAAO;AAAA,IACX;AAEA,YAAQ,aAAa;AAAA;AAAA;;;AC1FrB;AAAA;AAAA;AAEA,QAAI,aAAa;AACjB,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,aAAS,mBAAmB,QAAQC,OAAM,OAAO;AAC7C,UAAI,IAAI;AACR,eAAS,IAAIA,MAAK,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AACvC,cAAM,IAAIA,MAAK;AACf,YAAI,OAAO,MAAM,YAAY,OAAO,UAAU,CAAC,KAAK,KAAK,GAAG;AACxD,gBAAM,IAAI,CAAC;AACX,YAAE,KAAK;AACP,cAAI;AAAA,QACR,OACK;AACD,cAAI,oBAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,QACxB;AAAA,MACJ;AACA,aAAO,WAAW,WAAW,GAAG,QAAW;AAAA,QACvC,uBAAuB;AAAA,QACvB,eAAe;AAAA,QACf,UAAU,MAAM;AACZ,gBAAM,IAAI,MAAM,8CAA8C;AAAA,QAClE;AAAA,QACA;AAAA,QACA,eAAe,oBAAI,IAAI;AAAA,MAC3B,CAAC;AAAA,IACL;AAGA,QAAM,cAAc,CAACA,UAASA,SAAQ,QACjC,OAAOA,UAAS,YAAY,CAAC,CAACA,MAAK,OAAO,UAAU,EAAE,KAAK,EAAE;AAClE,QAAMC,cAAN,cAAyB,KAAK,SAAS;AAAA,MACnC,YAAY,MAAM,QAAQ;AACtB,cAAM,IAAI;AACV,eAAO,eAAe,MAAM,UAAU;AAAA,UAClC,OAAO;AAAA,UACP,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,UAAU;AAAA,QACd,CAAC;AAAA,MACL;AAAA,MAMA,MAAM,QAAQ;AACV,cAAM,OAAO,OAAO,OAAO,OAAO,eAAe,IAAI,GAAG,OAAO,0BAA0B,IAAI,CAAC;AAC9F,YAAI;AACA,eAAK,SAAS;AAClB,aAAK,QAAQ,KAAK,MAAM,IAAI,QAAM,SAAS,OAAO,EAAE,KAAK,SAAS,OAAO,EAAE,IAAI,GAAG,MAAM,MAAM,IAAI,EAAE;AACpG,YAAI,KAAK;AACL,eAAK,QAAQ,KAAK,MAAM,MAAM;AAClC,eAAO;AAAA,MACX;AAAA,MAMA,MAAMD,OAAM,OAAO;AACf,YAAI,YAAYA,KAAI;AAChB,eAAK,IAAI,KAAK;AAAA,aACb;AACD,gBAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,gBAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,cAAI,SAAS,aAAa,IAAI;AAC1B,iBAAK,MAAM,MAAM,KAAK;AAAA,mBACjB,SAAS,UAAa,KAAK;AAChC,iBAAK,IAAI,KAAK,mBAAmB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA;AAE1D,kBAAM,IAAI,MAAM,+BAA+B,wBAAwB,MAAM;AAAA,QACrF;AAAA,MACJ;AAAA,MAKA,SAASA,OAAM;AACX,cAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,YAAI,KAAK,WAAW;AAChB,iBAAO,KAAK,OAAO,GAAG;AAC1B,cAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,YAAI,SAAS,aAAa,IAAI;AAC1B,iBAAO,KAAK,SAAS,IAAI;AAAA;AAEzB,gBAAM,IAAI,MAAM,+BAA+B,wBAAwB,MAAM;AAAA,MACrF;AAAA,MAMA,MAAMA,OAAM,YAAY;AACpB,cAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,cAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,YAAI,KAAK,WAAW;AAChB,iBAAO,CAAC,cAAc,SAAS,SAAS,IAAI,IAAI,KAAK,QAAQ;AAAA;AAE7D,iBAAO,SAAS,aAAa,IAAI,IAAI,KAAK,MAAM,MAAM,UAAU,IAAI;AAAA,MAC5E;AAAA,MACA,iBAAiB,aAAa;AAC1B,eAAO,KAAK,MAAM,MAAM,UAAQ;AAC5B,cAAI,CAAC,SAAS,OAAO,IAAI;AACrB,mBAAO;AACX,gBAAM,IAAI,KAAK;AACf,iBAAQ,KAAK,QACR,eACG,SAAS,SAAS,CAAC,KACnB,EAAE,SAAS,QACX,CAAC,EAAE,iBACH,CAAC,EAAE,WACH,CAAC,EAAE;AAAA,QACf,CAAC;AAAA,MACL;AAAA,MAIA,MAAMA,OAAM;AACR,cAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,YAAI,KAAK,WAAW;AAChB,iBAAO,KAAK,IAAI,GAAG;AACvB,cAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,eAAO,SAAS,aAAa,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI;AAAA,MAC5D;AAAA,MAKA,MAAMA,OAAM,OAAO;AACf,cAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,YAAI,KAAK,WAAW,GAAG;AACnB,eAAK,IAAI,KAAK,KAAK;AAAA,QACvB,OACK;AACD,gBAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,cAAI,SAAS,aAAa,IAAI;AAC1B,iBAAK,MAAM,MAAM,KAAK;AAAA,mBACjB,SAAS,UAAa,KAAK;AAChC,iBAAK,IAAI,KAAK,mBAAmB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA;AAE1D,kBAAM,IAAI,MAAM,+BAA+B,wBAAwB,MAAM;AAAA,QACrF;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,aAAaC;AACrB,YAAQ,qBAAqB;AAC7B,YAAQ,cAAc;AAAA;AAAA;;;ACtJtB;AAAA;AAAA;AASA,QAAM,mBAAmB,CAAC,QAAQ,IAAI,QAAQ,mBAAmB,GAAG;AACpE,aAAS,cAAc,SAAS,QAAQ;AACpC,UAAI,QAAQ,KAAK,OAAO;AACpB,eAAO,QAAQ,UAAU,CAAC;AAC9B,aAAO,SAAS,QAAQ,QAAQ,cAAc,MAAM,IAAI;AAAA,IAC5D;AACA,QAAM,cAAc,CAAC,KAAK,QAAQ,YAAY,IAAI,SAAS,IAAI,IACzD,cAAc,SAAS,MAAM,IAC7B,QAAQ,SAAS,IAAI,IACjB,OAAO,cAAc,SAAS,MAAM,KACnC,IAAI,SAAS,GAAG,IAAI,KAAK,OAAO;AAE3C,YAAQ,gBAAgB;AACxB,YAAQ,cAAc;AACtB,YAAQ,mBAAmB;AAAA;AAAA;;;ACvB3B;AAAA;AAAA;AAEA,QAAM,YAAY;AAClB,QAAM,aAAa;AACnB,QAAM,cAAc;AAMpB,aAAS,cAAc,MAAM,QAAQ,OAAO,QAAQ,EAAE,eAAe,YAAY,IAAI,kBAAkB,IAAI,QAAQ,WAAW,IAAI,CAAC,GAAG;AAClI,UAAI,CAAC,aAAa,YAAY;AAC1B,eAAO;AACX,UAAI,YAAY;AACZ,0BAAkB;AACtB,YAAM,UAAU,KAAK,IAAI,IAAI,iBAAiB,IAAI,YAAY,OAAO,MAAM;AAC3E,UAAI,KAAK,UAAU;AACf,eAAO;AACX,YAAM,QAAQ,CAAC;AACf,YAAM,eAAe,CAAC;AACtB,UAAI,MAAM,YAAY,OAAO;AAC7B,UAAI,OAAO,kBAAkB,UAAU;AACnC,YAAI,gBAAgB,YAAY,KAAK,IAAI,GAAG,eAAe;AACvD,gBAAM,KAAK,CAAC;AAAA;AAEZ,gBAAM,YAAY;AAAA,MAC1B;AACA,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,UAAI,WAAW;AACf,UAAI,IAAI;AACR,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS,YAAY;AACrB,YAAI,yBAAyB,MAAM,GAAG,OAAO,MAAM;AACnD,YAAI,MAAM;AACN,gBAAM,IAAI;AAAA,MAClB;AACA,eAAS,IAAK,KAAK,KAAM,KAAK,MAAO;AACjC,YAAI,SAAS,eAAe,OAAO,MAAM;AACrC,qBAAW;AACX,kBAAQ,KAAK,IAAI,IAAI;AAAA,YACjB,KAAK;AACD,mBAAK;AACL;AAAA,YACJ,KAAK;AACD,mBAAK;AACL;AAAA,YACJ,KAAK;AACD,mBAAK;AACL;AAAA,YACJ;AACI,mBAAK;AAAA,UACb;AACA,mBAAS;AAAA,QACb;AACA,YAAI,OAAO,MAAM;AACb,cAAI,SAAS;AACT,gBAAI,yBAAyB,MAAM,GAAG,OAAO,MAAM;AACvD,gBAAM,IAAI,OAAO,SAAS;AAC1B,kBAAQ;AAAA,QACZ,OACK;AACD,cAAI,OAAO,OACP,QACA,SAAS,OACT,SAAS,QACT,SAAS,KAAM;AAEf,kBAAM,OAAO,KAAK,IAAI;AACtB,gBAAI,QAAQ,SAAS,OAAO,SAAS,QAAQ,SAAS;AAClD,sBAAQ;AAAA,UAChB;AACA,cAAI,KAAK,KAAK;AACV,gBAAI,OAAO;AACP,oBAAM,KAAK,KAAK;AAChB,oBAAM,QAAQ;AACd,sBAAQ;AAAA,YACZ,WACS,SAAS,aAAa;AAE3B,qBAAO,SAAS,OAAO,SAAS,KAAM;AAClC,uBAAO;AACP,qBAAK,KAAM,KAAK;AAChB,2BAAW;AAAA,cACf;AAEA,oBAAM,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,WAAW;AAE9C,kBAAI,aAAa;AACb,uBAAO;AACX,oBAAM,KAAK,CAAC;AACZ,2BAAa,KAAK;AAClB,oBAAM,IAAI;AACV,sBAAQ;AAAA,YACZ,OACK;AACD,yBAAW;AAAA,YACf;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AACA,UAAI,YAAY;AACZ,mBAAW;AACf,UAAI,MAAM,WAAW;AACjB,eAAO;AACX,UAAI;AACA,eAAO;AACX,UAAI,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE;AAChC,eAASC,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACnC,cAAM,OAAO,MAAMA;AACnB,cAAMC,OAAM,MAAMD,KAAI,MAAM,KAAK;AACjC,YAAI,SAAS;AACT,gBAAM;AAAA,EAAK,SAAS,KAAK,MAAM,GAAGC,IAAG;AAAA,aACpC;AACD,cAAI,SAAS,eAAe,aAAa;AACrC,mBAAO,GAAG,KAAK;AACnB,iBAAO;AAAA,EAAK,SAAS,KAAK,MAAM,OAAO,GAAGA,IAAG;AAAA,QACjD;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAKA,aAAS,yBAAyB,MAAM,GAAG,QAAQ;AAC/C,UAAI,MAAM;AACV,UAAI,QAAQ,IAAI;AAChB,UAAI,KAAK,KAAK;AACd,aAAO,OAAO,OAAO,OAAO,KAAM;AAC9B,YAAI,IAAI,QAAQ,QAAQ;AACpB,eAAK,KAAK,EAAE;AAAA,QAChB,OACK;AACD,aAAG;AACC,iBAAK,KAAK,EAAE;AAAA,UAChB,SAAS,MAAM,OAAO;AACtB,gBAAM;AACN,kBAAQ,IAAI;AACZ,eAAK,KAAK;AAAA,QACd;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,aAAa;AACrB,YAAQ,YAAY;AACpB,YAAQ,cAAc;AACtB,YAAQ,gBAAgB;AAAA;AAAA;;;ACtJxB;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,gBAAgB;AAEpB,QAAM,iBAAiB,CAAC,KAAK,aAAa;AAAA,MACtC,eAAe,UAAU,IAAI,OAAO,SAAS,IAAI;AAAA,MACjD,WAAW,IAAI,QAAQ;AAAA,MACvB,iBAAiB,IAAI,QAAQ;AAAA,IACjC;AAGA,QAAM,yBAAyB,CAAC,QAAQ,mBAAmB,KAAK,GAAG;AACnE,aAAS,oBAAoB,KAAK,WAAW,cAAc;AACvD,UAAI,CAAC,aAAa,YAAY;AAC1B,eAAO;AACX,YAAM,QAAQ,YAAY;AAC1B,YAAM,SAAS,IAAI;AACnB,UAAI,UAAU;AACV,eAAO;AACX,eAAS,IAAI,GAAG,QAAQ,GAAG,IAAI,QAAQ,EAAE,GAAG;AACxC,YAAI,IAAI,OAAO,MAAM;AACjB,cAAI,IAAI,QAAQ;AACZ,mBAAO;AACX,kBAAQ,IAAI;AACZ,cAAI,SAAS,SAAS;AAClB,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,mBAAmB,OAAO,KAAK;AACpC,YAAM,OAAO,KAAK,UAAU,KAAK;AACjC,UAAI,IAAI,QAAQ;AACZ,eAAO;AACX,YAAM,EAAE,YAAY,IAAI;AACxB,YAAM,qBAAqB,IAAI,QAAQ;AACvC,YAAM,SAAS,IAAI,WAAW,uBAAuB,KAAK,IAAI,OAAO;AACrE,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,eAAS,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI;AAC9C,YAAI,OAAO,OAAO,KAAK,IAAI,OAAO,QAAQ,KAAK,IAAI,OAAO,KAAK;AAE3D,iBAAO,KAAK,MAAM,OAAO,CAAC,IAAI;AAC9B,eAAK;AACL,kBAAQ;AACR,eAAK;AAAA,QACT;AACA,YAAI,OAAO;AACP,kBAAQ,KAAK,IAAI,IAAI;AAAA,YACjB,KAAK;AACD;AACI,uBAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,sBAAM,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC;AACjC,wBAAQ,MAAM;AAAA,kBACV,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ;AACI,wBAAI,KAAK,OAAO,GAAG,CAAC,MAAM;AACtB,6BAAO,QAAQ,KAAK,OAAO,CAAC;AAAA;AAE5B,6BAAO,KAAK,OAAO,GAAG,CAAC;AAAA,gBACnC;AACA,qBAAK;AACL,wBAAQ,IAAI;AAAA,cAChB;AACA;AAAA,YACJ,KAAK;AACD,kBAAI,eACA,KAAK,IAAI,OAAO,OAChB,KAAK,SAAS,oBAAoB;AAClC,qBAAK;AAAA,cACT,OACK;AAED,uBAAO,KAAK,MAAM,OAAO,CAAC,IAAI;AAC9B,uBAAO,KAAK,IAAI,OAAO,QACnB,KAAK,IAAI,OAAO,OAChB,KAAK,IAAI,OAAO,KAAK;AACrB,yBAAO;AACP,uBAAK;AAAA,gBACT;AACA,uBAAO;AAEP,oBAAI,KAAK,IAAI,OAAO;AAChB,yBAAO;AACX,qBAAK;AACL,wBAAQ,IAAI;AAAA,cAChB;AACA;AAAA,YACJ;AACI,mBAAK;AAAA,UACb;AAAA,MACR;AACA,YAAM,QAAQ,MAAM,KAAK,MAAM,KAAK,IAAI;AACxC,aAAO,cACD,MACA,cAAc,cAAc,KAAK,QAAQ,cAAc,aAAa,eAAe,KAAK,KAAK,CAAC;AAAA,IACxG;AACA,aAAS,mBAAmB,OAAO,KAAK;AACpC,UAAI,IAAI,QAAQ,gBAAgB,SAC3B,IAAI,eAAe,MAAM,SAAS,IAAI,KACvC,kBAAkB,KAAK,KAAK;AAE5B,eAAO,mBAAmB,OAAO,GAAG;AACxC,YAAM,SAAS,IAAI,WAAW,uBAAuB,KAAK,IAAI,OAAO;AACrE,YAAM,MAAM,MAAM,MAAM,QAAQ,MAAM,IAAI,EAAE,QAAQ,QAAQ;AAAA,EAAO,QAAQ,IAAI;AAC/E,aAAO,IAAI,cACL,MACA,cAAc,cAAc,KAAK,QAAQ,cAAc,WAAW,eAAe,KAAK,KAAK,CAAC;AAAA,IACtG;AACA,aAAS,aAAa,OAAO,KAAK;AAC9B,YAAM,EAAE,YAAY,IAAI,IAAI;AAC5B,UAAI;AACJ,UAAI,gBAAgB;AAChB,aAAK;AAAA,WACJ;AACD,cAAM,YAAY,MAAM,SAAS,GAAG;AACpC,cAAM,YAAY,MAAM,SAAS,GAAG;AACpC,YAAI,aAAa,CAAC;AACd,eAAK;AAAA,iBACA,aAAa,CAAC;AACnB,eAAK;AAAA;AAEL,eAAK,cAAc,qBAAqB;AAAA,MAChD;AACA,aAAO,GAAG,OAAO,GAAG;AAAA,IACxB;AAGA,QAAI;AACJ,QAAI;AACA,yBAAmB,IAAI,OAAO,0BAA0B,GAAG;AAAA,IAC/D,QACA;AACI,yBAAmB;AAAA,IACvB;AACA,aAAS,YAAY,EAAE,SAAS,MAAM,MAAM,GAAG,KAAK,WAAW,aAAa;AACxE,YAAM,EAAE,YAAY,eAAe,UAAU,IAAI,IAAI;AAGrD,UAAI,CAAC,cAAc,YAAY,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,GAAG;AAC/D,eAAO,aAAa,OAAO,GAAG;AAAA,MAClC;AACA,YAAM,SAAS,IAAI,WACd,IAAI,oBAAoB,uBAAuB,KAAK,IAAI,OAAO;AACpE,YAAM,UAAU,eAAe,YACzB,OACA,eAAe,YAAY,SAAS,OAAO,OAAO,eAC9C,QACA,SAAS,OAAO,OAAO,gBACnB,OACA,CAAC,oBAAoB,OAAO,WAAW,OAAO,MAAM;AAClE,UAAI,CAAC;AACD,eAAO,UAAU,QAAQ;AAE7B,UAAI;AACJ,UAAI;AACJ,WAAK,WAAW,MAAM,QAAQ,WAAW,GAAG,EAAE,UAAU;AACpD,cAAM,KAAK,MAAM,WAAW;AAC5B,YAAI,OAAO,QAAQ,OAAO,OAAQ,OAAO;AACrC;AAAA,MACR;AACA,UAAI,MAAM,MAAM,UAAU,QAAQ;AAClC,YAAM,WAAW,IAAI,QAAQ,IAAI;AACjC,UAAI,aAAa,IAAI;AACjB,gBAAQ;AAAA,MACZ,WACS,UAAU,OAAO,aAAa,IAAI,SAAS,GAAG;AACnD,gBAAQ;AACR,YAAI;AACA,sBAAY;AAAA,MACpB,OACK;AACD,gBAAQ;AAAA,MACZ;AACA,UAAI,KAAK;AACL,gBAAQ,MAAM,MAAM,GAAG,CAAC,IAAI,MAAM;AAClC,YAAI,IAAI,IAAI,SAAS,OAAO;AACxB,gBAAM,IAAI,MAAM,GAAG,EAAE;AACzB,cAAM,IAAI,QAAQ,kBAAkB,KAAK,QAAQ;AAAA,MACrD;AAEA,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa;AACjB,WAAK,WAAW,GAAG,WAAW,MAAM,QAAQ,EAAE,UAAU;AACpD,cAAM,KAAK,MAAM;AACjB,YAAI,OAAO;AACP,2BAAiB;AAAA,iBACZ,OAAO;AACZ,uBAAa;AAAA;AAEb;AAAA,MACR;AACA,UAAI,QAAQ,MAAM,UAAU,GAAG,aAAa,WAAW,aAAa,IAAI,QAAQ;AAChF,UAAI,OAAO;AACP,gBAAQ,MAAM,UAAU,MAAM,MAAM;AACpC,gBAAQ,MAAM,QAAQ,QAAQ,KAAK,QAAQ;AAAA,MAC/C;AACA,YAAM,aAAa,SAAS,MAAM;AAElC,UAAI,UAAU,iBAAiB,aAAa,MAAM;AAClD,UAAI,SAAS;AACT,kBAAU,MAAM,cAAc,QAAQ,QAAQ,cAAc,GAAG,CAAC;AAChE,YAAI;AACA,oBAAU;AAAA,MAClB;AACA,UAAI,CAAC,SAAS;AACV,cAAM,cAAc,MACf,QAAQ,QAAQ,MAAM,EACtB,QAAQ,kDAAkD,MAAM,EAEhE,QAAQ,QAAQ,KAAK,QAAQ;AAClC,YAAI,kBAAkB;AACtB,cAAM,cAAc,eAAe,KAAK,IAAI;AAC5C,YAAI,eAAe,YAAY,SAAS,OAAO,OAAO,cAAc;AAChE,sBAAY,aAAa,MAAM;AAC3B,8BAAkB;AAAA,UACtB;AAAA,QACJ;AACA,cAAM,OAAO,cAAc,cAAc,GAAG,QAAQ,cAAc,OAAO,QAAQ,cAAc,YAAY,WAAW;AACtH,YAAI,CAAC;AACD,iBAAO,IAAI;AAAA,EAAW,SAAS;AAAA,MACvC;AACA,cAAQ,MAAM,QAAQ,QAAQ,KAAK,QAAQ;AAC3C,aAAO,IAAI;AAAA,EAAW,SAAS,QAAQ,QAAQ;AAAA,IACnD;AACA,aAAS,YAAY,MAAM,KAAK,WAAW,aAAa;AACpD,YAAM,EAAE,MAAM,MAAM,IAAI;AACxB,YAAM,EAAE,cAAc,aAAa,QAAQ,YAAY,OAAO,IAAI;AAClE,UAAK,eAAe,MAAM,SAAS,IAAI,KAClC,UAAU,WAAW,KAAK,KAAK,GAAI;AACpC,eAAO,aAAa,OAAO,GAAG;AAAA,MAClC;AACA,UAAI,CAAC,SACD,oFAAoF,KAAK,KAAK,GAAG;AAOjG,eAAO,eAAe,UAAU,CAAC,MAAM,SAAS,IAAI,IAC9C,aAAa,OAAO,GAAG,IACvB,YAAY,MAAM,KAAK,WAAW,WAAW;AAAA,MACvD;AACA,UAAI,CAAC,eACD,CAAC,UACD,SAAS,OAAO,OAAO,SACvB,MAAM,SAAS,IAAI,GAAG;AAEtB,eAAO,YAAY,MAAM,KAAK,WAAW,WAAW;AAAA,MACxD;AACA,UAAI,uBAAuB,KAAK,GAAG;AAC/B,YAAI,WAAW,IAAI;AACf,cAAI,mBAAmB;AACvB,iBAAO,YAAY,MAAM,KAAK,WAAW,WAAW;AAAA,QACxD,WACS,eAAe,WAAW,YAAY;AAC3C,iBAAO,aAAa,OAAO,GAAG;AAAA,QAClC;AAAA,MACJ;AACA,YAAM,MAAM,MAAM,QAAQ,QAAQ;AAAA,EAAO,QAAQ;AAIjD,UAAI,cAAc;AACd,cAAM,OAAO,CAAC,QAAK;AAlS3B;AAkS8B,qBAAI,WAAW,IAAI,QAAQ,6BAA2B,SAAI,SAAJ,mBAAU,KAAK;AAAA;AAC3F,cAAM,EAAE,QAAQ,KAAK,IAAI,IAAI,IAAI;AACjC,YAAI,KAAK,KAAK,IAAI,MAAK,iCAAQ,KAAK;AAChC,iBAAO,aAAa,OAAO,GAAG;AAAA,MACtC;AACA,aAAO,cACD,MACA,cAAc,cAAc,KAAK,QAAQ,cAAc,WAAW,eAAe,KAAK,KAAK,CAAC;AAAA,IACtG;AACA,aAAS,gBAAgB,MAAM,KAAK,WAAW,aAAa;AACxD,YAAM,EAAE,aAAa,OAAO,IAAI;AAChC,YAAM,KAAK,OAAO,KAAK,UAAU,WAC3B,OACA,OAAO,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,OAAO,KAAK,KAAK,EAAE,CAAC;AAC3D,UAAI,EAAE,KAAK,IAAI;AACf,UAAI,SAAS,OAAO,OAAO,cAAc;AAErC,YAAI,kDAAkD,KAAK,GAAG,KAAK;AAC/D,iBAAO,OAAO,OAAO;AAAA,MAC7B;AACA,YAAM,aAAa,CAAC,UAAU;AAC1B,gBAAQ,OAAO;AAAA,UACX,KAAK,OAAO,OAAO;AAAA,UACnB,KAAK,OAAO,OAAO;AACf,mBAAO,eAAe,SAChB,aAAa,GAAG,OAAO,GAAG,IAC1B,YAAY,IAAI,KAAK,WAAW,WAAW;AAAA,UACrD,KAAK,OAAO,OAAO;AACf,mBAAO,mBAAmB,GAAG,OAAO,GAAG;AAAA,UAC3C,KAAK,OAAO,OAAO;AACf,mBAAO,mBAAmB,GAAG,OAAO,GAAG;AAAA,UAC3C,KAAK,OAAO,OAAO;AACf,mBAAO,YAAY,IAAI,KAAK,WAAW,WAAW;AAAA,UACtD;AACI,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,UAAI,MAAM,WAAW,IAAI;AACzB,UAAI,QAAQ,MAAM;AACd,cAAM,EAAE,gBAAgB,kBAAkB,IAAI,IAAI;AAClD,cAAM,IAAK,eAAe,kBAAmB;AAC7C,cAAM,WAAW,CAAC;AAClB,YAAI,QAAQ;AACR,gBAAM,IAAI,MAAM,mCAAmC,GAAG;AAAA,MAC9D;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;AClV1B;AAAA;AAAA;AAEA,QAAI,UAAU;AACd,QAAI,WAAW;AACf,QAAI,mBAAmB;AACvB,QAAI,kBAAkB;AAEtB,aAAS,uBAAuB,KAAK,SAAS;AAC1C,YAAM,MAAM,OAAO,OAAO;AAAA,QACtB,YAAY;AAAA,QACZ,eAAe,iBAAiB;AAAA,QAChC,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,YAAY;AAAA,QACZ,oBAAoB;AAAA,QACpB,gCAAgC;AAAA,QAChC,UAAU;AAAA,QACV,uBAAuB;AAAA,QACvB,WAAW;AAAA,QACX,WAAW;AAAA,QACX,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,SAAS;AAAA,QACT,kBAAkB;AAAA,MACtB,GAAG,IAAI,OAAO,iBAAiB,OAAO;AACtC,UAAI;AACJ,cAAQ,IAAI,iBAAiB;AAAA,QACzB,KAAK;AACD,mBAAS;AACT;AAAA,QACJ,KAAK;AACD,mBAAS;AACT;AAAA,QACJ;AACI,mBAAS;AAAA,MACjB;AACA,aAAO;AAAA,QACH,SAAS,oBAAI,IAAI;AAAA,QACjB;AAAA,QACA,uBAAuB,IAAI,wBAAwB,MAAM;AAAA,QACzD,QAAQ;AAAA,QACR,YAAY,OAAO,IAAI,WAAW,WAAW,IAAI,OAAO,IAAI,MAAM,IAAI;AAAA,QACtE;AAAA,QACA,SAAS;AAAA,MACb;AAAA,IACJ;AACA,aAAS,aAAa,MAAM,MAAM;AAhDlC;AAiDI,UAAI,KAAK,KAAK;AACV,cAAM,QAAQ,KAAK,OAAO,OAAK,EAAE,QAAQ,KAAK,GAAG;AACjD,YAAI,MAAM,SAAS;AACf,iBAAO,MAAM,KAAK,OAAK,EAAE,WAAW,KAAK,MAAM,KAAK,MAAM;AAAA,MAClE;AACA,UAAI,SAAS;AACb,UAAI;AACJ,UAAI,SAAS,SAAS,IAAI,GAAG;AACzB,cAAM,KAAK;AACX,YAAI,QAAQ,KAAK,OAAO,OAAE;AA1DlC,cAAAC;AA0DqC,kBAAAA,MAAA,EAAE,aAAF,gBAAAA,IAAA,QAAa;AAAA,SAAI;AAC9C,YAAI,MAAM,SAAS,GAAG;AAClB,gBAAM,YAAY,MAAM,OAAO,OAAK,EAAE,IAAI;AAC1C,cAAI,UAAU,SAAS;AACnB,oBAAQ;AAAA,QAChB;AACA,iBACI,MAAM,KAAK,OAAK,EAAE,WAAW,KAAK,MAAM,KAAK,MAAM,KAAK,OAAK,CAAC,EAAE,MAAM;AAAA,MAC9E,OACK;AACD,cAAM;AACN,iBAAS,KAAK,KAAK,OAAK,EAAE,aAAa,eAAe,EAAE,SAAS;AAAA,MACrE;AACA,UAAI,CAAC,QAAQ;AACT,cAAM,SAAO,gCAAK,gBAAL,mBAAkB,SAAQ,OAAO;AAC9C,cAAM,IAAI,MAAM,wBAAwB,YAAY;AAAA,MACxD;AACA,aAAO;AAAA,IACX;AAEA,aAAS,eAAe,MAAM,QAAQ,EAAE,SAAS,WAAW,IAAI,GAAG;AAC/D,UAAI,CAAC,IAAI;AACL,eAAO;AACX,YAAM,QAAQ,CAAC;AACf,YAAM,UAAU,SAAS,SAAS,IAAI,KAAK,SAAS,aAAa,IAAI,MAAM,KAAK;AAChF,UAAI,UAAU,QAAQ,cAAc,MAAM,GAAG;AACzC,kBAAU,IAAI,MAAM;AACpB,cAAM,KAAK,IAAI,QAAQ;AAAA,MAC3B;AACA,YAAM,MAAM,KAAK,MAAM,KAAK,MAAM,OAAO,UAAU,OAAO,OAAO;AACjE,UAAI;AACA,cAAM,KAAK,IAAI,WAAW,UAAU,GAAG,CAAC;AAC5C,aAAO,MAAM,KAAK,GAAG;AAAA,IACzB;AACA,aAAS,UAAU,MAAM,KAAK,WAAW,aAAa;AA5FtD;AA6FI,UAAI,SAAS,OAAO,IAAI;AACpB,eAAO,KAAK,SAAS,KAAK,WAAW,WAAW;AACpD,UAAI,SAAS,QAAQ,IAAI,GAAG;AACxB,YAAI,IAAI,IAAI;AACR,iBAAO,KAAK,SAAS,GAAG;AAC5B,aAAI,SAAI,oBAAJ,mBAAqB,IAAI,OAAO;AAChC,gBAAM,IAAI,UAAU,yDAAyD;AAAA,QACjF,OACK;AACD,cAAI,IAAI;AACJ,gBAAI,gBAAgB,IAAI,IAAI;AAAA;AAE5B,gBAAI,kBAAkB,oBAAI,IAAI,CAAC,IAAI,CAAC;AACxC,iBAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,QAC/B;AAAA,MACJ;AACA,UAAI,SAAS;AACb,YAAM,OAAO,SAAS,OAAO,IAAI,IAC3B,OACA,IAAI,IAAI,WAAW,MAAM,EAAE,UAAU,OAAM,SAAS,EAAG,CAAC;AAC9D,UAAI,CAAC;AACD,iBAAS,aAAa,IAAI,IAAI,OAAO,MAAM,IAAI;AACnD,YAAM,QAAQ,eAAe,MAAM,QAAQ,GAAG;AAC9C,UAAI,MAAM,SAAS;AACf,YAAI,iBAAiB,IAAI,iBAAiB,KAAK,MAAM,SAAS;AAClE,YAAM,MAAM,OAAO,OAAO,cAAc,aAClC,OAAO,UAAU,MAAM,KAAK,WAAW,WAAW,IAClD,SAAS,SAAS,IAAI,IAClB,gBAAgB,gBAAgB,MAAM,KAAK,WAAW,WAAW,IACjE,KAAK,SAAS,KAAK,WAAW,WAAW;AACnD,UAAI,CAAC;AACD,eAAO;AACX,aAAO,SAAS,SAAS,IAAI,KAAK,IAAI,OAAO,OAAO,IAAI,OAAO,MACzD,GAAG,SAAS,QACZ,GAAG;AAAA,EAAU,IAAI,SAAS;AAAA,IACpC;AAEA,YAAQ,yBAAyB;AACjC,YAAQ,YAAY;AAAA;AAAA;;;ACnIpB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,YAAY;AAChB,QAAI,mBAAmB;AAEvB,aAAS,cAAc,EAAE,KAAK,MAAM,GAAG,KAAK,WAAW,aAAa;AAChE,YAAM,EAAE,eAAe,KAAK,QAAQ,YAAY,SAAS,EAAE,eAAe,WAAW,WAAW,EAAE,IAAI;AACtG,UAAI,aAAc,SAAS,OAAO,GAAG,KAAK,IAAI,WAAY;AAC1D,UAAI,YAAY;AACZ,YAAI,YAAY;AACZ,gBAAM,IAAI,MAAM,kDAAkD;AAAA,QACtE;AACA,YAAI,SAAS,aAAa,GAAG,KAAM,CAAC,SAAS,OAAO,GAAG,KAAK,OAAO,QAAQ,UAAW;AAClF,gBAAM,MAAM;AACZ,gBAAM,IAAI,MAAM,GAAG;AAAA,QACvB;AAAA,MACJ;AACA,UAAI,cAAc,CAAC,eACd,CAAC,OACG,cAAc,SAAS,QAAQ,CAAC,IAAI,UACrC,SAAS,aAAa,GAAG,MACxB,SAAS,SAAS,GAAG,IAChB,IAAI,SAAS,OAAO,OAAO,gBAAgB,IAAI,SAAS,OAAO,OAAO,gBACtE,OAAO,QAAQ;AAC7B,YAAM,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,QACzB,eAAe;AAAA,QACf,aAAa,CAAC,gBAAgB,cAAc,CAAC;AAAA,QAC7C,QAAQ,SAAS;AAAA,MACrB,CAAC;AACD,UAAI,iBAAiB;AACrB,UAAI,YAAY;AAChB,UAAI,MAAM,UAAU,UAAU,KAAK,KAAK,MAAO,iBAAiB,MAAO,MAAO,YAAY,IAAK;AAC/F,UAAI,CAAC,eAAe,CAAC,IAAI,UAAU,IAAI,SAAS,MAAM;AAClD,YAAI;AACA,gBAAM,IAAI,MAAM,8EAA8E;AAClG,sBAAc;AAAA,MAClB;AACA,UAAI,IAAI,QAAQ;AACZ,YAAI,iBAAiB,SAAS,MAAM;AAChC,cAAI,kBAAkB;AAClB,sBAAU;AACd,iBAAO,QAAQ,KAAK,MAAM,cAAc,KAAK,QAAQ;AAAA,QACzD;AAAA,MACJ,WACU,iBAAiB,CAAC,cAAgB,SAAS,QAAQ,aAAc;AACvE,cAAM,KAAK;AACX,YAAI,cAAc,CAAC,gBAAgB;AAC/B,iBAAO,iBAAiB,YAAY,KAAK,IAAI,QAAQ,cAAc,UAAU,CAAC;AAAA,QAClF,WACS,aAAa;AAClB,sBAAY;AAChB,eAAO;AAAA,MACX;AACA,UAAI;AACA,qBAAa;AACjB,UAAI,aAAa;AACb,YAAI;AACA,iBAAO,iBAAiB,YAAY,KAAK,IAAI,QAAQ,cAAc,UAAU,CAAC;AAClF,cAAM,KAAK;AAAA,EAAQ;AAAA,MACvB,OACK;AACD,cAAM,GAAG;AACT,YAAI;AACA,iBAAO,iBAAiB,YAAY,KAAK,IAAI,QAAQ,cAAc,UAAU,CAAC;AAAA,MACtF;AACA,UAAI,KAAK,KAAK;AACd,UAAI,SAAS,OAAO,KAAK,GAAG;AACxB,cAAM,CAAC,CAAC,MAAM;AACd,cAAM,MAAM;AACZ,uBAAe,MAAM;AAAA,MACzB,OACK;AACD,cAAM;AACN,cAAM;AACN,uBAAe;AACf,YAAI,SAAS,OAAO,UAAU;AAC1B,kBAAQ,IAAI,WAAW,KAAK;AAAA,MACpC;AACA,UAAI,cAAc;AAClB,UAAI,CAAC,eAAe,CAAC,cAAc,SAAS,SAAS,KAAK;AACtD,YAAI,gBAAgB,IAAI,SAAS;AACrC,kBAAY;AACZ,UAAI,CAAC,aACD,WAAW,UAAU,KACrB,CAAC,IAAI,UACL,CAAC,eACD,SAAS,MAAM,KAAK,KACpB,CAAC,MAAM,QACP,CAAC,MAAM,OACP,CAAC,MAAM,QAAQ;AAEf,YAAI,SAAS,IAAI,OAAO,UAAU,CAAC;AAAA,MACvC;AACA,UAAI,mBAAmB;AACvB,YAAM,WAAW,UAAU,UAAU,OAAO,KAAK,MAAO,mBAAmB,MAAO,MAAO,YAAY,IAAK;AAC1G,UAAI,KAAK;AACT,UAAI,cAAc,OAAO,KAAK;AAC1B,aAAK,MAAM,OAAO;AAClB,YAAI,KAAK;AACL,gBAAM,KAAK,cAAc,GAAG;AAC5B,gBAAM;AAAA,EAAK,iBAAiB,cAAc,IAAI,IAAI,MAAM;AAAA,QAC5D;AACA,YAAI,aAAa,MAAM,CAAC,IAAI,QAAQ;AAChC,cAAI,OAAO;AACP,iBAAK;AAAA,QACb,OACK;AACD,gBAAM;AAAA,EAAK,IAAI;AAAA,QACnB;AAAA,MACJ,WACS,CAAC,eAAe,SAAS,aAAa,KAAK,GAAG;AACnD,cAAM,MAAM,SAAS;AACrB,cAAM,MAAM,SAAS,QAAQ,IAAI;AACjC,cAAM,aAAa,QAAQ;AAC3B,cAAM,OAAO,IAAI,UAAU,MAAM,QAAQ,MAAM,MAAM,WAAW;AAChE,YAAI,cAAc,CAAC,MAAM;AACrB,cAAI,eAAe;AACnB,cAAI,eAAe,QAAQ,OAAO,QAAQ,MAAM;AAC5C,gBAAI,MAAM,SAAS,QAAQ,GAAG;AAC9B,gBAAI,QAAQ,OACR,QAAQ,MACR,MAAM,OACN,SAAS,MAAM,OAAO,KAAK;AAC3B,oBAAM,SAAS,QAAQ,KAAK,MAAM,CAAC;AAAA,YACvC;AACA,gBAAI,QAAQ,MAAM,MAAM;AACpB,6BAAe;AAAA,UACvB;AACA,cAAI,CAAC;AACD,iBAAK;AAAA,EAAK,IAAI;AAAA,QACtB;AAAA,MACJ,WACS,aAAa,MAAM,SAAS,OAAO,MAAM;AAC9C,aAAK;AAAA,MACT;AACA,aAAO,KAAK;AACZ,UAAI,IAAI,QAAQ;AACZ,YAAI,oBAAoB;AACpB,oBAAU;AAAA,MAClB,WACS,gBAAgB,CAAC,kBAAkB;AACxC,eAAO,iBAAiB,YAAY,KAAK,IAAI,QAAQ,cAAc,YAAY,CAAC;AAAA,MACpF,WACS,aAAa,aAAa;AAC/B,oBAAY;AAAA,MAChB;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,gBAAgB;AAAA;AAAA;;;ACvJxB;AAAA;AAAA;AAEA,QAAI,eAAe,UAAQ;AAE3B,aAASC,OAAM,aAAa,UAAU;AAClC,UAAI,aAAa;AACb,gBAAQ,IAAI,GAAG,QAAQ;AAAA,IAC/B;AACA,aAAS,KAAK,UAAU,SAAS;AAC7B,UAAI,aAAa,WAAW,aAAa,QAAQ;AAC7C,YAAI,OAAO,aAAa,gBAAgB;AACpC,uBAAa,YAAY,OAAO;AAAA;AAEhC,kBAAQ,KAAK,OAAO;AAAA,MAC5B;AAAA,IACJ;AAEA,YAAQ,QAAQA;AAChB,YAAQ,OAAO;AAAA;AAAA;;;AClBf;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,SAAS;AASb,QAAM,YAAY;AAClB,QAAMC,SAAQ;AAAA,MACV,UAAU,WAAS,UAAU,aACxB,OAAO,UAAU,YAAY,MAAM,gBAAgB;AAAA,MACxD,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,OAAO,OAAO,IAAI,OAAO,OAAO,OAAO,SAAS,CAAC,GAAG;AAAA,QAC/D,YAAY;AAAA,MAChB,CAAC;AAAA,MACD,WAAW,MAAM;AAAA,IACrB;AACA,QAAM,aAAa,CAAC,KAAK,SAASA,OAAM,SAAS,GAAG,KAC/C,SAAS,SAAS,GAAG,MACjB,CAAC,IAAI,QAAQ,IAAI,SAAS,OAAO,OAAO,UACzCA,OAAM,SAAS,IAAI,KAAK,OAC5B,2BAAK,IAAI,OAAO,KAAK,KAAK,SAAO,IAAI,QAAQA,OAAM,OAAO,IAAI;AAClE,aAAS,gBAAgB,KAAK,KAAK,OAAO;AACtC,cAAQ,OAAO,SAAS,QAAQ,KAAK,IAAI,MAAM,QAAQ,IAAI,GAAG,IAAI;AAClE,UAAI,SAAS,MAAM,KAAK;AACpB,mBAAW,MAAM,MAAM;AACnB,qBAAW,KAAK,KAAK,EAAE;AAAA,eACtB,MAAM,QAAQ,KAAK;AACxB,mBAAW,MAAM;AACb,qBAAW,KAAK,KAAK,EAAE;AAAA;AAE3B,mBAAW,KAAK,KAAK,KAAK;AAAA,IAClC;AACA,aAAS,WAAW,KAAK,KAAK,OAAO;AACjC,YAAM,SAAS,OAAO,SAAS,QAAQ,KAAK,IAAI,MAAM,QAAQ,IAAI,GAAG,IAAI;AACzE,UAAI,CAAC,SAAS,MAAM,MAAM;AACtB,cAAM,IAAI,MAAM,2CAA2C;AAC/D,YAAM,SAAS,OAAO,OAAO,MAAM,KAAK,GAAG;AAC3C,iBAAW,CAAC,KAAKC,MAAK,KAAK,QAAQ;AAC/B,YAAI,eAAe,KAAK;AACpB,cAAI,CAAC,IAAI,IAAI,GAAG;AACZ,gBAAI,IAAI,KAAKA,MAAK;AAAA,QAC1B,WACS,eAAe,KAAK;AACzB,cAAI,IAAI,GAAG;AAAA,QACf,WACS,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AACtD,iBAAO,eAAe,KAAK,KAAK;AAAA,YAC5B,OAAAA;AAAA,YACA,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,cAAc;AAAA,UAClB,CAAC;AAAA,QACL;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAC1B,YAAQ,aAAa;AACrB,YAAQ,QAAQD;AAAA;AAAA;;;ACnEhB;AAAA;AAAA;AAEA,QAAI,MAAM;AACV,QAAIE,SAAQ;AACZ,QAAI,YAAY;AAChB,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,aAAS,eAAe,KAAK,KAAK,EAAE,KAAK,MAAM,GAAG;AAC9C,UAAI,SAAS,OAAO,GAAG,KAAK,IAAI;AAC5B,YAAI,WAAW,KAAK,KAAK,KAAK;AAAA,eAEzBA,OAAM,WAAW,KAAK,GAAG;AAC9B,QAAAA,OAAM,gBAAgB,KAAK,KAAK,KAAK;AAAA,WACpC;AACD,cAAM,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG;AACpC,YAAI,eAAe,KAAK;AACpB,cAAI,IAAI,OAAO,KAAK,KAAK,OAAO,OAAO,GAAG,CAAC;AAAA,QAC/C,WACS,eAAe,KAAK;AACzB,cAAI,IAAI,KAAK;AAAA,QACjB,OACK;AACD,gBAAM,YAAY,aAAa,KAAK,OAAO,GAAG;AAC9C,gBAAM,UAAU,KAAK,KAAK,OAAO,WAAW,GAAG;AAC/C,cAAI,aAAa;AACb,mBAAO,eAAe,KAAK,WAAW;AAAA,cAClC,OAAO;AAAA,cACP,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,cAAc;AAAA,YAClB,CAAC;AAAA;AAED,gBAAI,aAAa;AAAA,QACzB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,aAAa,KAAK,OAAO,KAAK;AACnC,UAAI,UAAU;AACV,eAAO;AACX,UAAI,OAAO,UAAU;AACjB,eAAO,OAAO,KAAK;AACvB,UAAI,SAAS,OAAO,GAAG,MAAK,2BAAK,MAAK;AAClC,cAAM,SAAS,UAAU,uBAAuB,IAAI,KAAK,CAAC,CAAC;AAC3D,eAAO,UAAU,oBAAI,IAAI;AACzB,mBAAW,QAAQ,IAAI,QAAQ,KAAK;AAChC,iBAAO,QAAQ,IAAI,KAAK,MAAM;AAClC,eAAO,SAAS;AAChB,eAAO,iBAAiB;AACxB,cAAM,SAAS,IAAI,SAAS,MAAM;AAClC,YAAI,CAAC,IAAI,cAAc;AACnB,cAAI,UAAU,KAAK,UAAU,MAAM;AACnC,cAAI,QAAQ,SAAS;AACjB,sBAAU,QAAQ,UAAU,GAAG,EAAE,IAAI;AACzC,cAAI,KAAK,IAAI,IAAI,QAAQ,UAAU,kFAAkF,iDAAiD;AACtK,cAAI,eAAe;AAAA,QACvB;AACA,eAAO;AAAA,MACX;AACA,aAAO,KAAK,UAAU,KAAK;AAAA,IAC/B;AAEA,YAAQ,iBAAiB;AAAA;AAAA;;;AC/DzB;AAAA;AAAA;AAEA,QAAI,aAAa;AACjB,QAAI,gBAAgB;AACpB,QAAI,iBAAiB;AACrB,QAAI,WAAW;AAEf,aAAS,WAAW,KAAK,OAAO,KAAK;AACjC,YAAM,IAAI,WAAW,WAAW,KAAK,QAAW,GAAG;AACnD,YAAM,IAAI,WAAW,WAAW,OAAO,QAAW,GAAG;AACrD,aAAO,IAAI,KAAK,GAAG,CAAC;AAAA,IACxB;AACA,QAAM,OAAN,MAAW;AAAA,MACP,YAAY,KAAK,QAAQ,MAAM;AAC3B,eAAO,eAAe,MAAM,SAAS,WAAW,EAAE,OAAO,SAAS,KAAK,CAAC;AACxE,aAAK,MAAM;AACX,aAAK,QAAQ;AAAA,MACjB;AAAA,MACA,MAAM,QAAQ;AACV,YAAI,EAAE,KAAK,MAAM,IAAI;AACrB,YAAI,SAAS,OAAO,GAAG;AACnB,gBAAM,IAAI,MAAM,MAAM;AAC1B,YAAI,SAAS,OAAO,KAAK;AACrB,kBAAQ,MAAM,MAAM,MAAM;AAC9B,eAAO,IAAI,KAAK,KAAK,KAAK;AAAA,MAC9B;AAAA,MACA,OAAO,GAAG,KAAK;AACX,cAAM,QAAO,2BAAK,YAAW,oBAAI,IAAI,IAAI,CAAC;AAC1C,eAAO,eAAe,eAAe,KAAK,MAAM,IAAI;AAAA,MACxD;AAAA,MACA,SAAS,KAAK,WAAW,aAAa;AAClC,gBAAO,2BAAK,OACN,cAAc,cAAc,MAAM,KAAK,WAAW,WAAW,IAC7D,KAAK,UAAU,IAAI;AAAA,MAC7B;AAAA,IACJ;AAEA,YAAQ,OAAO;AACf,YAAQ,aAAa;AAAA;AAAA;;;ACtCrB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,YAAY;AAChB,QAAI,mBAAmB;AAEvB,aAAS,oBAAoB,YAAY,KAAK,SAAS;AACnD,YAAM,OAAO,IAAI,UAAU,WAAW;AACtC,YAAMC,aAAY,OAAO,0BAA0B;AACnD,aAAOA,WAAU,YAAY,KAAK,OAAO;AAAA,IAC7C;AACA,aAAS,yBAAyB,EAAE,SAAS,MAAM,GAAG,KAAK,EAAE,iBAAiB,WAAW,YAAY,aAAa,UAAU,GAAG;AAC3H,YAAM,EAAE,QAAQ,SAAS,EAAE,cAAc,EAAE,IAAI;AAC/C,YAAM,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK,EAAE,QAAQ,YAAY,MAAM,KAAK,CAAC;AACzE,UAAI,YAAY;AAChB,YAAM,QAAQ,CAAC;AACf,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACnC,cAAM,OAAO,MAAM;AACnB,YAAIC,WAAU;AACd,YAAI,SAAS,OAAO,IAAI,GAAG;AACvB,cAAI,CAAC,aAAa,KAAK;AACnB,kBAAM,KAAK,EAAE;AACjB,2BAAiB,KAAK,OAAO,KAAK,eAAe,SAAS;AAC1D,cAAI,KAAK;AACL,YAAAA,WAAU,KAAK;AAAA,QACvB,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,gBAAM,KAAK,SAAS,OAAO,KAAK,GAAG,IAAI,KAAK,MAAM;AAClD,cAAI,IAAI;AACJ,gBAAI,CAAC,aAAa,GAAG;AACjB,oBAAM,KAAK,EAAE;AACjB,6BAAiB,KAAK,OAAO,GAAG,eAAe,SAAS;AAAA,UAC5D;AAAA,QACJ;AACA,oBAAY;AACZ,YAAIC,OAAM,UAAU,UAAU,MAAM,SAAS,MAAOD,WAAU,MAAO,MAAO,YAAY,IAAK;AAC7F,YAAIA;AACA,UAAAC,QAAO,iBAAiB,YAAYA,MAAK,YAAY,cAAcD,QAAO,CAAC;AAC/E,YAAI,aAAaA;AACb,sBAAY;AAChB,cAAM,KAAK,kBAAkBC,IAAG;AAAA,MACpC;AACA,UAAI;AACJ,UAAI,MAAM,WAAW,GAAG;AACpB,cAAM,UAAU,QAAQ,UAAU;AAAA,MACtC,OACK;AACD,cAAM,MAAM;AACZ,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACnC,gBAAM,OAAO,MAAM;AACnB,iBAAO,OAAO;AAAA,EAAK,SAAS,SAAS;AAAA,QACzC;AAAA,MACJ;AACA,UAAI,SAAS;AACT,eAAO,OAAO,iBAAiB,cAAc,cAAc,OAAO,GAAG,MAAM;AAC3E,YAAI;AACA,oBAAU;AAAA,MAClB,WACS,aAAa;AAClB,oBAAY;AAChB,aAAO;AAAA,IACX;AACA,aAAS,wBAAwB,EAAE,MAAM,GAAG,KAAK,EAAE,WAAW,WAAW,GAAG;AACxE,YAAM,EAAE,QAAQ,YAAY,uBAAuB,WAAW,SAAS,EAAE,cAAc,EAAE,IAAI;AAC7F,oBAAc;AACd,YAAM,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,QACnC,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,MACV,CAAC;AACD,UAAI,aAAa;AACjB,UAAI,eAAe;AACnB,YAAM,QAAQ,CAAC;AACf,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACnC,cAAM,OAAO,MAAM;AACnB,YAAI,UAAU;AACd,YAAI,SAAS,OAAO,IAAI,GAAG;AACvB,cAAI,KAAK;AACL,kBAAM,KAAK,EAAE;AACjB,2BAAiB,KAAK,OAAO,KAAK,eAAe,KAAK;AACtD,cAAI,KAAK;AACL,sBAAU,KAAK;AAAA,QACvB,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,gBAAM,KAAK,SAAS,OAAO,KAAK,GAAG,IAAI,KAAK,MAAM;AAClD,cAAI,IAAI;AACJ,gBAAI,GAAG;AACH,oBAAM,KAAK,EAAE;AACjB,6BAAiB,KAAK,OAAO,GAAG,eAAe,KAAK;AACpD,gBAAI,GAAG;AACH,2BAAa;AAAA,UACrB;AACA,gBAAM,KAAK,SAAS,OAAO,KAAK,KAAK,IAAI,KAAK,QAAQ;AACtD,cAAI,IAAI;AACJ,gBAAI,GAAG;AACH,wBAAU,GAAG;AACjB,gBAAI,GAAG;AACH,2BAAa;AAAA,UACrB,WACS,KAAK,SAAS,SAAQ,yBAAI,UAAS;AACxC,sBAAU,GAAG;AAAA,UACjB;AAAA,QACJ;AACA,YAAI;AACA,uBAAa;AACjB,YAAI,MAAM,UAAU,UAAU,MAAM,SAAS,MAAO,UAAU,IAAK;AACnE,YAAI,IAAI,MAAM,SAAS;AACnB,iBAAO;AACX,YAAI;AACA,iBAAO,iBAAiB,YAAY,KAAK,YAAY,cAAc,OAAO,CAAC;AAC/E,YAAI,CAAC,eAAe,MAAM,SAAS,gBAAgB,IAAI,SAAS,IAAI;AAChE,uBAAa;AACjB,cAAM,KAAK,GAAG;AACd,uBAAe,MAAM;AAAA,MACzB;AACA,YAAM,EAAE,OAAO,IAAI,IAAI;AACvB,UAAI,MAAM,WAAW,GAAG;AACpB,eAAO,QAAQ;AAAA,MACnB,OACK;AACD,YAAI,CAAC,YAAY;AACb,gBAAM,MAAM,MAAM,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,SAAS,GAAG,CAAC;AAChE,uBAAa,IAAI,QAAQ,YAAY,KAAK,MAAM,IAAI,QAAQ;AAAA,QAChE;AACA,YAAI,YAAY;AACZ,cAAI,MAAM;AACV,qBAAW,QAAQ;AACf,mBAAO,OAAO;AAAA,EAAK,aAAa,SAAS,SAAS;AACtD,iBAAO,GAAG;AAAA,EAAQ,SAAS;AAAA,QAC/B,OACK;AACD,iBAAO,GAAG,QAAQ,YAAY,MAAM,KAAK,GAAG,IAAI,YAAY;AAAA,QAChE;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,iBAAiB,EAAE,QAAQ,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,SAAS,WAAW;AACzF,UAAI,WAAW;AACX,kBAAU,QAAQ,QAAQ,QAAQ,EAAE;AACxC,UAAI,SAAS;AACT,cAAM,KAAK,iBAAiB,cAAc,cAAc,OAAO,GAAG,MAAM;AACxE,cAAM,KAAK,GAAG,UAAU,CAAC;AAAA,MAC7B;AAAA,IACJ;AAEA,YAAQ,sBAAsB;AAAA;AAAA;;;AChJ9B;AAAA;AAAA;AAEA,QAAI,sBAAsB;AAC1B,QAAI,iBAAiB;AACrB,QAAIC,cAAa;AACjB,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,SAAS;AAEb,aAAS,SAAS,OAAO,KAAK;AAC1B,YAAM,IAAI,SAAS,SAAS,GAAG,IAAI,IAAI,QAAQ;AAC/C,iBAAW,MAAM,OAAO;AACpB,YAAI,SAAS,OAAO,EAAE,GAAG;AACrB,cAAI,GAAG,QAAQ,OAAO,GAAG,QAAQ;AAC7B,mBAAO;AACX,cAAI,SAAS,SAAS,GAAG,GAAG,KAAK,GAAG,IAAI,UAAU;AAC9C,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,QAAM,UAAN,cAAsBA,YAAW,WAAW;AAAA,MACxC,WAAW,UAAU;AACjB,eAAO;AAAA,MACX;AAAA,MACA,YAAY,QAAQ;AAChB,cAAM,SAAS,KAAK,MAAM;AAC1B,aAAK,QAAQ,CAAC;AAAA,MAClB;AAAA,MAKA,OAAO,KAAK,QAAQ,KAAK,KAAK;AAC1B,cAAM,EAAE,eAAe,SAAS,IAAI;AACpC,cAAM,MAAM,IAAI,KAAK,MAAM;AAC3B,cAAM,MAAM,CAAC,KAAK,UAAU;AACxB,cAAI,OAAO,aAAa;AACpB,oBAAQ,SAAS,KAAK,KAAK,KAAK,KAAK;AAAA,mBAChC,MAAM,QAAQ,QAAQ,KAAK,CAAC,SAAS,SAAS,GAAG;AACtD;AACJ,cAAI,UAAU,UAAa;AACvB,gBAAI,MAAM,KAAK,KAAK,WAAW,KAAK,OAAO,GAAG,CAAC;AAAA,QACvD;AACA,YAAI,eAAe,KAAK;AACpB,qBAAW,CAAC,KAAK,KAAK,KAAK;AACvB,gBAAI,KAAK,KAAK;AAAA,QACtB,WACS,OAAO,OAAO,QAAQ,UAAU;AACrC,qBAAW,OAAO,OAAO,KAAK,GAAG;AAC7B,gBAAI,KAAK,IAAI,IAAI;AAAA,QACzB;AACA,YAAI,OAAO,OAAO,mBAAmB,YAAY;AAC7C,cAAI,MAAM,KAAK,OAAO,cAAc;AAAA,QACxC;AACA,eAAO;AAAA,MACX;AAAA,MAOA,IAAI,MAAM,WAAW;AA/DzB;AAgEQ,YAAI;AACJ,YAAI,SAAS,OAAO,IAAI;AACpB,kBAAQ;AAAA,iBACH,CAAC,QAAQ,OAAO,SAAS,YAAY,EAAE,SAAS,OAAO;AAE5D,kBAAQ,IAAI,KAAK,KAAK,MAAM,6BAAM,KAAK;AAAA,QAC3C;AAEI,kBAAQ,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAC9C,cAAM,OAAO,SAAS,KAAK,OAAO,MAAM,GAAG;AAC3C,cAAM,eAAc,UAAK,WAAL,mBAAa;AACjC,YAAI,MAAM;AACN,cAAI,CAAC;AACD,kBAAM,IAAI,MAAM,OAAO,MAAM,iBAAiB;AAElD,cAAI,SAAS,SAAS,KAAK,KAAK,KAAK,OAAO,cAAc,MAAM,KAAK;AACjE,iBAAK,MAAM,QAAQ,MAAM;AAAA;AAEzB,iBAAK,QAAQ,MAAM;AAAA,QAC3B,WACS,aAAa;AAClB,gBAAM,IAAI,KAAK,MAAM,UAAU,UAAQ,YAAY,OAAO,IAAI,IAAI,CAAC;AACnE,cAAI,MAAM;AACN,iBAAK,MAAM,KAAK,KAAK;AAAA;AAErB,iBAAK,MAAM,OAAO,GAAG,GAAG,KAAK;AAAA,QACrC,OACK;AACD,eAAK,MAAM,KAAK,KAAK;AAAA,QACzB;AAAA,MACJ;AAAA,MACA,OAAO,KAAK;AACR,cAAM,KAAK,SAAS,KAAK,OAAO,GAAG;AACnC,YAAI,CAAC;AACD,iBAAO;AACX,cAAM,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM,QAAQ,EAAE,GAAG,CAAC;AACvD,eAAO,IAAI,SAAS;AAAA,MACxB;AAAA,MACA,IAAI,KAAK,YAAY;AACjB,cAAM,KAAK,SAAS,KAAK,OAAO,GAAG;AACnC,cAAM,OAAO,yBAAI;AACjB,gBAAQ,CAAC,cAAc,SAAS,SAAS,IAAI,IAAI,KAAK,QAAQ,SAAS;AAAA,MAC3E;AAAA,MACA,IAAI,KAAK;AACL,eAAO,CAAC,CAAC,SAAS,KAAK,OAAO,GAAG;AAAA,MACrC;AAAA,MACA,IAAI,KAAK,OAAO;AACZ,aAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAAA,MAC5C;AAAA,MAMA,OAAO,GAAG,KAAK,MAAM;AACjB,cAAM,MAAM,OAAO,IAAI,KAAK,KAAI,2BAAK,YAAW,oBAAI,IAAI,IAAI,CAAC;AAC7D,YAAI,2BAAK;AACL,cAAI,SAAS,GAAG;AACpB,mBAAW,QAAQ,KAAK;AACpB,yBAAe,eAAe,KAAK,KAAK,IAAI;AAChD,eAAO;AAAA,MACX;AAAA,MACA,SAAS,KAAK,WAAW,aAAa;AAClC,YAAI,CAAC;AACD,iBAAO,KAAK,UAAU,IAAI;AAC9B,mBAAW,QAAQ,KAAK,OAAO;AAC3B,cAAI,CAAC,SAAS,OAAO,IAAI;AACrB,kBAAM,IAAI,MAAM,sCAAsC,KAAK,UAAU,IAAI,WAAW;AAAA,QAC5F;AACA,YAAI,CAAC,IAAI,iBAAiB,KAAK,iBAAiB,KAAK;AACjD,gBAAM,OAAO,OAAO,CAAC,GAAG,KAAK,EAAE,eAAe,KAAK,CAAC;AACxD,eAAO,oBAAoB,oBAAoB,MAAM,KAAK;AAAA,UACtD,iBAAiB;AAAA,UACjB,WAAW,EAAE,OAAO,KAAK,KAAK,IAAI;AAAA,UAClC,YAAY,IAAI,UAAU;AAAA,UAC1B;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,YAAQ,UAAU;AAClB,YAAQ,WAAW;AAAA;AAAA;;;AClJnB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,UAAU;AAEd,QAAM,MAAM;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,QAAQC,MAAK,SAAS;AAClB,YAAI,CAAC,SAAS,MAAMA,IAAG;AACnB,kBAAQ,iCAAiC;AAC7C,eAAOA;AAAA,MACX;AAAA,MACA,YAAY,CAAC,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,KAAK,GAAG;AAAA,IAC3E;AAEA,YAAQ,MAAM;AAAA;AAAA;;;AClBd;AAAA;AAAA;AAEA,QAAI,aAAa;AACjB,QAAI,sBAAsB;AAC1B,QAAIC,cAAa;AACjB,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,OAAO;AAEX,QAAM,UAAN,cAAsBA,YAAW,WAAW;AAAA,MACxC,WAAW,UAAU;AACjB,eAAO;AAAA,MACX;AAAA,MACA,YAAY,QAAQ;AAChB,cAAM,SAAS,KAAK,MAAM;AAC1B,aAAK,QAAQ,CAAC;AAAA,MAClB;AAAA,MACA,IAAI,OAAO;AACP,aAAK,MAAM,KAAK,KAAK;AAAA,MACzB;AAAA,MASA,OAAO,KAAK;AACR,cAAM,MAAM,YAAY,GAAG;AAC3B,YAAI,OAAO,QAAQ;AACf,iBAAO;AACX,cAAM,MAAM,KAAK,MAAM,OAAO,KAAK,CAAC;AACpC,eAAO,IAAI,SAAS;AAAA,MACxB;AAAA,MACA,IAAI,KAAK,YAAY;AACjB,cAAM,MAAM,YAAY,GAAG;AAC3B,YAAI,OAAO,QAAQ;AACf,iBAAO;AACX,cAAM,KAAK,KAAK,MAAM;AACtB,eAAO,CAAC,cAAc,SAAS,SAAS,EAAE,IAAI,GAAG,QAAQ;AAAA,MAC7D;AAAA,MAOA,IAAI,KAAK;AACL,cAAM,MAAM,YAAY,GAAG;AAC3B,eAAO,OAAO,QAAQ,YAAY,MAAM,KAAK,MAAM;AAAA,MACvD;AAAA,MAQA,IAAI,KAAK,OAAO;AACZ,cAAM,MAAM,YAAY,GAAG;AAC3B,YAAI,OAAO,QAAQ;AACf,gBAAM,IAAI,MAAM,+BAA+B,MAAM;AACzD,cAAM,OAAO,KAAK,MAAM;AACxB,YAAI,SAAS,SAAS,IAAI,KAAK,OAAO,cAAc,KAAK;AACrD,eAAK,QAAQ;AAAA;AAEb,eAAK,MAAM,OAAO;AAAA,MAC1B;AAAA,MACA,OAAO,GAAG,KAAK;AACX,cAAM,MAAM,CAAC;AACb,YAAI,2BAAK;AACL,cAAI,SAAS,GAAG;AACpB,YAAI,IAAI;AACR,mBAAW,QAAQ,KAAK;AACpB,cAAI,KAAK,KAAK,KAAK,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC;AAC9C,eAAO;AAAA,MACX;AAAA,MACA,SAAS,KAAK,WAAW,aAAa;AAClC,YAAI,CAAC;AACD,iBAAO,KAAK,UAAU,IAAI;AAC9B,eAAO,oBAAoB,oBAAoB,MAAM,KAAK;AAAA,UACtD,iBAAiB;AAAA,UACjB,WAAW,EAAE,OAAO,KAAK,KAAK,IAAI;AAAA,UAClC,aAAa,IAAI,UAAU,MAAM;AAAA,UACjC;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MACA,OAAO,KAAK,QAAQ,KAAK,KAAK;AAC1B,cAAM,EAAE,SAAS,IAAI;AACrB,cAAM,MAAM,IAAI,KAAK,MAAM;AAC3B,YAAI,OAAO,OAAO,YAAY,OAAO,GAAG,GAAG;AACvC,cAAI,IAAI;AACR,mBAAS,MAAM,KAAK;AAChB,gBAAI,OAAO,aAAa,YAAY;AAChC,oBAAM,MAAM,eAAe,MAAM,KAAK,OAAO,GAAG;AAChD,mBAAK,SAAS,KAAK,KAAK,KAAK,EAAE;AAAA,YACnC;AACA,gBAAI,MAAM,KAAK,WAAW,WAAW,IAAI,QAAW,GAAG,CAAC;AAAA,UAC5D;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,IACJ;AACA,aAAS,YAAY,KAAK;AACtB,UAAI,MAAM,SAAS,SAAS,GAAG,IAAI,IAAI,QAAQ;AAC/C,UAAI,OAAO,OAAO,QAAQ;AACtB,cAAM,OAAO,GAAG;AACpB,aAAO,OAAO,QAAQ,YAAY,OAAO,UAAU,GAAG,KAAK,OAAO,IAC5D,MACA;AAAA,IACV;AAEA,YAAQ,UAAU;AAAA;AAAA;;;AClHlB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,UAAU;AAEd,QAAM,MAAM;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,QAAQC,MAAK,SAAS;AAClB,YAAI,CAAC,SAAS,MAAMA,IAAG;AACnB,kBAAQ,kCAAkC;AAC9C,eAAOA;AAAA,MACX;AAAA,MACA,YAAY,CAAC,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,KAAK,GAAG;AAAA,IAC3E;AAEA,YAAQ,MAAM;AAAA;AAAA;;;AClBd;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAEtB,QAAM,SAAS;AAAA,MACX,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,SAAS,SAAO;AAAA,MAChB,UAAU,MAAM,KAAK,WAAW,aAAa;AACzC,cAAM,OAAO,OAAO,EAAE,cAAc,KAAK,GAAG,GAAG;AAC/C,eAAO,gBAAgB,gBAAgB,MAAM,KAAK,WAAW,WAAW;AAAA,MAC5E;AAAA,IACJ;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACfjB;AAAA;AAAA;AAEA,QAAI,SAAS;AAEb,QAAM,UAAU;AAAA,MACZ,UAAU,WAAS,SAAS;AAAA,MAC5B,YAAY,MAAM,IAAI,OAAO,OAAO,IAAI;AAAA,MACxC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,IAAI,OAAO,OAAO,IAAI;AAAA,MACrC,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,OAAO,WAAW,YAAY,QAAQ,KAAK,KAAK,MAAM,IAChF,SACA,IAAI,QAAQ;AAAA,IACtB;AAEA,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,QAAI,SAAS;AAEb,QAAM,UAAU;AAAA,MACZ,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,SAAO,IAAI,OAAO,OAAO,IAAI,OAAO,OAAO,IAAI,OAAO,GAAG;AAAA,MAClE,UAAU,EAAE,QAAQ,MAAM,GAAG,KAAK;AAC9B,YAAI,UAAU,QAAQ,KAAK,KAAK,MAAM,GAAG;AACrC,gBAAM,KAAK,OAAO,OAAO,OAAO,OAAO,OAAO;AAC9C,cAAI,UAAU;AACV,mBAAO;AAAA,QACf;AACA,eAAO,QAAQ,IAAI,QAAQ,UAAU,IAAI,QAAQ;AAAA,MACrD;AAAA,IACJ;AAEA,YAAQ,UAAU;AAAA;AAAA;;;ACpBlB;AAAA;AAAA;AAEA,aAAS,gBAAgB,EAAE,QAAQ,mBAAmB,KAAK,MAAM,GAAG;AAChE,UAAI,OAAO,UAAU;AACjB,eAAO,OAAO,KAAK;AACvB,YAAM,MAAM,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AAC5D,UAAI,CAAC,SAAS,GAAG;AACb,eAAO,MAAM,GAAG,IAAI,SAAS,MAAM,IAAI,UAAU;AACrD,UAAI,IAAI,KAAK,UAAU,KAAK;AAC5B,UAAI,CAAC,UACD,sBACC,CAAC,OAAO,QAAQ,8BACjB,MAAM,KAAK,CAAC,GAAG;AACf,YAAI,IAAI,EAAE,QAAQ,GAAG;AACrB,YAAI,IAAI,GAAG;AACP,cAAI,EAAE;AACN,eAAK;AAAA,QACT;AACA,YAAI,IAAI,qBAAqB,EAAE,SAAS,IAAI;AAC5C,eAAO,MAAM;AACT,eAAK;AAAA,MACb;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;ACzB1B;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,kBAAkB;AAEtB,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,SAAO,IAAI,MAAM,EAAE,EAAE,YAAY,MAAM,QAC1C,MACA,IAAI,OAAO,MACP,OAAO,oBACP,OAAO;AAAA,MACjB,WAAW,gBAAgB;AAAA,IAC/B;AACA,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,SAAO,WAAW,GAAG;AAAA,MAC9B,UAAU,MAAM;AACZ,cAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,eAAO,SAAS,GAAG,IAAI,IAAI,cAAc,IAAI,gBAAgB,gBAAgB,IAAI;AAAA,MACrF;AAAA,IACJ;AACA,QAAM,QAAQ;AAAA,MACV,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,KAAK;AACT,cAAM,OAAO,IAAI,OAAO,OAAO,WAAW,GAAG,CAAC;AAC9C,cAAM,MAAM,IAAI,QAAQ,GAAG;AAC3B,YAAI,QAAQ,MAAM,IAAI,IAAI,SAAS,OAAO;AACtC,eAAK,oBAAoB,IAAI,SAAS,MAAM;AAChD,eAAO;AAAA,MACX;AAAA,MACA,WAAW,gBAAgB;AAAA,IAC/B;AAEA,YAAQ,QAAQ;AAChB,YAAQ,WAAW;AACnB,YAAQ,WAAW;AAAA;AAAA;;;AC9CnB;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAEtB,QAAM,cAAc,CAAC,UAAU,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAClF,QAAM,aAAa,CAAC,KAAK,QAAQ,OAAO,EAAE,YAAY,MAAO,cAAc,OAAO,GAAG,IAAI,SAAS,IAAI,UAAU,MAAM,GAAG,KAAK;AAC9H,aAAS,aAAa,MAAM,OAAO,QAAQ;AACvC,YAAM,EAAE,MAAM,IAAI;AAClB,UAAI,YAAY,KAAK,KAAK,SAAS;AAC/B,eAAO,SAAS,MAAM,SAAS,KAAK;AACxC,aAAO,gBAAgB,gBAAgB,IAAI;AAAA,IAC/C;AACA,QAAM,SAAS;AAAA,MACX,UAAU,WAAS,YAAY,KAAK,KAAK,SAAS;AAAA,MAClD,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,GAAG,GAAG;AAAA,MAC1D,WAAW,UAAQ,aAAa,MAAM,GAAG,IAAI;AAAA,IACjD;AACA,QAAM,MAAM;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,IAAI,GAAG;AAAA,MAC3D,WAAW,gBAAgB;AAAA,IAC/B;AACA,QAAM,SAAS;AAAA,MACX,UAAU,WAAS,YAAY,KAAK,KAAK,SAAS;AAAA,MAClD,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,IAAI,GAAG;AAAA,MAC3D,WAAW,UAAQ,aAAa,MAAM,IAAI,IAAI;AAAA,IAClD;AAEA,YAAQ,MAAM;AACd,YAAQ,SAAS;AACjB,YAAQ,SAAS;AAAA;AAAA;;;ACzCjB;AAAA;AAAA;AAEA,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,MAAM;AAEV,QAAM,SAAS;AAAA,MACX,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACxBjB,IAAAC,kBAAA;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,MAAM;AACV,QAAI,MAAM;AAEV,aAAS,YAAY,OAAO;AACxB,aAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAAA,IAC9D;AACA,QAAM,gBAAgB,CAAC,EAAE,MAAM,MAAM,KAAK,UAAU,KAAK;AACzD,QAAM,cAAc;AAAA,MAChB;AAAA,QACI,UAAU,WAAS,OAAO,UAAU;AAAA,QACpC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,SAAS,SAAO;AAAA,QAChB,WAAW;AAAA,MACf;AAAA,MACA;AAAA,QACI,UAAU,WAAS,SAAS;AAAA,QAC5B,YAAY,MAAM,IAAI,OAAO,OAAO,IAAI;AAAA,QACxC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,MAAM;AAAA,QACf,WAAW;AAAA,MACf;AAAA,MACA;AAAA,QACI,UAAU,WAAS,OAAO,UAAU;AAAA,QACpC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,SAAO,QAAQ;AAAA,QACxB,WAAW;AAAA,MACf;AAAA,MACA;AAAA,QACI,UAAU;AAAA,QACV,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,CAAC,KAAK,UAAU,EAAE,YAAY,MAAM,cAAc,OAAO,GAAG,IAAI,SAAS,KAAK,EAAE;AAAA,QACzF,WAAW,CAAC,EAAE,MAAM,MAAM,YAAY,KAAK,IAAI,MAAM,SAAS,IAAI,KAAK,UAAU,KAAK;AAAA,MAC1F;AAAA,MACA;AAAA,QACI,UAAU,WAAS,OAAO,UAAU;AAAA,QACpC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,SAAO,WAAW,GAAG;AAAA,QAC9B,WAAW;AAAA,MACf;AAAA,IACJ;AACA,QAAM,YAAY;AAAA,MACd,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,KAAK,SAAS;AAClB,gBAAQ,2BAA2B,KAAK,UAAU,GAAG,GAAG;AACxD,eAAO;AAAA,MACX;AAAA,IACJ;AACA,QAAM,SAAS,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE,OAAO,aAAa,SAAS;AAE/D,YAAQ,SAAS;AAAA;AAAA;;;AC/DjB;AAAA;AAAA;AAEA,QAAI,cAAc,UAAQ;AAC1B,QAAI,SAAS;AACb,QAAI,kBAAkB;AAEtB,QAAM,SAAS;AAAA,MACX,UAAU,WAAS,iBAAiB;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MASL,QAAQ,KAAK,SAAS;AAClB,YAAI,OAAO,YAAY,WAAW,YAAY;AAC1C,iBAAO,YAAY,OAAO,KAAK,KAAK,QAAQ;AAAA,QAChD,WACS,OAAO,SAAS,YAAY;AAEjC,gBAAM,MAAM,KAAK,IAAI,QAAQ,WAAW,EAAE,CAAC;AAC3C,gBAAM,SAAS,IAAI,WAAW,IAAI,MAAM;AACxC,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE;AAC9B,mBAAO,KAAK,IAAI,WAAW,CAAC;AAChC,iBAAO;AAAA,QACX,OACK;AACD,kBAAQ,0FAA0F;AAClG,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,MACA,UAAU,EAAE,SAAS,MAAM,MAAM,GAAG,KAAK,WAAW,aAAa;AAC7D,cAAM,MAAM;AACZ,YAAI;AACJ,YAAI,OAAO,YAAY,WAAW,YAAY;AAC1C,gBACI,eAAe,YAAY,SACrB,IAAI,SAAS,QAAQ,IACrB,YAAY,OAAO,KAAK,IAAI,MAAM,EAAE,SAAS,QAAQ;AAAA,QACnE,WACS,OAAO,SAAS,YAAY;AACjC,cAAI,IAAI;AACR,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE;AAC9B,iBAAK,OAAO,aAAa,IAAI,EAAE;AACnC,gBAAM,KAAK,CAAC;AAAA,QAChB,OACK;AACD,gBAAM,IAAI,MAAM,0FAA0F;AAAA,QAC9G;AACA,YAAI,CAAC;AACD,iBAAO,OAAO,OAAO;AACzB,YAAI,SAAS,OAAO,OAAO,cAAc;AACrC,gBAAM,YAAY,KAAK,IAAI,IAAI,QAAQ,YAAY,IAAI,OAAO,QAAQ,IAAI,QAAQ,eAAe;AACjG,gBAAM,IAAI,KAAK,KAAK,IAAI,SAAS,SAAS;AAC1C,gBAAM,QAAQ,IAAI,MAAM,CAAC;AACzB,mBAAS,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,KAAK,WAAW;AAC/C,kBAAM,KAAK,IAAI,OAAO,GAAG,SAAS;AAAA,UACtC;AACA,gBAAM,MAAM,KAAK,SAAS,OAAO,OAAO,gBAAgB,OAAO,GAAG;AAAA,QACtE;AACA,eAAO,gBAAgB,gBAAgB,EAAE,SAAS,MAAM,OAAO,IAAI,GAAG,KAAK,WAAW,WAAW;AAAA,MACrG;AAAA,IACJ;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACpEjB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAI,UAAU;AAEd,aAAS,aAAa,KAAK,SAAS;AAChC,UAAI,SAAS,MAAM,GAAG,GAAG;AACrB,iBAAS,IAAI,GAAG,IAAI,IAAI,MAAM,QAAQ,EAAE,GAAG;AACvC,cAAI,OAAO,IAAI,MAAM;AACrB,cAAI,SAAS,OAAO,IAAI;AACpB;AAAA,mBACK,SAAS,MAAM,IAAI,GAAG;AAC3B,gBAAI,KAAK,MAAM,SAAS;AACpB,sBAAQ,gDAAgD;AAC5D,kBAAM,OAAO,KAAK,MAAM,MAAM,IAAI,KAAK,KAAK,IAAI,OAAO,OAAO,IAAI,CAAC;AACnE,gBAAI,KAAK;AACL,mBAAK,IAAI,gBAAgB,KAAK,IAAI,gBAC5B,GAAG,KAAK;AAAA,EAAkB,KAAK,IAAI,kBACnC,KAAK;AACf,gBAAI,KAAK,SAAS;AACd,oBAAM,KAAK,KAAK,SAAS,KAAK;AAC9B,iBAAG,UAAU,GAAG,UACV,GAAG,KAAK;AAAA,EAAY,GAAG,YACvB,KAAK;AAAA,YACf;AACA,mBAAO;AAAA,UACX;AACA,cAAI,MAAM,KAAK,SAAS,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,KAAK,IAAI;AAAA,QACpE;AAAA,MACJ;AAEI,gBAAQ,kCAAkC;AAC9C,aAAO;AAAA,IACX;AACA,aAAS,YAAY,QAAQ,UAAU,KAAK;AACxC,YAAM,EAAE,SAAS,IAAI;AACrB,YAAMC,SAAQ,IAAI,QAAQ,QAAQ,MAAM;AACxC,MAAAA,OAAM,MAAM;AACZ,UAAI,IAAI;AACR,UAAI,YAAY,OAAO,YAAY,OAAO,QAAQ;AAC9C,iBAAS,MAAM,UAAU;AACrB,cAAI,OAAO,aAAa;AACpB,iBAAK,SAAS,KAAK,UAAU,OAAO,GAAG,GAAG,EAAE;AAChD,cAAI,KAAK;AACT,cAAI,MAAM,QAAQ,EAAE,GAAG;AACnB,gBAAI,GAAG,WAAW,GAAG;AACjB,oBAAM,GAAG;AACT,sBAAQ,GAAG;AAAA,YACf;AAEI,oBAAM,IAAI,UAAU,gCAAgC,IAAI;AAAA,UAChE,WACS,MAAM,cAAc,QAAQ;AACjC,kBAAM,OAAO,OAAO,KAAK,EAAE;AAC3B,gBAAI,KAAK,WAAW,GAAG;AACnB,oBAAM,KAAK;AACX,sBAAQ,GAAG;AAAA,YACf,OACK;AACD,oBAAM,IAAI,UAAU,oCAAoC,KAAK,aAAa;AAAA,YAC9E;AAAA,UACJ,OACK;AACD,kBAAM;AAAA,UACV;AACA,UAAAA,OAAM,MAAM,KAAK,KAAK,WAAW,KAAK,OAAO,GAAG,CAAC;AAAA,QACrD;AACJ,aAAOA;AAAA,IACX;AACA,QAAM,QAAQ;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,KAAK;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,IAChB;AAEA,YAAQ,cAAc;AACtB,YAAQ,QAAQ;AAChB,YAAQ,eAAe;AAAA;AAAA;;;ACjFvB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,QAAQ;AAEZ,QAAM,WAAN,cAAuB,QAAQ,QAAQ;AAAA,MACnC,cAAc;AACV,cAAM;AACN,aAAK,MAAM,QAAQ,QAAQ,UAAU,IAAI,KAAK,IAAI;AAClD,aAAK,SAAS,QAAQ,QAAQ,UAAU,OAAO,KAAK,IAAI;AACxD,aAAK,MAAM,QAAQ,QAAQ,UAAU,IAAI,KAAK,IAAI;AAClD,aAAK,MAAM,QAAQ,QAAQ,UAAU,IAAI,KAAK,IAAI;AAClD,aAAK,MAAM,QAAQ,QAAQ,UAAU,IAAI,KAAK,IAAI;AAClD,aAAK,MAAM,SAAS;AAAA,MACxB;AAAA,MAKA,OAAO,GAAG,KAAK;AACX,YAAI,CAAC;AACD,iBAAO,MAAM,OAAO,CAAC;AACzB,cAAM,MAAM,oBAAI,IAAI;AACpB,YAAI,2BAAK;AACL,cAAI,SAAS,GAAG;AACpB,mBAAW,QAAQ,KAAK,OAAO;AAC3B,cAAI,KAAK;AACT,cAAI,SAAS,OAAO,IAAI,GAAG;AACvB,kBAAM,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG;AACjC,oBAAQ,KAAK,KAAK,KAAK,OAAO,KAAK,GAAG;AAAA,UAC1C,OACK;AACD,kBAAM,KAAK,KAAK,MAAM,IAAI,GAAG;AAAA,UACjC;AACA,cAAI,IAAI,IAAI,GAAG;AACX,kBAAM,IAAI,MAAM,8CAA8C;AAClE,cAAI,IAAI,KAAK,KAAK;AAAA,QACtB;AACA,eAAO;AAAA,MACX;AAAA,MACA,OAAO,KAAK,QAAQ,UAAU,KAAK;AAC/B,cAAM,UAAU,MAAM,YAAY,QAAQ,UAAU,GAAG;AACvD,cAAMC,QAAO,IAAI,KAAK;AACtB,QAAAA,MAAK,QAAQ,QAAQ;AACrB,eAAOA;AAAA,MACX;AAAA,IACJ;AACA,aAAS,MAAM;AACf,QAAM,OAAO;AAAA,MACT,YAAY;AAAA,MACZ,UAAU,WAAS,iBAAiB;AAAA,MACpC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ,KAAK,SAAS;AAClB,cAAM,UAAU,MAAM,aAAa,KAAK,OAAO;AAC/C,cAAM,WAAW,CAAC;AAClB,mBAAW,EAAE,IAAI,KAAK,QAAQ,OAAO;AACjC,cAAI,SAAS,SAAS,GAAG,GAAG;AACxB,gBAAI,SAAS,SAAS,IAAI,KAAK,GAAG;AAC9B,sBAAQ,iDAAiD,IAAI,OAAO;AAAA,YACxE,OACK;AACD,uBAAS,KAAK,IAAI,KAAK;AAAA,YAC3B;AAAA,UACJ;AAAA,QACJ;AACA,eAAO,OAAO,OAAO,IAAI,SAAS,GAAG,OAAO;AAAA,MAChD;AAAA,MACA,YAAY,CAAC,QAAQ,UAAU,QAAQ,SAAS,KAAK,QAAQ,UAAU,GAAG;AAAA,IAC9E;AAEA,YAAQ,WAAW;AACnB,YAAQ,OAAO;AAAA;AAAA;;;AC5Ef,IAAAC,gBAAA;AAAA;AAAA;AAEA,QAAI,SAAS;AAEb,aAAS,cAAc,EAAE,OAAO,OAAO,GAAG,KAAK;AAC3C,YAAM,UAAU,QAAQ,UAAU;AAClC,UAAI,UAAU,QAAQ,KAAK,KAAK,MAAM;AAClC,eAAO;AACX,aAAO,QAAQ,IAAI,QAAQ,UAAU,IAAI,QAAQ;AAAA,IACrD;AACA,QAAM,UAAU;AAAA,MACZ,UAAU,WAAS,UAAU;AAAA,MAC7B,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,IAAI,OAAO,OAAO,IAAI;AAAA,MACrC,WAAW;AAAA,IACf;AACA,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,UAAU;AAAA,MAC7B,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,IAAI,OAAO,OAAO,KAAK;AAAA,MACtC,WAAW;AAAA,IACf;AAEA,YAAQ,WAAW;AACnB,YAAQ,UAAU;AAAA;AAAA;;;AC5BlB,IAAAC,iBAAA;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,kBAAkB;AAEtB,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAC,QAAQ,IAAI,MAAM,EAAE,EAAE,YAAY,MAAM,QAC5C,MACA,IAAI,OAAO,MACP,OAAO,oBACP,OAAO;AAAA,MACjB,WAAW,gBAAgB;AAAA,IAC/B;AACA,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,QAAQ,WAAW,IAAI,QAAQ,MAAM,EAAE,CAAC;AAAA,MAClD,UAAU,MAAM;AACZ,cAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,eAAO,SAAS,GAAG,IAAI,IAAI,cAAc,IAAI,gBAAgB,gBAAgB,IAAI;AAAA,MACrF;AAAA,IACJ;AACA,QAAM,QAAQ;AAAA,MACV,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,KAAK;AACT,cAAM,OAAO,IAAI,OAAO,OAAO,WAAW,IAAI,QAAQ,MAAM,EAAE,CAAC,CAAC;AAChE,cAAM,MAAM,IAAI,QAAQ,GAAG;AAC3B,YAAI,QAAQ,IAAI;AACZ,gBAAM,IAAI,IAAI,UAAU,MAAM,CAAC,EAAE,QAAQ,MAAM,EAAE;AACjD,cAAI,EAAE,EAAE,SAAS,OAAO;AACpB,iBAAK,oBAAoB,EAAE;AAAA,QACnC;AACA,eAAO;AAAA,MACX;AAAA,MACA,WAAW,gBAAgB;AAAA,IAC/B;AAEA,YAAQ,QAAQ;AAChB,YAAQ,WAAW;AACnB,YAAQ,WAAW;AAAA;AAAA;;;ACjDnB,IAAAC,eAAA;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAEtB,QAAM,cAAc,CAAC,UAAU,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAClF,aAAS,WAAW,KAAK,QAAQ,OAAO,EAAE,YAAY,GAAG;AACrD,YAAM,OAAO,IAAI;AACjB,UAAI,SAAS,OAAO,SAAS;AACzB,kBAAU;AACd,YAAM,IAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,EAAE;AAC5C,UAAI,aAAa;AACb,gBAAQ,OAAO;AAAA,UACX,KAAK;AACD,kBAAM,KAAK;AACX;AAAA,UACJ,KAAK;AACD,kBAAM,KAAK;AACX;AAAA,UACJ,KAAK;AACD,kBAAM,KAAK;AACX;AAAA,QACR;AACA,cAAMC,KAAI,OAAO,GAAG;AACpB,eAAO,SAAS,MAAM,OAAO,EAAE,IAAIA,KAAIA;AAAA,MAC3C;AACA,YAAM,IAAI,SAAS,KAAK,KAAK;AAC7B,aAAO,SAAS,MAAM,KAAK,IAAI;AAAA,IACnC;AACA,aAAS,aAAa,MAAM,OAAO,QAAQ;AACvC,YAAM,EAAE,MAAM,IAAI;AAClB,UAAI,YAAY,KAAK,GAAG;AACpB,cAAM,MAAM,MAAM,SAAS,KAAK;AAChC,eAAO,QAAQ,IAAI,MAAM,SAAS,IAAI,OAAO,CAAC,IAAI,SAAS;AAAA,MAC/D;AACA,aAAO,gBAAgB,gBAAgB,IAAI;AAAA,IAC/C;AACA,QAAM,SAAS;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,GAAG,GAAG;AAAA,MAC1D,WAAW,UAAQ,aAAa,MAAM,GAAG,IAAI;AAAA,IACjD;AACA,QAAM,SAAS;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,GAAG,GAAG;AAAA,MAC1D,WAAW,UAAQ,aAAa,MAAM,GAAG,GAAG;AAAA,IAChD;AACA,QAAM,MAAM;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,IAAI,GAAG;AAAA,MAC3D,WAAW,gBAAgB;AAAA,IAC/B;AACA,QAAM,SAAS;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,IAAI,GAAG;AAAA,MAC3D,WAAW,UAAQ,aAAa,MAAM,IAAI,IAAI;AAAA,IAClD;AAEA,YAAQ,MAAM;AACd,YAAQ,SAAS;AACjB,YAAQ,SAAS;AACjB,YAAQ,SAAS;AAAA;AAAA;;;AC3EjB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,UAAU;AAEd,QAAM,UAAN,cAAsB,QAAQ,QAAQ;AAAA,MAClC,YAAY,QAAQ;AAChB,cAAM,MAAM;AACZ,aAAK,MAAM,QAAQ;AAAA,MACvB;AAAA,MACA,IAAI,KAAK;AACL,YAAI;AACJ,YAAI,SAAS,OAAO,GAAG;AACnB,iBAAO;AAAA,iBACF,OACL,OAAO,QAAQ,YACf,SAAS,OACT,WAAW,OACX,IAAI,UAAU;AACd,iBAAO,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA;AAElC,iBAAO,IAAI,KAAK,KAAK,KAAK,IAAI;AAClC,cAAM,OAAO,QAAQ,SAAS,KAAK,OAAO,KAAK,GAAG;AAClD,YAAI,CAAC;AACD,eAAK,MAAM,KAAK,IAAI;AAAA,MAC5B;AAAA,MAKA,IAAI,KAAK,UAAU;AACf,cAAM,OAAO,QAAQ,SAAS,KAAK,OAAO,GAAG;AAC7C,eAAO,CAAC,YAAY,SAAS,OAAO,IAAI,IAClC,SAAS,SAAS,KAAK,GAAG,IACtB,KAAK,IAAI,QACT,KAAK,MACT;AAAA,MACV;AAAA,MACA,IAAI,KAAK,OAAO;AACZ,YAAI,OAAO,UAAU;AACjB,gBAAM,IAAI,MAAM,iEAAiE,OAAO,OAAO;AACnG,cAAM,OAAO,QAAQ,SAAS,KAAK,OAAO,GAAG;AAC7C,YAAI,QAAQ,CAAC,OAAO;AAChB,eAAK,MAAM,OAAO,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC;AAAA,QACjD,WACS,CAAC,QAAQ,OAAO;AACrB,eAAK,MAAM,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,QACtC;AAAA,MACJ;AAAA,MACA,OAAO,GAAG,KAAK;AACX,eAAO,MAAM,OAAO,GAAG,KAAK,GAAG;AAAA,MACnC;AAAA,MACA,SAAS,KAAK,WAAW,aAAa;AAClC,YAAI,CAAC;AACD,iBAAO,KAAK,UAAU,IAAI;AAC9B,YAAI,KAAK,iBAAiB,IAAI;AAC1B,iBAAO,MAAM,SAAS,OAAO,OAAO,CAAC,GAAG,KAAK,EAAE,eAAe,KAAK,CAAC,GAAG,WAAW,WAAW;AAAA;AAE7F,gBAAM,IAAI,MAAM,qCAAqC;AAAA,MAC7D;AAAA,MACA,OAAO,KAAK,QAAQ,UAAU,KAAK;AAC/B,cAAM,EAAE,SAAS,IAAI;AACrB,cAAMC,OAAM,IAAI,KAAK,MAAM;AAC3B,YAAI,YAAY,OAAO,YAAY,OAAO,QAAQ;AAC9C,mBAAS,SAAS,UAAU;AACxB,gBAAI,OAAO,aAAa;AACpB,sBAAQ,SAAS,KAAK,UAAU,OAAO,KAAK;AAChD,YAAAA,KAAI,MAAM,KAAK,KAAK,WAAW,OAAO,MAAM,GAAG,CAAC;AAAA,UACpD;AACJ,eAAOA;AAAA,MACX;AAAA,IACJ;AACA,YAAQ,MAAM;AACd,QAAM,MAAM;AAAA,MACR,YAAY;AAAA,MACZ,UAAU,WAAS,iBAAiB;AAAA,MACpC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,KAAK;AAAA,MACL,YAAY,CAAC,QAAQ,UAAU,QAAQ,QAAQ,KAAK,QAAQ,UAAU,GAAG;AAAA,MACzE,QAAQ,KAAK,SAAS;AAClB,YAAI,SAAS,MAAM,GAAG,GAAG;AACrB,cAAI,IAAI,iBAAiB,IAAI;AACzB,mBAAO,OAAO,OAAO,IAAI,QAAQ,GAAG,GAAG;AAAA;AAEvC,oBAAQ,qCAAqC;AAAA,QACrD;AAEI,kBAAQ,iCAAiC;AAC7C,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,YAAQ,UAAU;AAClB,YAAQ,MAAM;AAAA;AAAA;;;AC/Fd;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAGtB,aAAS,iBAAiB,KAAK,UAAU;AACrC,YAAM,OAAO,IAAI;AACjB,YAAM,QAAQ,SAAS,OAAO,SAAS,MAAM,IAAI,UAAU,CAAC,IAAI;AAChE,YAAM,MAAM,CAAC,MAAM,WAAW,OAAO,CAAC,IAAI,OAAO,CAAC;AAClD,YAAM,MAAM,MACP,QAAQ,MAAM,EAAE,EAChB,MAAM,GAAG,EACT,OAAO,CAACC,MAAK,MAAMA,OAAM,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACtD,aAAQ,SAAS,MAAM,IAAI,EAAE,IAAI,MAAM;AAAA,IAC3C;AAMA,aAAS,qBAAqB,MAAM;AAChC,UAAI,EAAE,MAAM,IAAI;AAChB,UAAI,MAAM,CAAC,MAAM;AACjB,UAAI,OAAO,UAAU;AACjB,cAAM,OAAK,OAAO,CAAC;AAAA,eACd,MAAM,KAAK,KAAK,CAAC,SAAS,KAAK;AACpC,eAAO,gBAAgB,gBAAgB,IAAI;AAC/C,UAAI,OAAO;AACX,UAAI,QAAQ,GAAG;AACX,eAAO;AACP,iBAAS,IAAI,EAAE;AAAA,MACnB;AACA,YAAM,MAAM,IAAI,EAAE;AAClB,YAAM,QAAQ,CAAC,QAAQ,GAAG;AAC1B,UAAI,QAAQ,IAAI;AACZ,cAAM,QAAQ,CAAC;AAAA,MACnB,OACK;AACD,iBAAS,QAAQ,MAAM,MAAM;AAC7B,cAAM,QAAQ,QAAQ,GAAG;AACzB,YAAI,SAAS,IAAI;AACb,mBAAS,QAAQ,MAAM,MAAM;AAC7B,gBAAM,QAAQ,KAAK;AAAA,QACvB;AAAA,MACJ;AACA,aAAQ,OACJ,MACK,IAAI,OAAK,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EACnC,KAAK,GAAG,EACR,QAAQ,cAAc,EAAE;AAAA,IAErC;AACA,QAAM,UAAU;AAAA,MACZ,UAAU,WAAS,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAAA,MACtE,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,EAAE,YAAY,MAAM,iBAAiB,KAAK,WAAW;AAAA,MAC9E,WAAW;AAAA,IACf;AACA,QAAM,YAAY;AAAA,MACd,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,SAAO,iBAAiB,KAAK,KAAK;AAAA,MAC3C,WAAW;AAAA,IACf;AACA,QAAM,YAAY;AAAA,MACd,UAAU,WAAS,iBAAiB;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MAIL,MAAM,OAAO,2JAKJ;AAAA,MACT,QAAQ,KAAK;AACT,cAAM,QAAQ,IAAI,MAAM,UAAU,IAAI;AACtC,YAAI,CAAC;AACD,gBAAM,IAAI,MAAM,sDAAsD;AAC1E,cAAM,CAAC,EAAE,MAAM,OAAO,KAAK,MAAM,QAAQ,MAAM,IAAI,MAAM,IAAI,MAAM;AACnE,cAAM,WAAW,MAAM,KAAK,QAAQ,MAAM,KAAK,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI;AACrE,YAAI,OAAO,KAAK,IAAI,MAAM,QAAQ,GAAG,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ;AACvF,cAAM,KAAK,MAAM;AACjB,YAAI,MAAM,OAAO,KAAK;AAClB,cAAI,IAAI,iBAAiB,IAAI,KAAK;AAClC,cAAI,KAAK,IAAI,CAAC,IAAI;AACd,iBAAK;AACT,kBAAQ,MAAQ;AAAA,QACpB;AACA,eAAO,IAAI,KAAK,IAAI;AAAA,MACxB;AAAA,MACA,WAAW,CAAC,EAAE,MAAM,MAAM,MAAM,YAAY,EAAE,QAAQ,uBAAuB,EAAE;AAAA,IACnF;AAEA,YAAQ,YAAY;AACpB,YAAQ,UAAU;AAClB,YAAQ,YAAY;AAAA;AAAA;;;ACxGpB,IAAAC,kBAAA;AAAA;AAAA;AAEA,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,SAAS;AACb,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAIC,SAAQ;AACZ,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,YAAY;AAEhB,QAAM,SAAS;AAAA,MACX,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACPA,OAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,IACd;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACxCjB;AAAA;AAAA;AAEA,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAIC,SAAQ;AACZ,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,MAAM;AACV,QAAI,YAAY;AAEhB,QAAM,UAAU,oBAAI,IAAI;AAAA,MACpB,CAAC,QAAQ,OAAO,MAAM;AAAA,MACtB,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,MAAM,CAAC;AAAA,MAC9C,CAAC,QAAQ,SAAS,MAAM;AAAA,MACxB,CAAC,UAAU,SAAS,MAAM;AAAA,MAC1B,CAAC,YAAY,SAAS,MAAM;AAAA,IAChC,CAAC;AACD,QAAM,aAAa;AAAA,MACf,QAAQ,OAAO;AAAA,MACf,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AAAA,MAChB,UAAU,MAAM;AAAA,MAChB,WAAW,UAAU;AAAA,MACrB,KAAK,IAAI;AAAA,MACT,QAAQ,IAAI;AAAA,MACZ,QAAQ,IAAI;AAAA,MACZ,SAAS,UAAU;AAAA,MACnB,KAAK,IAAI;AAAA,MACT,OAAOA,OAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,KAAK,IAAI;AAAA,MACT,KAAK,IAAI;AAAA,MACT,WAAW,UAAU;AAAA,IACzB;AACA,QAAM,gBAAgB;AAAA,MAClB,4BAA4B,OAAO;AAAA,MACnC,2BAA2BA,OAAM;AAAA,MACjC,0BAA0B,KAAK;AAAA,MAC/B,2BAA2B,MAAM;AAAA,MACjC,yBAAyB,IAAI;AAAA,MAC7B,+BAA+B,UAAU;AAAA,IAC7C;AACA,aAAS,QAAQ,YAAY,YAAY,aAAa;AAClD,YAAM,aAAa,QAAQ,IAAI,UAAU;AACzC,UAAI,cAAc,CAAC,YAAY;AAC3B,eAAO,eAAe,CAAC,WAAW,SAASA,OAAM,KAAK,IAChD,WAAW,OAAOA,OAAM,KAAK,IAC7B,WAAW,MAAM;AAAA,MAC3B;AACA,UAAI,OAAO;AACX,UAAI,CAAC,MAAM;AACP,YAAI,MAAM,QAAQ,UAAU;AACxB,iBAAO,CAAC;AAAA,aACP;AACD,gBAAM,OAAO,MAAM,KAAK,QAAQ,KAAK,CAAC,EACjC,OAAO,SAAO,QAAQ,QAAQ,EAC9B,IAAI,SAAO,KAAK,UAAU,GAAG,CAAC,EAC9B,KAAK,IAAI;AACd,gBAAM,IAAI,MAAM,mBAAmB,2BAA2B,iCAAiC;AAAA,QACnG;AAAA,MACJ;AACA,UAAI,MAAM,QAAQ,UAAU,GAAG;AAC3B,mBAAW,OAAO;AACd,iBAAO,KAAK,OAAO,GAAG;AAAA,MAC9B,WACS,OAAO,eAAe,YAAY;AACvC,eAAO,WAAW,KAAK,MAAM,CAAC;AAAA,MAClC;AACA,UAAI;AACA,eAAO,KAAK,OAAOA,OAAM,KAAK;AAClC,aAAO,KAAK,OAAO,CAACC,OAAM,QAAQ;AAC9B,cAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,OAAO;AAC3D,YAAI,CAAC,QAAQ;AACT,gBAAM,UAAU,KAAK,UAAU,GAAG;AAClC,gBAAM,OAAO,OAAO,KAAK,UAAU,EAC9B,IAAI,SAAO,KAAK,UAAU,GAAG,CAAC,EAC9B,KAAK,IAAI;AACd,gBAAM,IAAI,MAAM,sBAAsB,uBAAuB,MAAM;AAAA,QACvE;AACA,YAAI,CAACA,MAAK,SAAS,MAAM;AACrB,UAAAA,MAAK,KAAK,MAAM;AACpB,eAAOA;AAAA,MACX,GAAG,CAAC,CAAC;AAAA,IACT;AAEA,YAAQ,gBAAgB;AACxB,YAAQ,UAAU;AAAA;AAAA;;;AClGlB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,MAAM;AACV,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,OAAO;AAEX,QAAM,sBAAsB,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI;AAC/E,QAAM,SAAN,MAAa;AAAA,MACT,YAAY,EAAE,QAAQ,YAAY,OAAAC,QAAO,kBAAkB,QAAQ,gBAAgB,iBAAiB,GAAG;AACnG,aAAK,SAAS,MAAM,QAAQ,MAAM,IAC5B,KAAK,QAAQ,QAAQ,QAAQ,IAC7B,SACI,KAAK,QAAQ,MAAM,MAAM,IACzB;AACV,aAAK,OAAQ,OAAO,WAAW,YAAY,UAAW;AACtD,aAAK,YAAY,mBAAmB,KAAK,gBAAgB,CAAC;AAC1D,aAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,MAAMA,MAAK;AACrD,aAAK,kBAAkB,oBAAoB;AAC3C,eAAO,eAAe,MAAM,SAAS,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;AAC5D,eAAO,eAAe,MAAM,SAAS,QAAQ,EAAE,OAAO,OAAO,OAAO,CAAC;AACrE,eAAO,eAAe,MAAM,SAAS,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;AAE5D,aAAK,iBACD,OAAO,mBAAmB,aACpB,iBACA,mBAAmB,OACf,sBACA;AAAA,MAClB;AAAA,MACA,QAAQ;AACJ,cAAM,OAAO,OAAO,OAAO,OAAO,WAAW,OAAO,0BAA0B,IAAI,CAAC;AACnF,aAAK,OAAO,KAAK,KAAK,MAAM;AAC5B,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACtCjB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,YAAY;AAChB,QAAI,mBAAmB;AAEvB,aAAS,kBAAkB,KAAK,SAAS;AANzC;AAOI,YAAM,QAAQ,CAAC;AACf,UAAI,gBAAgB,QAAQ,eAAe;AAC3C,UAAI,QAAQ,eAAe,SAAS,IAAI,YAAY;AAChD,cAAM,MAAM,IAAI,WAAW,SAAS,GAAG;AACvC,YAAI,KAAK;AACL,gBAAM,KAAK,GAAG;AACd,0BAAgB;AAAA,QACpB,WACS,IAAI,WAAW;AACpB,0BAAgB;AAAA,MACxB;AACA,UAAI;AACA,cAAM,KAAK,KAAK;AACpB,YAAM,MAAM,UAAU,uBAAuB,KAAK,OAAO;AACzD,YAAM,EAAE,cAAc,IAAI,IAAI;AAC9B,UAAI,IAAI,eAAe;AACnB,YAAI,MAAM,WAAW;AACjB,gBAAM,QAAQ,EAAE;AACpB,cAAM,KAAK,cAAc,IAAI,aAAa;AAC1C,cAAM,QAAQ,iBAAiB,cAAc,IAAI,EAAE,CAAC;AAAA,MACxD;AACA,UAAI,YAAY;AAChB,UAAI,iBAAiB;AACrB,UAAI,IAAI,UAAU;AACd,YAAI,SAAS,OAAO,IAAI,QAAQ,GAAG;AAC/B,cAAI,IAAI,SAAS,eAAe;AAC5B,kBAAM,KAAK,EAAE;AACjB,cAAI,IAAI,SAAS,eAAe;AAC5B,kBAAM,KAAK,cAAc,IAAI,SAAS,aAAa;AACnD,kBAAM,KAAK,iBAAiB,cAAc,IAAI,EAAE,CAAC;AAAA,UACrD;AAEA,cAAI,mBAAmB,CAAC,CAAC,IAAI;AAC7B,2BAAiB,IAAI,SAAS;AAAA,QAClC;AACA,cAAM,cAAc,iBAAiB,SAAY,MAAO,YAAY;AACpE,YAAI,OAAO,UAAU,UAAU,IAAI,UAAU,KAAK,MAAO,iBAAiB,MAAO,WAAW;AAC5F,YAAI;AACA,kBAAQ,iBAAiB,YAAY,MAAM,IAAI,cAAc,cAAc,CAAC;AAChF,aAAK,KAAK,OAAO,OAAO,KAAK,OAAO,QAChC,MAAM,MAAM,SAAS,OAAO,OAAO;AAGnC,gBAAM,MAAM,SAAS,KAAK,OAAO;AAAA,QACrC;AAEI,gBAAM,KAAK,IAAI;AAAA,MACvB,OACK;AACD,cAAM,KAAK,UAAU,UAAU,IAAI,UAAU,GAAG,CAAC;AAAA,MACrD;AACA,WAAI,SAAI,eAAJ,mBAAgB,QAAQ;AACxB,YAAI,IAAI,SAAS;AACb,gBAAM,KAAK,cAAc,IAAI,OAAO;AACpC,cAAI,GAAG,SAAS,IAAI,GAAG;AACnB,kBAAM,KAAK,KAAK;AAChB,kBAAM,KAAK,iBAAiB,cAAc,IAAI,EAAE,CAAC;AAAA,UACrD,OACK;AACD,kBAAM,KAAK,OAAO,IAAI;AAAA,UAC1B;AAAA,QACJ,OACK;AACD,gBAAM,KAAK,KAAK;AAAA,QACpB;AAAA,MACJ,OACK;AACD,YAAI,KAAK,IAAI;AACb,YAAI,MAAM;AACN,eAAK,GAAG,QAAQ,QAAQ,EAAE;AAC9B,YAAI,IAAI;AACJ,eAAK,CAAC,aAAa,mBAAmB,MAAM,MAAM,SAAS,OAAO;AAC9D,kBAAM,KAAK,EAAE;AACjB,gBAAM,KAAK,iBAAiB,cAAc,cAAc,EAAE,GAAG,EAAE,CAAC;AAAA,QACpE;AAAA,MACJ;AACA,aAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IAC9B;AAEA,YAAQ,oBAAoB;AAAA;AAAA;;;ACtF5B;AAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAIC,cAAa;AACjB,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAI,oBAAoB;AACxB,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,aAAa;AACjB,QAAI,aAAa;AAEjB,QAAM,WAAN,MAAe;AAAA,MACX,YAAY,OAAO,UAAU,SAAS;AAElC,aAAK,gBAAgB;AAErB,aAAK,UAAU;AAEf,aAAK,SAAS,CAAC;AAEf,aAAK,WAAW,CAAC;AACjB,eAAO,eAAe,MAAM,SAAS,WAAW,EAAE,OAAO,SAAS,IAAI,CAAC;AACvE,YAAI,YAAY;AAChB,YAAI,OAAO,aAAa,cAAc,MAAM,QAAQ,QAAQ,GAAG;AAC3D,sBAAY;AAAA,QAChB,WACS,YAAY,UAAa,UAAU;AACxC,oBAAU;AACV,qBAAW;AAAA,QACf;AACA,cAAM,MAAM,OAAO,OAAO;AAAA,UACtB,aAAa;AAAA,UACb,kBAAkB;AAAA,UAClB,UAAU;AAAA,UACV,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,SAAS;AAAA,QACb,GAAG,OAAO;AACV,aAAK,UAAU;AACf,YAAI,EAAE,QAAQ,IAAI;AAClB,YAAI,mCAAS,aAAa;AACtB,eAAK,aAAa,QAAQ,YAAY,WAAW;AACjD,cAAI,KAAK,WAAW,KAAK;AACrB,sBAAU,KAAK,WAAW,KAAK;AAAA,QACvC;AAEI,eAAK,aAAa,IAAI,WAAW,WAAW,EAAE,QAAQ,CAAC;AAC3D,aAAK,UAAU,SAAS,OAAO;AAE/B,aAAK,WACD,UAAU,SAAY,OAAO,KAAK,WAAW,OAAO,WAAW,OAAO;AAAA,MAC9E;AAAA,MAMA,QAAQ;AACJ,cAAM,OAAO,OAAO,OAAO,SAAS,WAAW;AAAA,UAC3C,CAAC,SAAS,YAAY,EAAE,OAAO,SAAS,IAAI;AAAA,QAChD,CAAC;AACD,aAAK,gBAAgB,KAAK;AAC1B,aAAK,UAAU,KAAK;AACpB,aAAK,SAAS,KAAK,OAAO,MAAM;AAChC,aAAK,WAAW,KAAK,SAAS,MAAM;AACpC,aAAK,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO;AAC7C,YAAI,KAAK;AACL,eAAK,aAAa,KAAK,WAAW,MAAM;AAC5C,aAAK,SAAS,KAAK,OAAO,MAAM;AAEhC,aAAK,WAAW,SAAS,OAAO,KAAK,QAAQ,IACvC,KAAK,SAAS,MAAM,KAAK,MAAM,IAC/B,KAAK;AACX,YAAI,KAAK;AACL,eAAK,QAAQ,KAAK,MAAM,MAAM;AAClC,eAAO;AAAA,MACX;AAAA,MAEA,IAAI,OAAO;AACP,YAAI,iBAAiB,KAAK,QAAQ;AAC9B,eAAK,SAAS,IAAI,KAAK;AAAA,MAC/B;AAAA,MAEA,MAAMC,OAAM,OAAO;AACf,YAAI,iBAAiB,KAAK,QAAQ;AAC9B,eAAK,SAAS,MAAMA,OAAM,KAAK;AAAA,MACvC;AAAA,MAUA,YAAY,MAAM,MAAM;AACpB,YAAI,CAAC,KAAK,QAAQ;AACd,gBAAM,OAAO,QAAQ,YAAY,IAAI;AACrC,eAAK,SAED,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,QAAQ,cAAc,QAAQ,KAAK,IAAI,IAAI;AAAA,QAC7E;AACA,eAAO,IAAI,MAAM,MAAM,KAAK,MAAM;AAAA,MACtC;AAAA,MACA,WAAW,OAAO,UAAU,SAAS;AACjC,YAAI,YAAY;AAChB,YAAI,OAAO,aAAa,YAAY;AAChC,kBAAQ,SAAS,KAAK,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK;AAC9C,sBAAY;AAAA,QAChB,WACS,MAAM,QAAQ,QAAQ,GAAG;AAC9B,gBAAM,WAAW,CAAC,MAAM,OAAO,MAAM,YAAY,aAAa,UAAU,aAAa;AACrF,gBAAM,QAAQ,SAAS,OAAO,QAAQ,EAAE,IAAI,MAAM;AAClD,cAAI,MAAM,SAAS;AACf,uBAAW,SAAS,OAAO,KAAK;AACpC,sBAAY;AAAA,QAChB,WACS,YAAY,UAAa,UAAU;AACxC,oBAAU;AACV,qBAAW;AAAA,QACf;AACA,cAAM,EAAE,uBAAuB,cAAc,MAAM,eAAe,UAAU,IAAI,IAAI,WAAW,CAAC;AAChG,cAAM,EAAE,UAAU,YAAY,cAAc,IAAI,QAAQ;AAAA,UAAkB;AAAA,UAE1E,gBAAgB;AAAA,QAAG;AACnB,cAAM,MAAM;AAAA,UACR,uBAAuB,yBAAyB;AAAA,UAChD,eAAe,iBAAiB;AAAA,UAChC;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV,QAAQ,KAAK;AAAA,UACb;AAAA,QACJ;AACA,cAAM,OAAO,WAAW,WAAW,OAAO,KAAK,GAAG;AAClD,YAAI,QAAQ,SAAS,aAAa,IAAI;AAClC,eAAK,OAAO;AAChB,mBAAW;AACX,eAAO;AAAA,MACX;AAAA,MAKA,WAAW,KAAK,OAAO,UAAU,CAAC,GAAG;AACjC,cAAM,IAAI,KAAK,WAAW,KAAK,MAAM,OAAO;AAC5C,cAAM,IAAI,KAAK,WAAW,OAAO,MAAM,OAAO;AAC9C,eAAO,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,MAC7B;AAAA,MAKA,OAAO,KAAK;AACR,eAAO,iBAAiB,KAAK,QAAQ,IAAI,KAAK,SAAS,OAAO,GAAG,IAAI;AAAA,MACzE;AAAA,MAKA,SAASA,OAAM;AACX,YAAID,YAAW,YAAYC,KAAI,GAAG;AAC9B,cAAI,KAAK,YAAY;AACjB,mBAAO;AAEX,eAAK,WAAW;AAChB,iBAAO;AAAA,QACX;AACA,eAAO,iBAAiB,KAAK,QAAQ,IAC/B,KAAK,SAAS,SAASA,KAAI,IAC3B;AAAA,MACV;AAAA,MAMA,IAAI,KAAK,YAAY;AACjB,eAAO,SAAS,aAAa,KAAK,QAAQ,IACpC,KAAK,SAAS,IAAI,KAAK,UAAU,IACjC;AAAA,MACV;AAAA,MAMA,MAAMA,OAAM,YAAY;AACpB,YAAID,YAAW,YAAYC,KAAI;AAC3B,iBAAO,CAAC,cAAc,SAAS,SAAS,KAAK,QAAQ,IAC/C,KAAK,SAAS,QACd,KAAK;AACf,eAAO,SAAS,aAAa,KAAK,QAAQ,IACpC,KAAK,SAAS,MAAMA,OAAM,UAAU,IACpC;AAAA,MACV;AAAA,MAIA,IAAI,KAAK;AACL,eAAO,SAAS,aAAa,KAAK,QAAQ,IAAI,KAAK,SAAS,IAAI,GAAG,IAAI;AAAA,MAC3E;AAAA,MAIA,MAAMA,OAAM;AACR,YAAID,YAAW,YAAYC,KAAI;AAC3B,iBAAO,KAAK,aAAa;AAC7B,eAAO,SAAS,aAAa,KAAK,QAAQ,IAAI,KAAK,SAAS,MAAMA,KAAI,IAAI;AAAA,MAC9E;AAAA,MAKA,IAAI,KAAK,OAAO;AACZ,YAAI,KAAK,YAAY,MAAM;AAEvB,eAAK,WAAWD,YAAW,mBAAmB,KAAK,QAAQ,CAAC,GAAG,GAAG,KAAK;AAAA,QAC3E,WACS,iBAAiB,KAAK,QAAQ,GAAG;AACtC,eAAK,SAAS,IAAI,KAAK,KAAK;AAAA,QAChC;AAAA,MACJ;AAAA,MAKA,MAAMC,OAAM,OAAO;AACf,YAAID,YAAW,YAAYC,KAAI,GAAG;AAE9B,eAAK,WAAW;AAAA,QACpB,WACS,KAAK,YAAY,MAAM;AAE5B,eAAK,WAAWD,YAAW,mBAAmB,KAAK,QAAQ,MAAM,KAAKC,KAAI,GAAG,KAAK;AAAA,QACtF,WACS,iBAAiB,KAAK,QAAQ,GAAG;AACtC,eAAK,SAAS,MAAMA,OAAM,KAAK;AAAA,QACnC;AAAA,MACJ;AAAA,MAQA,UAAU,SAAS,UAAU,CAAC,GAAG;AAC7B,YAAI,OAAO,YAAY;AACnB,oBAAU,OAAO,OAAO;AAC5B,YAAI;AACJ,gBAAQ,SAAS;AAAA,UACb,KAAK;AACD,gBAAI,KAAK;AACL,mBAAK,WAAW,KAAK,UAAU;AAAA;AAE/B,mBAAK,aAAa,IAAI,WAAW,WAAW,EAAE,SAAS,MAAM,CAAC;AAClE,kBAAM,EAAE,kBAAkB,OAAO,QAAQ,WAAW;AACpD;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,KAAK;AACL,mBAAK,WAAW,KAAK,UAAU;AAAA;AAE/B,mBAAK,aAAa,IAAI,WAAW,WAAW,EAAE,QAAQ,CAAC;AAC3D,kBAAM,EAAE,kBAAkB,MAAM,QAAQ,OAAO;AAC/C;AAAA,UACJ,KAAK;AACD,gBAAI,KAAK;AACL,qBAAO,KAAK;AAChB,kBAAM;AACN;AAAA,UACJ,SAAS;AACL,kBAAM,KAAK,KAAK,UAAU,OAAO;AACjC,kBAAM,IAAI,MAAM,+DAA+D,IAAI;AAAA,UACvF;AAAA,QACJ;AAEA,YAAI,QAAQ,kBAAkB;AAC1B,eAAK,SAAS,QAAQ;AAAA,iBACjB;AACL,eAAK,SAAS,IAAI,OAAO,OAAO,OAAO,OAAO,KAAK,OAAO,CAAC;AAAA;AAE3D,gBAAM,IAAI,MAAM,qEAAqE;AAAA,MAC7F;AAAA,MAEA,KAAK,EAAE,MAAM,SAAS,UAAU,eAAe,UAAU,QAAQ,IAAI,CAAC,GAAG;AACrE,cAAM,MAAM;AAAA,UACR,SAAS,oBAAI,IAAI;AAAA,UACjB,KAAK;AAAA,UACL,MAAM,CAAC;AAAA,UACP,UAAU,aAAa;AAAA,UACvB,cAAc;AAAA,UACd,eAAe,OAAO,kBAAkB,WAAW,gBAAgB;AAAA,QACvE;AACA,cAAM,MAAM,KAAK,KAAK,KAAK,UAAU,WAAW,IAAI,GAAG;AACvD,YAAI,OAAO,aAAa;AACpB,qBAAW,EAAE,OAAO,KAAAC,KAAI,KAAK,IAAI,QAAQ,OAAO;AAC5C,qBAASA,MAAK,KAAK;AAC3B,eAAO,OAAO,YAAY,aACpB,aAAa,aAAa,SAAS,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,IACvD;AAAA,MACV;AAAA,MAOA,OAAO,SAAS,UAAU;AACtB,eAAO,KAAK,KAAK,EAAE,MAAM,MAAM,SAAS,UAAU,OAAO,SAAS,CAAC;AAAA,MACvE;AAAA,MAEA,SAAS,UAAU,CAAC,GAAG;AACnB,YAAI,KAAK,OAAO,SAAS;AACrB,gBAAM,IAAI,MAAM,4CAA4C;AAChE,YAAI,YAAY,YACX,CAAC,OAAO,UAAU,QAAQ,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,IAAI;AACpE,gBAAM,IAAI,KAAK,UAAU,QAAQ,MAAM;AACvC,gBAAM,IAAI,MAAM,mDAAmD,GAAG;AAAA,QAC1E;AACA,eAAO,kBAAkB,kBAAkB,MAAM,OAAO;AAAA,MAC5D;AAAA,IACJ;AACA,aAAS,iBAAiB,UAAU;AAChC,UAAI,SAAS,aAAa,QAAQ;AAC9B,eAAO;AACX,YAAM,IAAI,MAAM,iDAAiD;AAAA,IACrE;AAEA,YAAQ,WAAW;AAAA;AAAA;;;AChVnB;AAAA;AAAA;AAEA,QAAM,YAAN,cAAwB,MAAM;AAAA,MAC1B,YAAY,MAAM,KAAK,MAAM,SAAS;AAClC,cAAM;AACN,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,MAAM;AAAA,MACf;AAAA,IACJ;AACA,QAAM,iBAAN,cAA6B,UAAU;AAAA,MACnC,YAAY,KAAK,MAAM,SAAS;AAC5B,cAAM,kBAAkB,KAAK,MAAM,OAAO;AAAA,MAC9C;AAAA,IACJ;AACA,QAAM,cAAN,cAA0B,UAAU;AAAA,MAChC,YAAY,KAAK,MAAM,SAAS;AAC5B,cAAM,eAAe,KAAK,MAAM,OAAO;AAAA,MAC3C;AAAA,IACJ;AACA,QAAM,gBAAgB,CAAC,KAAK,OAAO,CAAC,UAAU;AAC1C,UAAI,MAAM,IAAI,OAAO;AACjB;AACJ,YAAM,UAAU,MAAM,IAAI,IAAI,SAAO,GAAG,QAAQ,GAAG,CAAC;AACpD,YAAM,EAAE,MAAM,IAAI,IAAI,MAAM,QAAQ;AACpC,YAAM,WAAW,YAAY,gBAAgB;AAC7C,UAAI,KAAK,MAAM;AACf,UAAI,UAAU,IACT,UAAU,GAAG,WAAW,OAAO,IAAI,GAAG,WAAW,KAAK,EACtD,QAAQ,YAAY,EAAE;AAE3B,UAAI,MAAM,MAAM,QAAQ,SAAS,IAAI;AACjC,cAAM,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,SAAS,EAAE;AACvD,kBAAU,WAAM,QAAQ,UAAU,SAAS;AAC3C,cAAM,YAAY;AAAA,MACtB;AACA,UAAI,QAAQ,SAAS;AACjB,kBAAU,QAAQ,UAAU,GAAG,EAAE,IAAI;AAEzC,UAAI,OAAO,KAAK,OAAO,KAAK,QAAQ,UAAU,GAAG,EAAE,CAAC,GAAG;AAEnD,YAAI,OAAO,IAAI,UAAU,GAAG,WAAW,OAAO,IAAI,GAAG,WAAW,OAAO,EAAE;AACzE,YAAI,KAAK,SAAS;AACd,iBAAO,KAAK,UAAU,GAAG,EAAE,IAAI;AACnC,kBAAU,OAAO;AAAA,MACrB;AACA,UAAI,OAAO,KAAK,OAAO,GAAG;AACtB,YAAI,QAAQ;AACZ,cAAM,MAAM,MAAM,QAAQ;AAC1B,YAAI,OAAO,IAAI,SAAS,QAAQ,IAAI,MAAM,KAAK;AAC3C,kBAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;AAAA,QACxD;AACA,cAAM,UAAU,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,KAAK;AACjD,cAAM,WAAW;AAAA;AAAA,EAAQ;AAAA,EAAY;AAAA;AAAA,MACzC;AAAA,IACJ;AAEA,YAAQ,YAAY;AACpB,YAAQ,iBAAiB;AACzB,YAAQ,cAAc;AACtB,YAAQ,gBAAgB;AAAA;AAAA;;;AC7DxB;AAAA;AAAA;AAEA,aAAS,aAAa,QAAQ,EAAE,MAAM,WAAW,MAAM,QAAQ,SAAS,cAAc,eAAe,GAAG;AACpG,UAAI,cAAc;AAClB,UAAI,YAAY;AAChB,UAAI,WAAW;AACf,UAAI,UAAU;AACd,UAAI,aAAa;AACjB,UAAI,aAAa;AACjB,UAAI,WAAW;AACf,UAAI,MAAM;AACV,UAAI,SAAS;AACb,UAAI,MAAM;AACV,UAAI,mBAAmB;AACvB,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,iBAAW,SAAS,QAAQ;AACxB,YAAI,UAAU;AACV,cAAI,MAAM,SAAS,WACf,MAAM,SAAS,aACf,MAAM,SAAS;AACf,oBAAQ,MAAM,QAAQ,gBAAgB,uEAAuE;AACjH,qBAAW;AAAA,QACf;AACA,YAAI,KAAK;AACL,cAAI,aAAa,MAAM,SAAS,aAAa,MAAM,SAAS,WAAW;AACnE,oBAAQ,KAAK,iBAAiB,qCAAqC;AAAA,UACvE;AACA,gBAAM;AAAA,QACV;AACA,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AAID,gBAAI,CAAC,SACA,cAAc,gBAAe,6BAAM,UAAS,sBAC7C,MAAM,OAAO,SAAS,GAAI,GAAG;AAC7B,oBAAM;AAAA,YACV;AACA,uBAAW;AACX;AAAA,UACJ,KAAK,WAAW;AACZ,gBAAI,CAAC;AACD,sBAAQ,OAAO,gBAAgB,wEAAwE;AAC3G,kBAAM,KAAK,MAAM,OAAO,UAAU,CAAC,KAAK;AACxC,gBAAI,CAAC;AACD,wBAAU;AAAA;AAEV,yBAAW,aAAa;AAC5B,yBAAa;AACb,wBAAY;AACZ;AAAA,UACJ;AAAA,UACA,KAAK;AACD,gBAAI,WAAW;AACX,kBAAI;AACA,2BAAW,MAAM;AAAA,uBACZ,CAAC,SAAS,cAAc;AAC7B,8BAAc;AAAA,YACtB;AAEI,4BAAc,MAAM;AACxB,wBAAY;AACZ,yBAAa;AACb,gBAAI,UAAU;AACV,iCAAmB;AACvB,uBAAW;AACX;AAAA,UACJ,KAAK;AACD,gBAAI;AACA,sBAAQ,OAAO,oBAAoB,oCAAoC;AAC3E,gBAAI,MAAM,OAAO,SAAS,GAAG;AACzB,sBAAQ,MAAM,SAAS,MAAM,OAAO,SAAS,GAAG,aAAa,mCAAmC,IAAI;AACxG,qBAAS;AACT,gBAAI,UAAU;AACV,sBAAQ,MAAM;AAClB,wBAAY;AACZ,uBAAW;AACX,uBAAW;AACX;AAAA,UACJ,KAAK,OAAO;AACR,gBAAI;AACA,sBAAQ,OAAO,iBAAiB,iCAAiC;AACrE,kBAAM;AACN,gBAAI,UAAU;AACV,sBAAQ,MAAM;AAClB,wBAAY;AACZ,uBAAW;AACX,uBAAW;AACX;AAAA,UACJ;AAAA,UACA,KAAK;AAED,gBAAI,UAAU;AACV,sBAAQ,OAAO,kBAAkB,sCAAsC,MAAM,kBAAkB;AACnG,gBAAI;AACA,sBAAQ,OAAO,oBAAoB,cAAc,MAAM,aAAa,QAAQ,cAAc;AAC9F,oBAAQ;AACR,wBACI,cAAc,kBAAkB,cAAc;AAClD,uBAAW;AACX;AAAA,UACJ,KAAK;AACD,gBAAI,MAAM;AACN,kBAAI;AACA,wBAAQ,OAAO,oBAAoB,mBAAmB,MAAM;AAChE,sBAAQ;AACR,0BAAY;AACZ,yBAAW;AACX;AAAA,YACJ;AAAA,UAEJ;AACI,oBAAQ,OAAO,oBAAoB,cAAc,MAAM,YAAY;AACnE,wBAAY;AACZ,uBAAW;AAAA,QACnB;AAAA,MACJ;AACA,YAAM,OAAO,OAAO,OAAO,SAAS;AACpC,YAAM,MAAM,OAAO,KAAK,SAAS,KAAK,OAAO,SAAS;AACtD,UAAI,YACA,QACA,KAAK,SAAS,WACd,KAAK,SAAS,aACd,KAAK,SAAS,YACb,KAAK,SAAS,YAAY,KAAK,WAAW,KAAK;AAChD,gBAAQ,KAAK,QAAQ,gBAAgB,uEAAuE;AAAA,MAChH;AACA,UAAI,QACE,aAAa,IAAI,UAAU,iBACzB,6BAAM,UAAS,gBACf,6BAAM,UAAS;AACnB,gBAAQ,KAAK,iBAAiB,qCAAqC;AACvE,aAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,SAAS;AAAA,MACpB;AAAA,IACJ;AAEA,YAAQ,eAAe;AAAA;AAAA;;;ACrJvB;AAAA;AAAA;AAEA,aAAS,gBAAgB,KAAK;AAC1B,UAAI,CAAC;AACD,eAAO;AACX,cAAQ,IAAI,MAAM;AAAA,QACd,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,cAAI,IAAI,OAAO,SAAS,IAAI;AACxB,mBAAO;AACX,cAAI,IAAI;AACJ,uBAAW,MAAM,IAAI;AACjB,kBAAI,GAAG,SAAS;AACZ,uBAAO;AAAA;AACnB,iBAAO;AAAA,QACX,KAAK;AACD,qBAAW,MAAM,IAAI,OAAO;AACxB,uBAAW,MAAM,GAAG;AAChB,kBAAI,GAAG,SAAS;AACZ,uBAAO;AACf,gBAAI,GAAG;AACH,yBAAW,MAAM,GAAG;AAChB,oBAAI,GAAG,SAAS;AACZ,yBAAO;AAAA;AACnB,gBAAI,gBAAgB,GAAG,GAAG,KAAK,gBAAgB,GAAG,KAAK;AACnD,qBAAO;AAAA,UACf;AACA,iBAAO;AAAA,QACX;AACI,iBAAO;AAAA,MACf;AAAA,IACJ;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;ACnC1B;AAAA;AAAA;AAEA,QAAI,sBAAsB;AAE1B,aAAS,gBAAgB,QAAQ,IAAI,SAAS;AAC1C,WAAI,yBAAI,UAAS,mBAAmB;AAChC,cAAM,MAAM,GAAG,IAAI;AACnB,YAAI,IAAI,WAAW,WACd,IAAI,WAAW,OAAO,IAAI,WAAW,QACtC,oBAAoB,gBAAgB,EAAE,GAAG;AACzC,gBAAM,MAAM;AACZ,kBAAQ,KAAK,cAAc,KAAK,IAAI;AAAA,QACxC;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;AChB1B;AAAA;AAAA;AAEA,QAAI,WAAW;AAEf,aAAS,YAAY,KAAK,OAAO,QAAQ;AACrC,YAAM,EAAE,WAAW,IAAI,IAAI;AAC3B,UAAI,eAAe;AACf,eAAO;AACX,YAAM,UAAU,OAAO,eAAe,aAChC,aACA,CAAC,GAAG,MAAM,MAAM,KAAM,SAAS,SAAS,CAAC,KAAK,SAAS,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE;AAC1F,aAAO,MAAM,KAAK,UAAQ,QAAQ,KAAK,KAAK,MAAM,CAAC;AAAA,IACvD;AAEA,YAAQ,cAAc;AAAA;AAAA;;;ACdtB;AAAA;AAAA;AAEA,QAAI,OAAO;AACX,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,sBAAsB;AAC1B,QAAI,sBAAsB;AAC1B,QAAI,kBAAkB;AAEtB,QAAM,cAAc;AACpB,aAAS,gBAAgB,EAAE,aAAa,iBAAiB,GAAG,KAAK,IAAI,SAAS,KAAK;AAVnF;AAWI,YAAM,aAAY,2BAAK,cAAa,QAAQ;AAC5C,YAAM,MAAM,IAAI,UAAU,IAAI,MAAM;AACpC,UAAI,IAAI;AACJ,YAAI,SAAS;AACjB,UAAI,SAAS,GAAG;AAChB,UAAI,aAAa;AACjB,iBAAW,YAAY,GAAG,OAAO;AAC7B,cAAM,EAAE,OAAO,KAAK,KAAK,MAAM,IAAI;AAEnC,cAAM,WAAW,aAAa,aAAa,OAAO;AAAA,UAC9C,WAAW;AAAA,UACX,MAAM,QAAO,2BAAM;AAAA,UACnB;AAAA,UACA;AAAA,UACA,cAAc,GAAG;AAAA,UACjB,gBAAgB;AAAA,QACpB,CAAC;AACD,cAAM,cAAc,CAAC,SAAS;AAC9B,YAAI,aAAa;AACb,cAAI,KAAK;AACL,gBAAI,IAAI,SAAS;AACb,sBAAQ,QAAQ,yBAAyB,yDAAyD;AAAA,qBAC7F,YAAY,OAAO,IAAI,WAAW,GAAG;AAC1C,sBAAQ,QAAQ,cAAc,WAAW;AAAA,UACjD;AACA,cAAI,CAAC,SAAS,UAAU,CAAC,SAAS,OAAO,CAAC,KAAK;AAC3C,yBAAa,SAAS;AACtB,gBAAI,SAAS,SAAS;AAClB,kBAAI,IAAI;AACJ,oBAAI,WAAW,OAAO,SAAS;AAAA;AAE/B,oBAAI,UAAU,SAAS;AAAA,YAC/B;AACA;AAAA,UACJ;AACA,cAAI,SAAS,oBAAoB,oBAAoB,gBAAgB,GAAG,GAAG;AACvE,oBAAQ,OAAO,MAAM,MAAM,SAAS,IAAI,0BAA0B,2CAA2C;AAAA,UACjH;AAAA,QACJ,aACS,cAAS,UAAT,mBAAgB,YAAW,GAAG,QAAQ;AAC3C,kBAAQ,QAAQ,cAAc,WAAW;AAAA,QAC7C;AAEA,YAAI,QAAQ;AACZ,cAAM,WAAW,SAAS;AAC1B,cAAM,UAAU,MACV,YAAY,KAAK,KAAK,UAAU,OAAO,IACvC,iBAAiB,KAAK,UAAU,OAAO,MAAM,UAAU,OAAO;AACpE,YAAI,IAAI,OAAO;AACX,8BAAoB,gBAAgB,GAAG,QAAQ,KAAK,OAAO;AAC/D,YAAI,QAAQ;AACZ,YAAI,gBAAgB,YAAY,KAAK,IAAI,OAAO,OAAO;AACnD,kBAAQ,UAAU,iBAAiB,yBAAyB;AAEhE,cAAM,aAAa,aAAa,aAAa,OAAO,CAAC,GAAG;AAAA,UACpD,WAAW;AAAA,UACX,MAAM;AAAA,UACN,QAAQ,QAAQ,MAAM;AAAA,UACtB;AAAA,UACA,cAAc,GAAG;AAAA,UACjB,gBAAgB,CAAC,OAAO,IAAI,SAAS;AAAA,QACzC,CAAC;AACD,iBAAS,WAAW;AACpB,YAAI,WAAW,OAAO;AAClB,cAAI,aAAa;AACb,iBAAI,+BAAO,UAAS,eAAe,CAAC,WAAW;AAC3C,sBAAQ,QAAQ,yBAAyB,qDAAqD;AAClG,gBAAI,IAAI,QAAQ,UACZ,SAAS,QAAQ,WAAW,MAAM,SAAS;AAC3C,sBAAQ,QAAQ,OAAO,uBAAuB,6FAA6F;AAAA,UACnJ;AAEA,gBAAM,YAAY,QACZ,YAAY,KAAK,OAAO,YAAY,OAAO,IAC3C,iBAAiB,KAAK,QAAQ,KAAK,MAAM,YAAY,OAAO;AAClE,cAAI,IAAI,OAAO;AACX,gCAAoB,gBAAgB,GAAG,QAAQ,OAAO,OAAO;AACjE,mBAAS,UAAU,MAAM;AACzB,gBAAM,OAAO,IAAI,KAAK,KAAK,SAAS,SAAS;AAC7C,cAAI,IAAI,QAAQ;AACZ,iBAAK,WAAW;AACpB,cAAI,MAAM,KAAK,IAAI;AAAA,QACvB,OACK;AAED,cAAI;AACA,oBAAQ,QAAQ,OAAO,gBAAgB,qDAAqD;AAChG,cAAI,WAAW,SAAS;AACpB,gBAAI,QAAQ;AACR,sBAAQ,WAAW,OAAO,WAAW;AAAA;AAErC,sBAAQ,UAAU,WAAW;AAAA,UACrC;AACA,gBAAM,OAAO,IAAI,KAAK,KAAK,OAAO;AAClC,cAAI,IAAI,QAAQ;AACZ,iBAAK,WAAW;AACpB,cAAI,MAAM,KAAK,IAAI;AAAA,QACvB;AAAA,MACJ;AACA,UAAI,cAAc,aAAa;AAC3B,gBAAQ,YAAY,cAAc,mCAAmC;AACzE,UAAI,QAAQ,CAAC,GAAG,QAAQ,QAAQ,cAAc,MAAM;AACpD,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;ACpH1B;AAAA;AAAA;AAEA,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,sBAAsB;AAE1B,aAAS,gBAAgB,EAAE,aAAa,iBAAiB,GAAG,KAAK,IAAI,SAAS,KAAK;AAC/E,YAAM,aAAY,2BAAK,cAAa,QAAQ;AAC5C,YAAM,MAAM,IAAI,UAAU,IAAI,MAAM;AACpC,UAAI,IAAI;AACJ,YAAI,SAAS;AACjB,UAAI,IAAI;AACJ,YAAI,QAAQ;AAChB,UAAI,SAAS,GAAG;AAChB,UAAI,aAAa;AACjB,iBAAW,EAAE,OAAO,MAAM,KAAK,GAAG,OAAO;AACrC,cAAM,QAAQ,aAAa,aAAa,OAAO;AAAA,UAC3C,WAAW;AAAA,UACX,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,cAAc,GAAG;AAAA,UACjB,gBAAgB;AAAA,QACpB,CAAC;AACD,YAAI,CAAC,MAAM,OAAO;AACd,cAAI,MAAM,UAAU,MAAM,OAAO,OAAO;AACpC,gBAAI,SAAS,MAAM,SAAS;AACxB,sBAAQ,MAAM,KAAK,cAAc,kDAAkD;AAAA;AAEnF,sBAAQ,QAAQ,gBAAgB,mCAAmC;AAAA,UAC3E,OACK;AACD,yBAAa,MAAM;AACnB,gBAAI,MAAM;AACN,kBAAI,UAAU,MAAM;AACxB;AAAA,UACJ;AAAA,QACJ;AACA,cAAM,OAAO,QACP,YAAY,KAAK,OAAO,OAAO,OAAO,IACtC,iBAAiB,KAAK,MAAM,KAAK,OAAO,MAAM,OAAO,OAAO;AAClE,YAAI,IAAI,OAAO;AACX,8BAAoB,gBAAgB,GAAG,QAAQ,OAAO,OAAO;AACjE,iBAAS,KAAK,MAAM;AACpB,YAAI,MAAM,KAAK,IAAI;AAAA,MACvB;AACA,UAAI,QAAQ,CAAC,GAAG,QAAQ,QAAQ,cAAc,MAAM;AACpD,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;AClD1B;AAAA;AAAA;AAEA,aAAS,WAAW,KAAK,QAAQ,UAAU,SAAS;AAChD,UAAI,UAAU;AACd,UAAI,KAAK;AACL,YAAI,WAAW;AACf,YAAI,MAAM;AACV,mBAAW,SAAS,KAAK;AACrB,gBAAM,EAAE,QAAQ,KAAK,IAAI;AACzB,kBAAQ,MAAM;AAAA,YACV,KAAK;AACD,yBAAW;AACX;AAAA,YACJ,KAAK,WAAW;AACZ,kBAAI,YAAY,CAAC;AACb,wBAAQ,OAAO,gBAAgB,wEAAwE;AAC3G,oBAAM,KAAK,OAAO,UAAU,CAAC,KAAK;AAClC,kBAAI,CAAC;AACD,0BAAU;AAAA;AAEV,2BAAW,MAAM;AACrB,oBAAM;AACN;AAAA,YACJ;AAAA,YACA,KAAK;AACD,kBAAI;AACA,uBAAO;AACX,yBAAW;AACX;AAAA,YACJ;AACI,sBAAQ,OAAO,oBAAoB,cAAc,kBAAkB;AAAA,UAC3E;AACA,oBAAU,OAAO;AAAA,QACrB;AAAA,MACJ;AACA,aAAO,EAAE,SAAS,OAAO;AAAA,IAC7B;AAEA,YAAQ,aAAa;AAAA;AAAA;;;ACtCrB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,aAAa;AACjB,QAAI,eAAe;AACnB,QAAI,sBAAsB;AAC1B,QAAI,kBAAkB;AAEtB,QAAM,WAAW;AACjB,QAAM,UAAU,CAAC,UAAU,UAAU,MAAM,SAAS,eAAe,MAAM,SAAS;AAClF,aAAS,sBAAsB,EAAE,aAAa,iBAAiB,GAAG,KAAK,IAAI,SAAS,KAAK;AACrF,YAAM,QAAQ,GAAG,MAAM,WAAW;AAClC,YAAM,SAAS,QAAQ,aAAa;AACpC,YAAM,aAAa,2BAAK,eAAc,QAAQ,QAAQ,UAAU,QAAQ;AACxE,YAAM,OAAO,IAAI,UAAU,IAAI,MAAM;AACrC,WAAK,OAAO;AACZ,YAAM,SAAS,IAAI;AACnB,UAAI;AACA,YAAI,SAAS;AACjB,UAAI,IAAI;AACJ,YAAI,QAAQ;AAChB,UAAI,SAAS,GAAG,SAAS,GAAG,MAAM,OAAO;AACzC,eAAS,IAAI,GAAG,IAAI,GAAG,MAAM,QAAQ,EAAE,GAAG;AACtC,cAAM,WAAW,GAAG,MAAM;AAC1B,cAAM,EAAE,OAAO,KAAK,KAAK,MAAM,IAAI;AACnC,cAAM,QAAQ,aAAa,aAAa,OAAO;AAAA,UAC3C,MAAM;AAAA,UACN,WAAW;AAAA,UACX,MAAM,QAAO,2BAAM;AAAA,UACnB;AAAA,UACA;AAAA,UACA,cAAc,GAAG;AAAA,UACjB,gBAAgB;AAAA,QACpB,CAAC;AACD,YAAI,CAAC,MAAM,OAAO;AACd,cAAI,CAAC,MAAM,UAAU,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO;AAC/C,gBAAI,MAAM,KAAK,MAAM;AACjB,sBAAQ,MAAM,OAAO,oBAAoB,mBAAmB,QAAQ;AAAA,qBAC/D,IAAI,GAAG,MAAM,SAAS;AAC3B,sBAAQ,MAAM,OAAO,oBAAoB,4BAA4B,QAAQ;AACjF,gBAAI,MAAM,SAAS;AACf,kBAAI,KAAK;AACL,qBAAK,WAAW,OAAO,MAAM;AAAA;AAE7B,qBAAK,UAAU,MAAM;AAAA,YAC7B;AACA,qBAAS,MAAM;AACf;AAAA,UACJ;AACA,cAAI,CAAC,SAAS,IAAI,QAAQ,UAAU,oBAAoB,gBAAgB,GAAG;AACvE;AAAA,cAAQ;AAAA,cACR;AAAA,cAA0B;AAAA,YAAkE;AAAA,QACpG;AACA,YAAI,MAAM,GAAG;AACT,cAAI,MAAM;AACN,oBAAQ,MAAM,OAAO,oBAAoB,mBAAmB,QAAQ;AAAA,QAC5E,OACK;AACD,cAAI,CAAC,MAAM;AACP,oBAAQ,MAAM,OAAO,gBAAgB,qBAAqB,cAAc;AAC5E,cAAI,MAAM,SAAS;AACf,gBAAI,kBAAkB;AACtB;AAAM,yBAAW,MAAM,OAAO;AAC1B,wBAAQ,GAAG,MAAM;AAAA,kBACb,KAAK;AAAA,kBACL,KAAK;AACD;AAAA,kBACJ,KAAK;AACD,sCAAkB,GAAG,OAAO,UAAU,CAAC;AACvC,0BAAM;AAAA,kBACV;AACI,0BAAM;AAAA,gBACd;AAAA,cACJ;AACA,gBAAI,iBAAiB;AACjB,kBAAI,OAAO,KAAK,MAAM,KAAK,MAAM,SAAS;AAC1C,kBAAI,SAAS,OAAO,IAAI;AACpB,uBAAO,KAAK,SAAS,KAAK;AAC9B,kBAAI,KAAK;AACL,qBAAK,WAAW,OAAO;AAAA;AAEvB,qBAAK,UAAU;AACnB,oBAAM,UAAU,MAAM,QAAQ,UAAU,gBAAgB,SAAS,CAAC;AAAA,YACtE;AAAA,UACJ;AAAA,QACJ;AACA,YAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,OAAO;AAGhC,gBAAM,YAAY,QACZ,YAAY,KAAK,OAAO,OAAO,OAAO,IACtC,iBAAiB,KAAK,MAAM,KAAK,KAAK,MAAM,OAAO,OAAO;AAChE,eAAK,MAAM,KAAK,SAAS;AACzB,mBAAS,UAAU,MAAM;AACzB,cAAI,QAAQ,KAAK;AACb,oBAAQ,UAAU,OAAO,iBAAiB,QAAQ;AAAA,QAC1D,OACK;AAGD,cAAI,QAAQ;AACZ,gBAAM,WAAW,MAAM;AACvB,gBAAM,UAAU,MACV,YAAY,KAAK,KAAK,OAAO,OAAO,IACpC,iBAAiB,KAAK,UAAU,OAAO,MAAM,OAAO,OAAO;AACjE,cAAI,QAAQ,GAAG;AACX,oBAAQ,QAAQ,OAAO,iBAAiB,QAAQ;AACpD,cAAI,QAAQ;AAEZ,gBAAM,aAAa,aAAa,aAAa,OAAO,CAAC,GAAG;AAAA,YACpD,MAAM;AAAA,YACN,WAAW;AAAA,YACX,MAAM;AAAA,YACN,QAAQ,QAAQ,MAAM;AAAA,YACtB;AAAA,YACA,cAAc,GAAG;AAAA,YACjB,gBAAgB;AAAA,UACpB,CAAC;AACD,cAAI,WAAW,OAAO;AAClB,gBAAI,CAAC,SAAS,CAAC,MAAM,SAAS,IAAI,QAAQ,QAAQ;AAC9C,kBAAI;AACA,2BAAW,MAAM,KAAK;AAClB,sBAAI,OAAO,WAAW;AAClB;AACJ,sBAAI,GAAG,SAAS,WAAW;AACvB,4BAAQ,IAAI,0BAA0B,kEAAkE;AACxG;AAAA,kBACJ;AAAA,gBACJ;AACJ,kBAAI,MAAM,QAAQ,WAAW,MAAM,SAAS;AACxC,wBAAQ,WAAW,OAAO,uBAAuB,6FAA6F;AAAA,YACtJ;AAAA,UACJ,WACS,OAAO;AACZ,gBAAI,YAAY,SAAS,MAAM,UAAU,MAAM,OAAO,OAAO;AACzD,sBAAQ,OAAO,gBAAgB,4BAA4B,QAAQ;AAAA;AAEnE,sBAAQ,WAAW,OAAO,gBAAgB,0BAA0B,cAAc;AAAA,UAC1F;AAEA,gBAAM,YAAY,QACZ,YAAY,KAAK,OAAO,YAAY,OAAO,IAC3C,WAAW,QACP,iBAAiB,KAAK,WAAW,KAAK,KAAK,MAAM,YAAY,OAAO,IACpE;AACV,cAAI,WAAW;AACX,gBAAI,QAAQ,KAAK;AACb,sBAAQ,UAAU,OAAO,iBAAiB,QAAQ;AAAA,UAC1D,WACS,WAAW,SAAS;AACzB,gBAAI,QAAQ;AACR,sBAAQ,WAAW,OAAO,WAAW;AAAA;AAErC,sBAAQ,UAAU,WAAW;AAAA,UACrC;AACA,gBAAM,OAAO,IAAI,KAAK,KAAK,SAAS,SAAS;AAC7C,cAAI,IAAI,QAAQ;AACZ,iBAAK,WAAW;AACpB,cAAI,OAAO;AACP,kBAAM,MAAM;AACZ,gBAAI,gBAAgB,YAAY,KAAK,IAAI,OAAO,OAAO;AACnD,sBAAQ,UAAU,iBAAiB,yBAAyB;AAChE,gBAAI,MAAM,KAAK,IAAI;AAAA,UACvB,OACK;AACD,kBAAM,MAAM,IAAI,QAAQ,QAAQ,IAAI,MAAM;AAC1C,gBAAI,OAAO;AACX,gBAAI,MAAM,KAAK,IAAI;AACnB,kBAAM,YAAY,aAAa,SAAS;AACxC,gBAAI,QAAQ,CAAC,QAAQ,MAAM,IAAI,SAAS,IAAI,SAAS,EAAE;AACvD,iBAAK,MAAM,KAAK,GAAG;AAAA,UACvB;AACA,mBAAS,YAAY,UAAU,MAAM,KAAK,WAAW;AAAA,QACzD;AAAA,MACJ;AACA,YAAM,cAAc,QAAQ,MAAM;AAClC,YAAM,CAAC,OAAO,EAAE,IAAI,GAAG;AACvB,UAAI,QAAQ;AACZ,UAAI,MAAM,GAAG,WAAW;AACpB,gBAAQ,GAAG,SAAS,GAAG,OAAO;AAAA,WAC7B;AACD,cAAM,OAAO,OAAO,GAAG,YAAY,IAAI,OAAO,UAAU,CAAC;AACzD,cAAM,MAAM,SACN,GAAG,wBAAwB,gBAC3B,GAAG,yEAAyE;AAClF,gBAAQ,QAAQ,SAAS,iBAAiB,cAAc,GAAG;AAC3D,YAAI,MAAM,GAAG,OAAO,WAAW;AAC3B,aAAG,QAAQ,EAAE;AAAA,MACrB;AACA,UAAI,GAAG,SAAS,GAAG;AACf,cAAM,MAAM,WAAW,WAAW,IAAI,OAAO,IAAI,QAAQ,QAAQ,OAAO;AACxE,YAAI,IAAI,SAAS;AACb,cAAI,KAAK;AACL,iBAAK,WAAW,OAAO,IAAI;AAAA;AAE3B,iBAAK,UAAU,IAAI;AAAA,QAC3B;AACA,aAAK,QAAQ,CAAC,GAAG,QAAQ,OAAO,IAAI,MAAM;AAAA,MAC9C,OACK;AACD,aAAK,QAAQ,CAAC,GAAG,QAAQ,OAAO,KAAK;AAAA,MACzC;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,wBAAwB;AAAA;AAAA;;;AChNhC;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,kBAAkB;AACtB,QAAI,kBAAkB;AACtB,QAAI,wBAAwB;AAE5B,aAAS,kBAAkB,IAAI,KAAK,OAAO,SAAS,SAAS,KAAK;AAC9D,YAAM,OAAO,MAAM,SAAS,cACtB,gBAAgB,gBAAgB,IAAI,KAAK,OAAO,SAAS,GAAG,IAC5D,MAAM,SAAS,cACX,gBAAgB,gBAAgB,IAAI,KAAK,OAAO,SAAS,GAAG,IAC5D,sBAAsB,sBAAsB,IAAI,KAAK,OAAO,SAAS,GAAG;AAClF,YAAM,OAAO,KAAK;AAGlB,UAAI,YAAY,OAAO,YAAY,KAAK,SAAS;AAC7C,aAAK,MAAM,KAAK;AAChB,eAAO;AAAA,MACX;AACA,UAAI;AACA,aAAK,MAAM;AACf,aAAO;AAAA,IACX;AACA,aAAS,kBAAkB,IAAI,KAAK,OAAO,OAAO,SAAS;AA3B3D;AA4BI,YAAM,WAAW,MAAM;AACvB,YAAM,UAAU,CAAC,WACX,OACA,IAAI,WAAW,QAAQ,SAAS,QAAQ,SAAO,QAAQ,UAAU,sBAAsB,GAAG,CAAC;AACjG,UAAI,MAAM,SAAS,aAAa;AAC5B,cAAM,EAAE,QAAQ,kBAAkB,GAAG,IAAI;AACzC,cAAM,WAAW,UAAU,WACrB,OAAO,SAAS,SAAS,SACrB,SACA,WACH,UAAU;AACjB,YAAI,aAAa,CAAC,MAAM,GAAG,SAAS,SAAS,SAAS;AAClD,gBAAM,UAAU;AAChB,kBAAQ,UAAU,gBAAgB,OAAO;AAAA,QAC7C;AAAA,MACJ;AACA,YAAM,UAAU,MAAM,SAAS,cACzB,QACA,MAAM,SAAS,cACX,QACA,MAAM,MAAM,WAAW,MACnB,QACA;AAGd,UAAI,CAAC,YACD,CAAC,WACD,YAAY,OACX,YAAY,QAAQ,QAAQ,WAAW,YAAY,SACnD,YAAY,QAAQ,QAAQ,WAAW,YAAY,OAAQ;AAC5D,eAAO,kBAAkB,IAAI,KAAK,OAAO,SAAS,OAAO;AAAA,MAC7D;AACA,UAAI,MAAM,IAAI,OAAO,KAAK,KAAK,OAAK,EAAE,QAAQ,WAAW,EAAE,eAAe,OAAO;AACjF,UAAI,CAAC,KAAK;AACN,cAAM,KAAK,IAAI,OAAO,UAAU;AAChC,YAAI,MAAM,GAAG,eAAe,SAAS;AACjC,cAAI,OAAO,KAAK,KAAK,OAAO,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,MAAM,CAAC,CAAC;AAC9D,gBAAM;AAAA,QACV,OACK;AACD,cAAI,yBAAI,YAAY;AAChB,oBAAQ,UAAU,uBAAuB,GAAG,GAAG,gBAAgB,mCAAmC,GAAG,cAAc,IAAI;AAAA,UAC3H,OACK;AACD,oBAAQ,UAAU,sBAAsB,mBAAmB,WAAW,IAAI;AAAA,UAC9E;AACA,iBAAO,kBAAkB,IAAI,KAAK,OAAO,SAAS,OAAO;AAAA,QAC7D;AAAA,MACJ;AACA,YAAM,OAAO,kBAAkB,IAAI,KAAK,OAAO,SAAS,SAAS,GAAG;AACpE,YAAM,QAAM,SAAI,YAAJ,6BAAc,MAAM,SAAO,QAAQ,UAAU,sBAAsB,GAAG,GAAG,IAAI,aAAY;AACrG,YAAM,OAAO,SAAS,OAAO,GAAG,IAC1B,MACA,IAAI,OAAO,OAAO,GAAG;AAC3B,WAAK,QAAQ,KAAK;AAClB,WAAK,MAAM;AACX,UAAI,2BAAK;AACL,aAAK,SAAS,IAAI;AACtB,aAAO;AAAA,IACX;AAEA,YAAQ,oBAAoB;AAAA;AAAA;;;ACzF5B;AAAA;AAAA;AAEA,QAAI,SAAS;AAEb,aAAS,mBAAmB,KAAK,QAAQ,SAAS;AAC9C,YAAM,QAAQ,OAAO;AACrB,YAAM,SAAS,uBAAuB,QAAQ,IAAI,QAAQ,QAAQ,OAAO;AACzE,UAAI,CAAC;AACD,eAAO,EAAE,OAAO,IAAI,MAAM,MAAM,SAAS,IAAI,OAAO,CAAC,OAAO,OAAO,KAAK,EAAE;AAC9E,YAAM,OAAO,OAAO,SAAS,MAAM,OAAO,OAAO,eAAe,OAAO,OAAO;AAC9E,YAAM,QAAQ,OAAO,SAAS,WAAW,OAAO,MAAM,IAAI,CAAC;AAE3D,UAAI,aAAa,MAAM;AACvB,eAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AACxC,cAAM,UAAU,MAAM,GAAG;AACzB,YAAI,YAAY,MAAM,YAAY;AAC9B,uBAAa;AAAA;AAEb;AAAA,MACR;AAEA,UAAI,eAAe,GAAG;AAClB,cAAMC,SAAQ,OAAO,UAAU,OAAO,MAAM,SAAS,IAC/C,KAAK,OAAO,KAAK,IAAI,GAAG,MAAM,SAAS,CAAC,CAAC,IACzC;AACN,YAAIC,OAAM,QAAQ,OAAO;AACzB,YAAI,OAAO;AACP,UAAAA,QAAO,OAAO,OAAO;AACzB,eAAO,EAAE,OAAAD,QAAO,MAAM,SAAS,OAAO,SAAS,OAAO,CAAC,OAAOC,MAAKA,IAAG,EAAE;AAAA,MAC5E;AAEA,UAAI,aAAa,OAAO,SAAS,OAAO;AACxC,UAAI,SAAS,OAAO,SAAS,OAAO;AACpC,UAAI,eAAe;AACnB,eAAS,IAAI,GAAG,IAAI,YAAY,EAAE,GAAG;AACjC,cAAM,CAAC,QAAQ,OAAO,IAAI,MAAM;AAChC,YAAI,YAAY,MAAM,YAAY,MAAM;AACpC,cAAI,OAAO,WAAW,KAAK,OAAO,SAAS;AACvC,yBAAa,OAAO;AAAA,QAC5B,OACK;AACD,cAAI,OAAO,SAAS,YAAY;AAC5B,kBAAM,UAAU;AAChB,oBAAQ,SAAS,OAAO,QAAQ,gBAAgB,OAAO;AAAA,UAC3D;AACA,cAAI,OAAO,WAAW;AAClB,yBAAa,OAAO;AACxB,yBAAe;AACf,cAAI,eAAe,KAAK,CAAC,IAAI,QAAQ;AACjC,kBAAM,UAAU;AAChB,oBAAQ,QAAQ,cAAc,OAAO;AAAA,UACzC;AACA;AAAA,QACJ;AACA,kBAAU,OAAO,SAAS,QAAQ,SAAS;AAAA,MAC/C;AAEA,eAAS,IAAI,MAAM,SAAS,GAAG,KAAK,YAAY,EAAE,GAAG;AACjD,YAAI,MAAM,GAAG,GAAG,SAAS;AACrB,uBAAa,IAAI;AAAA,MACzB;AACA,UAAI,QAAQ;AACZ,UAAI,MAAM;AACV,UAAI,mBAAmB;AAEvB,eAAS,IAAI,GAAG,IAAI,cAAc,EAAE;AAChC,iBAAS,MAAM,GAAG,GAAG,MAAM,UAAU,IAAI;AAC7C,eAAS,IAAI,cAAc,IAAI,YAAY,EAAE,GAAG;AAC5C,YAAI,CAAC,QAAQ,OAAO,IAAI,MAAM;AAC9B,kBAAU,OAAO,SAAS,QAAQ,SAAS;AAC3C,cAAM,OAAO,QAAQ,QAAQ,SAAS,OAAO;AAC7C,YAAI;AACA,oBAAU,QAAQ,MAAM,GAAG,EAAE;AAEjC,YAAI,WAAW,OAAO,SAAS,YAAY;AACvC,gBAAM,MAAM,OAAO,SACb,mCACA;AACN,gBAAM,UAAU,2DAA2D;AAC3E,kBAAQ,SAAS,QAAQ,UAAU,OAAO,IAAI,IAAI,cAAc,OAAO;AACvE,mBAAS;AAAA,QACb;AACA,YAAI,SAAS,OAAO,OAAO,eAAe;AACtC,mBAAS,MAAM,OAAO,MAAM,UAAU,IAAI;AAC1C,gBAAM;AAAA,QACV,WACS,OAAO,SAAS,cAAc,QAAQ,OAAO,KAAM;AAExD,cAAI,QAAQ;AACR,kBAAM;AAAA,mBACD,CAAC,oBAAoB,QAAQ;AAClC,kBAAM;AACV,mBAAS,MAAM,OAAO,MAAM,UAAU,IAAI;AAC1C,gBAAM;AACN,6BAAmB;AAAA,QACvB,WACS,YAAY,IAAI;AAErB,cAAI,QAAQ;AACR,qBAAS;AAAA;AAET,kBAAM;AAAA,QACd,OACK;AACD,mBAAS,MAAM;AACf,gBAAM;AACN,6BAAmB;AAAA,QACvB;AAAA,MACJ;AACA,cAAQ,OAAO,OAAO;AAAA,QAClB,KAAK;AACD;AAAA,QACJ,KAAK;AACD,mBAAS,IAAI,YAAY,IAAI,MAAM,QAAQ,EAAE;AACzC,qBAAS,OAAO,MAAM,GAAG,GAAG,MAAM,UAAU;AAChD,cAAI,MAAM,MAAM,SAAS,OAAO;AAC5B,qBAAS;AACb;AAAA,QACJ;AACI,mBAAS;AAAA,MACjB;AACA,YAAM,MAAM,QAAQ,OAAO,SAAS,OAAO,OAAO;AAClD,aAAO,EAAE,OAAO,MAAM,SAAS,OAAO,SAAS,OAAO,CAAC,OAAO,KAAK,GAAG,EAAE;AAAA,IAC5E;AACA,aAAS,uBAAuB,EAAE,QAAQ,MAAM,GAAG,QAAQ,SAAS;AAEhE,UAAI,MAAM,GAAG,SAAS,uBAAuB;AACzC,gBAAQ,MAAM,IAAI,cAAc,+BAA+B;AAC/D,eAAO;AAAA,MACX;AACA,YAAM,EAAE,OAAO,IAAI,MAAM;AACzB,YAAM,OAAO,OAAO;AACpB,UAAI,SAAS;AACb,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;AACpC,cAAM,KAAK,OAAO;AAClB,YAAI,CAAC,UAAU,OAAO,OAAO,OAAO;AAChC,kBAAQ;AAAA,aACP;AACD,gBAAM,IAAI,OAAO,EAAE;AACnB,cAAI,CAAC,UAAU;AACX,qBAAS;AAAA,mBACJ,UAAU;AACf,oBAAQ,SAAS;AAAA,QACzB;AAAA,MACJ;AACA,UAAI,UAAU;AACV,gBAAQ,OAAO,oBAAoB,kDAAkD,QAAQ;AACjG,UAAI,WAAW;AACf,UAAI,UAAU;AACd,UAAI,SAAS,OAAO;AACpB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACnC,cAAM,QAAQ,MAAM;AACpB,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AACD,uBAAW;AAAA,UAEf,KAAK;AACD,sBAAU,MAAM,OAAO;AACvB;AAAA,UACJ,KAAK;AACD,gBAAI,UAAU,CAAC,UAAU;AACrB,oBAAM,UAAU;AAChB,sBAAQ,OAAO,gBAAgB,OAAO;AAAA,YAC1C;AACA,sBAAU,MAAM,OAAO;AACvB,sBAAU,MAAM,OAAO,UAAU,CAAC;AAClC;AAAA,UACJ,KAAK;AACD,oBAAQ,OAAO,oBAAoB,MAAM,OAAO;AAChD,sBAAU,MAAM,OAAO;AACvB;AAAA,UAEJ,SAAS;AACL,kBAAM,UAAU,4CAA4C,MAAM;AAClE,oBAAQ,OAAO,oBAAoB,OAAO;AAC1C,kBAAM,KAAK,MAAM;AACjB,gBAAI,MAAM,OAAO,OAAO;AACpB,wBAAU,GAAG;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AACA,aAAO,EAAE,MAAM,QAAQ,OAAO,SAAS,OAAO;AAAA,IAClD;AAEA,aAAS,WAAW,QAAQ;AACxB,YAAM,QAAQ,OAAO,MAAM,QAAQ;AACnC,YAAM,QAAQ,MAAM;AACpB,YAAM,IAAI,MAAM,MAAM,OAAO;AAC7B,YAAM,SAAQ,uBAAI,MACZ,CAAC,EAAE,IAAI,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,IAC/B,CAAC,IAAI,KAAK;AAChB,YAAM,QAAQ,CAAC,KAAK;AACpB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,cAAM,KAAK,CAAC,MAAM,IAAI,MAAM,IAAI,EAAE,CAAC;AACvC,aAAO;AAAA,IACX;AAEA,YAAQ,qBAAqB;AAAA;AAAA;;;ACvM7B;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,aAAa;AAEjB,aAAS,kBAAkB,QAAQ,QAAQ,SAAS;AAChD,YAAM,EAAE,QAAQ,MAAM,QAAQ,IAAI,IAAI;AACtC,UAAI;AACJ,UAAI;AACJ,YAAM,WAAW,CAAC,KAAK,MAAM,QAAQ,QAAQ,SAAS,KAAK,MAAM,GAAG;AACpE,cAAQ,MAAM;AAAA,QACV,KAAK;AACD,kBAAQ,OAAO,OAAO;AACtB,kBAAQ,WAAW,QAAQ,QAAQ;AACnC;AAAA,QACJ,KAAK;AACD,kBAAQ,OAAO,OAAO;AACtB,kBAAQ,kBAAkB,QAAQ,QAAQ;AAC1C;AAAA,QACJ,KAAK;AACD,kBAAQ,OAAO,OAAO;AACtB,kBAAQ,kBAAkB,QAAQ,QAAQ;AAC1C;AAAA,QAEJ;AACI,kBAAQ,QAAQ,oBAAoB,4CAA4C,MAAM;AACtF,iBAAO;AAAA,YACH,OAAO;AAAA,YACP,MAAM;AAAA,YACN,SAAS;AAAA,YACT,OAAO,CAAC,QAAQ,SAAS,OAAO,QAAQ,SAAS,OAAO,MAAM;AAAA,UAClE;AAAA,MACR;AACA,YAAM,WAAW,SAAS,OAAO;AACjC,YAAM,KAAK,WAAW,WAAW,KAAK,UAAU,QAAQ,OAAO;AAC/D,aAAO;AAAA,QACH;AAAA,QACA,MAAM;AAAA,QACN,SAAS,GAAG;AAAA,QACZ,OAAO,CAAC,QAAQ,UAAU,GAAG,MAAM;AAAA,MACvC;AAAA,IACJ;AACA,aAAS,WAAW,QAAQ,SAAS;AACjC,UAAI,UAAU;AACd,cAAQ,OAAO,IAAI;AAAA,QAEf,KAAK;AACD,oBAAU;AACV;AAAA,QACJ,KAAK;AACD,oBAAU;AACV;AAAA,QACJ,KAAK;AACD,oBAAU;AACV;AAAA,QACJ,KAAK;AAAA,QACL,KAAK,KAAK;AACN,oBAAU,0BAA0B,OAAO;AAC3C;AAAA,QACJ;AAAA,QACA,KAAK;AAAA,QACL,KAAK,KAAK;AACN,oBAAU,sBAAsB,OAAO;AACvC;AAAA,QACJ;AAAA,MACJ;AACA,UAAI;AACA,gBAAQ,GAAG,oBAAoB,iCAAiC,SAAS;AAC7E,aAAO,UAAU,MAAM;AAAA,IAC3B;AACA,aAAS,kBAAkB,QAAQ,SAAS;AACxC,UAAI,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,WAAW;AACvD,gBAAQ,OAAO,QAAQ,gBAAgB,wBAAwB;AACnE,aAAO,UAAU,OAAO,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,OAAO,GAAG;AAAA,IAC5D;AACA,aAAS,UAAU,QAAQ;AAQvB,UAAI,OAAO;AACX,UAAI;AACA,gBAAQ,IAAI,OAAO,4BAA8B,IAAI;AACrD,eAAO,IAAI,OAAO,sCAAyC,IAAI;AAAA,MACnE,QACA;AACI,gBAAQ;AACR,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,MAAM,KAAK,MAAM;AAC7B,UAAI,CAAC;AACD,eAAO;AACX,UAAI,MAAM,MAAM;AAChB,UAAI,MAAM;AACV,UAAI,MAAM,MAAM;AAChB,WAAK,YAAY;AACjB,aAAQ,QAAQ,KAAK,KAAK,MAAM,GAAI;AAChC,YAAI,MAAM,OAAO,IAAI;AACjB,cAAI,QAAQ;AACR,mBAAO;AAAA;AAEP,kBAAM;AAAA,QACd,OACK;AACD,iBAAO,MAAM,MAAM;AACnB,gBAAM;AAAA,QACV;AACA,cAAM,KAAK;AAAA,MACf;AACA,YAAM,OAAO;AACb,WAAK,YAAY;AACjB,cAAQ,KAAK,KAAK,MAAM;AACxB,aAAO,MAAM,QAAO,+BAAQ,OAAM;AAAA,IACtC;AACA,aAAS,kBAAkB,QAAQ,SAAS;AACxC,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,OAAO,SAAS,GAAG,EAAE,GAAG;AACxC,cAAM,KAAK,OAAO;AAClB,YAAI,OAAO,QAAQ,OAAO,IAAI,OAAO;AACjC;AACJ,YAAI,OAAO,MAAM;AACb,gBAAM,EAAE,MAAM,OAAO,IAAI,YAAY,QAAQ,CAAC;AAC9C,iBAAO;AACP,cAAI;AAAA,QACR,WACS,OAAO,MAAM;AAClB,cAAI,OAAO,OAAO,EAAE;AACpB,gBAAM,KAAK,YAAY;AACvB,cAAI;AACA,mBAAO;AAAA,mBACF,SAAS,MAAM;AAEpB,mBAAO,OAAO,IAAI;AAClB,mBAAO,SAAS,OAAO,SAAS;AAC5B,qBAAO,OAAO,EAAE,IAAI;AAAA,UAC5B,WACS,SAAS,QAAQ,OAAO,IAAI,OAAO,MAAM;AAE9C,mBAAO,OAAO,EAAE,IAAI;AACpB,mBAAO,SAAS,OAAO,SAAS;AAC5B,qBAAO,OAAO,EAAE,IAAI;AAAA,UAC5B,WACS,SAAS,OAAO,SAAS,OAAO,SAAS,KAAK;AACnD,kBAAM,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE;AACpC,mBAAO,cAAc,QAAQ,IAAI,GAAG,QAAQ,OAAO;AACnD,iBAAK;AAAA,UACT,OACK;AACD,kBAAM,MAAM,OAAO,OAAO,IAAI,GAAG,CAAC;AAClC,oBAAQ,IAAI,GAAG,iBAAiB,2BAA2B,KAAK;AAChE,mBAAO;AAAA,UACX;AAAA,QACJ,WACS,OAAO,OAAO,OAAO,KAAM;AAEhC,gBAAM,UAAU;AAChB,cAAI,OAAO,OAAO,IAAI;AACtB,iBAAO,SAAS,OAAO,SAAS;AAC5B,mBAAO,OAAO,EAAE,IAAI;AACxB,cAAI,SAAS,QAAQ,EAAE,SAAS,QAAQ,OAAO,IAAI,OAAO;AACtD,mBAAO,IAAI,UAAU,OAAO,MAAM,SAAS,IAAI,CAAC,IAAI;AAAA,QAC5D,OACK;AACD,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,WAAW;AACvD,gBAAQ,OAAO,QAAQ,gBAAgB,wBAAwB;AACnE,aAAO;AAAA,IACX;AAKA,aAAS,YAAY,QAAQ,QAAQ;AACjC,UAAI,OAAO;AACX,UAAI,KAAK,OAAO,SAAS;AACzB,aAAO,OAAO,OAAO,OAAO,OAAQ,OAAO,QAAQ,OAAO,MAAM;AAC5D,YAAI,OAAO,QAAQ,OAAO,SAAS,OAAO;AACtC;AACJ,YAAI,OAAO;AACP,kBAAQ;AACZ,kBAAU;AACV,aAAK,OAAO,SAAS;AAAA,MACzB;AACA,UAAI,CAAC;AACD,eAAO;AACX,aAAO,EAAE,MAAM,OAAO;AAAA,IAC1B;AACA,QAAM,cAAc;AAAA,MAChB,KAAK;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAM;AAAA,IACV;AACA,aAAS,cAAc,QAAQ,QAAQ,QAAQ,SAAS;AACpD,YAAM,KAAK,OAAO,OAAO,QAAQ,MAAM;AACvC,YAAM,KAAK,GAAG,WAAW,UAAU,iBAAiB,KAAK,EAAE;AAC3D,YAAM,OAAO,KAAK,SAAS,IAAI,EAAE,IAAI;AACrC,UAAI,MAAM,IAAI,GAAG;AACb,cAAM,MAAM,OAAO,OAAO,SAAS,GAAG,SAAS,CAAC;AAChD,gBAAQ,SAAS,GAAG,iBAAiB,2BAA2B,KAAK;AACrE,eAAO;AAAA,MACX;AACA,aAAO,OAAO,cAAc,IAAI;AAAA,IACpC;AAEA,YAAQ,oBAAoB;AAAA;AAAA;;;AChO5B;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,qBAAqB;AACzB,QAAI,oBAAoB;AAExB,aAAS,cAAc,KAAK,OAAO,UAAU,SAAS;AAClD,YAAM,EAAE,OAAO,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,iBACjD,mBAAmB,mBAAmB,KAAK,OAAO,OAAO,IACzD,kBAAkB,kBAAkB,OAAO,IAAI,QAAQ,QAAQ,OAAO;AAC5E,YAAM,UAAU,WACV,IAAI,WAAW,QAAQ,SAAS,QAAQ,SAAO,QAAQ,UAAU,sBAAsB,GAAG,CAAC,IAC3F;AACN,UAAI;AACJ,UAAI,IAAI,QAAQ,cAAc,IAAI,OAAO;AACrC,cAAM,IAAI,OAAO,SAAS;AAAA,MAC9B,WACS;AACL,cAAM,oBAAoB,IAAI,QAAQ,OAAO,SAAS,UAAU,OAAO;AAAA,eAClE,MAAM,SAAS;AACpB,cAAM,oBAAoB,KAAK,OAAO,OAAO,OAAO;AAAA;AAEpD,cAAM,IAAI,OAAO,SAAS;AAC9B,UAAI;AACJ,UAAI;AACA,cAAM,MAAM,IAAI,QAAQ,OAAO,SAAO,QAAQ,YAAY,OAAO,sBAAsB,GAAG,GAAG,IAAI,OAAO;AACxG,iBAAS,SAAS,SAAS,GAAG,IAAI,MAAM,IAAI,OAAO,OAAO,GAAG;AAAA,MACjE,SACO,OAAP;AACI,cAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACjE,gBAAQ,YAAY,OAAO,sBAAsB,GAAG;AACpD,iBAAS,IAAI,OAAO,OAAO,KAAK;AAAA,MACpC;AACA,aAAO,QAAQ;AACf,aAAO,SAAS;AAChB,UAAI;AACA,eAAO,OAAO;AAClB,UAAI;AACA,eAAO,MAAM;AACjB,UAAI,IAAI;AACJ,eAAO,SAAS,IAAI;AACxB,UAAI;AACA,eAAO,UAAU;AACrB,aAAO;AAAA,IACX;AACA,aAAS,oBAAoB,QAAQ,OAAO,SAAS,UAAU,SAAS;AA9CxE;AA+CI,UAAI,YAAY;AACZ,eAAO,OAAO,SAAS;AAC3B,YAAM,gBAAgB,CAAC;AACvB,iBAAW,OAAO,OAAO,MAAM;AAC3B,YAAI,CAAC,IAAI,cAAc,IAAI,QAAQ,SAAS;AACxC,cAAI,IAAI,WAAW,IAAI;AACnB,0BAAc,KAAK,GAAG;AAAA;AAEtB,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,iBAAW,OAAO;AACd,aAAI,SAAI,SAAJ,mBAAU,KAAK;AACf,iBAAO;AACf,YAAM,KAAK,OAAO,UAAU;AAC5B,UAAI,MAAM,CAAC,GAAG,YAAY;AAGtB,eAAO,KAAK,KAAK,OAAO,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,MAAM,OAAU,CAAC,CAAC;AAC3E,eAAO;AAAA,MACX;AACA,cAAQ,UAAU,sBAAsB,mBAAmB,WAAW,YAAY,uBAAuB;AACzG,aAAO,OAAO,SAAS;AAAA,IAC3B;AACA,aAAS,oBAAoB,EAAE,OAAO,YAAY,OAAO,GAAG,OAAO,OAAO,SAAS;AAC/E,YAAM,MAAM,OAAO,KAAK,KAAK,CAAAC,SAAI;AAxErC;AAwEyC,gBAAAA,KAAI,YAAY,QAAS,SAASA,KAAI,YAAY,YACnF,KAAAA,KAAI,SAAJ,mBAAU,KAAK;AAAA,OAAM,KAAK,OAAO,SAAS;AAC9C,UAAI,OAAO,QAAQ;AACf,cAAM,SAAS,OAAO,OAAO,KAAK,CAAAA,SAAI;AA3E9C;AA2EiD,iBAAAA,KAAI,aAAW,KAAAA,KAAI,SAAJ,mBAAU,KAAK;AAAA,SAAM,KACzE,OAAO,SAAS;AACpB,YAAI,IAAI,QAAQ,OAAO,KAAK;AACxB,gBAAM,KAAK,WAAW,UAAU,IAAI,GAAG;AACvC,gBAAM,KAAK,WAAW,UAAU,OAAO,GAAG;AAC1C,gBAAM,MAAM,iCAAiC,SAAS;AACtD,kBAAQ,OAAO,sBAAsB,KAAK,IAAI;AAAA,QAClD;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,gBAAgB;AAAA;AAAA;;;ACvFxB;AAAA;AAAA;AAEA,aAAS,oBAAoB,QAAQ,QAAQ,KAAK;AAC9C,UAAI,QAAQ;AACR,YAAI,QAAQ;AACR,gBAAM,OAAO;AACjB,iBAAS,IAAI,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG;AAC/B,cAAI,KAAK,OAAO;AAChB,kBAAQ,GAAG,MAAM;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACD,wBAAU,GAAG,OAAO;AACpB;AAAA,UACR;AAGA,eAAK,OAAO,EAAE;AACd,kBAAO,yBAAI,UAAS,SAAS;AACzB,sBAAU,GAAG,OAAO;AACpB,iBAAK,OAAO,EAAE;AAAA,UAClB;AACA;AAAA,QACJ;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,sBAAsB;AAAA;AAAA;;;AC5B9B;AAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,oBAAoB;AACxB,QAAI,gBAAgB;AACpB,QAAI,aAAa;AACjB,QAAI,0BAA0B;AAE9B,QAAM,KAAK,EAAE,aAAa,iBAAiB;AAC3C,aAAS,YAAY,KAAK,OAAO,OAAO,SAAS;AAC7C,YAAM,QAAQ,IAAI;AAClB,YAAM,EAAE,aAAa,SAAS,QAAQ,IAAI,IAAI;AAC9C,UAAI;AACJ,UAAI,aAAa;AACjB,cAAQ,MAAM,MAAM;AAAA,QAChB,KAAK;AACD,iBAAO,aAAa,KAAK,OAAO,OAAO;AACvC,cAAI,UAAU;AACV,oBAAQ,OAAO,eAAe,+CAA+C;AACjF;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO,cAAc,cAAc,KAAK,OAAO,KAAK,OAAO;AAC3D,cAAI;AACA,iBAAK,SAAS,OAAO,OAAO,UAAU,CAAC;AAC3C;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO,kBAAkB,kBAAkB,IAAI,KAAK,OAAO,OAAO,OAAO;AACzE,cAAI;AACA,iBAAK,SAAS,OAAO,OAAO,UAAU,CAAC;AAC3C;AAAA,QACJ,SAAS;AACL,gBAAM,UAAU,MAAM,SAAS,UACzB,MAAM,UACN,4BAA4B,MAAM;AACxC,kBAAQ,OAAO,oBAAoB,OAAO;AAC1C,iBAAO,iBAAiB,KAAK,MAAM,QAAQ,QAAW,MAAM,OAAO,OAAO;AAC1E,uBAAa;AAAA,QACjB;AAAA,MACJ;AACA,UAAI,UAAU,KAAK,WAAW;AAC1B,gBAAQ,QAAQ,aAAa,kCAAkC;AACnE,UAAI,SACA,IAAI,QAAQ,eACX,CAAC,SAAS,SAAS,IAAI,KACpB,OAAO,KAAK,UAAU,YACrB,KAAK,OAAO,KAAK,QAAQ,0BAA2B;AACzD,cAAM,MAAM;AACZ,gBAAQ,OAAO,OAAO,kBAAkB,GAAG;AAAA,MAC/C;AACA,UAAI;AACA,aAAK,cAAc;AACvB,UAAI,SAAS;AACT,YAAI,MAAM,SAAS,YAAY,MAAM,WAAW;AAC5C,eAAK,UAAU;AAAA;AAEf,eAAK,gBAAgB;AAAA,MAC7B;AAEA,UAAI,IAAI,QAAQ,oBAAoB;AAChC,aAAK,WAAW;AACpB,aAAO;AAAA,IACX;AACA,aAAS,iBAAiB,KAAK,QAAQ,QAAQ,KAAK,EAAE,aAAa,SAAS,QAAQ,KAAK,IAAI,GAAG,SAAS;AACrG,YAAM,QAAQ;AAAA,QACV,MAAM;AAAA,QACN,QAAQ,wBAAwB,oBAAoB,QAAQ,QAAQ,GAAG;AAAA,QACvE,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ;AACA,YAAM,OAAO,cAAc,cAAc,KAAK,OAAO,KAAK,OAAO;AACjE,UAAI,QAAQ;AACR,aAAK,SAAS,OAAO,OAAO,UAAU,CAAC;AACvC,YAAI,KAAK,WAAW;AAChB,kBAAQ,QAAQ,aAAa,kCAAkC;AAAA,MACvE;AACA,UAAI;AACA,aAAK,cAAc;AACvB,UAAI,SAAS;AACT,aAAK,UAAU;AACf,aAAK,MAAM,KAAK;AAAA,MACpB;AACA,aAAO;AAAA,IACX;AACA,aAAS,aAAa,EAAE,QAAQ,GAAG,EAAE,QAAQ,QAAQ,IAAI,GAAG,SAAS;AACjE,YAAM,QAAQ,IAAI,MAAM,MAAM,OAAO,UAAU,CAAC,CAAC;AACjD,UAAI,MAAM,WAAW;AACjB,gBAAQ,QAAQ,aAAa,iCAAiC;AAClE,UAAI,MAAM,OAAO,SAAS,GAAG;AACzB,gBAAQ,SAAS,OAAO,SAAS,GAAG,aAAa,kCAAkC,IAAI;AAC3F,YAAM,WAAW,SAAS,OAAO;AACjC,YAAM,KAAK,WAAW,WAAW,KAAK,UAAU,QAAQ,QAAQ,OAAO;AACvE,YAAM,QAAQ,CAAC,QAAQ,UAAU,GAAG,MAAM;AAC1C,UAAI,GAAG;AACH,cAAM,UAAU,GAAG;AACvB,aAAO;AAAA,IACX;AAEA,YAAQ,mBAAmB;AAC3B,YAAQ,cAAc;AAAA;AAAA;;;ACxGtB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,cAAc;AAClB,QAAI,aAAa;AACjB,QAAI,eAAe;AAEnB,aAAS,WAAW,SAAS,YAAY,EAAE,QAAQ,OAAO,OAAO,IAAI,GAAG,SAAS;AAC7E,YAAM,OAAO,OAAO,OAAO,EAAE,aAAa,WAAW,GAAG,OAAO;AAC/D,YAAM,MAAM,IAAI,SAAS,SAAS,QAAW,IAAI;AACjD,YAAM,MAAM;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY,IAAI;AAAA,QAChB,SAAS,IAAI;AAAA,QACb,QAAQ,IAAI;AAAA,MAChB;AACA,YAAM,QAAQ,aAAa,aAAa,OAAO;AAAA,QAC3C,WAAW;AAAA,QACX,MAAM,UAAS,2BAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,gBAAgB;AAAA,MACpB,CAAC;AACD,UAAI,MAAM,OAAO;AACb,YAAI,WAAW,WAAW;AAC1B,YAAI,UACC,MAAM,SAAS,eAAe,MAAM,SAAS,gBAC9C,CAAC,MAAM;AACP,kBAAQ,MAAM,KAAK,gBAAgB,uEAAuE;AAAA,MAClH;AAEA,UAAI,WAAW,QACT,YAAY,YAAY,KAAK,OAAO,OAAO,OAAO,IAClD,YAAY,iBAAiB,KAAK,MAAM,KAAK,OAAO,MAAM,OAAO,OAAO;AAC9E,YAAM,aAAa,IAAI,SAAS,MAAM;AACtC,YAAM,KAAK,WAAW,WAAW,KAAK,YAAY,OAAO,OAAO;AAChE,UAAI,GAAG;AACH,YAAI,UAAU,GAAG;AACrB,UAAI,QAAQ,CAAC,QAAQ,YAAY,GAAG,MAAM;AAC1C,aAAO;AAAA,IACX;AAEA,YAAQ,aAAa;AAAA;AAAA;;;AC5CrB;AAAA;AAAA;AAEA,QAAI,eAAe,UAAQ;AAC3B,QAAI,aAAa;AACjB,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,WAAW;AACf,QAAI,aAAa;AACjB,QAAI,aAAa;AAEjB,aAAS,YAAY,KAAK;AACtB,UAAI,OAAO,QAAQ;AACf,eAAO,CAAC,KAAK,MAAM,CAAC;AACxB,UAAI,MAAM,QAAQ,GAAG;AACjB,eAAO,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;AACnD,YAAM,EAAE,QAAQ,OAAO,IAAI;AAC3B,aAAO,CAAC,QAAQ,UAAU,OAAO,WAAW,WAAW,OAAO,SAAS,EAAE;AAAA,IAC7E;AACA,aAAS,aAAa,SAAS;AAlB/B;AAmBI,UAAI,UAAU;AACd,UAAI,YAAY;AAChB,UAAI,iBAAiB;AACrB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACrC,cAAM,SAAS,QAAQ;AACvB,gBAAQ,OAAO,IAAI;AAAA,UACf,KAAK;AACD,wBACK,YAAY,KAAK,KAAK,iBAAiB,SAAS,SAC5C,OAAO,UAAU,CAAC,KAAK;AAChC,wBAAY;AACZ,6BAAiB;AACjB;AAAA,UACJ,KAAK;AACD,kBAAI,aAAQ,IAAI,OAAZ,mBAAiB,QAAO;AACxB,mBAAK;AACT,wBAAY;AACZ;AAAA,UACJ;AAEI,gBAAI,CAAC;AACD,+BAAiB;AACrB,wBAAY;AAAA,QACpB;AAAA,MACJ;AACA,aAAO,EAAE,SAAS,eAAe;AAAA,IACrC;AAYA,QAAM,WAAN,MAAe;AAAA,MACX,YAAY,UAAU,CAAC,GAAG;AACtB,aAAK,MAAM;AACX,aAAK,eAAe;AACpB,aAAK,UAAU,CAAC;AAChB,aAAK,SAAS,CAAC;AACf,aAAK,WAAW,CAAC;AACjB,aAAK,UAAU,CAAC,QAAQ,MAAM,SAAS,YAAY;AAC/C,gBAAM,MAAM,YAAY,MAAM;AAC9B,cAAI;AACA,iBAAK,SAAS,KAAK,IAAI,OAAO,YAAY,KAAK,MAAM,OAAO,CAAC;AAAA;AAE7D,iBAAK,OAAO,KAAK,IAAI,OAAO,eAAe,KAAK,MAAM,OAAO,CAAC;AAAA,QACtE;AAEA,aAAK,aAAa,IAAI,WAAW,WAAW,EAAE,SAAS,QAAQ,WAAW,MAAM,CAAC;AACjF,aAAK,UAAU;AAAA,MACnB;AAAA,MACA,SAAS,KAAK,UAAU;AACpB,cAAM,EAAE,SAAS,eAAe,IAAI,aAAa,KAAK,OAAO;AAE7D,YAAI,SAAS;AACT,gBAAM,KAAK,IAAI;AACf,cAAI,UAAU;AACV,gBAAI,UAAU,IAAI,UAAU,GAAG,IAAI;AAAA,EAAY,YAAY;AAAA,UAC/D,WACS,kBAAkB,IAAI,WAAW,YAAY,CAAC,IAAI;AACvD,gBAAI,gBAAgB;AAAA,UACxB,WACS,SAAS,aAAa,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,MAAM,SAAS,GAAG;AACnE,gBAAI,KAAK,GAAG,MAAM;AAClB,gBAAI,SAAS,OAAO,EAAE;AAClB,mBAAK,GAAG;AACZ,kBAAM,KAAK,GAAG;AACd,eAAG,gBAAgB,KAAK,GAAG;AAAA,EAAY,OAAO;AAAA,UAClD,OACK;AACD,kBAAM,KAAK,GAAG;AACd,eAAG,gBAAgB,KAAK,GAAG;AAAA,EAAY,OAAO;AAAA,UAClD;AAAA,QACJ;AACA,YAAI,UAAU;AACV,gBAAM,UAAU,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM;AAClD,gBAAM,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ;AAAA,QAC1D,OACK;AACD,cAAI,SAAS,KAAK;AAClB,cAAI,WAAW,KAAK;AAAA,QACxB;AACA,aAAK,UAAU,CAAC;AAChB,aAAK,SAAS,CAAC;AACf,aAAK,WAAW,CAAC;AAAA,MACrB;AAAA,MAMA,aAAa;AACT,eAAO;AAAA,UACH,SAAS,aAAa,KAAK,OAAO,EAAE;AAAA,UACpC,YAAY,KAAK;AAAA,UACjB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,QACnB;AAAA,MACJ;AAAA,MAOA,CAAC,QAAQ,QAAQ,WAAW,OAAO,YAAY,IAAI;AAC/C,mBAAW,SAAS;AAChB,iBAAO,KAAK,KAAK,KAAK;AAC1B,eAAO,KAAK,IAAI,UAAU,SAAS;AAAA,MACvC;AAAA,MAEA,CAAC,KAAK,OAAO;AACT,YAAI,aAAa,IAAI;AACjB,kBAAQ,IAAI,OAAO,EAAE,OAAO,KAAK,CAAC;AACtC,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AACD,iBAAK,WAAW,IAAI,MAAM,QAAQ,CAAC,QAAQ,SAAS,YAAY;AAC5D,oBAAM,MAAM,YAAY,KAAK;AAC7B,kBAAI,MAAM;AACV,mBAAK,QAAQ,KAAK,iBAAiB,SAAS,OAAO;AAAA,YACvD,CAAC;AACD,iBAAK,QAAQ,KAAK,MAAM,MAAM;AAC9B,iBAAK,eAAe;AACpB;AAAA,UACJ,KAAK,YAAY;AACb,kBAAM,MAAM,WAAW,WAAW,KAAK,SAAS,KAAK,YAAY,OAAO,KAAK,OAAO;AACpF,gBAAI,KAAK,gBAAgB,CAAC,IAAI,WAAW;AACrC,mBAAK,QAAQ,OAAO,gBAAgB,iDAAiD;AACzF,iBAAK,SAAS,KAAK,KAAK;AACxB,gBAAI,KAAK;AACL,oBAAM,KAAK;AACf,iBAAK,MAAM;AACX,iBAAK,eAAe;AACpB;AAAA,UACJ;AAAA,UACA,KAAK;AAAA,UACL,KAAK;AACD;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,iBAAK,QAAQ,KAAK,MAAM,MAAM;AAC9B;AAAA,UACJ,KAAK,SAAS;AACV,kBAAM,MAAM,MAAM,SACZ,GAAG,MAAM,YAAY,KAAK,UAAU,MAAM,MAAM,MAChD,MAAM;AACZ,kBAAM,QAAQ,IAAI,OAAO,eAAe,YAAY,KAAK,GAAG,oBAAoB,GAAG;AACnF,gBAAI,KAAK,gBAAgB,CAAC,KAAK;AAC3B,mBAAK,OAAO,KAAK,KAAK;AAAA;AAEtB,mBAAK,IAAI,OAAO,KAAK,KAAK;AAC9B;AAAA,UACJ;AAAA,UACA,KAAK,WAAW;AACZ,gBAAI,CAAC,KAAK,KAAK;AACX,oBAAM,MAAM;AACZ,mBAAK,OAAO,KAAK,IAAI,OAAO,eAAe,YAAY,KAAK,GAAG,oBAAoB,GAAG,CAAC;AACvF;AAAA,YACJ;AACA,iBAAK,IAAI,WAAW,SAAS;AAC7B,kBAAM,MAAM,WAAW,WAAW,MAAM,KAAK,MAAM,SAAS,MAAM,OAAO,QAAQ,KAAK,IAAI,QAAQ,QAAQ,KAAK,OAAO;AACtH,iBAAK,SAAS,KAAK,KAAK,IAAI;AAC5B,gBAAI,IAAI,SAAS;AACb,oBAAM,KAAK,KAAK,IAAI;AACpB,mBAAK,IAAI,UAAU,KAAK,GAAG;AAAA,EAAO,IAAI,YAAY,IAAI;AAAA,YAC1D;AACA,iBAAK,IAAI,MAAM,KAAK,IAAI;AACxB;AAAA,UACJ;AAAA,UACA;AACI,iBAAK,OAAO,KAAK,IAAI,OAAO,eAAe,YAAY,KAAK,GAAG,oBAAoB,qBAAqB,MAAM,MAAM,CAAC;AAAA,QAC7H;AAAA,MACJ;AAAA,MAOA,CAAC,IAAI,WAAW,OAAO,YAAY,IAAI;AACnC,YAAI,KAAK,KAAK;AACV,eAAK,SAAS,KAAK,KAAK,IAAI;AAC5B,gBAAM,KAAK;AACX,eAAK,MAAM;AAAA,QACf,WACS,UAAU;AACf,gBAAM,OAAO,OAAO,OAAO,EAAE,aAAa,KAAK,WAAW,GAAG,KAAK,OAAO;AACzE,gBAAM,MAAM,IAAI,SAAS,SAAS,QAAW,IAAI;AACjD,cAAI,KAAK;AACL,iBAAK,QAAQ,WAAW,gBAAgB,uCAAuC;AACnF,cAAI,QAAQ,CAAC,GAAG,WAAW,SAAS;AACpC,eAAK,SAAS,KAAK,KAAK;AACxB,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,WAAW;AAAA;AAAA;;;AC7NnB;AAAA;AAAA;AAEA,QAAI,qBAAqB;AACzB,QAAI,oBAAoB;AACxB,QAAI,SAAS;AACb,QAAI,kBAAkB;AAEtB,aAAS,gBAAgB,OAAO,SAAS,MAAM,SAAS;AACpD,UAAI,OAAO;AACP,cAAM,WAAW,CAAC,KAAK,MAAM,YAAY;AACrC,gBAAM,SAAS,OAAO,QAAQ,WAAW,MAAM,MAAM,QAAQ,GAAG,IAAI,IAAI,KAAK,IAAI;AACjF,cAAI;AACA,oBAAQ,QAAQ,MAAM,OAAO;AAAA;AAE7B,kBAAM,IAAI,OAAO,eAAe,CAAC,QAAQ,SAAS,CAAC,GAAG,MAAM,OAAO;AAAA,QAC3E;AACA,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,kBAAkB,kBAAkB,OAAO,QAAQ,QAAQ;AAAA,UACtE,KAAK;AACD,mBAAO,mBAAmB,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,QAAQ;AAAA,QAC7F;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAeA,aAAS,kBAAkB,OAAO,SAAS;AACvC,YAAM,EAAE,cAAc,OAAO,QAAQ,SAAS,OAAO,SAAS,IAAI,OAAO,QAAQ,IAAI;AACrF,YAAM,SAAS,gBAAgB,gBAAgB,EAAE,MAAM,MAAM,GAAG;AAAA,QAC5D;AAAA,QACA,QAAQ,SAAS,IAAI,IAAI,OAAO,MAAM,IAAI;AAAA,QAC1C;AAAA,QACA,SAAS,EAAE,YAAY,MAAM,WAAW,GAAG;AAAA,MAC/C,CAAC;AACD,YAAM,MAAM,QAAQ,OAAO;AAAA,QACvB,EAAE,MAAM,WAAW,QAAQ,IAAI,QAAQ,QAAQ,KAAK;AAAA,MACxD;AACA,cAAQ,OAAO,IAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK,KAAK;AACN,gBAAM,KAAK,OAAO,QAAQ,IAAI;AAC9B,gBAAM,OAAO,OAAO,UAAU,GAAG,EAAE;AACnC,gBAAM,OAAO,OAAO,UAAU,KAAK,CAAC,IAAI;AACxC,gBAAM,QAAQ;AAAA,YACV,EAAE,MAAM,uBAAuB,QAAQ,QAAQ,QAAQ,KAAK;AAAA,UAChE;AACA,cAAI,CAAC,mBAAmB,OAAO,GAAG;AAC9B,kBAAM,KAAK,EAAE,MAAM,WAAW,QAAQ,IAAI,QAAQ,QAAQ,KAAK,CAAC;AACpE,iBAAO,EAAE,MAAM,gBAAgB,QAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,QACvE;AAAA,QACA,KAAK;AACD,iBAAO,EAAE,MAAM,wBAAwB,QAAQ,QAAQ,QAAQ,IAAI;AAAA,QACvE,KAAK;AACD,iBAAO,EAAE,MAAM,wBAAwB,QAAQ,QAAQ,QAAQ,IAAI;AAAA,QACvE;AACI,iBAAO,EAAE,MAAM,UAAU,QAAQ,QAAQ,QAAQ,IAAI;AAAA,MAC7D;AAAA,IACJ;AAiBA,aAAS,eAAe,OAAO,OAAO,UAAU,CAAC,GAAG;AAChD,UAAI,EAAE,WAAW,OAAO,cAAc,OAAO,SAAS,OAAO,KAAK,IAAI;AACtE,UAAI,SAAS,YAAY,QAAQ,MAAM,SAAS;AAChD,UAAI,YAAY,OAAO,WAAW;AAC9B,kBAAU;AACd,UAAI,CAAC;AACD,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AACD,mBAAO;AACP;AAAA,UACJ,KAAK;AACD,mBAAO;AACP;AAAA,UACJ,KAAK,gBAAgB;AACjB,kBAAM,SAAS,MAAM,MAAM;AAC3B,gBAAI,OAAO,SAAS;AAChB,oBAAM,IAAI,MAAM,6BAA6B;AACjD,mBAAO,OAAO,OAAO,OAAO,MAAM,iBAAiB;AACnD;AAAA,UACJ;AAAA,UACA;AACI,mBAAO;AAAA,QACf;AACJ,YAAM,SAAS,gBAAgB,gBAAgB,EAAE,MAAM,MAAM,GAAG;AAAA,QAC5D,aAAa,eAAe,WAAW;AAAA,QACvC,QAAQ,WAAW,QAAQ,SAAS,IAAI,IAAI,OAAO,MAAM,IAAI;AAAA,QAC7D;AAAA,QACA,SAAS,EAAE,YAAY,MAAM,WAAW,GAAG;AAAA,MAC/C,CAAC;AACD,cAAQ,OAAO,IAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AACD,8BAAoB,OAAO,MAAM;AACjC;AAAA,QACJ,KAAK;AACD,6BAAmB,OAAO,QAAQ,sBAAsB;AACxD;AAAA,QACJ,KAAK;AACD,6BAAmB,OAAO,QAAQ,sBAAsB;AACxD;AAAA,QACJ;AACI,6BAAmB,OAAO,QAAQ,QAAQ;AAAA,MAClD;AAAA,IACJ;AACA,aAAS,oBAAoB,OAAO,QAAQ;AACxC,YAAM,KAAK,OAAO,QAAQ,IAAI;AAC9B,YAAM,OAAO,OAAO,UAAU,GAAG,EAAE;AACnC,YAAM,OAAO,OAAO,UAAU,KAAK,CAAC,IAAI;AACxC,UAAI,MAAM,SAAS,gBAAgB;AAC/B,cAAM,SAAS,MAAM,MAAM;AAC3B,YAAI,OAAO,SAAS;AAChB,gBAAM,IAAI,MAAM,6BAA6B;AACjD,eAAO,SAAS;AAChB,cAAM,SAAS;AAAA,MACnB,OACK;AACD,cAAM,EAAE,OAAO,IAAI;AACnB,cAAM,SAAS,YAAY,QAAQ,MAAM,SAAS;AAClD,cAAM,QAAQ;AAAA,UACV,EAAE,MAAM,uBAAuB,QAAQ,QAAQ,QAAQ,KAAK;AAAA,QAChE;AACA,YAAI,CAAC,mBAAmB,OAAO,SAAS,QAAQ,MAAM,MAAM,MAAS;AACjE,gBAAM,KAAK,EAAE,MAAM,WAAW,QAAQ,IAAI,QAAQ,QAAQ,KAAK,CAAC;AACpE,mBAAW,OAAO,OAAO,KAAK,KAAK;AAC/B,cAAI,QAAQ,UAAU,QAAQ;AAC1B,mBAAO,MAAM;AACrB,eAAO,OAAO,OAAO,EAAE,MAAM,gBAAgB,QAAQ,OAAO,QAAQ,KAAK,CAAC;AAAA,MAC9E;AAAA,IACJ;AAEA,aAAS,mBAAmB,OAAO,KAAK;AACpC,UAAI;AACA,mBAAW,MAAM;AACb,kBAAQ,GAAG,MAAM;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AACD,oBAAM,KAAK,EAAE;AACb;AAAA,YACJ,KAAK;AACD,oBAAM,KAAK,EAAE;AACb,qBAAO;AAAA,UACf;AACR,aAAO;AAAA,IACX;AACA,aAAS,mBAAmB,OAAO,QAAQ,MAAM;AAC7C,cAAQ,MAAM,MAAM;AAAA,QAChB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,gBAAM,OAAO;AACb,gBAAM,SAAS;AACf;AAAA,QACJ,KAAK,gBAAgB;AACjB,gBAAM,MAAM,MAAM,MAAM,MAAM,CAAC;AAC/B,cAAI,KAAK,OAAO;AAChB,cAAI,MAAM,MAAM,GAAG,SAAS;AACxB,kBAAM,MAAM,MAAM,GAAG,OAAO;AAChC,qBAAW,OAAO;AACd,gBAAI,UAAU;AAClB,iBAAO,MAAM;AACb,iBAAO,OAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,CAAC;AAC1C;AAAA,QACJ;AAAA,QACA,KAAK;AAAA,QACL,KAAK,aAAa;AACd,gBAAM,SAAS,MAAM,SAAS,OAAO;AACrC,gBAAM,KAAK,EAAE,MAAM,WAAW,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,KAAK;AACzE,iBAAO,MAAM;AACb,iBAAO,OAAO,OAAO,EAAE,MAAM,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;AAChD;AAAA,QACJ;AAAA,QACA,SAAS;AACL,gBAAM,SAAS,YAAY,QAAQ,MAAM,SAAS;AAClD,gBAAM,MAAM,SAAS,SAAS,MAAM,QAAQ,MAAM,GAAG,IAC/C,MAAM,IAAI,OAAO,QAAM,GAAG,SAAS,WACjC,GAAG,SAAS,aACZ,GAAG,SAAS,SAAS,IACvB,CAAC;AACP,qBAAW,OAAO,OAAO,KAAK,KAAK;AAC/B,gBAAI,QAAQ,UAAU,QAAQ;AAC1B,qBAAO,MAAM;AACrB,iBAAO,OAAO,OAAO,EAAE,MAAM,QAAQ,QAAQ,IAAI,CAAC;AAAA,QACtD;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,oBAAoB;AAC5B,YAAQ,kBAAkB;AAC1B,YAAQ,iBAAiB;AAAA;AAAA;;;ACzNzB;AAAA;AAAA;AAQA,QAAM,YAAY,CAAC,QAAQ,UAAU,MAAM,eAAe,GAAG,IAAI,cAAc,GAAG;AAClF,aAAS,eAAe,OAAO;AAC3B,cAAQ,MAAM,MAAM;AAAA,QAChB,KAAK,gBAAgB;AACjB,cAAI,MAAM;AACV,qBAAW,OAAO,MAAM;AACpB,mBAAO,eAAe,GAAG;AAC7B,iBAAO,MAAM,MAAM;AAAA,QACvB;AAAA,QACA,KAAK;AAAA,QACL,KAAK,aAAa;AACd,cAAI,MAAM;AACV,qBAAW,QAAQ,MAAM;AACrB,mBAAO,cAAc,IAAI;AAC7B,iBAAO;AAAA,QACX;AAAA,QACA,KAAK,mBAAmB;AACpB,cAAI,MAAM,MAAM,MAAM;AACtB,qBAAW,QAAQ,MAAM;AACrB,mBAAO,cAAc,IAAI;AAC7B,qBAAW,MAAM,MAAM;AACnB,mBAAO,GAAG;AACd,iBAAO;AAAA,QACX;AAAA,QACA,KAAK,YAAY;AACb,cAAI,MAAM,cAAc,KAAK;AAC7B,cAAI,MAAM;AACN,uBAAW,MAAM,MAAM;AACnB,qBAAO,GAAG;AAClB,iBAAO;AAAA,QACX;AAAA,QACA,SAAS;AACL,cAAI,MAAM,MAAM;AAChB,cAAI,SAAS,SAAS,MAAM;AACxB,uBAAW,MAAM,MAAM;AACnB,qBAAO,GAAG;AAClB,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,cAAc,EAAE,OAAO,KAAK,KAAK,MAAM,GAAG;AAC/C,UAAI,MAAM;AACV,iBAAW,MAAM;AACb,eAAO,GAAG;AACd,UAAI;AACA,eAAO,eAAe,GAAG;AAC7B,UAAI;AACA,mBAAW,MAAM;AACb,iBAAO,GAAG;AAClB,UAAI;AACA,eAAO,eAAe,KAAK;AAC/B,aAAO;AAAA,IACX;AAEA,YAAQ,YAAY;AAAA;AAAA;;;AC9DpB;AAAA;AAAA;AAEA,QAAM,QAAQ,OAAO,aAAa;AAClC,QAAM,OAAO,OAAO,eAAe;AACnC,QAAM,SAAS,OAAO,aAAa;AA6BnC,aAAS,MAAM,KAAK,SAAS;AACzB,UAAI,UAAU,OAAO,IAAI,SAAS;AAC9B,cAAM,EAAE,OAAO,IAAI,OAAO,OAAO,IAAI,MAAM;AAC/C,aAAO,OAAO,OAAO,CAAC,CAAC,GAAG,KAAK,OAAO;AAAA,IAC1C;AAKA,UAAM,QAAQ;AAEd,UAAM,OAAO;AAEb,UAAM,SAAS;AAEf,UAAM,aAAa,CAAC,KAAKC,UAAS;AAC9B,UAAI,OAAO;AACX,iBAAW,CAAC,OAAO,KAAK,KAAKA,OAAM;AAC/B,cAAM,MAAM,6BAAO;AACnB,YAAI,OAAO,WAAW,KAAK;AACvB,iBAAO,IAAI,MAAM;AAAA,QACrB;AAEI,iBAAO;AAAA,MACf;AACA,aAAO;AAAA,IACX;AAMA,UAAM,mBAAmB,CAAC,KAAKA,UAAS;AACpC,YAAM,SAAS,MAAM,WAAW,KAAKA,MAAK,MAAM,GAAG,EAAE,CAAC;AACtD,YAAM,QAAQA,MAAKA,MAAK,SAAS,GAAG;AACpC,YAAM,OAAO,iCAAS;AACtB,UAAI,QAAQ,WAAW;AACnB,eAAO;AACX,YAAM,IAAI,MAAM,6BAA6B;AAAA,IACjD;AACA,aAAS,OAAOA,OAAM,MAAM,SAAS;AACjC,UAAI,OAAO,QAAQ,MAAMA,KAAI;AAC7B,UAAI,OAAO,SAAS;AAChB,eAAO;AACX,iBAAW,SAAS,CAAC,OAAO,OAAO,GAAG;AAClC,cAAM,QAAQ,KAAK;AACnB,YAAI,SAAS,WAAW,OAAO;AAC3B,mBAAS,IAAI,GAAG,IAAI,MAAM,MAAM,QAAQ,EAAE,GAAG;AACzC,kBAAM,KAAK,OAAO,OAAO,OAAOA,MAAK,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,IAAI,OAAO;AACnF,gBAAI,OAAO,OAAO;AACd,kBAAI,KAAK;AAAA,qBACJ,OAAO;AACZ,qBAAO;AAAA,qBACF,OAAO,QAAQ;AACpB,oBAAM,MAAM,OAAO,GAAG,CAAC;AACvB,mBAAK;AAAA,YACT;AAAA,UACJ;AACA,cAAI,OAAO,SAAS,cAAc,UAAU;AACxC,mBAAO,KAAK,MAAMA,KAAI;AAAA,QAC9B;AAAA,MACJ;AACA,aAAO,OAAO,SAAS,aAAa,KAAK,MAAMA,KAAI,IAAI;AAAA,IAC3D;AAEA,YAAQ,QAAQ;AAAA;AAAA;;;AClGhB;AAAA;AAAA;AAEA,QAAI,YAAY;AAChB,QAAI,eAAe;AACnB,QAAI,WAAW;AAGf,QAAM,MAAM;AAEZ,QAAM,WAAW;AAEjB,QAAM,WAAW;AAEjB,QAAM,SAAS;AAEf,QAAM,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,WAAW;AAEtD,QAAM,WAAW,CAAC,UAAU,CAAC,CAAC,UACzB,MAAM,SAAS,YACZ,MAAM,SAAS,0BACf,MAAM,SAAS,0BACf,MAAM,SAAS;AAGvB,aAAS,YAAY,OAAO;AACxB,cAAQ,OAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO,KAAK,UAAU,KAAK;AAAA,MACnC;AAAA,IACJ;AAEA,aAAS,UAAU,QAAQ;AACvB,cAAQ,QAAQ;AAAA,QACZ,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,MACf;AACA,cAAQ,OAAO,IAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,MACf;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,oBAAoB,UAAU;AACtC,YAAQ,kBAAkB,UAAU;AACpC,YAAQ,iBAAiB,UAAU;AACnC,YAAQ,YAAY,aAAa;AACjC,YAAQ,QAAQ,SAAS;AACzB,YAAQ,MAAM;AACd,YAAQ,WAAW;AACnB,YAAQ,WAAW;AACnB,YAAQ,SAAS;AACjB,YAAQ,eAAe;AACvB,YAAQ,WAAW;AACnB,YAAQ,cAAc;AACtB,YAAQ,YAAY;AAAA;AAAA;;;AC/GpB;AAAA;AAAA;AAEA,QAAI,MAAM;AAqEV,aAAS,QAAQ,IAAI;AACjB,cAAQ,IAAI;AAAA,QACR,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO;AAAA,MACf;AAAA,IACJ;AACA,QAAM,YAAY,IAAI,IAAI,wBAAwB;AAClD,QAAM,WAAW,IAAI,IAAI,mFAAmF;AAC5G,QAAM,qBAAqB,IAAI,IAAI,OAAO;AAC1C,QAAM,qBAAqB,IAAI,IAAI,aAAc;AACjD,QAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,mBAAmB,IAAI,EAAE;AAgBhE,QAAM,QAAN,MAAY;AAAA,MACR,cAAc;AAKV,aAAK,QAAQ;AAMb,aAAK,oBAAoB;AAMzB,aAAK,kBAAkB;AAEvB,aAAK,SAAS;AAKd,aAAK,UAAU;AAEf,aAAK,YAAY;AAKjB,aAAK,aAAa;AAElB,aAAK,cAAc;AAEnB,aAAK,aAAa;AAElB,aAAK,OAAO;AAEZ,aAAK,MAAM;AAAA,MACf;AAAA,MAOA,CAAC,IAAI,QAAQ,aAAa,OAAO;AAC7B,YAAI,QAAQ;AACR,cAAI,OAAO,WAAW;AAClB,kBAAM,UAAU,wBAAwB;AAC5C,eAAK,SAAS,KAAK,SAAS,KAAK,SAAS,SAAS;AACnD,eAAK,aAAa;AAAA,QACtB;AACA,aAAK,QAAQ,CAAC;AACd,YAAI,OAAO,KAAK,QAAQ;AACxB,eAAO,SAAS,cAAc,KAAK,SAAS,CAAC;AACzC,iBAAO,OAAO,KAAK,UAAU,IAAI;AAAA,MACzC;AAAA,MACA,YAAY;AACR,YAAI,IAAI,KAAK;AACb,YAAI,KAAK,KAAK,OAAO;AACrB,eAAO,OAAO,OAAO,OAAO;AACxB,eAAK,KAAK,OAAO,EAAE;AACvB,YAAI,CAAC,MAAM,OAAO,OAAO,OAAO;AAC5B,iBAAO;AACX,YAAI,OAAO;AACP,iBAAO,KAAK,OAAO,IAAI,OAAO;AAClC,eAAO;AAAA,MACX;AAAA,MACA,OAAO,GAAG;AACN,eAAO,KAAK,OAAO,KAAK,MAAM;AAAA,MAClC;AAAA,MACA,eAAe,QAAQ;AACnB,YAAI,KAAK,KAAK,OAAO;AACrB,YAAI,KAAK,aAAa,GAAG;AACrB,cAAI,SAAS;AACb,iBAAO,OAAO;AACV,iBAAK,KAAK,OAAO,EAAE,SAAS;AAChC,cAAI,OAAO,MAAM;AACb,kBAAM,OAAO,KAAK,OAAO,SAAS,SAAS;AAC3C,gBAAI,SAAS,QAAS,CAAC,QAAQ,CAAC,KAAK;AACjC,qBAAO,SAAS,SAAS;AAAA,UACjC;AACA,iBAAO,OAAO,QAAQ,UAAU,KAAK,cAAe,CAAC,MAAM,CAAC,KAAK,QAC3D,SAAS,SACT;AAAA,QACV;AACA,YAAI,OAAO,OAAO,OAAO,KAAK;AAC1B,gBAAM,KAAK,KAAK,OAAO,OAAO,QAAQ,CAAC;AACvC,eAAK,OAAO,SAAS,OAAO,UAAU,QAAQ,KAAK,OAAO,SAAS,EAAE;AACjE,mBAAO;AAAA,QACf;AACA,eAAO;AAAA,MACX;AAAA,MACA,UAAU;AACN,YAAI,MAAM,KAAK;AACf,YAAI,OAAO,QAAQ,YAAa,QAAQ,MAAM,MAAM,KAAK,KAAM;AAC3D,gBAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AACxC,eAAK,aAAa;AAAA,QACtB;AACA,YAAI,QAAQ;AACR,iBAAO,KAAK,QAAQ,KAAK,OAAO,UAAU,KAAK,GAAG,IAAI;AAC1D,YAAI,KAAK,OAAO,MAAM,OAAO;AACzB,iBAAO;AACX,eAAO,KAAK,OAAO,UAAU,KAAK,KAAK,GAAG;AAAA,MAC9C;AAAA,MACA,SAAS,GAAG;AACR,eAAO,KAAK,MAAM,KAAK,KAAK,OAAO;AAAA,MACvC;AAAA,MACA,QAAQ,OAAO;AACX,aAAK,SAAS,KAAK,OAAO,UAAU,KAAK,GAAG;AAC5C,aAAK,MAAM;AACX,aAAK,aAAa;AAClB,aAAK,OAAO;AACZ,eAAO;AAAA,MACX;AAAA,MACA,KAAK,GAAG;AACJ,eAAO,KAAK,OAAO,OAAO,KAAK,KAAK,CAAC;AAAA,MACzC;AAAA,MACA,CAAC,UAAU,MAAM;AACb,gBAAQ,MAAM;AAAA,UACV,KAAK;AACD,mBAAO,OAAO,KAAK,YAAY;AAAA,UACnC,KAAK;AACD,mBAAO,OAAO,KAAK,eAAe;AAAA,UACtC,KAAK;AACD,mBAAO,OAAO,KAAK,gBAAgB;AAAA,UACvC,KAAK;AACD,mBAAO,OAAO,KAAK,cAAc;AAAA,UACrC,KAAK;AACD,mBAAO,OAAO,KAAK,oBAAoB;AAAA,UAC3C,KAAK;AACD,mBAAO,OAAO,KAAK,kBAAkB;AAAA,UACzC,KAAK;AACD,mBAAO,OAAO,KAAK,iBAAiB;AAAA,UACxC,KAAK;AACD,mBAAO,OAAO,KAAK,iBAAiB;AAAA,QAC5C;AAAA,MACJ;AAAA,MACA,CAAC,cAAc;AACX,YAAI,OAAO,KAAK,QAAQ;AACxB,YAAI,SAAS;AACT,iBAAO,KAAK,QAAQ,QAAQ;AAChC,YAAI,KAAK,OAAO,IAAI,KAAK;AACrB,iBAAO,KAAK,UAAU,CAAC;AACvB,iBAAO,KAAK,UAAU,CAAC;AAAA,QAC3B;AACA,YAAI,KAAK,OAAO,KAAK;AACjB,cAAI,SAAS,KAAK;AAClB,cAAI,KAAK,KAAK,QAAQ,GAAG;AACzB,iBAAO,OAAO,IAAI;AACd,kBAAM,KAAK,KAAK,KAAK;AACrB,gBAAI,OAAO,OAAO,OAAO,KAAM;AAC3B,uBAAS,KAAK;AACd;AAAA,YACJ,OACK;AACD,mBAAK,KAAK,QAAQ,KAAK,KAAK,CAAC;AAAA,YACjC;AAAA,UACJ;AACA,iBAAO,MAAM;AACT,kBAAM,KAAK,KAAK,SAAS;AACzB,gBAAI,OAAO,OAAO,OAAO;AACrB,wBAAU;AAAA;AAEV;AAAA,UACR;AACA,gBAAM,KAAK,OAAO,KAAK,UAAU,MAAM,MAAM,OAAO,KAAK,WAAW,IAAI;AACxE,iBAAO,KAAK,UAAU,KAAK,SAAS,CAAC;AACrC,eAAK,YAAY;AACjB,iBAAO;AAAA,QACX;AACA,YAAI,KAAK,UAAU,GAAG;AAClB,gBAAM,KAAK,OAAO,KAAK,WAAW,IAAI;AACtC,iBAAO,KAAK,UAAU,KAAK,SAAS,EAAE;AACtC,iBAAO,KAAK,YAAY;AACxB,iBAAO;AAAA,QACX;AACA,cAAM,IAAI;AACV,eAAO,OAAO,KAAK,eAAe;AAAA,MACtC;AAAA,MACA,CAAC,iBAAiB;AACd,cAAM,KAAK,KAAK,OAAO,CAAC;AACxB,YAAI,CAAC,MAAM,CAAC,KAAK;AACb,iBAAO,KAAK,QAAQ,YAAY;AACpC,YAAI,OAAO,OAAO,OAAO,KAAK;AAC1B,cAAI,CAAC,KAAK,SAAS,CAAC,KAAK,SAAS,CAAC;AAC/B,mBAAO,KAAK,QAAQ,YAAY;AACpC,gBAAM,IAAI,KAAK,KAAK,CAAC;AACrB,eAAK,MAAM,SAAS,MAAM,UAAU,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG;AACzD,mBAAO,KAAK,UAAU,CAAC;AACvB,iBAAK,cAAc;AACnB,iBAAK,aAAa;AAClB,mBAAO,MAAM,QAAQ,QAAQ;AAAA,UACjC;AAAA,QACJ;AACA,aAAK,cAAc,OAAO,KAAK,WAAW,KAAK;AAC/C,YAAI,KAAK,aAAa,KAAK,eAAe,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;AAC7D,eAAK,aAAa,KAAK;AAC3B,eAAO,OAAO,KAAK,gBAAgB;AAAA,MACvC;AAAA,MACA,CAAC,kBAAkB;AACf,cAAM,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC;AAC9B,YAAI,CAAC,OAAO,CAAC,KAAK;AACd,iBAAO,KAAK,QAAQ,aAAa;AACrC,aAAK,QAAQ,OAAO,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,GAAG,GAAG;AAC7D,gBAAM,KAAK,OAAO,KAAK,UAAU,CAAC,MAAM,OAAO,KAAK,WAAW,IAAI;AACnE,eAAK,aAAa,KAAK,cAAc;AACrC,eAAK,eAAe;AACpB,iBAAO,OAAO,KAAK,gBAAgB;AAAA,QACvC;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,gBAAgB;AACb,eAAO,KAAK,WAAW,IAAI;AAC3B,cAAM,OAAO,KAAK,QAAQ;AAC1B,YAAI,SAAS;AACT,iBAAO,KAAK,QAAQ,KAAK;AAC7B,YAAI,IAAI,OAAO,KAAK,eAAe;AACnC,gBAAQ,KAAK,IAAI;AAAA,UACb,KAAK;AACD,mBAAO,KAAK,UAAU,KAAK,SAAS,CAAC;AAAA,UAEzC,KAAK;AACD,mBAAO,KAAK,YAAY;AACxB,mBAAO,OAAO,KAAK,eAAe;AAAA,UACtC,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,UAAU,CAAC;AACvB,iBAAK,UAAU;AACf,iBAAK,YAAY;AACjB,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AAED,mBAAO,KAAK,UAAU,CAAC;AACvB,mBAAO;AAAA,UACX,KAAK;AACD,mBAAO,KAAK,UAAU,eAAe;AACrC,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,OAAO,KAAK,kBAAkB;AAAA,UACzC,KAAK;AAAA,UACL,KAAK;AACD,iBAAK,OAAO,KAAK,uBAAuB;AACxC,iBAAK,OAAO,KAAK,WAAW,IAAI;AAChC,mBAAO,KAAK,UAAU,KAAK,SAAS,CAAC;AACrC,mBAAO,KAAK,YAAY;AACxB,mBAAO,OAAO,KAAK,iBAAiB;AAAA,UACxC;AACI,mBAAO,OAAO,KAAK,iBAAiB;AAAA,QAC5C;AAAA,MACJ;AAAA,MACA,CAAC,sBAAsB;AACnB,YAAI,IAAI;AACR,YAAI,SAAS;AACb,WAAG;AACC,eAAK,OAAO,KAAK,YAAY;AAC7B,cAAI,KAAK,GAAG;AACR,iBAAK,OAAO,KAAK,WAAW,KAAK;AACjC,iBAAK,cAAc,SAAS;AAAA,UAChC,OACK;AACD,iBAAK;AAAA,UACT;AACA,gBAAM,OAAO,KAAK,WAAW,IAAI;AAAA,QACrC,SAAS,KAAK,KAAK;AACnB,cAAM,OAAO,KAAK,QAAQ;AAC1B,YAAI,SAAS;AACT,iBAAO,KAAK,QAAQ,MAAM;AAC9B,YAAK,WAAW,MAAM,SAAS,KAAK,cAAc,KAAK,OAAO,OACzD,WAAW,MACP,KAAK,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK,MAChD,QAAQ,KAAK,EAAE,GAAI;AAIvB,gBAAM,kBAAkB,WAAW,KAAK,aAAa,KACjD,KAAK,cAAc,MAClB,KAAK,OAAO,OAAO,KAAK,OAAO;AACpC,cAAI,CAAC,iBAAiB;AAElB,iBAAK,YAAY;AACjB,kBAAM,IAAI;AACV,mBAAO,OAAO,KAAK,eAAe;AAAA,UACtC;AAAA,QACJ;AACA,YAAI,IAAI;AACR,eAAO,KAAK,OAAO,KAAK;AACpB,eAAK,OAAO,KAAK,UAAU,CAAC;AAC5B,eAAK,OAAO,KAAK,WAAW,IAAI;AAChC,eAAK,UAAU;AAAA,QACnB;AACA,aAAK,OAAO,KAAK,eAAe;AAChC,gBAAQ,KAAK,IAAI;AAAA,UACb,KAAK;AACD,mBAAO;AAAA,UACX,KAAK;AACD,mBAAO,KAAK,UAAU,KAAK,SAAS,CAAC;AACrC,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,UAAU,CAAC;AACvB,iBAAK,UAAU;AACf,iBAAK,aAAa;AAClB,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,UAAU,CAAC;AACvB,iBAAK,UAAU;AACf,iBAAK,aAAa;AAClB,mBAAO,KAAK,YAAY,SAAS;AAAA,UACrC,KAAK;AACD,mBAAO,KAAK,UAAU,eAAe;AACrC,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AACD,iBAAK,UAAU;AACf,mBAAO,OAAO,KAAK,kBAAkB;AAAA,UACzC,KAAK,KAAK;AACN,kBAAM,OAAO,KAAK,OAAO,CAAC;AAC1B,gBAAI,KAAK,WAAW,QAAQ,IAAI,KAAK,SAAS,KAAK;AAC/C,mBAAK,UAAU;AACf,qBAAO,KAAK,UAAU,CAAC;AACvB,qBAAO,KAAK,WAAW,IAAI;AAC3B,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,UAEA;AACI,iBAAK,UAAU;AACf,mBAAO,OAAO,KAAK,iBAAiB;AAAA,QAC5C;AAAA,MACJ;AAAA,MACA,CAAC,oBAAoB;AACjB,cAAM,QAAQ,KAAK,OAAO,CAAC;AAC3B,YAAI,MAAM,KAAK,OAAO,QAAQ,OAAO,KAAK,MAAM,CAAC;AACjD,YAAI,UAAU,KAAK;AACf,iBAAO,QAAQ,MAAM,KAAK,OAAO,MAAM,OAAO;AAC1C,kBAAM,KAAK,OAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,QAC9C,OACK;AAED,iBAAO,QAAQ,IAAI;AACf,gBAAI,IAAI;AACR,mBAAO,KAAK,OAAO,MAAM,IAAI,OAAO;AAChC,mBAAK;AACT,gBAAI,IAAI,MAAM;AACV;AACJ,kBAAM,KAAK,OAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,UAC1C;AAAA,QACJ;AAEA,cAAM,KAAK,KAAK,OAAO,UAAU,GAAG,GAAG;AACvC,YAAI,KAAK,GAAG,QAAQ,MAAM,KAAK,GAAG;AAClC,YAAI,OAAO,IAAI;AACX,iBAAO,OAAO,IAAI;AACd,kBAAM,KAAK,KAAK,eAAe,KAAK,CAAC;AACrC,gBAAI,OAAO;AACP;AACJ,iBAAK,GAAG,QAAQ,MAAM,EAAE;AAAA,UAC5B;AACA,cAAI,OAAO,IAAI;AAEX,kBAAM,MAAM,GAAG,KAAK,OAAO,OAAO,IAAI;AAAA,UAC1C;AAAA,QACJ;AACA,YAAI,QAAQ,IAAI;AACZ,cAAI,CAAC,KAAK;AACN,mBAAO,KAAK,QAAQ,eAAe;AACvC,gBAAM,KAAK,OAAO;AAAA,QACtB;AACA,eAAO,KAAK,YAAY,MAAM,GAAG,KAAK;AACtC,eAAO,KAAK,YAAY,SAAS;AAAA,MACrC;AAAA,MACA,CAAC,yBAAyB;AACtB,aAAK,oBAAoB;AACzB,aAAK,kBAAkB;AACvB,YAAI,IAAI,KAAK;AACb,eAAO,MAAM;AACT,gBAAM,KAAK,KAAK,OAAO,EAAE;AACzB,cAAI,OAAO;AACP,iBAAK,kBAAkB;AAAA,mBAClB,KAAK,OAAO,MAAM;AACvB,iBAAK,oBAAoB,OAAO,EAAE,IAAI;AAAA,mBACjC,OAAO;AACZ;AAAA,QACR;AACA,eAAO,OAAO,KAAK,UAAU,QAAM,QAAQ,EAAE,KAAK,OAAO,GAAG;AAAA,MAChE;AAAA,MACA,CAAC,mBAAmB;AAChB,YAAI,KAAK,KAAK,MAAM;AACpB,YAAI,SAAS;AACb,YAAI;AACJ;AAAM,mBAASC,KAAI,KAAK,KAAM,KAAK,KAAK,OAAOA,KAAK,EAAEA,IAAG;AACrD,oBAAQ,IAAI;AAAA,cACR,KAAK;AACD,0BAAU;AACV;AAAA,cACJ,KAAK;AACD,qBAAKA;AACL,yBAAS;AACT;AAAA,cACJ,KAAK,MAAM;AACP,sBAAM,OAAO,KAAK,OAAOA,KAAI;AAC7B,oBAAI,CAAC,QAAQ,CAAC,KAAK;AACf,yBAAO,KAAK,QAAQ,cAAc;AACtC,oBAAI,SAAS;AACT;AAAA,cACR;AAAA,cACA;AACI,sBAAM;AAAA,YACd;AAAA,UACJ;AACA,YAAI,CAAC,MAAM,CAAC,KAAK;AACb,iBAAO,KAAK,QAAQ,cAAc;AACtC,YAAI,UAAU,KAAK,YAAY;AAC3B,cAAI,KAAK,sBAAsB;AAC3B,iBAAK,aAAa;AAAA,eACjB;AACD,iBAAK,aACD,KAAK,qBAAqB,KAAK,eAAe,IAAI,IAAI,KAAK;AAAA,UACnE;AACA,aAAG;AACC,kBAAM,KAAK,KAAK,eAAe,KAAK,CAAC;AACrC,gBAAI,OAAO;AACP;AACJ,iBAAK,KAAK,OAAO,QAAQ,MAAM,EAAE;AAAA,UACrC,SAAS,OAAO;AAChB,cAAI,OAAO,IAAI;AACX,gBAAI,CAAC,KAAK;AACN,qBAAO,KAAK,QAAQ,cAAc;AACtC,iBAAK,KAAK,OAAO;AAAA,UACrB;AAAA,QACJ;AAGA,YAAI,IAAI,KAAK;AACb,aAAK,KAAK,OAAO;AACjB,eAAO,OAAO;AACV,eAAK,KAAK,OAAO,EAAE;AACvB,YAAI,OAAO,KAAM;AACb,iBAAO,OAAO,OAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO;AACtD,iBAAK,KAAK,OAAO,EAAE;AACvB,eAAK,IAAI;AAAA,QACb,WACS,CAAC,KAAK,iBAAiB;AAC5B,aAAG;AACC,gBAAIA,KAAI,KAAK;AACb,gBAAIC,MAAK,KAAK,OAAOD;AACrB,gBAAIC,QAAO;AACP,cAAAA,MAAK,KAAK,OAAO,EAAED;AACvB,kBAAM,WAAWA;AACjB,mBAAOC,QAAO;AACV,cAAAA,MAAK,KAAK,OAAO,EAAED;AACvB,gBAAIC,QAAO,QAAQD,MAAK,KAAK,OAAOA,KAAI,IAAI,SAAS;AACjD,mBAAKA;AAAA;AAEL;AAAA,UACR,SAAS;AAAA,QACb;AACA,cAAM,IAAI;AACV,eAAO,KAAK,YAAY,KAAK,GAAG,IAAI;AACpC,eAAO,OAAO,KAAK,eAAe;AAAA,MACtC;AAAA,MACA,CAAC,mBAAmB;AAChB,cAAM,SAAS,KAAK,YAAY;AAChC,YAAI,MAAM,KAAK,MAAM;AACrB,YAAI,IAAI,KAAK,MAAM;AACnB,YAAI;AACJ,eAAQ,KAAK,KAAK,OAAO,EAAE,IAAK;AAC5B,cAAI,OAAO,KAAK;AACZ,kBAAM,OAAO,KAAK,OAAO,IAAI;AAC7B,gBAAI,QAAQ,IAAI,KAAM,UAAU,mBAAmB,IAAI,IAAI;AACvD;AACJ,kBAAM;AAAA,UACV,WACS,QAAQ,EAAE,GAAG;AAClB,gBAAI,OAAO,KAAK,OAAO,IAAI;AAC3B,gBAAI,OAAO,MAAM;AACb,kBAAI,SAAS,MAAM;AACf,qBAAK;AACL,qBAAK;AACL,uBAAO,KAAK,OAAO,IAAI;AAAA,cAC3B;AAEI,sBAAM;AAAA,YACd;AACA,gBAAI,SAAS,OAAQ,UAAU,mBAAmB,IAAI,IAAI;AACtD;AACJ,gBAAI,OAAO,MAAM;AACb,oBAAM,KAAK,KAAK,eAAe,IAAI,CAAC;AACpC,kBAAI,OAAO;AACP;AACJ,kBAAI,KAAK,IAAI,GAAG,KAAK,CAAC;AAAA,YAC1B;AAAA,UACJ,OACK;AACD,gBAAI,UAAU,mBAAmB,IAAI,EAAE;AACnC;AACJ,kBAAM;AAAA,UACV;AAAA,QACJ;AACA,YAAI,CAAC,MAAM,CAAC,KAAK;AACb,iBAAO,KAAK,QAAQ,cAAc;AACtC,cAAM,IAAI;AACV,eAAO,KAAK,YAAY,MAAM,GAAG,IAAI;AACrC,eAAO,SAAS,SAAS;AAAA,MAC7B;AAAA,MACA,CAAC,UAAU,GAAG;AACV,YAAI,IAAI,GAAG;AACP,gBAAM,KAAK,OAAO,OAAO,KAAK,KAAK,CAAC;AACpC,eAAK,OAAO;AACZ,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,YAAY,GAAG,YAAY;AACxB,cAAM,IAAI,KAAK,OAAO,MAAM,KAAK,KAAK,CAAC;AACvC,YAAI,GAAG;AACH,gBAAM;AACN,eAAK,OAAO,EAAE;AACd,iBAAO,EAAE;AAAA,QACb,WACS;AACL,gBAAM;AACV,eAAO;AAAA,MACX;AAAA,MACA,CAAC,iBAAiB;AACd,gBAAQ,KAAK,OAAO,CAAC,GAAG;AAAA,UACpB,KAAK;AACD,oBAAS,OAAO,KAAK,QAAQ,MACxB,OAAO,KAAK,WAAW,IAAI,MAC3B,OAAO,KAAK,eAAe;AAAA,UACpC,KAAK;AACD,oBAAS,OAAO,KAAK,UAAU,eAAe,MACzC,OAAO,KAAK,WAAW,IAAI,MAC3B,OAAO,KAAK,eAAe;AAAA,UACpC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK,KAAK;AACN,kBAAM,SAAS,KAAK,YAAY;AAChC,kBAAM,MAAM,KAAK,OAAO,CAAC;AACzB,gBAAI,QAAQ,GAAG,KAAM,UAAU,mBAAmB,IAAI,GAAG,GAAI;AACzD,kBAAI,CAAC;AACD,qBAAK,aAAa,KAAK,cAAc;AAAA,uBAChC,KAAK;AACV,qBAAK,UAAU;AACnB,sBAAS,OAAO,KAAK,UAAU,CAAC,MAC3B,OAAO,KAAK,WAAW,IAAI,MAC3B,OAAO,KAAK,eAAe;AAAA,YACpC;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,UAAU;AACP,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AACxB,cAAI,IAAI,KAAK,MAAM;AACnB,cAAI,KAAK,KAAK,OAAO;AACrB,iBAAO,CAAC,QAAQ,EAAE,KAAK,OAAO;AAC1B,iBAAK,KAAK,OAAO,EAAE;AACvB,iBAAO,OAAO,KAAK,YAAY,OAAO,MAAM,IAAI,IAAI,GAAG,KAAK;AAAA,QAChE,OACK;AACD,cAAI,IAAI,KAAK,MAAM;AACnB,cAAI,KAAK,KAAK,OAAO;AACrB,iBAAO,IAAI;AACP,gBAAI,SAAS,IAAI,EAAE;AACf,mBAAK,KAAK,OAAO,EAAE;AAAA,qBACd,OAAO,OACZ,UAAU,IAAI,KAAK,OAAO,IAAI,EAAE,KAChC,UAAU,IAAI,KAAK,OAAO,IAAI,EAAE,GAAG;AACnC,mBAAK,KAAK,OAAQ,KAAK;AAAA,YAC3B;AAEI;AAAA,UACR;AACA,iBAAO,OAAO,KAAK,YAAY,GAAG,KAAK;AAAA,QAC3C;AAAA,MACJ;AAAA,MACA,CAAC,cAAc;AACX,cAAM,KAAK,KAAK,OAAO,KAAK;AAC5B,YAAI,OAAO;AACP,iBAAO,OAAO,KAAK,UAAU,CAAC;AAAA,iBACzB,OAAO,QAAQ,KAAK,OAAO,CAAC,MAAM;AACvC,iBAAO,OAAO,KAAK,UAAU,CAAC;AAAA;AAE9B,iBAAO;AAAA,MACf;AAAA,MACA,CAAC,WAAW,WAAW;AACnB,YAAI,IAAI,KAAK,MAAM;AACnB,YAAI;AACJ,WAAG;AACC,eAAK,KAAK,OAAO,EAAE;AAAA,QACvB,SAAS,OAAO,OAAQ,aAAa,OAAO;AAC5C,cAAM,IAAI,IAAI,KAAK;AACnB,YAAI,IAAI,GAAG;AACP,gBAAM,KAAK,OAAO,OAAO,KAAK,KAAK,CAAC;AACpC,eAAK,MAAM;AAAA,QACf;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,UAAU,MAAM;AACb,YAAI,IAAI,KAAK;AACb,YAAI,KAAK,KAAK,OAAO;AACrB,eAAO,CAAC,KAAK,EAAE;AACX,eAAK,KAAK,OAAO,EAAE;AACvB,eAAO,OAAO,KAAK,YAAY,GAAG,KAAK;AAAA,MAC3C;AAAA,IACJ;AAEA,YAAQ,QAAQ;AAAA;AAAA;;;AC9sBhB;AAAA;AAAA;AAOA,QAAM,cAAN,MAAkB;AAAA,MACd,cAAc;AACV,aAAK,aAAa,CAAC;AAKnB,aAAK,aAAa,CAAC,WAAW,KAAK,WAAW,KAAK,MAAM;AAMzD,aAAK,UAAU,CAAC,WAAW;AACvB,cAAI,MAAM;AACV,cAAI,OAAO,KAAK,WAAW;AAC3B,iBAAO,MAAM,MAAM;AACf,kBAAM,MAAO,MAAM,QAAS;AAC5B,gBAAI,KAAK,WAAW,OAAO;AACvB,oBAAM,MAAM;AAAA;AAEZ,qBAAO;AAAA,UACf;AACA,cAAI,KAAK,WAAW,SAAS;AACzB,mBAAO,EAAE,MAAM,MAAM,GAAG,KAAK,EAAE;AACnC,cAAI,QAAQ;AACR,mBAAO,EAAE,MAAM,GAAG,KAAK,OAAO;AAClC,gBAAM,QAAQ,KAAK,WAAW,MAAM;AACpC,iBAAO,EAAE,MAAM,KAAK,KAAK,SAAS,QAAQ,EAAE;AAAA,QAChD;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,cAAc;AAAA;AAAA;;;ACxCtB;AAAA;AAAA;AAEA,QAAI,eAAe,UAAQ;AAC3B,QAAI,MAAM;AACV,QAAI,QAAQ;AAEZ,aAAS,cAAc,MAAM,MAAM;AAC/B,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE;AAC/B,YAAI,KAAK,GAAG,SAAS;AACjB,iBAAO;AACf,aAAO;AAAA,IACX;AACA,aAAS,kBAAkB,MAAM;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAClC,gBAAQ,KAAK,GAAG,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD;AAAA,UACJ;AACI,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,YAAY,OAAO;AACxB,cAAQ,+BAAO,MAAM;AAAA,QACjB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO;AAAA,MACf;AAAA,IACJ;AACA,aAAS,aAAa,QAAQ;AAC1B,cAAQ,OAAO,MAAM;AAAA,QACjB,KAAK;AACD,iBAAO,OAAO;AAAA,QAClB,KAAK,aAAa;AACd,gBAAM,KAAK,OAAO,MAAM,OAAO,MAAM,SAAS;AAC9C,iBAAO,GAAG,OAAO,GAAG;AAAA,QACxB;AAAA,QACA,KAAK;AACD,iBAAO,OAAO,MAAM,OAAO,MAAM,SAAS,GAAG;AAAA,QAEjD;AACI,iBAAO,CAAC;AAAA,MAChB;AAAA,IACJ;AAEA,aAAS,sBAAsB,MAAM;AArDrC;AAsDI,UAAI,KAAK,WAAW;AAChB,eAAO,CAAC;AACZ,UAAI,IAAI,KAAK;AACb;AAAM,eAAO,EAAE,KAAK,GAAG;AACnB,kBAAQ,KAAK,GAAG,MAAM;AAAA,YAClB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACD,oBAAM;AAAA,UACd;AAAA,QACJ;AACA,eAAO,UAAK,EAAE,OAAP,mBAAW,UAAS,SAAS;AAAA,MAEpC;AACA,aAAO,KAAK,OAAO,GAAG,KAAK,MAAM;AAAA,IACrC;AACA,aAAS,gBAAgB,IAAI;AACzB,UAAI,GAAG,MAAM,SAAS,kBAAkB;AACpC,mBAAW,MAAM,GAAG,OAAO;AACvB,cAAI,GAAG,OACH,CAAC,GAAG,SACJ,CAAC,cAAc,GAAG,OAAO,kBAAkB,KAC3C,CAAC,cAAc,GAAG,KAAK,eAAe,GAAG;AACzC,gBAAI,GAAG;AACH,iBAAG,QAAQ,GAAG;AAClB,mBAAO,GAAG;AACV,gBAAI,YAAY,GAAG,KAAK,GAAG;AACvB,kBAAI,GAAG,MAAM;AACT,sBAAM,UAAU,KAAK,MAAM,GAAG,MAAM,KAAK,GAAG,GAAG;AAAA;AAE/C,mBAAG,MAAM,MAAM,GAAG;AAAA,YAC1B;AAEI,oBAAM,UAAU,KAAK,MAAM,GAAG,OAAO,GAAG,GAAG;AAC/C,mBAAO,GAAG;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AA4BA,QAAM,SAAN,MAAa;AAAA,MAKT,YAAY,WAAW;AAEnB,aAAK,YAAY;AAEjB,aAAK,WAAW;AAEhB,aAAK,SAAS;AAEd,aAAK,SAAS;AAEd,aAAK,YAAY;AAEjB,aAAK,QAAQ,CAAC;AAEd,aAAK,SAAS;AAEd,aAAK,OAAO;AAEZ,aAAK,QAAQ,IAAI,MAAM,MAAM;AAC7B,aAAK,YAAY;AAAA,MACrB;AAAA,MASA,CAAC,MAAM,QAAQ,aAAa,OAAO;AAC/B,YAAI,KAAK,aAAa,KAAK,WAAW;AAClC,eAAK,UAAU,CAAC;AACpB,mBAAW,UAAU,KAAK,MAAM,IAAI,QAAQ,UAAU;AAClD,iBAAO,KAAK,KAAK,MAAM;AAC3B,YAAI,CAAC;AACD,iBAAO,KAAK,IAAI;AAAA,MACxB;AAAA,MAIA,CAAC,KAAK,QAAQ;AACV,aAAK,SAAS;AACd,YAAI,aAAa,IAAI;AACjB,kBAAQ,IAAI,KAAK,IAAI,YAAY,MAAM,CAAC;AAC5C,YAAI,KAAK,UAAU;AACf,eAAK,WAAW;AAChB,iBAAO,KAAK,KAAK;AACjB,eAAK,UAAU,OAAO;AACtB;AAAA,QACJ;AACA,cAAM,OAAO,IAAI,UAAU,MAAM;AACjC,YAAI,CAAC,MAAM;AACP,gBAAM,UAAU,qBAAqB;AACrC,iBAAO,KAAK,IAAI,EAAE,MAAM,SAAS,QAAQ,KAAK,QAAQ,SAAS,OAAO,CAAC;AACvE,eAAK,UAAU,OAAO;AAAA,QAC1B,WACS,SAAS,UAAU;AACxB,eAAK,YAAY;AACjB,eAAK,WAAW;AAChB,eAAK,OAAO;AAAA,QAChB,OACK;AACD,eAAK,OAAO;AACZ,iBAAO,KAAK,KAAK;AACjB,kBAAQ,MAAM;AAAA,YACV,KAAK;AACD,mBAAK,YAAY;AACjB,mBAAK,SAAS;AACd,kBAAI,KAAK;AACL,qBAAK,UAAU,KAAK,SAAS,OAAO,MAAM;AAC9C;AAAA,YACJ,KAAK;AACD,kBAAI,KAAK,aAAa,OAAO,OAAO;AAChC,qBAAK,UAAU,OAAO;AAC1B;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACD,kBAAI,KAAK;AACL,qBAAK,UAAU,OAAO;AAC1B;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AACD;AAAA,YACJ;AACI,mBAAK,YAAY;AAAA,UACzB;AACA,eAAK,UAAU,OAAO;AAAA,QAC1B;AAAA,MACJ;AAAA,MAEA,CAAC,MAAM;AACH,eAAO,KAAK,MAAM,SAAS;AACvB,iBAAO,KAAK,IAAI;AAAA,MACxB;AAAA,MACA,IAAI,cAAc;AACd,cAAM,KAAK;AAAA,UACP,MAAM,KAAK;AAAA,UACX,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,QACjB;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,OAAO;AACJ,cAAM,MAAM,KAAK,KAAK,CAAC;AACvB,YAAI,KAAK,SAAS,cAAc,CAAC,OAAO,IAAI,SAAS,YAAY;AAC7D,iBAAO,KAAK,MAAM,SAAS;AACvB,mBAAO,KAAK,IAAI;AACpB,eAAK,MAAM,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,QAAQ,KAAK;AAAA,YACb,QAAQ,KAAK;AAAA,UACjB,CAAC;AACD;AAAA,QACJ;AACA,YAAI,CAAC;AACD,iBAAO,OAAO,KAAK,OAAO;AAC9B,gBAAQ,IAAI,MAAM;AAAA,UACd,KAAK;AACD,mBAAO,OAAO,KAAK,SAAS,GAAG;AAAA,UACnC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,OAAO,KAAK,OAAO,GAAG;AAAA,UACjC,KAAK;AACD,mBAAO,OAAO,KAAK,YAAY,GAAG;AAAA,UACtC,KAAK;AACD,mBAAO,OAAO,KAAK,SAAS,GAAG;AAAA,UACnC,KAAK;AACD,mBAAO,OAAO,KAAK,cAAc,GAAG;AAAA,UACxC,KAAK;AACD,mBAAO,OAAO,KAAK,eAAe,GAAG;AAAA,UACzC,KAAK;AACD,mBAAO,OAAO,KAAK,YAAY,GAAG;AAAA,QAC1C;AAEA,eAAO,KAAK,IAAI;AAAA,MACpB;AAAA,MACA,KAAK,GAAG;AACJ,eAAO,KAAK,MAAM,KAAK,MAAM,SAAS;AAAA,MAC1C;AAAA,MACA,CAAC,IAAI,OAAO;AACR,cAAM,QAAQ,SAAS,KAAK,MAAM,IAAI;AAEtC,YAAI,CAAC,OAAO;AACR,gBAAM,UAAU;AAChB,gBAAM,EAAE,MAAM,SAAS,QAAQ,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AAAA,QACpE,WACS,KAAK,MAAM,WAAW,GAAG;AAC9B,gBAAM;AAAA,QACV,OACK;AACD,gBAAM,MAAM,KAAK,KAAK,CAAC;AACvB,cAAI,MAAM,SAAS,gBAAgB;AAE/B,kBAAM,SAAS,YAAY,MAAM,IAAI,SAAS;AAAA,UAClD,WACS,MAAM,SAAS,qBAAqB,IAAI,SAAS,YAAY;AAElE,kBAAM,SAAS;AAAA,UACnB;AACA,cAAI,MAAM,SAAS;AACf,4BAAgB,KAAK;AACzB,kBAAQ,IAAI,MAAM;AAAA,YACd,KAAK;AACD,kBAAI,QAAQ;AACZ;AAAA,YACJ,KAAK;AACD,kBAAI,MAAM,KAAK,KAAK;AACpB;AAAA,YACJ,KAAK,aAAa;AACd,oBAAM,KAAK,IAAI,MAAM,IAAI,MAAM,SAAS;AACxC,kBAAI,GAAG,OAAO;AACV,oBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AACjD,qBAAK,YAAY;AACjB;AAAA,cACJ,WACS,GAAG,KAAK;AACb,mBAAG,QAAQ;AAAA,cACf,OACK;AACD,uBAAO,OAAO,IAAI,EAAE,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AACzC,qBAAK,YAAY,CAAC,GAAG;AACrB;AAAA,cACJ;AACA;AAAA,YACJ;AAAA,YACA,KAAK,aAAa;AACd,oBAAM,KAAK,IAAI,MAAM,IAAI,MAAM,SAAS;AACxC,kBAAI,GAAG;AACH,oBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,OAAO,MAAM,CAAC;AAAA;AAE1C,mBAAG,QAAQ;AACf;AAAA,YACJ;AAAA,YACA,KAAK,mBAAmB;AACpB,oBAAM,KAAK,IAAI,MAAM,IAAI,MAAM,SAAS;AACxC,kBAAI,CAAC,MAAM,GAAG;AACV,oBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AAAA,uBAC5C,GAAG;AACR,mBAAG,QAAQ;AAAA;AAEX,uBAAO,OAAO,IAAI,EAAE,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AAC7C;AAAA,YACJ;AAAA,YAEA;AACI,qBAAO,KAAK,IAAI;AAChB,qBAAO,KAAK,IAAI,KAAK;AAAA,UAC7B;AACA,eAAK,IAAI,SAAS,cACd,IAAI,SAAS,eACb,IAAI,SAAS,iBACZ,MAAM,SAAS,eAAe,MAAM,SAAS,cAAc;AAC5D,kBAAM,OAAO,MAAM,MAAM,MAAM,MAAM,SAAS;AAC9C,gBAAI,QACA,CAAC,KAAK,OACN,CAAC,KAAK,SACN,KAAK,MAAM,SAAS,KACpB,kBAAkB,KAAK,KAAK,MAAM,OACjC,MAAM,WAAW,KACd,KAAK,MAAM,MAAM,QAAM,GAAG,SAAS,aAAa,GAAG,SAAS,MAAM,MAAM,IAAI;AAChF,kBAAI,IAAI,SAAS;AACb,oBAAI,MAAM,KAAK;AAAA;AAEf,oBAAI,MAAM,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;AACxC,oBAAM,MAAM,OAAO,IAAI,CAAC;AAAA,YAC5B;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,SAAS;AACN,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AACD,kBAAM,EAAE,MAAM,aAAa,QAAQ,KAAK,QAAQ,QAAQ,KAAK,OAAO;AACpE;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,kBAAM,KAAK;AACX;AAAA,UACJ,KAAK;AAAA,UACL,KAAK,aAAa;AACd,kBAAM,MAAM;AAAA,cACR,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC;AAAA,YACZ;AACA,gBAAI,KAAK,SAAS;AACd,kBAAI,MAAM,KAAK,KAAK,WAAW;AACnC,iBAAK,MAAM,KAAK,GAAG;AACnB;AAAA,UACJ;AAAA,QACJ;AACA,cAAM;AAAA,UACF,MAAM;AAAA,UACN,QAAQ,KAAK;AAAA,UACb,SAAS,cAAc,KAAK;AAAA,UAC5B,QAAQ,KAAK;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,CAAC,SAAS,KAAK;AACX,YAAI,IAAI;AACJ,iBAAO,OAAO,KAAK,QAAQ,GAAG;AAClC,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK,aAAa;AACd,gBAAI,kBAAkB,IAAI,KAAK,MAAM,IAAI;AACrC,qBAAO,KAAK,IAAI;AAChB,qBAAO,KAAK,KAAK;AAAA,YACrB;AAEI,kBAAI,MAAM,KAAK,KAAK,WAAW;AACnC;AAAA,UACJ;AAAA,UACA,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,MAAM,KAAK,KAAK,WAAW;AAC/B;AAAA,QACR;AACA,cAAM,KAAK,KAAK,gBAAgB,GAAG;AACnC,YAAI;AACA,eAAK,MAAM,KAAK,EAAE;AAAA,aACjB;AACD,gBAAM;AAAA,YACF,MAAM;AAAA,YACN,QAAQ,KAAK;AAAA,YACb,SAAS,cAAc,KAAK;AAAA,YAC5B,QAAQ,KAAK;AAAA,UACjB;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,OAAO,QAAQ;AACZ,YAAI,KAAK,SAAS,iBAAiB;AAC/B,gBAAM,OAAO,aAAa,KAAK,KAAK,CAAC,CAAC;AACtC,gBAAM,QAAQ,sBAAsB,IAAI;AACxC,cAAI;AACJ,cAAI,OAAO,KAAK;AACZ,kBAAM,OAAO;AACb,gBAAI,KAAK,KAAK,WAAW;AACzB,mBAAO,OAAO;AAAA,UAClB;AAEI,kBAAM,CAAC,KAAK,WAAW;AAC3B,gBAAM,MAAM;AAAA,YACR,MAAM;AAAA,YACN,QAAQ,OAAO;AAAA,YACf,QAAQ,OAAO;AAAA,YACf,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,IAAI,CAAC;AAAA,UACvC;AACA,eAAK,YAAY;AACjB,eAAK,MAAM,KAAK,MAAM,SAAS,KAAK;AAAA,QACxC;AAEI,iBAAO,KAAK,QAAQ,MAAM;AAAA,MAClC;AAAA,MACA,CAAC,YAAY,QAAQ;AACjB,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,UACJ,KAAK;AACD,mBAAO,SAAS,KAAK;AAErB,iBAAK,YAAY;AACjB,iBAAK,SAAS;AACd,gBAAI,KAAK,WAAW;AAChB,kBAAI,KAAK,KAAK,OAAO,QAAQ,IAAI,IAAI;AACrC,qBAAO,OAAO,GAAG;AACb,qBAAK,UAAU,KAAK,SAAS,EAAE;AAC/B,qBAAK,KAAK,OAAO,QAAQ,MAAM,EAAE,IAAI;AAAA,cACzC;AAAA,YACJ;AACA,mBAAO,KAAK,IAAI;AAChB;AAAA,UAEJ;AACI,mBAAO,KAAK,IAAI;AAChB,mBAAO,KAAK,KAAK;AAAA,QACzB;AAAA,MACJ;AAAA,MACA,CAAC,SAAS,KAAK;AA3dnB;AA4dQ,cAAM,KAAK,IAAI,MAAM,IAAI,MAAM,SAAS;AAExC,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AACD,iBAAK,YAAY;AACjB,gBAAI,GAAG,OAAO;AACV,oBAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,MAAM;AAC/C,oBAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,SAAS,KAAK;AACxD,mBAAI,6BAAM,UAAS;AACf,2CAAK,KAAK,KAAK;AAAA;AAEf,oBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YACpD,WACS,GAAG,KAAK;AACb,iBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,YAChC,OACK;AACD,iBAAG,MAAM,KAAK,KAAK,WAAW;AAAA,YAClC;AACA;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,GAAG,OAAO;AACV,kBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YAChD,WACS,GAAG,KAAK;AACb,iBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,YAChC,OACK;AACD,kBAAI,KAAK,kBAAkB,GAAG,OAAO,IAAI,MAAM,GAAG;AAC9C,sBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,SAAS;AAC1C,sBAAM,OAAM,kCAAM,UAAN,mBAAa;AACzB,oBAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,wBAAM,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK;AACxC,sBAAI,KAAK,KAAK,WAAW;AACzB,sBAAI,MAAM,IAAI;AACd;AAAA,gBACJ;AAAA,cACJ;AACA,iBAAG,MAAM,KAAK,KAAK,WAAW;AAAA,YAClC;AACA;AAAA,QACR;AACA,YAAI,KAAK,UAAU,IAAI,QAAQ;AAC3B,gBAAM,cAAc,CAAC,KAAK,aAAa,KAAK,WAAW,IAAI;AAC3D,gBAAM,aAAa,gBACd,GAAG,OAAO,GAAG,gBACd,KAAK,SAAS;AAElB,cAAI,QAAQ,CAAC;AACb,cAAI,cAAc,GAAG,OAAO,CAAC,GAAG,OAAO;AACnC,kBAAM,KAAK,CAAC;AACZ,qBAAS,IAAI,GAAG,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AACpC,oBAAM,KAAK,GAAG,IAAI;AAClB,sBAAQ,GAAG,MAAM;AAAA,gBACb,KAAK;AACD,qBAAG,KAAK,CAAC;AACT;AAAA,gBACJ,KAAK;AACD;AAAA,gBACJ,KAAK;AACD,sBAAI,GAAG,SAAS,IAAI;AAChB,uBAAG,SAAS;AAChB;AAAA,gBACJ;AACI,qBAAG,SAAS;AAAA,cACpB;AAAA,YACJ;AACA,gBAAI,GAAG,UAAU;AACb,sBAAQ,GAAG,IAAI,OAAO,GAAG,EAAE;AAAA,UACnC;AACA,kBAAQ,KAAK,MAAM;AAAA,YACf,KAAK;AAAA,YACL,KAAK;AACD,kBAAI,cAAc,GAAG,OAAO;AACxB,sBAAM,KAAK,KAAK,WAAW;AAC3B,oBAAI,MAAM,KAAK,EAAE,MAAM,CAAC;AACxB,qBAAK,YAAY;AAAA,cACrB,WACS,GAAG,KAAK;AACb,mBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,cAChC,OACK;AACD,mBAAG,MAAM,KAAK,KAAK,WAAW;AAAA,cAClC;AACA;AAAA,YACJ,KAAK;AACD,kBAAI,CAAC,GAAG,OAAO,CAAC,GAAG,aAAa;AAC5B,mBAAG,MAAM,KAAK,KAAK,WAAW;AAC9B,mBAAG,cAAc;AAAA,cACrB,WACS,cAAc,GAAG,OAAO;AAC7B,sBAAM,KAAK,KAAK,WAAW;AAC3B,oBAAI,MAAM,KAAK,EAAE,OAAO,aAAa,KAAK,CAAC;AAAA,cAC/C,OACK;AACD,qBAAK,MAAM,KAAK;AAAA,kBACZ,MAAM;AAAA,kBACN,QAAQ,KAAK;AAAA,kBACb,QAAQ,KAAK;AAAA,kBACb,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW,GAAG,aAAa,KAAK,CAAC;AAAA,gBAC5D,CAAC;AAAA,cACL;AACA,mBAAK,YAAY;AACjB;AAAA,YACJ,KAAK;AACD,kBAAI,GAAG,aAAa;AAChB,oBAAI,CAAC,GAAG,KAAK;AACT,sBAAI,cAAc,GAAG,OAAO,SAAS,GAAG;AACpC,2BAAO,OAAO,IAAI,EAAE,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,kBAC5D,OACK;AACD,0BAAME,SAAQ,sBAAsB,GAAG,KAAK;AAC5C,yBAAK,MAAM,KAAK;AAAA,sBACZ,MAAM;AAAA,sBACN,QAAQ,KAAK;AAAA,sBACb,QAAQ,KAAK;AAAA,sBACb,OAAO,CAAC,EAAE,OAAAA,QAAO,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,oBACzD,CAAC;AAAA,kBACL;AAAA,gBACJ,WACS,GAAG,OAAO;AACf,sBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,gBACpE,WACS,cAAc,GAAG,KAAK,eAAe,GAAG;AAC7C,uBAAK,MAAM,KAAK;AAAA,oBACZ,MAAM;AAAA,oBACN,QAAQ,KAAK;AAAA,oBACb,QAAQ,KAAK;AAAA,oBACb,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,kBACzD,CAAC;AAAA,gBACL,WACS,YAAY,GAAG,GAAG,KACvB,CAAC,cAAc,GAAG,KAAK,SAAS,GAAG;AACnC,wBAAMA,SAAQ,sBAAsB,GAAG,KAAK;AAC5C,wBAAM,MAAM,GAAG;AACf,wBAAM,MAAM,GAAG;AACf,sBAAI,KAAK,KAAK,WAAW;AAEzB,yBAAO,GAAG;AAEV,yBAAO,GAAG;AACV,uBAAK,MAAM,KAAK;AAAA,oBACZ,MAAM;AAAA,oBACN,QAAQ,KAAK;AAAA,oBACb,QAAQ,KAAK;AAAA,oBACb,OAAO,CAAC,EAAE,OAAAA,QAAO,KAAK,IAAI,CAAC;AAAA,kBAC/B,CAAC;AAAA,gBACL,WACS,MAAM,SAAS,GAAG;AAEvB,qBAAG,MAAM,GAAG,IAAI,OAAO,OAAO,KAAK,WAAW;AAAA,gBAClD,OACK;AACD,qBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,gBAChC;AAAA,cACJ,OACK;AACD,oBAAI,CAAC,GAAG,KAAK;AACT,yBAAO,OAAO,IAAI,EAAE,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,gBAC5D,WACS,GAAG,SAAS,YAAY;AAC7B,sBAAI,MAAM,KAAK,EAAE,OAAO,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,gBAChE,WACS,cAAc,GAAG,KAAK,eAAe,GAAG;AAC7C,uBAAK,MAAM,KAAK;AAAA,oBACZ,MAAM;AAAA,oBACN,QAAQ,KAAK;AAAA,oBACb,QAAQ,KAAK;AAAA,oBACb,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,kBAC7D,CAAC;AAAA,gBACL,OACK;AACD,qBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,gBAChC;AAAA,cACJ;AACA,mBAAK,YAAY;AACjB;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK,wBAAwB;AACzB,oBAAMC,MAAK,KAAK,WAAW,KAAK,IAAI;AACpC,kBAAI,cAAc,GAAG,OAAO;AACxB,oBAAI,MAAM,KAAK,EAAE,OAAO,KAAKA,KAAI,KAAK,CAAC,EAAE,CAAC;AAC1C,qBAAK,YAAY;AAAA,cACrB,WACS,GAAG,KAAK;AACb,qBAAK,MAAM,KAAKA,GAAE;AAAA,cACtB,OACK;AACD,uBAAO,OAAO,IAAI,EAAE,KAAKA,KAAI,KAAK,CAAC,EAAE,CAAC;AACtC,qBAAK,YAAY;AAAA,cACrB;AACA;AAAA,YACJ;AAAA,YACA,SAAS;AACL,oBAAM,KAAK,KAAK,gBAAgB,GAAG;AACnC,kBAAI,IAAI;AACJ,oBAAI,eAAe,GAAG,SAAS,aAAa;AACxC,sBAAI,MAAM,KAAK,EAAE,MAAM,CAAC;AAAA,gBAC5B;AACA,qBAAK,MAAM,KAAK,EAAE;AAClB;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AACA,eAAO,KAAK,IAAI;AAChB,eAAO,KAAK,KAAK;AAAA,MACrB;AAAA,MACA,CAAC,cAAc,KAAK;AA/qBxB;AAgrBQ,cAAM,KAAK,IAAI,MAAM,IAAI,MAAM,SAAS;AACxC,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AACD,gBAAI,GAAG,OAAO;AACV,oBAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,MAAM;AAC/C,oBAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,SAAS,KAAK;AACxD,mBAAI,6BAAM,UAAS;AACf,2CAAK,KAAK,KAAK;AAAA;AAEf,oBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YACpD;AAEI,iBAAG,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,GAAG;AACH,kBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,iBAC3C;AACD,kBAAI,KAAK,kBAAkB,GAAG,OAAO,IAAI,MAAM,GAAG;AAC9C,sBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,SAAS;AAC1C,sBAAM,OAAM,kCAAM,UAAN,mBAAa;AACzB,oBAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,wBAAM,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK;AACxC,sBAAI,KAAK,KAAK,WAAW;AACzB,sBAAI,MAAM,IAAI;AACd;AAAA,gBACJ;AAAA,cACJ;AACA,iBAAG,MAAM,KAAK,KAAK,WAAW;AAAA,YAClC;AACA;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,GAAG,SAAS,KAAK,UAAU,IAAI;AAC/B;AACJ,eAAG,MAAM,KAAK,KAAK,WAAW;AAC9B;AAAA,UACJ,KAAK;AACD,gBAAI,KAAK,WAAW,IAAI;AACpB;AACJ,gBAAI,GAAG,SAAS,cAAc,GAAG,OAAO,cAAc;AAClD,kBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA;AAE5C,iBAAG,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,QACR;AACA,YAAI,KAAK,SAAS,IAAI,QAAQ;AAC1B,gBAAM,KAAK,KAAK,gBAAgB,GAAG;AACnC,cAAI,IAAI;AACJ,iBAAK,MAAM,KAAK,EAAE;AAClB;AAAA,UACJ;AAAA,QACJ;AACA,eAAO,KAAK,IAAI;AAChB,eAAO,KAAK,KAAK;AAAA,MACrB;AAAA,MACA,CAAC,eAAe,IAAI;AAChB,cAAM,KAAK,GAAG,MAAM,GAAG,MAAM,SAAS;AACtC,YAAI,KAAK,SAAS,kBAAkB;AAChC,cAAI;AACJ,aAAG;AACC,mBAAO,KAAK,IAAI;AAChB,kBAAM,KAAK,KAAK,CAAC;AAAA,UACrB,SAAS,OAAO,IAAI,SAAS;AAAA,QACjC,WACS,GAAG,IAAI,WAAW,GAAG;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACf,KAAK;AAAA,YACL,KAAK;AACD,kBAAI,CAAC,MAAM,GAAG;AACV,mBAAG,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA;AAE3C,mBAAG,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,YACJ,KAAK;AACD,kBAAI,CAAC,MAAM,GAAG;AACV,mBAAG,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,uBAC1D,GAAG;AACR,mBAAG,IAAI,KAAK,KAAK,WAAW;AAAA;AAE5B,uBAAO,OAAO,IAAI,EAAE,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAC5D;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACD,kBAAI,CAAC,MAAM,GAAG;AACV,mBAAG,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,uBACtC,GAAG;AACR,mBAAG,IAAI,KAAK,KAAK,WAAW;AAAA;AAE5B,mBAAG,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK,wBAAwB;AACzB,oBAAMA,MAAK,KAAK,WAAW,KAAK,IAAI;AACpC,kBAAI,CAAC,MAAM,GAAG;AACV,mBAAG,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAKA,KAAI,KAAK,CAAC,EAAE,CAAC;AAAA,uBACxC,GAAG;AACR,qBAAK,MAAM,KAAKA,GAAE;AAAA;AAElB,uBAAO,OAAO,IAAI,EAAE,KAAKA,KAAI,KAAK,CAAC,EAAE,CAAC;AAC1C;AAAA,YACJ;AAAA,YACA,KAAK;AAAA,YACL,KAAK;AACD,iBAAG,IAAI,KAAK,KAAK,WAAW;AAC5B;AAAA,UACR;AACA,gBAAM,KAAK,KAAK,gBAAgB,EAAE;AAElC,cAAI;AACA,iBAAK,MAAM,KAAK,EAAE;AAAA,eACjB;AACD,mBAAO,KAAK,IAAI;AAChB,mBAAO,KAAK,KAAK;AAAA,UACrB;AAAA,QACJ,OACK;AACD,gBAAM,SAAS,KAAK,KAAK,CAAC;AAC1B,cAAI,OAAO,SAAS,gBACd,KAAK,SAAS,mBAAmB,OAAO,WAAW,GAAG,UACnD,KAAK,SAAS,aACX,CAAC,OAAO,MAAM,OAAO,MAAM,SAAS,GAAG,MAAO;AACtD,mBAAO,KAAK,IAAI;AAChB,mBAAO,KAAK,KAAK;AAAA,UACrB,WACS,KAAK,SAAS,mBACnB,OAAO,SAAS,mBAAmB;AACnC,kBAAM,OAAO,aAAa,MAAM;AAChC,kBAAM,QAAQ,sBAAsB,IAAI;AACxC,4BAAgB,EAAE;AAClB,kBAAM,MAAM,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,MAAM;AAC1C,gBAAI,KAAK,KAAK,WAAW;AACzB,kBAAM,MAAM;AAAA,cACR,MAAM;AAAA,cACN,QAAQ,GAAG;AAAA,cACX,QAAQ,GAAG;AAAA,cACX,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC;AAAA,YACnC;AACA,iBAAK,YAAY;AACjB,iBAAK,MAAM,KAAK,MAAM,SAAS,KAAK;AAAA,UACxC,OACK;AACD,mBAAO,KAAK,QAAQ,EAAE;AAAA,UAC1B;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,WAAW,MAAM;AACb,YAAI,KAAK,WAAW;AAChB,cAAI,KAAK,KAAK,OAAO,QAAQ,IAAI,IAAI;AACrC,iBAAO,OAAO,GAAG;AACb,iBAAK,UAAU,KAAK,SAAS,EAAE;AAC/B,iBAAK,KAAK,OAAO,QAAQ,MAAM,EAAE,IAAI;AAAA,UACzC;AAAA,QACJ;AACA,eAAO;AAAA,UACH;AAAA,UACA,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,gBAAgB,QAAQ;AACpB,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,WAAW,KAAK,IAAI;AAAA,UACpC,KAAK;AACD,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC,KAAK,WAAW;AAAA,cACxB,QAAQ;AAAA,YACZ;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,KAAK;AAAA,cACZ,OAAO,CAAC;AAAA,cACR,KAAK,CAAC;AAAA,YACV;AAAA,UACJ,KAAK;AACD,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YACzC;AAAA,UACJ,KAAK,oBAAoB;AACrB,iBAAK,YAAY;AACjB,kBAAM,OAAO,aAAa,MAAM;AAChC,kBAAM,QAAQ,sBAAsB,IAAI;AACxC,kBAAM,KAAK,KAAK,WAAW;AAC3B,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC,EAAE,OAAO,aAAa,KAAK,CAAC;AAAA,YACxC;AAAA,UACJ;AAAA,UACA,KAAK,iBAAiB;AAClB,iBAAK,YAAY;AACjB,kBAAM,OAAO,aAAa,MAAM;AAChC,kBAAM,QAAQ,sBAAsB,IAAI;AACxC,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YACzD;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,MACA,kBAAkB,OAAO,QAAQ;AAC7B,YAAI,KAAK,SAAS;AACd,iBAAO;AACX,YAAI,KAAK,UAAU;AACf,iBAAO;AACX,eAAO,MAAM,MAAM,QAAM,GAAG,SAAS,aAAa,GAAG,SAAS,OAAO;AAAA,MACzE;AAAA,MACA,CAAC,YAAY,QAAQ;AACjB,YAAI,KAAK,SAAS,YAAY;AAC1B,cAAI,OAAO;AACP,mBAAO,IAAI,KAAK,KAAK,WAAW;AAAA;AAEhC,mBAAO,MAAM,CAAC,KAAK,WAAW;AAClC,cAAI,KAAK,SAAS;AACd,mBAAO,KAAK,IAAI;AAAA,QACxB;AAAA,MACJ;AAAA,MACA,CAAC,QAAQ,OAAO;AACZ,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,IAAI;AAChB,mBAAO,KAAK,KAAK;AACjB;AAAA,UACJ,KAAK;AACD,iBAAK,YAAY;AAAA,UAErB,KAAK;AAAA,UACL,KAAK;AAAA,UACL;AAEI,gBAAI,MAAM;AACN,oBAAM,IAAI,KAAK,KAAK,WAAW;AAAA;AAE/B,oBAAM,MAAM,CAAC,KAAK,WAAW;AACjC,gBAAI,KAAK,SAAS;AACd,qBAAO,KAAK,IAAI;AAAA,QAC5B;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,SAAS;AAAA;AAAA;;;AC97BjB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,MAAM;AACV,QAAI,WAAW;AACf,QAAI,cAAc;AAClB,QAAI,SAAS;AAEb,aAAS,aAAa,SAAS;AAC3B,YAAM,eAAe,QAAQ,iBAAiB;AAC9C,YAAM,gBAAgB,QAAQ,eAAgB,gBAAgB,IAAI,YAAY,YAAY,KAAM;AAChG,aAAO,EAAE,aAAa,eAAe,aAAa;AAAA,IACtD;AAUA,aAAS,kBAAkB,QAAQ,UAAU,CAAC,GAAG;AAC7C,YAAM,EAAE,aAAAC,cAAa,aAAa,IAAI,aAAa,OAAO;AAC1D,YAAM,WAAW,IAAI,OAAO,OAAOA,gBAAA,gBAAAA,aAAa,UAAU;AAC1D,YAAM,aAAa,IAAI,SAAS,SAAS,OAAO;AAChD,YAAM,OAAO,MAAM,KAAK,WAAW,QAAQ,SAAS,MAAM,MAAM,CAAC,CAAC;AAClE,UAAI,gBAAgBA;AAChB,mBAAW,OAAO,MAAM;AACpB,cAAI,OAAO,QAAQ,OAAO,cAAc,QAAQA,YAAW,CAAC;AAC5D,cAAI,SAAS,QAAQ,OAAO,cAAc,QAAQA,YAAW,CAAC;AAAA,QAClE;AACJ,UAAI,KAAK,SAAS;AACd,eAAO;AACX,aAAO,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,WAAW,WAAW,CAAC;AAAA,IACrE;AAEA,aAAS,cAAc,QAAQ,UAAU,CAAC,GAAG;AACzC,YAAM,EAAE,aAAAA,cAAa,aAAa,IAAI,aAAa,OAAO;AAC1D,YAAM,WAAW,IAAI,OAAO,OAAOA,gBAAA,gBAAAA,aAAa,UAAU;AAC1D,YAAM,aAAa,IAAI,SAAS,SAAS,OAAO;AAEhD,UAAI,MAAM;AACV,iBAAW,QAAQ,WAAW,QAAQ,SAAS,MAAM,MAAM,GAAG,MAAM,OAAO,MAAM,GAAG;AAChF,YAAI,CAAC;AACD,gBAAM;AAAA,iBACD,IAAI,QAAQ,aAAa,UAAU;AACxC,cAAI,OAAO,KAAK,IAAI,OAAO,eAAe,KAAK,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,yEAAyE,CAAC;AAC7J;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,gBAAgBA,cAAa;AAC7B,YAAI,OAAO,QAAQ,OAAO,cAAc,QAAQA,YAAW,CAAC;AAC5D,YAAI,SAAS,QAAQ,OAAO,cAAc,QAAQA,YAAW,CAAC;AAAA,MAClE;AACA,aAAO;AAAA,IACX;AACA,aAASC,OAAM,KAAK,SAAS,SAAS;AAClC,UAAI,WAAW;AACf,UAAI,OAAO,YAAY,YAAY;AAC/B,mBAAW;AAAA,MACf,WACS,YAAY,UAAa,WAAW,OAAO,YAAY,UAAU;AACtE,kBAAU;AAAA,MACd;AACA,YAAM,MAAM,cAAc,KAAK,OAAO;AACtC,UAAI,CAAC;AACD,eAAO;AACX,UAAI,SAAS,QAAQ,aAAW,IAAI,KAAK,IAAI,QAAQ,UAAU,OAAO,CAAC;AACvE,UAAI,IAAI,OAAO,SAAS,GAAG;AACvB,YAAI,IAAI,QAAQ,aAAa;AACzB,gBAAM,IAAI,OAAO;AAAA;AAEjB,cAAI,SAAS,CAAC;AAAA,MACtB;AACA,aAAO,IAAI,KAAK,OAAO,OAAO,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC;AAAA,IACjE;AACA,aAAS,UAAU,OAAO,UAAU,SAAS;AACzC,UAAI,YAAY;AAChB,UAAI,OAAO,aAAa,cAAc,MAAM,QAAQ,QAAQ,GAAG;AAC3D,oBAAY;AAAA,MAChB,WACS,YAAY,UAAa,UAAU;AACxC,kBAAU;AAAA,MACd;AACA,UAAI,OAAO,YAAY;AACnB,kBAAU,QAAQ;AACtB,UAAI,OAAO,YAAY,UAAU;AAC7B,cAAM,SAAS,KAAK,MAAM,OAAO;AACjC,kBAAU,SAAS,IAAI,SAAY,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;AAAA,MAC7E;AACA,UAAI,UAAU,QAAW;AACrB,cAAM,EAAE,cAAc,IAAI,WAAW,YAAY,CAAC;AAClD,YAAI,CAAC;AACD,iBAAO;AAAA,MACf;AACA,UAAI,SAAS,WAAW,KAAK,KAAK,CAAC;AAC/B,eAAO,MAAM,SAAS,OAAO;AACjC,aAAO,IAAI,SAAS,SAAS,OAAO,WAAW,OAAO,EAAE,SAAS,OAAO;AAAA,IAC5E;AAEA,YAAQ,QAAQA;AAChB,YAAQ,oBAAoB;AAC5B,YAAQ,gBAAgB;AACxB,YAAQ,YAAY;AAAA;AAAA;;;AC1GpB,IAAAC,gBAAA;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,SAAS;AACb,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,cAAc;AAClB,QAAI,SAAS;AACb,QAAI,YAAY;AAChB,QAAI,QAAQ;AAIZ,YAAQ,WAAW,SAAS;AAC5B,YAAQ,WAAW,SAAS;AAC5B,YAAQ,SAAS,OAAO;AACxB,YAAQ,YAAY,OAAO;AAC3B,YAAQ,iBAAiB,OAAO;AAChC,YAAQ,cAAc,OAAO;AAC7B,YAAQ,QAAQ,MAAM;AACtB,YAAQ,UAAU,SAAS;AAC3B,YAAQ,eAAe,SAAS;AAChC,YAAQ,aAAa,SAAS;AAC9B,YAAQ,QAAQ,SAAS;AACzB,YAAQ,SAAS,SAAS;AAC1B,YAAQ,SAAS,SAAS;AAC1B,YAAQ,WAAW,SAAS;AAC5B,YAAQ,QAAQ,SAAS;AACzB,YAAQ,OAAO,KAAK;AACpB,YAAQ,SAAS,OAAO;AACxB,YAAQ,UAAU,QAAQ;AAC1B,YAAQ,UAAU,QAAQ;AAC1B,YAAQ,MAAM;AACd,YAAQ,QAAQ,MAAM;AACtB,YAAQ,cAAc,YAAY;AAClC,YAAQ,SAAS,OAAO;AACxB,YAAQ,QAAQ,UAAU;AAC1B,YAAQ,oBAAoB,UAAU;AACtC,YAAQ,gBAAgB,UAAU;AAClC,YAAQ,YAAY,UAAU;AAC9B,YAAQ,QAAQ,MAAM;AACtB,YAAQ,aAAa,MAAM;AAAA;AAAA;;;ACjDpB,SAAS,eAAe;AAC7B,MAAI,OAAO,cAAc,YAAY,eAAe,WAAW;AAC7D,WAAO,UAAU;AAAA,EACnB;AAEA,MAAI,OAAO,YAAY,YAAY,QAAQ,YAAY,QAAW;AAChE,WAAO,WAAW,QAAQ,QAAQ,OAAO,CAAC,MAAM,QAAQ,aACtD,QAAQ;AAAA,EAEZ;AAEA,SAAO;AACT;;;ACVO,SAAS,SAAS,OAAO,MAAM,QAAQ,SAAS;AACrD,MAAI,OAAO,WAAW,YAAY;AAChC,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,MAAI,CAAC,SAAS;AACZ,cAAU,CAAC;AAAA,EACb;AAEA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,QAAQ,EAAE,OAAO,CAAC,UAAUC,UAAS;AAC/C,aAAO,SAAS,KAAK,MAAM,OAAOA,OAAM,UAAU,OAAO;AAAA,IAC3D,GAAG,MAAM,EAAE;AAAA,EACb;AAEA,SAAO,QAAQ,QAAQ,EAAE,KAAK,MAAM;AAClC,QAAI,CAAC,MAAM,SAAS,OAAO;AACzB,aAAO,OAAO,OAAO;AAAA,IACvB;AAEA,WAAO,MAAM,SAAS,MAAM,OAAO,CAACC,SAAQ,eAAe;AACzD,aAAO,WAAW,KAAK,KAAK,MAAMA,SAAQ,OAAO;AAAA,IACnD,GAAG,MAAM,EAAE;AAAA,EACb,CAAC;AACH;;;ACxBO,SAAS,QAAQ,OAAO,MAAM,MAAMC,OAAM;AAC/C,QAAM,OAAOA;AACb,MAAI,CAAC,MAAM,SAAS,OAAO;AACzB,UAAM,SAAS,QAAQ,CAAC;AAAA,EAC1B;AAEA,MAAI,SAAS,UAAU;AACrB,IAAAA,QAAO,CAAC,QAAQ,YAAY;AAC1B,aAAO,QAAQ,QAAQ,EACpB,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC,EAC7B,KAAK,OAAO,KAAK,MAAM,OAAO,CAAC;AAAA,IACpC;AAAA,EACF;AAEA,MAAI,SAAS,SAAS;AACpB,IAAAA,QAAO,CAAC,QAAQ,YAAY;AAC1B,UAAI;AACJ,aAAO,QAAQ,QAAQ,EACpB,KAAK,OAAO,KAAK,MAAM,OAAO,CAAC,EAC/B,KAAK,CAAC,YAAY;AACjB,iBAAS;AACT,eAAO,KAAK,QAAQ,OAAO;AAAA,MAC7B,CAAC,EACA,KAAK,MAAM;AACV,eAAO;AAAA,MACT,CAAC;AAAA,IACL;AAAA,EACF;AAEA,MAAI,SAAS,SAAS;AACpB,IAAAA,QAAO,CAAC,QAAQ,YAAY;AAC1B,aAAO,QAAQ,QAAQ,EACpB,KAAK,OAAO,KAAK,MAAM,OAAO,CAAC,EAC/B,MAAM,CAAC,UAAU;AAChB,eAAO,KAAK,OAAO,OAAO;AAAA,MAC5B,CAAC;AAAA,IACL;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,KAAK;AAAA,IACxB,MAAMA;AAAA,IACN;AAAA,EACF,CAAC;AACH;;;AC3CO,SAAS,WAAW,OAAO,MAAM,QAAQ;AAC9C,MAAI,CAAC,MAAM,SAAS,OAAO;AACzB;AAAA,EACF;AAEA,QAAM,QAAQ,MAAM,SAAS,MAC1B,IAAI,CAAC,eAAe;AACnB,WAAO,WAAW;AAAA,EACpB,CAAC,EACA,QAAQ,MAAM;AAEjB,MAAI,UAAU,IAAI;AAChB;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,OAAO,OAAO,CAAC;AACtC;;;ACXA,IAAM,OAAO,SAAS;AACtB,IAAM,WAAW,KAAK,KAAK,IAAI;AAE/B,SAAS,QAAQC,OAAM,OAAO,MAAM;AAClC,QAAM,gBAAgB,SAAS,YAAY,IAAI,EAAE;AAAA,IAC/C;AAAA,IACA,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK;AAAA,EAC/B;AACA,EAAAA,MAAK,MAAM,EAAE,QAAQ,cAAc;AACnC,EAAAA,MAAK,SAAS;AACd,GAAC,UAAU,SAAS,SAAS,MAAM,EAAE,QAAQ,CAAC,SAAS;AACrD,UAAM,OAAO,OAAO,CAAC,OAAO,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI;AACtD,IAAAA,MAAK,QAAQA,MAAK,IAAI,QAAQ,SAAS,SAAS,IAAI,EAAE,MAAM,MAAM,IAAI;AAAA,EACxE,CAAC;AACH;AAEA,SAAS,WAAW;AAClB,QAAM,mBAAmB,OAAO,UAAU;AAC1C,QAAM,oBAAoB;AAAA,IACxB,UAAU,CAAC;AAAA,EACb;AACA,QAAM,eAAe,SAAS,KAAK,MAAM,mBAAmB,gBAAgB;AAC5E,UAAQ,cAAc,mBAAmB,gBAAgB;AACzD,SAAO;AACT;AAEA,SAAS,aAAa;AACpB,QAAM,QAAQ;AAAA,IACZ,UAAU,CAAC;AAAA,EACb;AAEA,QAAMA,QAAO,SAAS,KAAK,MAAM,KAAK;AACtC,UAAQA,OAAM,KAAK;AAEnB,SAAOA;AACT;AAEA,IAAO,4BAAQ,EAAE,UAAU,WAAW;;;ACxCtC,IAAI,UAAU;AAGd,IAAI,YAAY,uBAAuB,WAAW,aAAa;AAC/D,IAAI,WAAW;AAAA,EACb,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,EACV;AACF;AAGA,SAAS,cAAc,QAAQ;AAC7B,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AACA,SAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACjD,WAAO,IAAI,YAAY,KAAK,OAAO;AACnC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;AAGA,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU;AAAM,WAAO;AACxD,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAmB,WAAO;AACxE,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU;AAAM,WAAO;AAC3B,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;AAGA,SAAS,UAAU,UAAU,SAAS;AACpC,QAAM,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ;AACzC,SAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,QAAI,cAAc,QAAQ,IAAI,GAAG;AAC/B,UAAI,EAAE,OAAO;AAAW,eAAO,OAAO,QAAQ,EAAE,CAAC,MAAM,QAAQ,KAAK,CAAC;AAAA;AAChE,eAAO,OAAO,UAAU,SAAS,MAAM,QAAQ,IAAI;AAAA,IAC1D,OAAO;AACL,aAAO,OAAO,QAAQ,EAAE,CAAC,MAAM,QAAQ,KAAK,CAAC;AAAA,IAC/C;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAGA,SAAS,0BAA0B,KAAK;AACtC,aAAW,OAAO,KAAK;AACrB,QAAI,IAAI,SAAS,QAAQ;AACvB,aAAO,IAAI;AAAA,IACb;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,MAAM,UAAU,OAAO,SAAS;AAlEzC;AAmEE,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AACnC,cAAU,OAAO,OAAO,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,KAAK,OAAO,GAAG,OAAO;AAAA,EAC1E,OAAO;AACL,cAAU,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,EACnC;AACA,UAAQ,UAAU,cAAc,QAAQ,OAAO;AAC/C,4BAA0B,OAAO;AACjC,4BAA0B,QAAQ,OAAO;AACzC,QAAM,gBAAgB,UAAU,YAAY,CAAC,GAAG,OAAO;AACvD,MAAI,QAAQ,QAAQ,YAAY;AAC9B,QAAI,cAAY,cAAS,UAAU,aAAnB,mBAA6B,SAAQ;AACnD,oBAAc,UAAU,WAAW,SAAS,UAAU,SAAS;AAAA,QAC7D,CAAC,YAAY,CAAC,cAAc,UAAU,SAAS,SAAS,OAAO;AAAA,MACjE,EAAE,OAAO,cAAc,UAAU,QAAQ;AAAA,IAC3C;AACA,kBAAc,UAAU,YAAY,cAAc,UAAU,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,QAAQ,QAAQ,YAAY,EAAE,CAAC;AAAA,EAC9H;AACA,SAAO;AACT;AAGA,SAAS,mBAAmB,KAAK,YAAY;AAC3C,QAAM,YAAY,KAAK,KAAK,GAAG,IAAI,MAAM;AACzC,QAAM,QAAQ,OAAO,KAAK,UAAU;AACpC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO,MAAM,YAAY,MAAM,IAAI,CAAC,SAAS;AAC3C,QAAI,SAAS,KAAK;AAChB,aAAO,OAAO,WAAW,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG;AAAA,IACxE;AACA,WAAO,GAAG,QAAQ,mBAAmB,WAAW,KAAK;AAAA,EACvD,CAAC,EAAE,KAAK,GAAG;AACb;AAGA,IAAI,mBAAmB;AACvB,SAAS,eAAe,cAAc;AACpC,SAAO,aAAa,QAAQ,cAAc,EAAE,EAAE,MAAM,GAAG;AACzD;AACA,SAAS,wBAAwB,KAAK;AACpC,QAAM,UAAU,IAAI,MAAM,gBAAgB;AAC1C,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC;AAAA,EACV;AACA,SAAO,QAAQ,IAAI,cAAc,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACrE;AAGA,SAAS,KAAK,QAAQ,YAAY;AAChC,QAAM,SAAS,EAAE,WAAW,KAAK;AACjC,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,QAAI,WAAW,QAAQ,GAAG,MAAM,IAAI;AAClC,aAAO,OAAO,OAAO;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,eAAe,KAAK;AAC3B,SAAO,IAAI,MAAM,oBAAoB,EAAE,IAAI,SAAS,MAAM;AACxD,QAAI,CAAC,eAAe,KAAK,IAAI,GAAG;AAC9B,aAAO,UAAU,IAAI,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACjE;AACA,WAAO;AAAA,EACT,CAAC,EAAE,KAAK,EAAE;AACZ;AACA,SAAS,iBAAiB,KAAK;AAC7B,SAAO,mBAAmB,GAAG,EAAE,QAAQ,YAAY,SAAS,GAAG;AAC7D,WAAO,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACxD,CAAC;AACH;AACA,SAAS,YAAY,UAAU,OAAO,KAAK;AACzC,UAAQ,aAAa,OAAO,aAAa,MAAM,eAAe,KAAK,IAAI,iBAAiB,KAAK;AAC7F,MAAI,KAAK;AACP,WAAO,iBAAiB,GAAG,IAAI,MAAM;AAAA,EACvC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,UAAU,UAAU,UAAU;AACvC;AACA,SAAS,cAAc,UAAU;AAC/B,SAAO,aAAa,OAAO,aAAa,OAAO,aAAa;AAC9D;AACA,SAAS,UAAU,SAAS,UAAU,KAAK,UAAU;AACnD,MAAI,QAAQ,QAAQ,MAAM,SAAS,CAAC;AACpC,MAAI,UAAU,KAAK,KAAK,UAAU,IAAI;AACpC,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,cAAQ,MAAM,SAAS;AACvB,UAAI,YAAY,aAAa,KAAK;AAChC,gBAAQ,MAAM,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC;AAAA,MACnD;AACA,aAAO;AAAA,QACL,YAAY,UAAU,OAAO,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,MACjE;AAAA,IACF,OAAO;AACL,UAAI,aAAa,KAAK;AACpB,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,mBAAO;AAAA,cACL,YAAY,UAAU,QAAQ,cAAc,QAAQ,IAAI,MAAM,EAAE;AAAA,YAClE;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,EAAE,GAAG;AACvB,qBAAO,KAAK,YAAY,UAAU,MAAM,IAAI,CAAC,CAAC;AAAA,YAChD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,cAAM,MAAM,CAAC;AACb,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAM,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC/C,gBAAI,KAAK,YAAY,UAAU,MAAM,CAAC;AAAA,UACxC,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,GAAG;AACrC,gBAAI,UAAU,MAAM,EAAE,GAAG;AACvB,kBAAI,KAAK,iBAAiB,CAAC,CAAC;AAC5B,kBAAI,KAAK,YAAY,UAAU,MAAM,GAAG,SAAS,CAAC,CAAC;AAAA,YACrD;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,cAAc,QAAQ,GAAG;AAC3B,iBAAO,KAAK,iBAAiB,GAAG,IAAI,MAAM,IAAI,KAAK,GAAG,CAAC;AAAA,QACzD,WAAW,IAAI,WAAW,GAAG;AAC3B,iBAAO,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,aAAa,KAAK;AACpB,UAAI,UAAU,KAAK,GAAG;AACpB,eAAO,KAAK,iBAAiB,GAAG,CAAC;AAAA,MACnC;AAAA,IACF,WAAW,UAAU,OAAO,aAAa,OAAO,aAAa,MAAM;AACjE,aAAO,KAAK,iBAAiB,GAAG,IAAI,GAAG;AAAA,IACzC,WAAW,UAAU,IAAI;AACvB,aAAO,KAAK,EAAE;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,SAAS,UAAU;AAC1B,SAAO;AAAA,IACL,QAAQ,OAAO,KAAK,MAAM,QAAQ;AAAA,EACpC;AACF;AACA,SAAS,OAAO,UAAU,SAAS;AACjC,MAAI,YAAY,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAClD,aAAW,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,GAAG,YAAY,SAAS;AAC/B,UAAI,YAAY;AACd,YAAI,WAAW;AACf,cAAM,SAAS,CAAC;AAChB,YAAI,UAAU,QAAQ,WAAW,OAAO,CAAC,CAAC,MAAM,IAAI;AAClD,qBAAW,WAAW,OAAO,CAAC;AAC9B,uBAAa,WAAW,OAAO,CAAC;AAAA,QAClC;AACA,mBAAW,MAAM,IAAI,EAAE,QAAQ,SAAS,UAAU;AAChD,cAAI,MAAM,4BAA4B,KAAK,QAAQ;AACnD,iBAAO,KAAK,UAAU,SAAS,UAAU,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,QACpE,CAAC;AACD,YAAI,YAAY,aAAa,KAAK;AAChC,cAAI,YAAY;AAChB,cAAI,aAAa,KAAK;AACpB,wBAAY;AAAA,UACd,WAAW,aAAa,KAAK;AAC3B,wBAAY;AAAA,UACd;AACA,kBAAQ,OAAO,WAAW,IAAI,WAAW,MAAM,OAAO,KAAK,SAAS;AAAA,QACtE,OAAO;AACL,iBAAO,OAAO,KAAK,GAAG;AAAA,QACxB;AAAA,MACF,OAAO;AACL,eAAO,eAAe,OAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,KAAK;AACpB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,SAAS,QAAQ,OAAO,EAAE;AAAA,EACnC;AACF;AAGA,SAAS,MAAM,SAAS;AApQxB;AAqQE,MAAI,SAAS,QAAQ,OAAO,YAAY;AACxC,MAAI,OAAO,QAAQ,OAAO,KAAK,QAAQ,gBAAgB,MAAM;AAC7D,MAAI,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AAC/C,MAAI;AACJ,MAAI,aAAa,KAAK,SAAS;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,wBAAwB,GAAG;AACpD,QAAM,SAAS,GAAG,EAAE,OAAO,UAAU;AACrC,MAAI,CAAC,QAAQ,KAAK,GAAG,GAAG;AACtB,UAAM,QAAQ,UAAU;AAAA,EAC1B;AACA,QAAM,oBAAoB,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,WAAW,iBAAiB,SAAS,MAAM,CAAC,EAAE,OAAO,SAAS;AACrH,QAAM,sBAAsB,KAAK,YAAY,iBAAiB;AAC9D,QAAM,kBAAkB,6BAA6B,KAAK,QAAQ,MAAM;AACxE,MAAI,CAAC,iBAAiB;AACpB,QAAI,QAAQ,UAAU,QAAQ;AAC5B,cAAQ,SAAS,QAAQ,OAAO,MAAM,GAAG,EAAE;AAAA,QACzC,CAAC,WAAW,OAAO;AAAA,UACjB;AAAA,UACA,uBAAuB,QAAQ,UAAU;AAAA,QAC3C;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AACA,QAAI,IAAI,SAAS,UAAU,GAAG;AAC5B,WAAI,aAAQ,UAAU,aAAlB,mBAA4B,QAAQ;AACtC,cAAM,2BAA2B,QAAQ,OAAO,MAAM,qBAAqB,KAAK,CAAC;AACjF,gBAAQ,SAAS,yBAAyB,OAAO,QAAQ,UAAU,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC5F,gBAAM,SAAS,QAAQ,UAAU,SAAS,IAAI,QAAQ,UAAU,WAAW;AAC3E,iBAAO,0BAA0B,kBAAkB;AAAA,QACrD,CAAC,EAAE,KAAK,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,OAAO,MAAM,EAAE,SAAS,MAAM,GAAG;AACpC,UAAM,mBAAmB,KAAK,mBAAmB;AAAA,EACnD,OAAO;AACL,QAAI,UAAU,qBAAqB;AACjC,aAAO,oBAAoB;AAAA,IAC7B,OAAO;AACL,UAAI,OAAO,KAAK,mBAAmB,EAAE,QAAQ;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,mBAAmB,OAAO,SAAS,aAAa;AAC3D,YAAQ,kBAAkB;AAAA,EAC5B;AACA,MAAI,CAAC,SAAS,KAAK,EAAE,SAAS,MAAM,KAAK,OAAO,SAAS,aAAa;AACpE,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAAA,IACZ,EAAE,QAAQ,KAAK,QAAQ;AAAA,IACvB,OAAO,SAAS,cAAc,EAAE,KAAK,IAAI;AAAA,IACzC,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI;AAAA,EACnD;AACF;AAGA,SAAS,qBAAqB,UAAU,OAAO,SAAS;AACtD,SAAO,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC;AAC9C;AAGA,SAAS,aAAa,aAAa,aAAa;AAC9C,QAAM,YAAY,MAAM,aAAa,WAAW;AAChD,QAAM,YAAY,qBAAqB,KAAK,MAAM,SAAS;AAC3D,SAAO,OAAO,OAAO,WAAW;AAAA,IAC9B,UAAU;AAAA,IACV,UAAU,aAAa,KAAK,MAAM,SAAS;AAAA,IAC3C,OAAO,MAAM,KAAK,MAAM,SAAS;AAAA,IACjC;AAAA,EACF,CAAC;AACH;AAGA,IAAI,WAAW,aAAa,MAAM,QAAQ;;;ACrU1C,qCAA0B;;;ACjB1B,IAAM,eAAN,cAA2B,MAAM;AAAA,EAC/B;AAAA,EAIA;AAAA,EAIA;AAAA,EAIA;AAAA,EACA,YAAY,SAAS,YAAY,SAAS;AACxC,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,SAAS,OAAO,SAAS,UAAU;AACxC,QAAI,OAAO,MAAM,KAAK,MAAM,GAAG;AAC7B,WAAK,SAAS;AAAA,IAChB;AACA,QAAI,cAAc,SAAS;AACzB,WAAK,WAAW,QAAQ;AAAA,IAC1B;AACA,UAAM,cAAc,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO;AACrD,QAAI,QAAQ,QAAQ,QAAQ,eAAe;AACzC,kBAAY,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,QAAQ,SAAS;AAAA,QAC/D,eAAe,QAAQ,QAAQ,QAAQ,cAAc;AAAA,UACnD;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,gBAAY,MAAM,YAAY,IAAI,QAAQ,wBAAwB,0BAA0B,EAAE,QAAQ,uBAAuB,yBAAyB;AACtJ,SAAK,UAAU;AAAA,EACjB;AACF;;;AD7BA,IAAIC,WAAU;AAGd,IAAI,mBAAmB;AAAA,EACrB,SAAS;AAAA,IACP,cAAc,sBAAsBA,YAAW,aAAa;AAAA,EAC9D;AACF;AAMA,SAASC,eAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,YAAY,UAAU;AAAM,WAAO;AACxD,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAmB,WAAO;AACxE,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,MAAI,UAAU;AAAM,WAAO;AAC3B,QAAM,OAAO,OAAO,UAAU,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AACjF,SAAO,OAAO,SAAS,cAAc,gBAAgB,QAAQ,SAAS,UAAU,KAAK,IAAI,MAAM,SAAS,UAAU,KAAK,KAAK;AAC9H;AAIA,eAAe,aAAa,gBAAgB;AA/B5C;AAgCE,QAAMC,WAAQ,oBAAe,YAAf,mBAAwB,UAAS,WAAW;AAC1D,MAAI,CAACA,QAAO;AACV,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAM,oBAAe,YAAf,mBAAwB,QAAO;AAC3C,QAAM,6BAA2B,oBAAe,YAAf,mBAAwB,8BAA6B;AACtF,QAAM,OAAOD,eAAc,eAAe,IAAI,KAAK,MAAM,QAAQ,eAAe,IAAI,IAAI,KAAK,UAAU,eAAe,IAAI,IAAI,eAAe;AAC7I,QAAM,iBAAiB,OAAO;AAAA,IAC5B,OAAO,QAAQ,eAAe,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;AAAA,MAC5D;AAAA,MACA,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AACA,MAAI;AACJ,MAAI;AACF,oBAAgB,MAAMC,OAAM,eAAe,KAAK;AAAA,MAC9C,QAAQ,eAAe;AAAA,MACvB;AAAA,MACA,WAAU,oBAAe,YAAf,mBAAwB;AAAA,MAClC,SAAS;AAAA,MACT,SAAQ,oBAAe,YAAf,mBAAwB;AAAA,MAGhC,GAAG,eAAe,QAAQ,EAAE,QAAQ,OAAO;AAAA,IAC7C,CAAC;AAAA,EACH,SAAS,OAAP;AACA,QAAI,UAAU;AACd,QAAI,iBAAiB,OAAO;AAC1B,UAAI,MAAM,SAAS,cAAc;AAC/B,cAAM,SAAS;AACf,cAAM;AAAA,MACR;AACA,gBAAU,MAAM;AAChB,UAAI,MAAM,SAAS,eAAe,WAAW,OAAO;AAClD,YAAI,MAAM,iBAAiB,OAAO;AAChC,oBAAU,MAAM,MAAM;AAAA,QACxB,WAAW,OAAO,MAAM,UAAU,UAAU;AAC1C,oBAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,UAAM,eAAe,IAAI,aAAa,SAAS,KAAK;AAAA,MAClD,SAAS;AAAA,IACX,CAAC;AACD,iBAAa,QAAQ;AACrB,UAAM;AAAA,EACR;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,MAAM,cAAc;AAC1B,QAAM,kBAAkB,CAAC;AACzB,aAAW,CAAC,KAAK,KAAK,KAAK,cAAc,SAAS;AAChD,oBAAgB,OAAO;AAAA,EACzB;AACA,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACA,MAAI,iBAAiB,iBAAiB;AACpC,UAAM,UAAU,gBAAgB,QAAQ,gBAAgB,KAAK,MAAM,8BAA8B;AACjG,UAAM,kBAAkB,WAAW,QAAQ,IAAI;AAC/C,QAAI;AAAA,MACF,uBAAuB,eAAe,UAAU,eAAe,wDAAwD,gBAAgB,SAAS,kBAAkB,SAAS,oBAAoB;AAAA,IACjM;AAAA,EACF;AACA,MAAI,WAAW,OAAO,WAAW,KAAK;AACpC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,WAAW,QAAQ;AACpC,QAAI,SAAS,KAAK;AAChB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,aAAa,cAAc,YAAY,QAAQ;AAAA,MACvD,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,WAAW,KAAK;AAClB,oBAAgB,OAAO,MAAM,gBAAgB,aAAa;AAC1D,UAAM,IAAI,aAAa,gBAAgB,QAAQ;AAAA,MAC7C,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,UAAU,KAAK;AACjB,oBAAgB,OAAO,MAAM,gBAAgB,aAAa;AAC1D,UAAM,IAAI,aAAa,eAAe,gBAAgB,IAAI,GAAG,QAAQ;AAAA,MACnE,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,kBAAgB,OAAO,2BAA2B,MAAM,gBAAgB,aAAa,IAAI,cAAc;AACvG,SAAO;AACT;AACA,eAAe,gBAAgB,UAAU;AAjIzC;AAkIE,QAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,MAAI,CAAC,aAAa;AAChB,WAAO,SAAS,KAAK,EAAE,MAAM,MAAM,EAAE;AAAA,EACvC;AACA,QAAM,eAAW,0CAAU,WAAW;AACtC,MAAI,SAAS,SAAS,oBAAoB;AACxC,QAAI,OAAO;AACX,QAAI;AACF,aAAO,MAAM,SAAS,KAAK;AAC3B,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB,SAAS,KAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF,WAAW,SAAS,KAAK,WAAW,OAAO,OAAK,cAAS,WAAW,YAApB,mBAA6B,mBAAkB,SAAS;AACtG,WAAO,SAAS,KAAK,EAAE,MAAM,MAAM,EAAE;AAAA,EACvC,OAAO;AACL,WAAO,SAAS,YAAY,EAAE,MAAM,MAAM,IAAI,YAAY,CAAC,CAAC;AAAA,EAC9D;AACF;AACA,SAAS,eAAe,MAAM;AAC5B,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,aAAa;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,aAAa,MAAM;AACrB,UAAM,SAAS,uBAAuB,OAAO,MAAM,KAAK,sBAAsB;AAC9E,WAAO,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,WAAW,GAAG,KAAK,UAAU;AAAA,EAC9I;AACA,SAAO,kBAAkB,KAAK,UAAU,IAAI;AAC9C;AAGA,SAASC,cAAa,aAAa,aAAa;AAC9C,QAAM,YAAY,YAAY,SAAS,WAAW;AAClD,QAAM,SAAS,SAAS,OAAO,YAAY;AACzC,UAAM,kBAAkB,UAAU,MAAM,OAAO,UAAU;AACzD,QAAI,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,QAAQ,MAAM;AAC7D,aAAO,aAAa,UAAU,MAAM,eAAe,CAAC;AAAA,IACtD;AACA,UAAM,WAAW,CAAC,QAAQ,gBAAgB;AACxC,aAAO;AAAA,QACL,UAAU,MAAM,UAAU,MAAM,QAAQ,WAAW,CAAC;AAAA,MACtD;AAAA,IACF;AACA,WAAO,OAAO,UAAU;AAAA,MACtB,UAAU;AAAA,MACV,UAAUA,cAAa,KAAK,MAAM,SAAS;AAAA,IAC7C,CAAC;AACD,WAAO,gBAAgB,QAAQ,KAAK,UAAU,eAAe;AAAA,EAC/D;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAU;AAAA,IACV,UAAUA,cAAa,KAAK,MAAM,SAAS;AAAA,EAC7C,CAAC;AACH;AAGA,IAAI,UAAUA,cAAa,UAAU,gBAAgB;;;AExLrD,IAAIC,WAAU;AASd,SAAS,+BAA+B,MAAM;AAC5C,SAAO;AAAA,IACL,KAAK,OAAO,IAAI,CAAC,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI;AACvD;AACA,IAAI,uBAAuB,cAAc,MAAM;AAAA,EAC7C,YAAY,UAAU,SAAS,UAAU;AACvC,UAAM,+BAA+B,QAAQ,CAAC;AAC9C,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,SAAS,SAAS;AACvB,SAAK,OAAO,SAAS;AACrB,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAChD;AAAA,EACF;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF;AAGA,IAAI,uBAAuB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAI,6BAA6B,CAAC,SAAS,UAAU,KAAK;AAC1D,IAAI,uBAAuB;AAC3B,SAAS,QAAQ,UAAUC,QAAO,SAAS;AACzC,MAAI,SAAS;AACX,QAAI,OAAOA,WAAU,YAAY,WAAW,SAAS;AACnD,aAAO,QAAQ;AAAA,QACb,IAAI,MAAM,4DAA4D;AAAA,MACxE;AAAA,IACF;AACA,eAAW,OAAO,SAAS;AACzB,UAAI,CAAC,2BAA2B,SAAS,GAAG;AAAG;AAC/C,aAAO,QAAQ;AAAA,QACb,IAAI;AAAA,UACF,uBAAuB;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,OAAOA,WAAU,WAAW,OAAO,OAAO,EAAE,OAAAA,OAAM,GAAG,OAAO,IAAIA;AACtF,QAAM,iBAAiB,OAAO;AAAA,IAC5B;AAAA,EACF,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACxB,QAAI,qBAAqB,SAAS,GAAG,GAAG;AACtC,aAAO,OAAO,cAAc;AAC5B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO,WAAW;AACrB,aAAO,YAAY,CAAC;AAAA,IACtB;AACA,WAAO,UAAU,OAAO,cAAc;AACtC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,UAAU,cAAc,WAAW,SAAS,SAAS,SAAS;AACpE,MAAI,qBAAqB,KAAK,OAAO,GAAG;AACtC,mBAAe,MAAM,QAAQ,QAAQ,sBAAsB,cAAc;AAAA,EAC3E;AACA,SAAO,SAAS,cAAc,EAAE,KAAK,CAAC,aAAa;AACjD,QAAI,SAAS,KAAK,QAAQ;AACxB,YAAM,UAAU,CAAC;AACjB,iBAAW,OAAO,OAAO,KAAK,SAAS,OAAO,GAAG;AAC/C,gBAAQ,OAAO,SAAS,QAAQ;AAAA,MAClC;AACA,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS,KAAK;AAAA,EACvB,CAAC;AACH;AAGA,SAASC,cAAa,UAAU,aAAa;AAC3C,QAAM,aAAa,SAAS,SAAS,WAAW;AAChD,QAAM,SAAS,CAACD,QAAO,YAAY;AACjC,WAAO,QAAQ,YAAYA,QAAO,OAAO;AAAA,EAC3C;AACA,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,UAAUC,cAAa,KAAK,MAAM,UAAU;AAAA,IAC5C,UAAU,WAAW;AAAA,EACvB,CAAC;AACH;AAGA,IAAI,WAAWA,cAAa,SAAS;AAAA,EACnC,SAAS;AAAA,IACP,cAAc,sBAAsBF,YAAW,aAAa;AAAA,EAC9D;AAAA,EACA,QAAQ;AAAA,EACR,KAAK;AACP,CAAC;AACD,SAAS,kBAAkB,eAAe;AACxC,SAAOE,cAAa,eAAe;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACP,CAAC;AACH;;;ACzHA,IAAI,+BAA+B;AACnC,IAAI,wBAAwB;AAC5B,IAAI,0BAA0B;AAC9B,eAAe,KAAK,OAAO;AACzB,QAAM,QAAQ,MAAM,MAAM,IAAI,EAAE,WAAW;AAC3C,QAAM,iBAAiB,6BAA6B,KAAK,KAAK,KAAK,sBAAsB,KAAK,KAAK;AACnG,QAAM,iBAAiB,wBAAwB,KAAK,KAAK;AACzD,QAAM,YAAY,QAAQ,QAAQ,iBAAiB,iBAAiB,iBAAiB,mBAAmB;AACxG,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AACF;AAGA,SAAS,wBAAwB,OAAO;AACtC,MAAI,MAAM,MAAM,IAAI,EAAE,WAAW,GAAG;AAClC,WAAO,UAAU;AAAA,EACnB;AACA,SAAO,SAAS;AAClB;AAGA,eAAe,KAAK,OAAOC,UAAS,OAAO,YAAY;AACrD,QAAMC,YAAWD,SAAQ,SAAS;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AACA,EAAAC,UAAS,QAAQ,gBAAgB,wBAAwB,KAAK;AAC9D,SAAOD,SAAQC,SAAQ;AACzB;AAGA,IAAI,kBAAkB,SAAS,iBAAiB,OAAO;AACrD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,UAAQ,MAAM,QAAQ,sBAAsB,EAAE;AAC9C,SAAO,OAAO,OAAO,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IAC3C,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,EAC7B,CAAC;AACH;;;AChDA,IAAMC,WAAU;;;ACMhB,IAAM,OAAO,MAAM;AACnB;AACA,IAAM,cAAc,QAAQ,KAAK,KAAK,OAAO;AAC7C,IAAM,eAAe,QAAQ,MAAM,KAAK,OAAO;AAC/C,IAAM,iBAAiB,mBAAmBC,YAAW,aAAa;AAClE,IAAM,UAAN,MAAc;AAAA,EAEZ,OAAO,SAAS,UAAU;AACxB,UAAM,sBAAsB,cAAc,KAAK;AAAA,MAC7C,eAAe,MAAM;AACnB,cAAM,UAAU,KAAK,MAAM,CAAC;AAC5B,YAAI,OAAO,aAAa,YAAY;AAClC,gBAAM,SAAS,OAAO,CAAC;AACvB;AAAA,QACF;AACA;AAAA,UACE,OAAO;AAAA,YACL,CAAC;AAAA,YACD;AAAA,YACA;AAAA,YACA,QAAQ,aAAa,SAAS,YAAY;AAAA,cACxC,WAAW,GAAG,QAAQ,aAAa,SAAS;AAAA,YAC9C,IAAI;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAQA,OAAO,UAAU,YAAY;AAC3B,UAAM,iBAAiB,KAAK;AAC5B,UAAM,aAAa,cAAc,KAAK;AAAA,MACpC,OAAO,UAAU,eAAe;AAAA,QAC9B,WAAW,OAAO,CAAC,WAAW,CAAC,eAAe,SAAS,MAAM,CAAC;AAAA,MAChE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,UAAU,CAAC,GAAG;AACxB,UAAMC,QAAO,IAAI,0BAAK,WAAW;AACjC,UAAM,kBAAkB;AAAA,MACtB,SAAS,QAAQ,SAAS,SAAS;AAAA,MACnC,SAAS,CAAC;AAAA,MACV,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ,SAAS;AAAA,QAE1C,MAAMA,MAAK,KAAK,MAAM,SAAS;AAAA,MACjC,CAAC;AAAA,MACD,WAAW;AAAA,QACT,UAAU,CAAC;AAAA,QACX,QAAQ;AAAA,MACV;AAAA,IACF;AACA,oBAAgB,QAAQ,gBAAgB,QAAQ,YAAY,GAAG,QAAQ,aAAa,mBAAmB;AACvG,QAAI,QAAQ,SAAS;AACnB,sBAAgB,UAAU,QAAQ;AAAA,IACpC;AACA,QAAI,QAAQ,UAAU;AACpB,sBAAgB,UAAU,WAAW,QAAQ;AAAA,IAC/C;AACA,QAAI,QAAQ,UAAU;AACpB,sBAAgB,QAAQ,eAAe,QAAQ;AAAA,IACjD;AACA,SAAK,UAAU,QAAQ,SAAS,eAAe;AAC/C,SAAK,UAAU,kBAAkB,KAAK,OAAO,EAAE,SAAS,eAAe;AACvE,SAAK,MAAM,OAAO;AAAA,MAChB;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,IACV;AACA,SAAK,OAAOA;AACZ,QAAI,CAAC,QAAQ,cAAc;AACzB,UAAI,CAAC,QAAQ,MAAM;AACjB,aAAK,OAAO,aAAa;AAAA,UACvB,MAAM;AAAA,QACR;AAAA,MACF,OAAO;AACL,cAAMC,QAAO,gBAAgB,QAAQ,IAAI;AACzC,QAAAD,MAAK,KAAK,WAAWC,MAAK,IAAI;AAC9B,aAAK,OAAOA;AAAA,MACd;AAAA,IACF,OAAO;AACL,YAAM,EAAE,iBAAiB,aAAa,IAAI;AAC1C,YAAMA,QAAO;AAAA,QACX,OAAO;AAAA,UACL;AAAA,YACE,SAAS,KAAK;AAAA,YACd,KAAK,KAAK;AAAA,YAMV,SAAS;AAAA,YACT,gBAAgB;AAAA,UAClB;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF;AACA,MAAAD,MAAK,KAAK,WAAWC,MAAK,IAAI;AAC9B,WAAK,OAAOA;AAAA,IACd;AACA,UAAM,mBAAmB,KAAK;AAC9B,aAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,QAAQ,EAAE,GAAG;AACxD,aAAO,OAAO,MAAM,iBAAiB,QAAQ,GAAG,MAAM,OAAO,CAAC;AAAA,IAChE;AAAA,EACF;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AACF;AAtHE,cADI,SACG,WAAUF;AAuBjB,cAxBI,SAwBG,WAAU,CAAC;;;ACnCpB,IAAMG,WAAU;;;ACChB,SAAS,WAAW,SAAS;AAC3B,UAAQ,KAAK,KAAK,WAAW,CAACC,UAAS,YAAY;AACjD,YAAQ,IAAI,MAAM,WAAW,OAAO;AACpC,UAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,iBAAiB,QAAQ,QAAQ,SAAS,MAAM,OAAO;AAC7D,UAAMC,QAAO,eAAe,IAAI,QAAQ,QAAQ,SAAS,EAAE;AAC3D,WAAOD,SAAQ,OAAO,EAAE,KAAK,CAAC,aAAa;AACzC,YAAM,YAAY,SAAS,QAAQ;AACnC,cAAQ,IAAI;AAAA,QACV,GAAG,eAAe,UAAUC,WAAU,SAAS,kBAAkB,gBAAgB,KAAK,IAAI,IAAI;AAAA,MAChG;AACA,aAAO;AAAA,IACT,CAAC,EAAE,MAAM,CAAC,UAAU;AAbxB;AAcM,YAAM,cAAY,WAAM,aAAN,mBAAgB,QAAQ,2BAA0B;AACpE,cAAQ,IAAI;AAAA,QACV,GAAG,eAAe,UAAUA,WAAU,MAAM,kBAAkB,gBAAgB,KAAK,IAAI,IAAI;AAAA,MAC7F;AACA,YAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH;AACA,WAAW,UAAUC;;;ACrBrB,IAAIC,WAAU;AAGd,SAAS,+BAA+B,UAAU;AAChD,MAAI,CAAC,SAAS,MAAM;AAClB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AACA,QAAM,6BAA6B,iBAAiB,SAAS,QAAQ,EAAE,SAAS,SAAS;AACzF,MAAI,CAAC;AAA4B,WAAO;AACxC,QAAM,oBAAoB,SAAS,KAAK;AACxC,QAAM,sBAAsB,SAAS,KAAK;AAC1C,QAAM,aAAa,SAAS,KAAK;AACjC,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,SAAO,SAAS,KAAK;AACrB,QAAM,eAAe,OAAO,KAAK,SAAS,IAAI,EAAE;AAChD,QAAM,OAAO,SAAS,KAAK;AAC3B,WAAS,OAAO;AAChB,MAAI,OAAO,sBAAsB,aAAa;AAC5C,aAAS,KAAK,qBAAqB;AAAA,EACrC;AACA,MAAI,OAAO,wBAAwB,aAAa;AAC9C,aAAS,KAAK,uBAAuB;AAAA,EACvC;AACA,WAAS,KAAK,cAAc;AAC5B,SAAO;AACT;AAGA,SAAS,SAAS,SAAS,OAAO,YAAY;AAC5C,QAAM,UAAU,OAAO,UAAU,aAAa,MAAM,SAAS,UAAU,IAAI,QAAQ,QAAQ,SAAS,OAAO,UAAU;AACrH,QAAM,gBAAgB,OAAO,UAAU,aAAa,QAAQ,QAAQ;AACpE,QAAM,SAAS,QAAQ;AACvB,QAAM,UAAU,QAAQ;AACxB,MAAI,MAAM,QAAQ;AAClB,SAAO;AAAA,IACL,CAAC,OAAO,gBAAgB,OAAO;AAAA,MAC7B,MAAM,OAAO;AACX,YAAI,CAAC;AAAK,iBAAO,EAAE,MAAM,KAAK;AAC9B,YAAI;AACF,gBAAM,WAAW,MAAM,cAAc,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAC7D,gBAAM,qBAAqB,+BAA+B,QAAQ;AAClE,kBAAQ,mBAAmB,QAAQ,QAAQ,IAAI;AAAA,YAC7C;AAAA,UACF,KAAK,CAAC,GAAG;AACT,iBAAO,EAAE,OAAO,mBAAmB;AAAA,QACrC,SAAS,OAAP;AACA,cAAI,MAAM,WAAW;AAAK,kBAAM;AAChC,gBAAM;AACN,iBAAO;AAAA,YACL,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS,CAAC;AAAA,cACV,MAAM,CAAC;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAGA,SAAS,SAAS,SAAS,OAAO,YAAY,OAAO;AACnD,MAAI,OAAO,eAAe,YAAY;AACpC,YAAQ;AACR,iBAAa;AAAA,EACf;AACA,SAAO;AAAA,IACL;AAAA,IACA,CAAC;AAAA,IACD,SAAS,SAAS,OAAO,UAAU,EAAE,OAAO,eAAe;AAAA,IAC3D;AAAA,EACF;AACF;AACA,SAAS,OAAO,SAAS,SAAS,WAAW,OAAO;AAClD,SAAO,UAAU,KAAK,EAAE,KAAK,CAAC,WAAW;AACvC,QAAI,OAAO,MAAM;AACf,aAAO;AAAA,IACT;AACA,QAAI,YAAY;AAChB,aAAS,OAAO;AACd,kBAAY;AAAA,IACd;AACA,cAAU,QAAQ;AAAA,MAChB,QAAQ,MAAM,OAAO,OAAO,IAAI,IAAI,OAAO,MAAM;AAAA,IACnD;AACA,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AACA,WAAO,OAAO,SAAS,SAAS,WAAW,KAAK;AAAA,EAClD,CAAC;AACH;AAGA,IAAI,sBAAsB,OAAO,OAAO,UAAU;AAAA,EAChD;AACF,CAAC;AA6QD,SAAS,aAAa,SAAS;AAC7B,SAAO;AAAA,IACL,UAAU,OAAO,OAAO,SAAS,KAAK,MAAM,OAAO,GAAG;AAAA,MACpD,UAAU,SAAS,KAAK,MAAM,OAAO;AAAA,IACvC,CAAC;AAAA,EACH;AACF;AACA,aAAa,UAAUC;;;ACzXhB,IAAMC,WAAU;;;ACCvB,IAAM,YAA6C;EACjD,SAAS;IACP,yCAAyC;MACvC;IACF;IACA,0CAA0C;MACxC;IACF;IACA,2CAA2C;MACzC;IACF;IACA,4BAA4B;MAC1B;IACF;IACA,8BAA8B;MAC5B;IACF;IACA,oBAAoB;MAClB;IACF;IACA,mBAAmB;MACjB;IACF;IACA,2BAA2B;MACzB;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,yBAAyB,CAAC,+CAA+C;IACzE,0BAA0B;MACxB;IACF;IACA,mBAAmB,CAAC,oCAAoC;IACxD,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,yBAAyB,CAAC,+CAA+C;IACzE,0BAA0B;MACxB;IACF;IACA,oBAAoB,CAAC,8CAA8C;IACnE,wBAAwB;MACtB;IACF;IACA,wBAAwB;MACtB;IACF;IACA,yBAAyB;MACvB;IACF;IACA,gBAAgB;MACd;IACF;IACA,yBAAyB;MACvB;IACF;IACA,2BAA2B;MACzB;IACF;IACA,iBAAiB,CAAC,kDAAkD;IACpE,mBAAmB,CAAC,6CAA6C;IACjE,kBAAkB;MAChB;IACF;IACA,oBAAoB;MAClB;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,mBAAmB,CAAC,oDAAoD;IACxE,uBAAuB;MACrB;IACF;IACA,oDAAoD;MAClD;IACF;IACA,iBAAiB;MACf;IACF;IACA,kBAAkB;MAChB;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,yBAAyB;MACvB;IACF;IACA,mDAAmD;MACjD;IACF;IACA,gBAAgB;MACd;IACF;IACA,wBAAwB;MACtB;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,qBAAqB,CAAC,0CAA0C;IAChE,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AqB;MACnB;IACF;IACA,oBAAoB,CAAC,kDAAkD;IACvE,aAAa;MACX;IACF;IACA,oBAAoB;MAClB;IACF;IACA,aAAa,CAAC,iDAAiD;EACjE;EACA,cAAc;IACZ,qBAAqB;MACnB;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,qBAAqB,CAAC,+CAA+C;IACrE,kCAAkC;MAChC;IACF;IACA,qBAAqB;MACnB;IACF;IACA,kCAAkC;MAChC;IACF;IACA,qBAAqB;MACnB;IACF;IACA,kBAAkB;MAChB;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,yBAAyB,CAAC,8CAA8C;IACxE,0BAA0B;MACxB;IACF;IACA,uCAAuC;MACrC;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,2CAA2C;MACzC;IACF;IACA,qCAAqC;MACnC;IACF;IACA,2BAA2B;MACzB;IACF;IACA,wCAAwC;MACtC;IACF;IACA,qBAAqB;MACnB;IACF;IACA,+BAA+B;MAC7B;IACF;EACF;EACA,gBAAgB;IACd,sBAAsB,CAAC,uBAAuB;IAC9C,gBAAgB,CAAC,6BAA6B;EAChD;EACA,YAAY;IACV,4CAA4C;MAC1C;IACF;IACA,4BAA4B;MAC1B;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,uCAAuC;MACrC;IACF;IACA,4BAA4B,CAAC,uBAAuB;IACpD,yBAAyB;MACvB;IACF;IACA,0BAA0B;MACxB;IACF;IACA,0CAA0C;MACxC;IACF;IACA,kCAAkC;MAChC;IACF;IACA,oCAAoC;MAClC;IACF;IACA,4BAA4B,CAAC,0CAA0C;IACvE,wBAAwB;MACtB;IACF;IACA,iBAAiB,CAAC,qDAAqD;IACvE,kBAAkB;MAChB;IACF;IACA,kCAAkC;MAChC;IACF;IACA,4BAA4B;MAC1B;IACF;IACA,2BAA2B;MACzB;IACF;IACA,sCAAsC;MACpC;IACF;IACA,yBAAyB,CAAC,uCAAuC;IACjE,iBAAiB,CAAC,+CAA+C;IACjE,cAAc,CAAC,kDAAkD;IACjE,kCAAkC;MAChC;IACF;IACA,kBAAkB;MAChB;IACF;IACA,eAAe;MACb;IACF;IACA,+BAA+B;MAC7B;IACF;IACA,mDAAmD;MACjD;IACF;IACA,0BAA0B,CAAC,sBAAsB;IACjD,oBAAoB;MAClB;MACA,CAAC;MACD,EAAE,mBAAmB,EAAE,QAAQ,MAAM,EAAE;IACzC;IACA,sCAAsC;MACpC;IACF;IACA,gBAAgB,CAAC,oCAAoC;IACrD,iBAAiB,CAAC,8CAA8C;IAChE,+CAA+C;MAC7C;IACF;IACA,iCAAiC,CAAC,8BAA8B;IAChE,+BAA+B;MAC7B;IACF;IACA,uCAAuC;MACrC;IACF;IACA,6BAA6B;MAC3B;IACF;IACA,+CAA+C;MAC7C;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,kCAAkC;MAChC;IACF;IACA,8CAA8C;MAC5C;IACF;IACA,8BAA8B;MAC5B;IACF;IACA,2BAA2B,CAAC,8CAA8C;IAC1E,0BAA0B,CAAC,6CAA6C;IACxE,oBAAoB;MAClB;IACF;IACA,4BAA4B,CAAC,yCAAyC;EACxE;EACA,SAAS;IACP,yBAAyB;MACvB;IACF;IACA,yBAAyB;MACvB;IACF;IACA,qCAAqC;MACnC;IACF;IACA,qCAAqC;MACnC;IACF;IACA,+BAA+B,CAAC,iCAAiC;IACjE,uBAAuB,CAAC,kDAAkD;IAC1E,+BAA+B,CAAC,iCAAiC;IACjE,8BAA8B;MAC5B;IACF;IACA,kBAAkB,CAAC,uCAAuC;IAC1D,oBAAoB,CAAC,+BAA+B;IACpD,qBAAqB,CAAC,gDAAgD;EACxE;EACA,YAAY;IACV,4BAA4B;MAC1B;IACF;IACA,yBAAyB;MACvB;IACF;IACA,0BAA0B;MACxB;IACF;IACA,iBAAiB,CAAC,qDAAqD;IACvE,kBAAkB;MAChB;IACF;IACA,UAAU,CAAC,4DAA4D;IACvE,iBAAiB,CAAC,+CAA+C;IACjE,cAAc,CAAC,kDAAkD;IACjE,kBAAkB;MAChB;IACF;IACA,eAAe;MACb;IACF;IACA,yBAAyB;MACvB;IACF;IACA,kBAAkB,CAAC,mCAAmC;IACtD,mBAAmB,CAAC,6CAA6C;IACjE,gBAAgB,CAAC,oCAAoC;IACrD,iBAAiB,CAAC,8CAA8C;IAChE,+BAA+B;MAC7B;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,8BAA8B;MAC5B;IACF;IACA,aAAa;MACX;IACF;EACF;EACA,iBAAiB;IACf,0BAA0B;MACxB;IACF;IACA,WAAW;MACT;IACF;IACA,YAAY,CAAC,iDAAiD;EAChE;EACA,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE;EAC/B,OAAO;IACL,gBAAgB,CAAC,2BAA2B;IAC5C,QAAQ,CAAC,aAAa;IACtB,eAAe,CAAC,gCAAgC;IAChD,QAAQ,CAAC,yBAAyB;IAClC,eAAe,CAAC,+CAA+C;IAC/D,MAAM,CAAC,6BAA6B;IACpC,KAAK,CAAC,sBAAsB;IAC5B,YAAY,CAAC,4CAA4C;IACzD,aAAa,CAAC,4BAA4B;IAC1C,MAAM,CAAC,YAAY;IACnB,cAAc,CAAC,+BAA+B;IAC9C,aAAa,CAAC,8BAA8B;IAC5C,aAAa,CAAC,6BAA6B;IAC3C,WAAW,CAAC,4BAA4B;IACxC,YAAY,CAAC,mBAAmB;IAChC,aAAa,CAAC,oBAAoB;IAClC,MAAM,CAAC,2BAA2B;IAClC,QAAQ,CAAC,8BAA8B;IACvC,QAAQ,CAAC,wBAAwB;IACjC,eAAe,CAAC,8CAA8C;EAChE;EACA,KAAK;IACH,YAAY,CAAC,sCAAsC;IACnD,cAAc,CAAC,wCAAwC;IACvD,WAAW,CAAC,qCAAqC;IACjD,WAAW,CAAC,qCAAqC;IACjD,YAAY,CAAC,sCAAsC;IACnD,WAAW,CAAC,6CAA6C;IACzD,SAAS,CAAC,gDAAgD;IAC1D,WAAW,CAAC,oDAAoD;IAChE,QAAQ,CAAC,yCAAyC;IAClD,QAAQ,CAAC,8CAA8C;IACvD,SAAS,CAAC,gDAAgD;IAC1D,kBAAkB,CAAC,mDAAmD;IACtE,WAAW,CAAC,4CAA4C;EAC1D;EACA,WAAW;IACT,iBAAiB,CAAC,0BAA0B;IAC5C,aAAa,CAAC,iCAAiC;EACjD;EACA,cAAc;IACZ,qCAAqC,CAAC,8BAA8B;IACpE,uBAAuB,CAAC,oCAAoC;IAC5D,wBAAwB,CAAC,8CAA8C;IACvE,mCAAmC;MACjC;MACA,CAAC;MACD,EAAE,SAAS,CAAC,gBAAgB,qCAAqC,EAAE;IACrE;IACA,wCAAwC,CAAC,iCAAiC;IAC1E,0BAA0B,CAAC,uCAAuC;IAClE,2BAA2B;MACzB;IACF;IACA,sCAAsC;MACpC;MACA,CAAC;MACD,EAAE,SAAS,CAAC,gBAAgB,wCAAwC,EAAE;IACxE;IACA,qCAAqC,CAAC,8BAA8B;IACpE,uBAAuB,CAAC,oCAAoC;IAC5D,wBAAwB,CAAC,8CAA8C;IACvE,mCAAmC;MACjC;MACA,CAAC;MACD,EAAE,SAAS,CAAC,gBAAgB,qCAAqC,EAAE;IACrE;EACF;EACA,QAAQ;IACN,cAAc;MACZ;IACF;IACA,WAAW,CAAC,yDAAyD;IACrE,aAAa;MACX;IACF;IACA,wBAAwB,CAAC,gDAAgD;IACzE,+BAA+B;MAC7B;IACF;IACA,QAAQ,CAAC,mCAAmC;IAC5C,eAAe;MACb;IACF;IACA,aAAa,CAAC,mCAAmC;IACjD,iBAAiB,CAAC,uCAAuC;IACzD,eAAe;MACb;IACF;IACA,aAAa,CAAC,4CAA4C;IAC1D,iBAAiB;MACf;IACF;IACA,KAAK,CAAC,iDAAiD;IACvD,YAAY,CAAC,wDAAwD;IACrE,UAAU,CAAC,oDAAoD;IAC/D,UAAU,CAAC,yCAAyC;IACpD,cAAc,CAAC,yDAAyD;IACxE,MAAM,CAAC,aAAa;IACpB,eAAe,CAAC,qCAAqC;IACrD,cAAc,CAAC,0DAA0D;IACzE,qBAAqB,CAAC,2CAA2C;IACjE,YAAY,CAAC,wDAAwD;IACrE,mBAAmB,CAAC,yCAAyC;IAC7D,uBAAuB;MACrB;IACF;IACA,0BAA0B,CAAC,kBAAkB;IAC7C,YAAY,CAAC,wBAAwB;IACrC,aAAa,CAAC,kCAAkC;IAChD,wBAAwB;MACtB;IACF;IACA,mBAAmB,CAAC,kCAAkC;IACtD,mBAAmB;MACjB;IACF;IACA,gBAAgB,CAAC,sCAAsC;IACvD,eAAe;MACb;IACF;IACA,MAAM,CAAC,sDAAsD;IAC7D,iBAAiB;MACf;IACF;IACA,iBAAiB;MACf;IACF;IACA,aAAa;MACX;IACF;IACA,gBAAgB;MACd;IACF;IACA,sBAAsB;MACpB;IACF;IACA,WAAW,CAAC,wDAAwD;IACpE,QAAQ,CAAC,yDAAyD;IAClE,QAAQ,CAAC,mDAAmD;IAC5D,eAAe,CAAC,0DAA0D;IAC1E,aAAa,CAAC,2CAA2C;IACzD,iBAAiB;MACf;IACF;EACF;EACA,UAAU;IACR,KAAK,CAAC,yBAAyB;IAC/B,oBAAoB,CAAC,eAAe;IACpC,YAAY,CAAC,mCAAmC;EAClD;EACA,UAAU;IACR,QAAQ,CAAC,gBAAgB;IACzB,WAAW;MACT;MACA,EAAE,SAAS,EAAE,gBAAgB,4BAA4B,EAAE;IAC7D;EACF;EACA,MAAM;IACJ,KAAK,CAAC,WAAW;IACjB,gBAAgB,CAAC,eAAe;IAChC,YAAY,CAAC,cAAc;IAC3B,QAAQ,CAAC,UAAU;IACnB,MAAM,CAAC,OAAO;EAChB;EACA,YAAY;IACV,mCAAmC;MACjC;IACF;IACA,qBAAqB;MACnB;IACF;IACA,uBAAuB;MACrB;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,+BAA+B,CAAC,qCAAqC;IACrE,iBAAiB,CAAC,2CAA2C;IAC7D,0BAA0B,CAAC,sBAAsB;IACjD,YAAY,CAAC,4BAA4B;IACzC,+BAA+B;MAC7B;IACF;IACA,iBAAiB,CAAC,wDAAwD;IAC1E,kBAAkB;MAChB;MACA,CAAC;MACD,EAAE,SAAS,CAAC,cAAc,+BAA+B,EAAE;IAC7D;IACA,2BAA2B,CAAC,uBAAuB;IACnD,aAAa,CAAC,6BAA6B;IAC3C,gCAAgC;MAC9B;IACF;IACA,kBAAkB;MAChB;IACF;EACF;EACA,MAAM;IACJ,gCAAgC;MAC9B;IACF;IACA,mCAAmC;MACjC;IACF;EACF;EACA,MAAM;IACJ,wBAAwB;MACtB;MACA,CAAC;MACD;QACE,YACE;MACJ;IACF;IACA,qBAAqB;MACnB;IACF;IACA,qBAAqB;MACnB;IACF;IACA,WAAW,CAAC,mCAAmC;IAC/C,kBAAkB,CAAC,gDAAgD;IACnE,kBAAkB,CAAC,mCAAmC;IACtD,wBAAwB,CAAC,oCAAoC;IAC7D,8BAA8B,CAAC,2CAA2C;IAC1E,oCAAoC;MAClC;IACF;IACA,kBAAkB,CAAC,8BAA8B;IACjD,gCAAgC,CAAC,qCAAqC;IACtE,8CAA8C;MAC5C;IACF;IACA,8BAA8B;MAC5B;IACF;IACA,eAAe,CAAC,wBAAwB;IACxC,QAAQ,CAAC,oBAAoB;IAC7B,eAAe,CAAC,oCAAoC;IACpD,6CAA6C;MAC3C;MACA,CAAC;MACD;QACE,YACE;MACJ;IACF;IACA,KAAK,CAAC,iBAAiB;IACvB,wBAAwB,CAAC,mCAAmC;IAC5D,mBAAmB;MACjB;IACF;IACA,mCAAmC,CAAC,kCAAkC;IACtE,sBAAsB,CAAC,wCAAwC;IAC/D,YAAY,CAAC,8CAA8C;IAC3D,YAAY,CAAC,iCAAiC;IAC9C,wBAAwB,CAAC,wCAAwC;IACjE,oBAAoB;MAClB;IACF;IACA,MAAM,CAAC,oBAAoB;IAC3B,sBAAsB,CAAC,+BAA+B;IACtD,kBAAkB,CAAC,+CAA+C;IAClE,kBAAkB,CAAC,wBAAwB;IAC3C,oCAAoC,CAAC,mCAAmC;IACxE,uBAAuB,CAAC,oCAAoC;IAC5D,0BAA0B,CAAC,gBAAgB;IAC3C,aAAa,CAAC,4BAA4B;IAC1C,qBAAqB,CAAC,mDAAmD;IACzE,aAAa,CAAC,yBAAyB;IACvC,qCAAqC,CAAC,4BAA4B;IAClE,kBAAkB,CAAC,oDAAoD;IACvE,kBAAkB,CAAC,oDAAoD;IACvE,cAAc,CAAC,oCAAoC;IACnD,wCAAwC;MACtC;IACF;IACA,0BAA0B,CAAC,uCAAuC;IAClE,0BAA0B;MACxB;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,sBAAsB,CAAC,gDAAgD;IACvE,eAAe,CAAC,wCAAwC;IACxD,wBAAwB,CAAC,6BAA6B;IACtD,mBAAmB,CAAC,gCAAgC;IACpD,0BAA0B;MACxB;MACA,CAAC;MACD;QACE,YACE;MACJ;IACF;IACA,uBAAuB,CAAC,4CAA4C;IACpE,cAAc,CAAC,uBAAuB;IACtC,aAAa,CAAC,wCAAwC;IACtD,0BAA0B;MACxB;IACF;IACA,sBAAsB;MACpB;IACF;IACA,cAAc,CAAC,uCAAuC;IACtD,yBAAyB,CAAC,2CAA2C;IACrE,2BAA2B;MACzB;IACF;IACA,4CAA4C;MAC1C;IACF;IACA,2BAA2B;MACzB;MACA,CAAC;MACD;QACE,YACE;MACJ;IACF;IACA,uBAAuB;MACrB;IACF;IACA,8BAA8B;MAC5B;IACF;IACA,uBAAuB;MACrB;IACF;IACA,uBAAuB;MACrB;IACF;IACA,mBAAmB;MACjB;IACF;IACA,mBAAmB;MACjB;IACF;IACA,sBAAsB,CAAC,wCAAwC;IAC/D,yCAAyC;MACvC;IACF;IACA,aAAa,CAAC,sCAAsC;IACpD,QAAQ,CAAC,mBAAmB;IAC5B,sCAAsC;MACpC;IACF;IACA,iBAAiB,CAAC,kDAAkD;IACpE,mBAAmB,CAAC,yCAAyC;IAC7D,eAAe,CAAC,mCAAmC;IACnD,2BAA2B,CAAC,0CAA0C;EACxE;EACA,UAAU;IACR,mCAAmC;MACjC;IACF;IACA,qBAAqB;MACnB;IACF;IACA,sBAAsB;MACpB;IACF;IACA,0CAA0C;MACxC;IACF;IACA,4BAA4B;MAC1B;IACF;IACA,6BAA6B;MAC3B;IACF;IACA,8CAA8C;MAC5C;MACA,CAAC;MACD,EAAE,SAAS,CAAC,YAAY,2CAA2C,EAAE;IACvE;IACA,6DAA6D;MAC3D;MACA,CAAC;MACD;QACE,SAAS;UACP;UACA;QACF;MACF;IACF;IACA,yDAAyD;MACvD;IACF;IACA,2CAA2C;MACzC;IACF;IACA,4CAA4C;MAC1C;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,2BAA2B;MACzB;IACF;IACA,mBAAmB;MACjB;IACF;IACA,uCAAuC;MACrC;IACF;IACA,kCAAkC;MAChC;IACF;IACA,0BAA0B;MACxB;IACF;IACA,4DAA4D;MAC1D;IACF;IACA,uDAAuD;MACrD;IACF;IACA,+CAA+C;MAC7C;IACF;IACA,kCAAkC,CAAC,oBAAoB;IACvD,6BAA6B,CAAC,0BAA0B;IACxD,qBAAqB,CAAC,gCAAgC;IACtD,oCAAoC;MAClC;IACF;IACA,sBAAsB;MACpB;IACF;IACA,uBAAuB;MACrB;IACF;IACA,2CAA2C;MACzC;IACF;IACA,6BAA6B;MAC3B;IACF;IACA,8BAA8B;MAC5B;IACF;EACF;EACA,mBAAmB;IACjB,0BAA0B,CAAC,qCAAqC;IAChE,0BAA0B;MACxB;IACF;IACA,uBAAuB,CAAC,kDAAkD;IAC1E,iBAAiB,CAAC,+CAA+C;IACjE,0BAA0B,CAAC,oCAAoC;IAC/D,0BAA0B;MACxB;IACF;EACF;EACA,UAAU;IACR,iBAAiB,CAAC,qDAAqD;IACvE,YAAY,CAAC,0CAA0C;IACvD,cAAc,CAAC,qCAAqC;IACpD,4BAA4B,CAAC,qBAAqB;IAClD,cAAc,CAAC,2BAA2B;IAC1C,eAAe,CAAC,qCAAqC;IACrD,QAAQ,CAAC,+BAA+B;IACxC,YAAY,CAAC,0CAA0C;IACvD,cAAc,CAAC,sCAAsC;IACrD,KAAK,CAAC,4BAA4B;IAClC,SAAS,CAAC,uCAAuC;IACjD,WAAW,CAAC,mCAAmC;IAC/C,sBAAsB;MACpB;IACF;IACA,WAAW,CAAC,yCAAyC;IACrD,mBAAmB,CAAC,0CAA0C;IAC9D,aAAa,CAAC,oCAAoC;IAClD,YAAY,CAAC,0BAA0B;IACvC,aAAa,CAAC,oCAAoC;IAClD,aAAa,CAAC,gCAAgC;IAC9C,UAAU,CAAC,8CAA8C;IACzD,YAAY,CAAC,0CAA0C;IACvD,oBAAoB;MAClB;IACF;IACA,QAAQ,CAAC,8BAA8B;IACvC,YAAY,CAAC,yCAAyC;IACtD,cAAc,CAAC,qCAAqC;EACtD;EACA,OAAO;IACL,eAAe,CAAC,qDAAqD;IACrE,QAAQ,CAAC,kCAAkC;IAC3C,6BAA6B;MAC3B;IACF;IACA,cAAc,CAAC,wDAAwD;IACvE,qBAAqB;MACnB;IACF;IACA,qBAAqB;MACnB;IACF;IACA,qBAAqB;MACnB;IACF;IACA,eAAe;MACb;IACF;IACA,KAAK,CAAC,+CAA+C;IACrD,WAAW;MACT;IACF;IACA,kBAAkB,CAAC,uDAAuD;IAC1E,MAAM,CAAC,iCAAiC;IACxC,uBAAuB;MACrB;IACF;IACA,aAAa,CAAC,uDAAuD;IACrE,WAAW,CAAC,qDAAqD;IACjE,wBAAwB;MACtB;IACF;IACA,oBAAoB;MAClB;IACF;IACA,2BAA2B,CAAC,0CAA0C;IACtE,aAAa,CAAC,uDAAuD;IACrE,OAAO,CAAC,qDAAqD;IAC7D,0BAA0B;MACxB;IACF;IACA,kBAAkB;MAChB;IACF;IACA,cAAc;MACZ;IACF;IACA,QAAQ,CAAC,iDAAiD;IAC1D,cAAc;MACZ;IACF;IACA,cAAc;MACZ;IACF;IACA,qBAAqB;MACnB;IACF;EACF;EACA,WAAW,EAAE,KAAK,CAAC,iBAAiB,EAAE;EACtC,WAAW;IACT,wBAAwB;MACtB;IACF;IACA,gBAAgB;MACd;IACF;IACA,uBAAuB;MACrB;IACF;IACA,mCAAmC;MACjC;IACF;IACA,kBAAkB;MAChB;IACF;IACA,qCAAqC;MACnC;IACF;IACA,8BAA8B;MAC5B;IACF;IACA,wBAAwB;MACtB;IACF;IACA,gBAAgB;MACd;IACF;IACA,uBAAuB;MACrB;IACF;IACA,6BAA6B;MAC3B;IACF;IACA,kBAAkB;MAChB;IACF;IACA,yBAAyB;MACvB;IACF;IACA,gCAAgC;MAC9B;IACF;IACA,sBAAsB;MACpB;IACF;IACA,cAAc,CAAC,2DAA2D;IAC1E,qBAAqB;MACnB;IACF;IACA,iCAAiC;MAC/B;IACF;IACA,gBAAgB;MACd;IACF;IACA,mCAAmC;MACjC;IACF;IACA,4BAA4B;MAC1B;IACF;EACF;EACA,OAAO;IACL,kBAAkB;MAChB;MACA,CAAC;MACD,EAAE,SAAS,CAAC,SAAS,sCAAsC,EAAE;IAC/D;IACA,sCAAsC;MACpC;IACF;IACA,0BAA0B;MACxB;MACA,CAAC;MACD,EAAE,WAAW,OAAO;IACtB;IACA,iBAAiB,CAAC,oDAAoD;IACtE,wBAAwB;MACtB;MACA,CAAC;MACD,EAAE,WAAW,WAAW;IAC1B;IACA,2BAA2B;MACzB;MACA,CAAC;MACD,EAAE,WAAW,QAAQ;IACvB;IACA,2BAA2B;MACzB;MACA,CAAC;MACD,EAAE,WAAW,QAAQ;IACvB;IACA,uBAAuB;MACrB;IACF;IACA,6BAA6B;MAC3B;IACF;IACA,mBAAmB,CAAC,oDAAoD;IACxE,oCAAoC;MAClC;IACF;IACA,0BAA0B;MACxB;IACF;I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", + "names": ["NullObject", "parse", "safeParse", "GraphQLType", "params", "fragment", "query", "alias", "types", "debug", "debug", "debug", "parse", "parse", "parse", "parse", "parse", "parse", "debug", "debug", "require_valid", "require_semver", "parse", "path", "path", "join", "which", "path", "res", "res", "anchors", "node", "path", "Collection", "i", "end", "_a", "debug", "merge", "value", "merge", "stringify", "comment", "str", "Collection", "map", "Collection", "seq", "require_schema", "pairs", "omap", "require_bool", "require_float", "require_int", "n", "set", "res", "require_schema", "merge", "merge", "tags", "merge", "Collection", "path", "res", "value", "end", "tag", "path", "i", "ch", "start", "fs", "lineCounter", "parse", "require_dist", "name", "method", "hook", "hook", "VERSION", "isPlainObject", "fetch", "withDefaults", "VERSION", "query", "withDefaults", "request", "endpoint", "VERSION", "VERSION", "hook", "auth", "VERSION", "request", "path", "VERSION", "VERSION", "VERSION", "VERSION", "endpoint", "options", "VERSION", "VERSION", "Octokit", "VERSION", "Octokit", "params", "import_typed_graphqlify", "semver", "import_semver", "semver", "import_semver", "semver", "ScopeRequirement", "ReleaseNotesLevel", "parseYaml", "which", "params", "ManagedRepositories"] +} diff --git a/bundles/cli.mjs b/bundles/cli.mjs index d10a410..d6ed8f8 100755 --- a/bundles/cli.mjs +++ b/bundles/cli.mjs @@ -31,16 +31,19 @@ import { getNextBranchName, getRepositoryGitUrl, getVersionInfoForBranch, + getYarnPathFromNpmGlobalBinaries, isGithubApiError, isVersionBranch, isVersionPublishedToNpm, managedLabels, mergeLabels, require_dist, + require_dist2, require_semver, requiresLabels, + resolveYarnScriptForProject, targetLabels -} from "./chunk-IPKBAWYB.mjs"; +} from "./chunk-PSBRY2K3.mjs"; import { ChildProcess, ConfigValidationError, @@ -1219,12 +1222,12 @@ var require_jsonc_parser = __commonJS({ } return result; } - function findNodeAtLocation(root, path9) { + function findNodeAtLocation(root, path8) { if (!root) { return void 0; } let node = root; - for (let segment of path9) { + for (let segment of path8) { if (typeof segment === "string") { if (node.type !== "object" || !Array.isArray(node.children)) { return void 0; @@ -1254,17 +1257,17 @@ var require_jsonc_parser = __commonJS({ if (!node.parent || !node.parent.children) { return []; } - const path9 = getNodePath(node.parent); + const path8 = getNodePath(node.parent); if (node.parent.type === "property") { const key = node.parent.children[0].value; - path9.push(key); + path8.push(key); } else if (node.parent.type === "array") { const index = node.parent.children.indexOf(node); if (index !== -1) { - path9.push(index); + path8.push(index); } } - return path9; + return path8; } function getNodeValue(node) { switch (node.type) { @@ -1600,14 +1603,14 @@ var require_jsonc_parser = __commonJS({ } } function setProperty(text, originalPath, value, options) { - const path9 = originalPath.slice(); + const path8 = originalPath.slice(); const errors = []; const root = parseTree(text, errors); let parent = void 0; let lastSegment = void 0; - while (path9.length > 0) { - lastSegment = path9.pop(); - parent = findNodeAtLocation(root, path9); + while (path8.length > 0) { + lastSegment = path8.pop(); + parent = findNodeAtLocation(root, path8); if (parent === void 0 && value !== void 0) { if (typeof lastSegment === "string") { value = { [lastSegment]: value }; @@ -1840,8 +1843,8 @@ var require_jsonc_parser = __commonJS({ function format22(documentText, range, options) { return format3(documentText, range, options); } - function modify(text, path9, value, options) { - return setProperty(text, path9, value, options); + function modify(text, path8, value, options) { + return setProperty(text, path8, value, options); } function applyEdits(text, edits) { let sortedEdits = edits.slice(0).sort((a, b) => { @@ -2940,15 +2943,15 @@ var require_route = __commonJS({ }; } function wrapConversion(toModel, graph) { - const path9 = [graph[toModel].parent, toModel]; + const path8 = [graph[toModel].parent, toModel]; let fn = conversions[graph[toModel].parent][toModel]; let cur = graph[toModel].parent; while (graph[cur].parent) { - path9.unshift(graph[cur].parent); + path8.unshift(graph[cur].parent); fn = link(conversions[graph[cur].parent][cur], fn); cur = graph[cur].parent; } - fn.conversion = path9; + fn.conversion = path8; return fn; } module.exports = function(fromModel) { @@ -8859,7 +8862,7 @@ var require_iso2022 = __commonJS({ // node_modules/chardet/index.js var require_chardet = __commonJS({ "node_modules/chardet/index.js"(exports, module) { - var fs6 = __require("fs"); + var fs5 = __require("fs"); var utf8 = require_utf8(); var unicode = require_unicode(); var mbcs = require_mbcs(); @@ -8933,29 +8936,29 @@ var require_chardet = __commonJS({ var fd; var handler29 = function(err, buffer) { if (fd) { - fs6.closeSync(fd); + fs5.closeSync(fd); } if (err) return cb(err, null); cb(null, self.detect(buffer, opts)); }; if (opts && opts.sampleSize) { - fd = fs6.openSync(filepath, "r"), sample = Buffer.allocUnsafe(opts.sampleSize); - fs6.read(fd, sample, 0, opts.sampleSize, null, function(err) { + fd = fs5.openSync(filepath, "r"), sample = Buffer.allocUnsafe(opts.sampleSize); + fs5.read(fd, sample, 0, opts.sampleSize, null, function(err) { handler29(err, sample); }); return; } - fs6.readFile(filepath, handler29); + fs5.readFile(filepath, handler29); }; module.exports.detectFileSync = function(filepath, opts) { if (opts && opts.sampleSize) { - var fd = fs6.openSync(filepath, "r"), sample2 = Buffer.allocUnsafe(opts.sampleSize); - fs6.readSync(fd, sample2, 0, opts.sampleSize); - fs6.closeSync(fd); + var fd = fs5.openSync(filepath, "r"), sample2 = Buffer.allocUnsafe(opts.sampleSize); + fs5.readSync(fd, sample2, 0, opts.sampleSize); + fs5.closeSync(fd); return self.detect(sample2, opts); } - return self.detect(fs6.readFileSync(filepath), opts); + return self.detect(fs5.readFileSync(filepath), opts); }; module.exports.detectAll = function(buffer, opts) { if (typeof opts !== "object") { @@ -12368,16 +12371,16 @@ var require_os_tmpdir = __commonJS({ var isWindows = process.platform === "win32"; var trailingSlashRe = isWindows ? /[^:]\\$/ : /.\/$/; module.exports = function() { - var path9; + var path8; if (isWindows) { - path9 = process.env.TEMP || process.env.TMP || (process.env.SystemRoot || process.env.windir) + "\\temp"; + path8 = process.env.TEMP || process.env.TMP || (process.env.SystemRoot || process.env.windir) + "\\temp"; } else { - path9 = process.env.TMPDIR || process.env.TMP || process.env.TEMP || "/tmp"; + path8 = process.env.TMPDIR || process.env.TMP || process.env.TEMP || "/tmp"; } - if (trailingSlashRe.test(path9)) { - path9 = path9.slice(0, -1); + if (trailingSlashRe.test(path8)) { + path8 = path8.slice(0, -1); } - return path9; + return path8; }; } }); @@ -12385,8 +12388,8 @@ var require_os_tmpdir = __commonJS({ // node_modules/external-editor/node_modules/tmp/lib/tmp.js var require_tmp = __commonJS({ "node_modules/external-editor/node_modules/tmp/lib/tmp.js"(exports, module) { - var fs6 = __require("fs"); - var path9 = __require("path"); + var fs5 = __require("fs"); + var path8 = __require("path"); var crypto = __require("crypto"); var osTmpDir = require_os_tmpdir(); var _c2 = process.binding("constants"); @@ -12428,7 +12431,7 @@ var require_tmp = __commonJS({ } function _generateTmpName(opts) { if (opts.name) { - return path9.join(opts.dir || tmpDir, opts.name); + return path8.join(opts.dir || tmpDir, opts.name); } if (opts.template) { return opts.template.replace(TEMPLATE_PATTERN, _randomChars(6)); @@ -12439,7 +12442,7 @@ var require_tmp = __commonJS({ _randomChars(12), opts.postfix || "" ].join(""); - return path9.join(opts.dir || tmpDir, name); + return path8.join(opts.dir || tmpDir, name); } function tmpName(options, callback) { var args = _parseArguments(options, callback), opts = args[0], cb = args[1], tries = opts.name ? 1 : opts.tries || DEFAULT_TRIES; @@ -12449,7 +12452,7 @@ var require_tmp = __commonJS({ return cb(new Error("Invalid template provided")); (function _getUniqueName() { const name = _generateTmpName(opts); - fs6.stat(name, function(err) { + fs5.stat(name, function(err) { if (!err) { if (tries-- > 0) return _getUniqueName(); @@ -12468,7 +12471,7 @@ var require_tmp = __commonJS({ do { const name = _generateTmpName(opts); try { - fs6.statSync(name); + fs5.statSync(name); } catch (e) { return name; } @@ -12481,14 +12484,14 @@ var require_tmp = __commonJS({ tmpName(opts, function _tmpNameCreated(err, name) { if (err) return cb(err); - fs6.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err2, fd) { + fs5.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err2, fd) { if (err2) return cb(err2); if (opts.discardDescriptor) { - return fs6.close(fd, function _discardCallback(err3) { + return fs5.close(fd, function _discardCallback(err3) { if (err3) { try { - fs6.unlinkSync(name); + fs5.unlinkSync(name); } catch (e) { if (!isENOENT(e)) { err3 = e; @@ -12511,9 +12514,9 @@ var require_tmp = __commonJS({ opts.postfix = opts.postfix || ".tmp"; const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor; const name = tmpNameSync(opts); - var fd = fs6.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE); + var fd = fs5.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE); if (opts.discardDescriptor) { - fs6.closeSync(fd); + fs5.closeSync(fd); fd = void 0; } return { @@ -12525,9 +12528,9 @@ var require_tmp = __commonJS({ function _rmdirRecursiveSync(root) { const dirs = [root]; do { - var dir2 = dirs.pop(), deferred = false, files = fs6.readdirSync(dir2); + var dir2 = dirs.pop(), deferred = false, files = fs5.readdirSync(dir2); for (var i = 0, length = files.length; i < length; i++) { - var file2 = path9.join(dir2, files[i]), stat = fs6.lstatSync(file2); + var file2 = path8.join(dir2, files[i]), stat = fs5.lstatSync(file2); if (stat.isDirectory()) { if (!deferred) { deferred = true; @@ -12535,11 +12538,11 @@ var require_tmp = __commonJS({ } dirs.push(file2); } else { - fs6.unlinkSync(file2); + fs5.unlinkSync(file2); } } if (!deferred) { - fs6.rmdirSync(dir2); + fs5.rmdirSync(dir2); } } while (dirs.length !== 0); } @@ -12548,7 +12551,7 @@ var require_tmp = __commonJS({ tmpName(opts, function _tmpNameCreated(err, name) { if (err) return cb(err); - fs6.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err2) { + fs5.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err2) { if (err2) return cb(err2); cb(null, name, _prepareTmpDirRemoveCallback(name, opts)); @@ -12558,7 +12561,7 @@ var require_tmp = __commonJS({ function dirSync(options) { var args = _parseArguments(options), opts = args[0]; const name = tmpNameSync(opts); - fs6.mkdirSync(name, opts.mode || DIR_MODE); + fs5.mkdirSync(name, opts.mode || DIR_MODE); return { name, removeCallback: _prepareTmpDirRemoveCallback(name, opts) @@ -12568,7 +12571,7 @@ var require_tmp = __commonJS({ const removeCallback = _prepareRemoveCallback(function _removeCallback(fdPath) { try { if (0 <= fdPath[0]) { - fs6.closeSync(fdPath[0]); + fs5.closeSync(fdPath[0]); } } catch (e) { if (!isEBADF(e) && !isENOENT(e)) { @@ -12576,7 +12579,7 @@ var require_tmp = __commonJS({ } } try { - fs6.unlinkSync(fdPath[1]); + fs5.unlinkSync(fdPath[1]); } catch (e) { if (!isENOENT(e)) { throw e; @@ -12589,7 +12592,7 @@ var require_tmp = __commonJS({ return removeCallback; } function _prepareTmpDirRemoveCallback(name, opts) { - const removeFunction = opts.unsafeCleanup ? _rmdirRecursiveSync : fs6.rmdirSync.bind(fs6); + const removeFunction = opts.unsafeCleanup ? _rmdirRecursiveSync : fs5.rmdirSync.bind(fs5); const removeCallback = _prepareRemoveCallback(removeFunction, name); if (!opts.keep) { _removeObjects.unshift(removeCallback); @@ -13285,7 +13288,7 @@ var require_regex = __commonJS({ "node_modules/conventional-commits-parser/lib/regex.js"(exports, module) { "use strict"; var reNomatch = /(?!.*)/; - function join15(array, joiner) { + function join14(array, joiner) { return array.map(function(val) { return val.trim(); }).filter(function(val) { @@ -13296,7 +13299,7 @@ var require_regex = __commonJS({ if (!noteKeywords) { return reNomatch; } - const noteKeywordsSelection = join15(noteKeywords, "|"); + const noteKeywordsSelection = join14(noteKeywords, "|"); if (!notesPattern) { return new RegExp("^[\\s|*]*(" + noteKeywordsSelection + ")[:\\s]+(.*)", "i"); } @@ -13307,13 +13310,13 @@ var require_regex = __commonJS({ return reNomatch; } const flags = issuePrefixesCaseSensitive ? "g" : "gi"; - return new RegExp("(?:.*?)??\\s*([\\w-\\.\\/]*?)??(" + join15(issuePrefixes, "|") + ")([\\w-]*\\d+)", flags); + return new RegExp("(?:.*?)??\\s*([\\w-\\.\\/]*?)??(" + join14(issuePrefixes, "|") + ")([\\w-]*\\d+)", flags); } function getReferencesRegex(referenceActions) { if (!referenceActions) { return /()(.+)/gi; } - const joinedKeywords = join15(referenceActions, "|"); + const joinedKeywords = join14(referenceActions, "|"); return new RegExp("(" + joinedKeywords + ")(?:\\s+(.*?))(?=(?:" + joinedKeywords + ")|$)", "gi"); } module.exports = function(options) { @@ -14410,7 +14413,7 @@ var require_path = __commonJS({ Object.defineProperty(exports, "__esModule", { value: true }); exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = void 0; var os = __require("os"); - var path9 = __require("path"); + var path8 = __require("path"); var IS_WINDOWS_PLATFORM = os.platform() === "win32"; var LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; var POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g; @@ -14422,7 +14425,7 @@ var require_path = __commonJS({ } exports.unixify = unixify; function makeAbsolute(cwd, filepath) { - return path9.resolve(cwd, filepath); + return path8.resolve(cwd, filepath); } exports.makeAbsolute = makeAbsolute; function removeLeadingDotSegment(entry) { @@ -15689,7 +15692,7 @@ var require_braces = __commonJS({ var require_constants2 = __commonJS({ "node_modules/micromatch/node_modules/picomatch/lib/constants.js"(exports, module) { "use strict"; - var path9 = __require("path"); + var path8 = __require("path"); var WIN_SLASH = "\\\\/"; var WIN_NO_SLASH = `[^${WIN_SLASH}]`; var DOT_LITERAL = "\\."; @@ -15811,7 +15814,7 @@ var require_constants2 = __commonJS({ CHAR_UNDERSCORE: 95, CHAR_VERTICAL_LINE: 124, CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, - SEP: path9.sep, + SEP: path8.sep, extglobChars(chars) { return { "!": { type: "negate", open: "(?:(?!(?:", close: `))${chars.STAR})` }, @@ -15832,7 +15835,7 @@ var require_constants2 = __commonJS({ var require_utils2 = __commonJS({ "node_modules/micromatch/node_modules/picomatch/lib/utils.js"(exports) { "use strict"; - var path9 = __require("path"); + var path8 = __require("path"); var win32 = process.platform === "win32"; var { REGEX_BACKSLASH, @@ -15861,7 +15864,7 @@ var require_utils2 = __commonJS({ if (options && typeof options.windows === "boolean") { return options.windows; } - return win32 === true || path9.sep === "\\"; + return win32 === true || path8.sep === "\\"; }; exports.escapeLast = (input, char, lastIdx) => { const idx = input.lastIndexOf(char, lastIdx); @@ -16994,7 +16997,7 @@ var require_parse2 = __commonJS({ var require_picomatch = __commonJS({ "node_modules/micromatch/node_modules/picomatch/lib/picomatch.js"(exports, module) { "use strict"; - var path9 = __require("path"); + var path8 = __require("path"); var scan = require_scan(); var parse4 = require_parse2(); var utils = require_utils2(); @@ -17080,7 +17083,7 @@ var require_picomatch = __commonJS({ }; picomatch.matchBase = (input, glob3, options, posix = utils.isWindows(options)) => { const regex = glob3 instanceof RegExp ? glob3 : picomatch.makeRe(glob3, options); - return regex.test(path9.basename(input)); + return regex.test(path8.basename(input)); }; picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); picomatch.parse = (pattern, options) => { @@ -17315,7 +17318,7 @@ var require_pattern = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isAbsolute = exports.partitionAbsoluteAndRelative = exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; - var path9 = __require("path"); + var path8 = __require("path"); var globParent = require_glob_parent(); var micromatch = require_micromatch(); var GLOBSTAR3 = "**"; @@ -17410,7 +17413,7 @@ var require_pattern = __commonJS({ } exports.endsWithSlashGlobStar = endsWithSlashGlobStar; function isAffectDepthOfReadingPattern(pattern) { - const basename2 = path9.basename(pattern); + const basename2 = path8.basename(pattern); return endsWithSlashGlobStar(pattern) || isStaticPattern(basename2); } exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; @@ -17468,7 +17471,7 @@ var require_pattern = __commonJS({ } exports.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative; function isAbsolute3(pattern) { - return path9.isAbsolute(pattern); + return path8.isAbsolute(pattern); } exports.isAbsolute = isAbsolute3; } @@ -17643,10 +17646,10 @@ var require_utils3 = __commonJS({ exports.array = array; var errno = require_errno(); exports.errno = errno; - var fs6 = require_fs(); - exports.fs = fs6; - var path9 = require_path(); - exports.path = path9; + var fs5 = require_fs(); + exports.fs = fs5; + var path8 = require_path(); + exports.path = path8; var pattern = require_pattern(); exports.pattern = pattern; var stream = require_stream(); @@ -17748,8 +17751,8 @@ var require_async = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.read = void 0; - function read(path9, settings, callback) { - settings.fs.lstat(path9, (lstatError, lstat) => { + function read(path8, settings, callback) { + settings.fs.lstat(path8, (lstatError, lstat) => { if (lstatError !== null) { callFailureCallback(callback, lstatError); return; @@ -17758,7 +17761,7 @@ var require_async = __commonJS({ callSuccessCallback(callback, lstat); return; } - settings.fs.stat(path9, (statError, stat) => { + settings.fs.stat(path8, (statError, stat) => { if (statError !== null) { if (settings.throwErrorOnBrokenSymbolicLink) { callFailureCallback(callback, statError); @@ -17790,13 +17793,13 @@ var require_sync = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.read = void 0; - function read(path9, settings) { - const lstat = settings.fs.lstatSync(path9); + function read(path8, settings) { + const lstat = settings.fs.lstatSync(path8); if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { return lstat; } try { - const stat = settings.fs.statSync(path9); + const stat = settings.fs.statSync(path8); if (settings.markSymbolicLink) { stat.isSymbolicLink = () => true; } @@ -17818,12 +17821,12 @@ var require_fs2 = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0; - var fs6 = __require("fs"); + var fs5 = __require("fs"); exports.FILE_SYSTEM_ADAPTER = { - lstat: fs6.lstat, - stat: fs6.stat, - lstatSync: fs6.lstatSync, - statSync: fs6.statSync + lstat: fs5.lstat, + stat: fs5.stat, + lstatSync: fs5.lstatSync, + statSync: fs5.statSync }; function createFileSystemAdapter(fsMethods) { if (fsMethods === void 0) { @@ -17840,12 +17843,12 @@ var require_settings = __commonJS({ "node_modules/@nodelib/fs.stat/out/settings.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var fs6 = require_fs2(); + var fs5 = require_fs2(); var Settings = class { constructor(_options3 = {}) { this._options = _options3; this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); - this.fs = fs6.createFileSystemAdapter(this._options.fs); + this.fs = fs5.createFileSystemAdapter(this._options.fs); this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); } @@ -17867,17 +17870,17 @@ var require_out = __commonJS({ var sync = require_sync(); var settings_1 = require_settings(); exports.Settings = settings_1.default; - function stat(path9, optionsOrSettingsOrCallback, callback) { + function stat(path8, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === "function") { - async.read(path9, getSettings(), optionsOrSettingsOrCallback); + async.read(path8, getSettings(), optionsOrSettingsOrCallback); return; } - async.read(path9, getSettings(optionsOrSettingsOrCallback), callback); + async.read(path8, getSettings(optionsOrSettingsOrCallback), callback); } exports.stat = stat; - function statSync4(path9, optionsOrSettings) { + function statSync4(path8, optionsOrSettings) { const settings = getSettings(optionsOrSettings); - return sync.read(path9, settings); + return sync.read(path8, settings); } exports.statSync = statSync4; function getSettings(settingsOrOptions = {}) { @@ -18003,8 +18006,8 @@ var require_utils4 = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fs = void 0; - var fs6 = require_fs3(); - exports.fs = fs6; + var fs5 = require_fs3(); + exports.fs = fs5; } }); @@ -18096,16 +18099,16 @@ var require_async2 = __commonJS({ return; } const tasks = names.map((name) => { - const path9 = common2.joinPathSegments(directory, name, settings.pathSegmentSeparator); + const path8 = common2.joinPathSegments(directory, name, settings.pathSegmentSeparator); return (done) => { - fsStat.stat(path9, settings.fsStatSettings, (error, stats) => { + fsStat.stat(path8, settings.fsStatSettings, (error, stats) => { if (error !== null) { done(error); return; } const entry = { name, - path: path9, + path: path8, dirent: utils.fs.createDirentFromStats(name, stats) }; if (settings.stats) { @@ -18199,14 +18202,14 @@ var require_fs4 = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0; - var fs6 = __require("fs"); + var fs5 = __require("fs"); exports.FILE_SYSTEM_ADAPTER = { - lstat: fs6.lstat, - stat: fs6.stat, - lstatSync: fs6.lstatSync, - statSync: fs6.statSync, - readdir: fs6.readdir, - readdirSync: fs6.readdirSync + lstat: fs5.lstat, + stat: fs5.stat, + lstatSync: fs5.lstatSync, + statSync: fs5.statSync, + readdir: fs5.readdir, + readdirSync: fs5.readdirSync }; function createFileSystemAdapter(fsMethods) { if (fsMethods === void 0) { @@ -18223,15 +18226,15 @@ var require_settings2 = __commonJS({ "node_modules/@nodelib/fs.scandir/out/settings.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var path9 = __require("path"); + var path8 = __require("path"); var fsStat = require_out(); - var fs6 = require_fs4(); + var fs5 = require_fs4(); var Settings = class { constructor(_options3 = {}) { this._options = _options3; this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); - this.fs = fs6.createFileSystemAdapter(this._options.fs); - this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path9.sep); + this.fs = fs5.createFileSystemAdapter(this._options.fs); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path8.sep); this.stats = this._getValue(this._options.stats, false); this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); this.fsStatSettings = new fsStat.Settings({ @@ -18258,17 +18261,17 @@ var require_out2 = __commonJS({ var sync = require_sync2(); var settings_1 = require_settings2(); exports.Settings = settings_1.default; - function scandir(path9, optionsOrSettingsOrCallback, callback) { + function scandir(path8, optionsOrSettingsOrCallback, callback) { if (typeof optionsOrSettingsOrCallback === "function") { - async.read(path9, getSettings(), optionsOrSettingsOrCallback); + async.read(path8, getSettings(), optionsOrSettingsOrCallback); return; } - async.read(path9, getSettings(optionsOrSettingsOrCallback), callback); + async.read(path8, getSettings(optionsOrSettingsOrCallback), callback); } exports.scandir = scandir; - function scandirSync(path9, optionsOrSettings) { + function scandirSync(path8, optionsOrSettings) { const settings = getSettings(optionsOrSettings); - return sync.read(path9, settings); + return sync.read(path8, settings); } exports.scandirSync = scandirSync; function getSettings(settingsOrOptions = {}) { @@ -18526,42 +18529,42 @@ var require_queue = __commonJS({ queue.drained = drained; return queue; function push(value) { - var p = new Promise(function(resolve13, reject) { + var p = new Promise(function(resolve12, reject) { pushCb(value, function(err, result) { if (err) { reject(err); return; } - resolve13(result); + resolve12(result); }); }); p.catch(noop); return p; } function unshift(value) { - var p = new Promise(function(resolve13, reject) { + var p = new Promise(function(resolve12, reject) { unshiftCb(value, function(err, result) { if (err) { reject(err); return; } - resolve13(result); + resolve12(result); }); }); p.catch(noop); return p; } function drained() { - var p = new Promise(function(resolve13) { + var p = new Promise(function(resolve12) { process.nextTick(function() { if (queue.idle()) { - resolve13(); + resolve12(); } else { var previousDrain = queue.drain; queue.drain = function() { if (typeof previousDrain === "function") previousDrain(); - resolve13(); + resolve12(); queue.drain = previousDrain; }; } @@ -18895,7 +18898,7 @@ var require_settings3 = __commonJS({ "node_modules/@nodelib/fs.walk/out/settings.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var path9 = __require("path"); + var path8 = __require("path"); var fsScandir = require_out2(); var Settings = class { constructor(_options3 = {}) { @@ -18905,7 +18908,7 @@ var require_settings3 = __commonJS({ this.deepFilter = this._getValue(this._options.deepFilter, null); this.entryFilter = this._getValue(this._options.entryFilter, null); this.errorFilter = this._getValue(this._options.errorFilter, null); - this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path9.sep); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path8.sep); this.fsScandirSettings = new fsScandir.Settings({ followSymbolicLinks: this._options.followSymbolicLinks, fs: this._options.fs, @@ -18967,7 +18970,7 @@ var require_reader2 = __commonJS({ "node_modules/fast-glob/out/readers/reader.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var path9 = __require("path"); + var path8 = __require("path"); var fsStat = require_out(); var utils = require_utils3(); var Reader = class { @@ -18980,7 +18983,7 @@ var require_reader2 = __commonJS({ }); } _getFullEntryPath(filepath) { - return path9.resolve(this._settings.cwd, filepath); + return path8.resolve(this._settings.cwd, filepath); } _makeEntry(stats, pattern) { const entry = { @@ -19047,9 +19050,9 @@ var require_stream3 = __commonJS({ }); } _getStat(filepath) { - return new Promise((resolve13, reject) => { + return new Promise((resolve12, reject) => { this._stat(filepath, this._fsStatSettings, (error, stats) => { - return error === null ? resolve13(stats) : reject(error); + return error === null ? resolve12(stats) : reject(error); }); }); } @@ -19073,10 +19076,10 @@ var require_async5 = __commonJS({ this._readerStream = new stream_1.default(this._settings); } dynamic(root, options) { - return new Promise((resolve13, reject) => { + return new Promise((resolve12, reject) => { this._walkAsync(root, options, (error, entries) => { if (error === null) { - resolve13(entries); + resolve12(entries); } else { reject(error); } @@ -19086,10 +19089,10 @@ var require_async5 = __commonJS({ async static(patterns, options) { const entries = []; const stream = this._readerStream.static(patterns, options); - return new Promise((resolve13, reject) => { + return new Promise((resolve12, reject) => { stream.once("error", reject); stream.on("data", (entry) => entries.push(entry)); - stream.once("end", () => resolve13(entries)); + stream.once("end", () => resolve12(entries)); }); } }; @@ -19396,7 +19399,7 @@ var require_provider = __commonJS({ "node_modules/fast-glob/out/providers/provider.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var path9 = __require("path"); + var path8 = __require("path"); var deep_1 = require_deep(); var entry_1 = require_entry(); var error_1 = require_error(); @@ -19410,7 +19413,7 @@ var require_provider = __commonJS({ this.entryTransformer = new entry_2.default(this._settings); } _getRootDirectory(task) { - return path9.resolve(this._settings.cwd, task.base); + return path8.resolve(this._settings.cwd, task.base); } _getReaderOptions(task) { const basePath = task.base === "." ? "" : task.base; @@ -19591,16 +19594,16 @@ var require_settings4 = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; - var fs6 = __require("fs"); + var fs5 = __require("fs"); var os = __require("os"); var CPU_COUNT = Math.max(os.cpus().length, 1); exports.DEFAULT_FILE_SYSTEM_ADAPTER = { - lstat: fs6.lstat, - lstatSync: fs6.lstatSync, - stat: fs6.stat, - statSync: fs6.statSync, - readdir: fs6.readdir, - readdirSync: fs6.readdirSync + lstat: fs5.lstat, + lstatSync: fs5.lstatSync, + stat: fs5.stat, + statSync: fs5.statSync, + readdir: fs5.readdir, + readdirSync: fs5.readdirSync }; var Settings = class { constructor(_options3 = {}) { @@ -19746,7315 +19749,6 @@ var require_out4 = __commonJS({ } }); -// node_modules/which/node_modules/isexe/dist/cjs/posix.js -var require_posix = __commonJS({ - "node_modules/which/node_modules/isexe/dist/cjs/posix.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.sync = exports.isexe = void 0; - var fs_1 = __require("fs"); - var promises_1 = __require("fs/promises"); - var isexe = async (path9, options = {}) => { - const { ignoreErrors = false } = options; - try { - return checkStat(await (0, promises_1.stat)(path9), options); - } catch (e) { - const er = e; - if (ignoreErrors || er.code === "EACCES") - return false; - throw er; - } - }; - exports.isexe = isexe; - var sync = (path9, options = {}) => { - const { ignoreErrors = false } = options; - try { - return checkStat((0, fs_1.statSync)(path9), options); - } catch (e) { - const er = e; - if (ignoreErrors || er.code === "EACCES") - return false; - throw er; - } - }; - exports.sync = sync; - var checkStat = (stat, options) => stat.isFile() && checkMode(stat, options); - var checkMode = (stat, options) => { - var _a2, _b2, _c2; - const myUid = options.uid ?? ((_a2 = process.getuid) == null ? void 0 : _a2.call(process)); - const myGroups = options.groups ?? ((_b2 = process.getgroups) == null ? void 0 : _b2.call(process)) ?? []; - const myGid = options.gid ?? ((_c2 = process.getgid) == null ? void 0 : _c2.call(process)) ?? myGroups[0]; - if (myUid === void 0 || myGid === void 0) { - throw new Error("cannot get uid or gid"); - } - const groups = /* @__PURE__ */ new Set([myGid, ...myGroups]); - const mod = stat.mode; - const uid = stat.uid; - const gid = stat.gid; - const u = parseInt("100", 8); - const g = parseInt("010", 8); - const o = parseInt("001", 8); - const ug = u | g; - return !!(mod & o || mod & g && groups.has(gid) || mod & u && uid === myUid || mod & ug && myUid === 0); - }; - } -}); - -// node_modules/which/node_modules/isexe/dist/cjs/win32.js -var require_win32 = __commonJS({ - "node_modules/which/node_modules/isexe/dist/cjs/win32.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.sync = exports.isexe = void 0; - var fs_1 = __require("fs"); - var promises_1 = __require("fs/promises"); - var isexe = async (path9, options = {}) => { - const { ignoreErrors = false } = options; - try { - return checkStat(await (0, promises_1.stat)(path9), path9, options); - } catch (e) { - const er = e; - if (ignoreErrors || er.code === "EACCES") - return false; - throw er; - } - }; - exports.isexe = isexe; - var sync = (path9, options = {}) => { - const { ignoreErrors = false } = options; - try { - return checkStat((0, fs_1.statSync)(path9), path9, options); - } catch (e) { - const er = e; - if (ignoreErrors || er.code === "EACCES") - return false; - throw er; - } - }; - exports.sync = sync; - var checkPathExt = (path9, options) => { - const { pathExt = process.env.PATHEXT || "" } = options; - const peSplit = pathExt.split(";"); - if (peSplit.indexOf("") !== -1) { - return true; - } - for (let i = 0; i < peSplit.length; i++) { - const p = peSplit[i].toLowerCase(); - const ext3 = path9.substring(path9.length - p.length).toLowerCase(); - if (p && ext3 === p) { - return true; - } - } - return false; - }; - var checkStat = (stat, path9, options) => stat.isFile() && checkPathExt(path9, options); - } -}); - -// node_modules/which/node_modules/isexe/dist/cjs/options.js -var require_options2 = __commonJS({ - "node_modules/which/node_modules/isexe/dist/cjs/options.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } -}); - -// node_modules/which/node_modules/isexe/dist/cjs/index.js -var require_cjs = __commonJS({ - "node_modules/which/node_modules/isexe/dist/cjs/index.js"(exports) { - "use strict"; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { - if (k2 === void 0) - k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { - return m[k]; - } }; - } - Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { - if (k2 === void 0) - k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } : function(o, v) { - o["default"] = v; - }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) - return mod; - var result = {}; - if (mod != null) { - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; - var __exportStar = exports && exports.__exportStar || function(m, exports2) { - for (var p in m) - if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) - __createBinding(exports2, m, p); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.sync = exports.isexe = exports.posix = exports.win32 = void 0; - var posix = __importStar(require_posix()); - exports.posix = posix; - var win32 = __importStar(require_win32()); - exports.win32 = win32; - __exportStar(require_options2(), exports); - var platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform; - var impl = platform === "win32" ? win32 : posix; - exports.isexe = impl.isexe; - exports.sync = impl.sync; - } -}); - -// node_modules/which/lib/index.js -var require_lib3 = __commonJS({ - "node_modules/which/lib/index.js"(exports, module) { - var { isexe, sync: isexeSync } = require_cjs(); - var { join: join15, delimiter, sep: sep3, posix } = __require("path"); - var isWindows = process.platform === "win32"; - var rSlash = new RegExp(`[${posix.sep}${sep3 === posix.sep ? "" : sep3}]`.replace(/(\\)/g, "\\$1")); - var rRel = new RegExp(`^\\.${rSlash.source}`); - var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" }); - var getPathInfo = (cmd, { - path: optPath = process.env.PATH, - pathExt: optPathExt = process.env.PATHEXT, - delimiter: optDelimiter = delimiter - }) => { - const pathEnv = cmd.match(rSlash) ? [""] : [ - ...isWindows ? [process.cwd()] : [], - ...(optPath || "").split(optDelimiter) - ]; - if (isWindows) { - const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter); - const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]); - if (cmd.includes(".") && pathExt[0] !== "") { - pathExt.unshift(""); - } - return { pathEnv, pathExt, pathExtExe }; - } - return { pathEnv, pathExt: [""] }; - }; - var getPathPart = (raw, cmd) => { - const pathPart = /^".*"$/.test(raw) ? raw.slice(1, -1) : raw; - const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : ""; - return prefix + join15(pathPart, cmd); - }; - var which2 = async (cmd, opt = {}) => { - const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); - const found = []; - for (const envPart of pathEnv) { - const p = getPathPart(envPart, cmd); - for (const ext3 of pathExt) { - const withExt = p + ext3; - const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true }); - if (is) { - if (!opt.all) { - return withExt; - } - found.push(withExt); - } - } - } - if (opt.all && found.length) { - return found; - } - if (opt.nothrow) { - return null; - } - throw getNotFoundError(cmd); - }; - var whichSync = (cmd, opt = {}) => { - const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); - const found = []; - for (const pathEnvPart of pathEnv) { - const p = getPathPart(pathEnvPart, cmd); - for (const ext3 of pathExt) { - const withExt = p + ext3; - const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true }); - if (is) { - if (!opt.all) { - return withExt; - } - found.push(withExt); - } - } - } - if (opt.all && found.length) { - return found; - } - if (opt.nothrow) { - return null; - } - throw getNotFoundError(cmd); - }; - module.exports = which2; - which2.sync = whichSync; - } -}); - -// node_modules/yaml/dist/nodes/identity.js -var require_identity = __commonJS({ - "node_modules/yaml/dist/nodes/identity.js"(exports) { - "use strict"; - var ALIAS = Symbol.for("yaml.alias"); - var DOC = Symbol.for("yaml.document"); - var MAP = Symbol.for("yaml.map"); - var PAIR = Symbol.for("yaml.pair"); - var SCALAR = Symbol.for("yaml.scalar"); - var SEQ = Symbol.for("yaml.seq"); - var NODE_TYPE = Symbol.for("yaml.node.type"); - var isAlias = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === ALIAS; - var isDocument = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === DOC; - var isMap = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === MAP; - var isPair = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === PAIR; - var isScalar = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SCALAR; - var isSeq = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SEQ; - function isCollection(node) { - if (node && typeof node === "object") - switch (node[NODE_TYPE]) { - case MAP: - case SEQ: - return true; - } - return false; - } - function isNode(node) { - if (node && typeof node === "object") - switch (node[NODE_TYPE]) { - case ALIAS: - case MAP: - case SCALAR: - case SEQ: - return true; - } - return false; - } - var hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor; - exports.ALIAS = ALIAS; - exports.DOC = DOC; - exports.MAP = MAP; - exports.NODE_TYPE = NODE_TYPE; - exports.PAIR = PAIR; - exports.SCALAR = SCALAR; - exports.SEQ = SEQ; - exports.hasAnchor = hasAnchor; - exports.isAlias = isAlias; - exports.isCollection = isCollection; - exports.isDocument = isDocument; - exports.isMap = isMap; - exports.isNode = isNode; - exports.isPair = isPair; - exports.isScalar = isScalar; - exports.isSeq = isSeq; - } -}); - -// node_modules/yaml/dist/visit.js -var require_visit = __commonJS({ - "node_modules/yaml/dist/visit.js"(exports) { - "use strict"; - var identity = require_identity(); - var BREAK = Symbol("break visit"); - var SKIP = Symbol("skip children"); - var REMOVE = Symbol("remove node"); - function visit(node, visitor) { - const visitor_ = initVisitor(visitor); - if (identity.isDocument(node)) { - const cd = visit_(null, node.contents, visitor_, Object.freeze([node])); - if (cd === REMOVE) - node.contents = null; - } else - visit_(null, node, visitor_, Object.freeze([])); - } - visit.BREAK = BREAK; - visit.SKIP = SKIP; - visit.REMOVE = REMOVE; - function visit_(key, node, visitor, path9) { - const ctrl = callVisitor(key, node, visitor, path9); - if (identity.isNode(ctrl) || identity.isPair(ctrl)) { - replaceNode(key, path9, ctrl); - return visit_(key, ctrl, visitor, path9); - } - if (typeof ctrl !== "symbol") { - if (identity.isCollection(node)) { - path9 = Object.freeze(path9.concat(node)); - for (let i = 0; i < node.items.length; ++i) { - const ci = visit_(i, node.items[i], visitor, path9); - if (typeof ci === "number") - i = ci - 1; - else if (ci === BREAK) - return BREAK; - else if (ci === REMOVE) { - node.items.splice(i, 1); - i -= 1; - } - } - } else if (identity.isPair(node)) { - path9 = Object.freeze(path9.concat(node)); - const ck = visit_("key", node.key, visitor, path9); - if (ck === BREAK) - return BREAK; - else if (ck === REMOVE) - node.key = null; - const cv = visit_("value", node.value, visitor, path9); - if (cv === BREAK) - return BREAK; - else if (cv === REMOVE) - node.value = null; - } - } - return ctrl; - } - async function visitAsync(node, visitor) { - const visitor_ = initVisitor(visitor); - if (identity.isDocument(node)) { - const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node])); - if (cd === REMOVE) - node.contents = null; - } else - await visitAsync_(null, node, visitor_, Object.freeze([])); - } - visitAsync.BREAK = BREAK; - visitAsync.SKIP = SKIP; - visitAsync.REMOVE = REMOVE; - async function visitAsync_(key, node, visitor, path9) { - const ctrl = await callVisitor(key, node, visitor, path9); - if (identity.isNode(ctrl) || identity.isPair(ctrl)) { - replaceNode(key, path9, ctrl); - return visitAsync_(key, ctrl, visitor, path9); - } - if (typeof ctrl !== "symbol") { - if (identity.isCollection(node)) { - path9 = Object.freeze(path9.concat(node)); - for (let i = 0; i < node.items.length; ++i) { - const ci = await visitAsync_(i, node.items[i], visitor, path9); - if (typeof ci === "number") - i = ci - 1; - else if (ci === BREAK) - return BREAK; - else if (ci === REMOVE) { - node.items.splice(i, 1); - i -= 1; - } - } - } else if (identity.isPair(node)) { - path9 = Object.freeze(path9.concat(node)); - const ck = await visitAsync_("key", node.key, visitor, path9); - if (ck === BREAK) - return BREAK; - else if (ck === REMOVE) - node.key = null; - const cv = await visitAsync_("value", node.value, visitor, path9); - if (cv === BREAK) - return BREAK; - else if (cv === REMOVE) - node.value = null; - } - } - return ctrl; - } - function initVisitor(visitor) { - if (typeof visitor === "object" && (visitor.Collection || visitor.Node || visitor.Value)) { - return Object.assign({ - Alias: visitor.Node, - Map: visitor.Node, - Scalar: visitor.Node, - Seq: visitor.Node - }, visitor.Value && { - Map: visitor.Value, - Scalar: visitor.Value, - Seq: visitor.Value - }, visitor.Collection && { - Map: visitor.Collection, - Seq: visitor.Collection - }, visitor); - } - return visitor; - } - function callVisitor(key, node, visitor, path9) { - var _a2, _b2, _c2, _d, _e; - if (typeof visitor === "function") - return visitor(key, node, path9); - if (identity.isMap(node)) - return (_a2 = visitor.Map) == null ? void 0 : _a2.call(visitor, key, node, path9); - if (identity.isSeq(node)) - return (_b2 = visitor.Seq) == null ? void 0 : _b2.call(visitor, key, node, path9); - if (identity.isPair(node)) - return (_c2 = visitor.Pair) == null ? void 0 : _c2.call(visitor, key, node, path9); - if (identity.isScalar(node)) - return (_d = visitor.Scalar) == null ? void 0 : _d.call(visitor, key, node, path9); - if (identity.isAlias(node)) - return (_e = visitor.Alias) == null ? void 0 : _e.call(visitor, key, node, path9); - return void 0; - } - function replaceNode(key, path9, node) { - const parent = path9[path9.length - 1]; - if (identity.isCollection(parent)) { - parent.items[key] = node; - } else if (identity.isPair(parent)) { - if (key === "key") - parent.key = node; - else - parent.value = node; - } else if (identity.isDocument(parent)) { - parent.contents = node; - } else { - const pt = identity.isAlias(parent) ? "alias" : "scalar"; - throw new Error(`Cannot replace node with ${pt} parent`); - } - } - exports.visit = visit; - exports.visitAsync = visitAsync; - } -}); - -// node_modules/yaml/dist/doc/directives.js -var require_directives = __commonJS({ - "node_modules/yaml/dist/doc/directives.js"(exports) { - "use strict"; - var identity = require_identity(); - var visit = require_visit(); - var escapeChars = { - "!": "%21", - ",": "%2C", - "[": "%5B", - "]": "%5D", - "{": "%7B", - "}": "%7D" - }; - var escapeTagName = (tn) => tn.replace(/[!,[\]{}]/g, (ch) => escapeChars[ch]); - var Directives = class { - constructor(yaml, tags) { - this.docStart = null; - this.docEnd = false; - this.yaml = Object.assign({}, Directives.defaultYaml, yaml); - this.tags = Object.assign({}, Directives.defaultTags, tags); - } - clone() { - const copy = new Directives(this.yaml, this.tags); - copy.docStart = this.docStart; - return copy; - } - atDocument() { - const res = new Directives(this.yaml, this.tags); - switch (this.yaml.version) { - case "1.1": - this.atNextDocument = true; - break; - case "1.2": - this.atNextDocument = false; - this.yaml = { - explicit: Directives.defaultYaml.explicit, - version: "1.2" - }; - this.tags = Object.assign({}, Directives.defaultTags); - break; - } - return res; - } - add(line, onError) { - if (this.atNextDocument) { - this.yaml = { explicit: Directives.defaultYaml.explicit, version: "1.1" }; - this.tags = Object.assign({}, Directives.defaultTags); - this.atNextDocument = false; - } - const parts = line.trim().split(/[ \t]+/); - const name = parts.shift(); - switch (name) { - case "%TAG": { - if (parts.length !== 2) { - onError(0, "%TAG directive should contain exactly two parts"); - if (parts.length < 2) - return false; - } - const [handle, prefix] = parts; - this.tags[handle] = prefix; - return true; - } - case "%YAML": { - this.yaml.explicit = true; - if (parts.length !== 1) { - onError(0, "%YAML directive should contain exactly one part"); - return false; - } - const [version] = parts; - if (version === "1.1" || version === "1.2") { - this.yaml.version = version; - return true; - } else { - const isValid = /^\d+\.\d+$/.test(version); - onError(6, `Unsupported YAML version ${version}`, isValid); - return false; - } - } - default: - onError(0, `Unknown directive ${name}`, true); - return false; - } - } - tagName(source, onError) { - if (source === "!") - return "!"; - if (source[0] !== "!") { - onError(`Not a valid tag: ${source}`); - return null; - } - if (source[1] === "<") { - const verbatim = source.slice(2, -1); - if (verbatim === "!" || verbatim === "!!") { - onError(`Verbatim tags aren't resolved, so ${source} is invalid.`); - return null; - } - if (source[source.length - 1] !== ">") - onError("Verbatim tags must end with a >"); - return verbatim; - } - const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s); - if (!suffix) - onError(`The ${source} tag has no suffix`); - const prefix = this.tags[handle]; - if (prefix) { - try { - return prefix + decodeURIComponent(suffix); - } catch (error) { - onError(String(error)); - return null; - } - } - if (handle === "!") - return source; - onError(`Could not resolve tag: ${source}`); - return null; - } - tagString(tag) { - for (const [handle, prefix] of Object.entries(this.tags)) { - if (tag.startsWith(prefix)) - return handle + escapeTagName(tag.substring(prefix.length)); - } - return tag[0] === "!" ? tag : `!<${tag}>`; - } - toString(doc) { - const lines2 = this.yaml.explicit ? [`%YAML ${this.yaml.version || "1.2"}`] : []; - const tagEntries = Object.entries(this.tags); - let tagNames; - if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) { - const tags = {}; - visit.visit(doc.contents, (_key, node) => { - if (identity.isNode(node) && node.tag) - tags[node.tag] = true; - }); - tagNames = Object.keys(tags); - } else - tagNames = []; - for (const [handle, prefix] of tagEntries) { - if (handle === "!!" && prefix === "tag:yaml.org,2002:") - continue; - if (!doc || tagNames.some((tn) => tn.startsWith(prefix))) - lines2.push(`%TAG ${handle} ${prefix}`); - } - return lines2.join("\n"); - } - }; - Directives.defaultYaml = { explicit: false, version: "1.2" }; - Directives.defaultTags = { "!!": "tag:yaml.org,2002:" }; - exports.Directives = Directives; - } -}); - -// node_modules/yaml/dist/doc/anchors.js -var require_anchors = __commonJS({ - "node_modules/yaml/dist/doc/anchors.js"(exports) { - "use strict"; - var identity = require_identity(); - var visit = require_visit(); - function anchorIsValid(anchor) { - if (/[\x00-\x19\s,[\]{}]/.test(anchor)) { - const sa = JSON.stringify(anchor); - const msg = `Anchor must not contain whitespace or control characters: ${sa}`; - throw new Error(msg); - } - return true; - } - function anchorNames(root) { - const anchors = /* @__PURE__ */ new Set(); - visit.visit(root, { - Value(_key, node) { - if (node.anchor) - anchors.add(node.anchor); - } - }); - return anchors; - } - function findNewAnchor(prefix, exclude) { - for (let i = 1; true; ++i) { - const name = `${prefix}${i}`; - if (!exclude.has(name)) - return name; - } - } - function createNodeAnchors(doc, prefix) { - const aliasObjects = []; - const sourceObjects = /* @__PURE__ */ new Map(); - let prevAnchors = null; - return { - onAnchor: (source) => { - aliasObjects.push(source); - if (!prevAnchors) - prevAnchors = anchorNames(doc); - const anchor = findNewAnchor(prefix, prevAnchors); - prevAnchors.add(anchor); - return anchor; - }, - setAnchors: () => { - for (const source of aliasObjects) { - const ref = sourceObjects.get(source); - if (typeof ref === "object" && ref.anchor && (identity.isScalar(ref.node) || identity.isCollection(ref.node))) { - ref.node.anchor = ref.anchor; - } else { - const error = new Error("Failed to resolve repeated object (this should not happen)"); - error.source = source; - throw error; - } - } - }, - sourceObjects - }; - } - exports.anchorIsValid = anchorIsValid; - exports.anchorNames = anchorNames; - exports.createNodeAnchors = createNodeAnchors; - exports.findNewAnchor = findNewAnchor; - } -}); - -// node_modules/yaml/dist/doc/applyReviver.js -var require_applyReviver = __commonJS({ - "node_modules/yaml/dist/doc/applyReviver.js"(exports) { - "use strict"; - function applyReviver(reviver, obj, key, val) { - if (val && typeof val === "object") { - if (Array.isArray(val)) { - for (let i = 0, len = val.length; i < len; ++i) { - const v0 = val[i]; - const v1 = applyReviver(reviver, val, String(i), v0); - if (v1 === void 0) - delete val[i]; - else if (v1 !== v0) - val[i] = v1; - } - } else if (val instanceof Map) { - for (const k of Array.from(val.keys())) { - const v0 = val.get(k); - const v1 = applyReviver(reviver, val, k, v0); - if (v1 === void 0) - val.delete(k); - else if (v1 !== v0) - val.set(k, v1); - } - } else if (val instanceof Set) { - for (const v0 of Array.from(val)) { - const v1 = applyReviver(reviver, val, v0, v0); - if (v1 === void 0) - val.delete(v0); - else if (v1 !== v0) { - val.delete(v0); - val.add(v1); - } - } - } else { - for (const [k, v0] of Object.entries(val)) { - const v1 = applyReviver(reviver, val, k, v0); - if (v1 === void 0) - delete val[k]; - else if (v1 !== v0) - val[k] = v1; - } - } - } - return reviver.call(obj, key, val); - } - exports.applyReviver = applyReviver; - } -}); - -// node_modules/yaml/dist/nodes/toJS.js -var require_toJS = __commonJS({ - "node_modules/yaml/dist/nodes/toJS.js"(exports) { - "use strict"; - var identity = require_identity(); - function toJS(value, arg, ctx) { - if (Array.isArray(value)) - return value.map((v, i) => toJS(v, String(i), ctx)); - if (value && typeof value.toJSON === "function") { - if (!ctx || !identity.hasAnchor(value)) - return value.toJSON(arg, ctx); - const data = { aliasCount: 0, count: 1, res: void 0 }; - ctx.anchors.set(value, data); - ctx.onCreate = (res2) => { - data.res = res2; - delete ctx.onCreate; - }; - const res = value.toJSON(arg, ctx); - if (ctx.onCreate) - ctx.onCreate(res); - return res; - } - if (typeof value === "bigint" && !(ctx == null ? void 0 : ctx.keep)) - return Number(value); - return value; - } - exports.toJS = toJS; - } -}); - -// node_modules/yaml/dist/nodes/Node.js -var require_Node = __commonJS({ - "node_modules/yaml/dist/nodes/Node.js"(exports) { - "use strict"; - var applyReviver = require_applyReviver(); - var identity = require_identity(); - var toJS = require_toJS(); - var NodeBase = class { - constructor(type) { - Object.defineProperty(this, identity.NODE_TYPE, { value: type }); - } - clone() { - const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); - if (this.range) - copy.range = this.range.slice(); - return copy; - } - toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) { - if (!identity.isDocument(doc)) - throw new TypeError("A document argument is required"); - const ctx = { - anchors: /* @__PURE__ */ new Map(), - doc, - keep: true, - mapAsMap: mapAsMap === true, - mapKeyWarned: false, - maxAliasCount: typeof maxAliasCount === "number" ? maxAliasCount : 100 - }; - const res = toJS.toJS(this, "", ctx); - if (typeof onAnchor === "function") - for (const { count, res: res2 } of ctx.anchors.values()) - onAnchor(res2, count); - return typeof reviver === "function" ? applyReviver.applyReviver(reviver, { "": res }, "", res) : res; - } - }; - exports.NodeBase = NodeBase; - } -}); - -// node_modules/yaml/dist/nodes/Alias.js -var require_Alias = __commonJS({ - "node_modules/yaml/dist/nodes/Alias.js"(exports) { - "use strict"; - var anchors = require_anchors(); - var visit = require_visit(); - var identity = require_identity(); - var Node = require_Node(); - var toJS = require_toJS(); - var Alias = class extends Node.NodeBase { - constructor(source) { - super(identity.ALIAS); - this.source = source; - Object.defineProperty(this, "tag", { - set() { - throw new Error("Alias nodes cannot have tags"); - } - }); - } - resolve(doc) { - let found = void 0; - visit.visit(doc, { - Node: (_key, node) => { - if (node === this) - return visit.visit.BREAK; - if (node.anchor === this.source) - found = node; - } - }); - return found; - } - toJSON(_arg, ctx) { - if (!ctx) - return { source: this.source }; - const { anchors: anchors2, doc, maxAliasCount } = ctx; - const source = this.resolve(doc); - if (!source) { - const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`; - throw new ReferenceError(msg); - } - let data = anchors2.get(source); - if (!data) { - toJS.toJS(source, null, ctx); - data = anchors2.get(source); - } - if (!data || data.res === void 0) { - const msg = "This should not happen: Alias anchor was not resolved?"; - throw new ReferenceError(msg); - } - if (maxAliasCount >= 0) { - data.count += 1; - if (data.aliasCount === 0) - data.aliasCount = getAliasCount(doc, source, anchors2); - if (data.count * data.aliasCount > maxAliasCount) { - const msg = "Excessive alias count indicates a resource exhaustion attack"; - throw new ReferenceError(msg); - } - } - return data.res; - } - toString(ctx, _onComment, _onChompKeep) { - const src = `*${this.source}`; - if (ctx) { - anchors.anchorIsValid(this.source); - if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) { - const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`; - throw new Error(msg); - } - if (ctx.implicitKey) - return `${src} `; - } - return src; - } - }; - function getAliasCount(doc, node, anchors2) { - if (identity.isAlias(node)) { - const source = node.resolve(doc); - const anchor = anchors2 && source && anchors2.get(source); - return anchor ? anchor.count * anchor.aliasCount : 0; - } else if (identity.isCollection(node)) { - let count = 0; - for (const item of node.items) { - const c = getAliasCount(doc, item, anchors2); - if (c > count) - count = c; - } - return count; - } else if (identity.isPair(node)) { - const kc = getAliasCount(doc, node.key, anchors2); - const vc = getAliasCount(doc, node.value, anchors2); - return Math.max(kc, vc); - } - return 1; - } - exports.Alias = Alias; - } -}); - -// node_modules/yaml/dist/nodes/Scalar.js -var require_Scalar = __commonJS({ - "node_modules/yaml/dist/nodes/Scalar.js"(exports) { - "use strict"; - var identity = require_identity(); - var Node = require_Node(); - var toJS = require_toJS(); - var isScalarValue = (value) => !value || typeof value !== "function" && typeof value !== "object"; - var Scalar = class extends Node.NodeBase { - constructor(value) { - super(identity.SCALAR); - this.value = value; - } - toJSON(arg, ctx) { - return (ctx == null ? void 0 : ctx.keep) ? this.value : toJS.toJS(this.value, arg, ctx); - } - toString() { - return String(this.value); - } - }; - Scalar.BLOCK_FOLDED = "BLOCK_FOLDED"; - Scalar.BLOCK_LITERAL = "BLOCK_LITERAL"; - Scalar.PLAIN = "PLAIN"; - Scalar.QUOTE_DOUBLE = "QUOTE_DOUBLE"; - Scalar.QUOTE_SINGLE = "QUOTE_SINGLE"; - exports.Scalar = Scalar; - exports.isScalarValue = isScalarValue; - } -}); - -// node_modules/yaml/dist/doc/createNode.js -var require_createNode = __commonJS({ - "node_modules/yaml/dist/doc/createNode.js"(exports) { - "use strict"; - var Alias = require_Alias(); - var identity = require_identity(); - var Scalar = require_Scalar(); - var defaultTagPrefix = "tag:yaml.org,2002:"; - function findTagObject(value, tagName, tags) { - if (tagName) { - const match3 = tags.filter((t) => t.tag === tagName); - const tagObj = match3.find((t) => !t.format) ?? match3[0]; - if (!tagObj) - throw new Error(`Tag ${tagName} not found`); - return tagObj; - } - return tags.find((t) => { - var _a2; - return ((_a2 = t.identify) == null ? void 0 : _a2.call(t, value)) && !t.format; - }); - } - function createNode(value, tagName, ctx) { - var _a2, _b2, _c2; - if (identity.isDocument(value)) - value = value.contents; - if (identity.isNode(value)) - return value; - if (identity.isPair(value)) { - const map = (_b2 = (_a2 = ctx.schema[identity.MAP]).createNode) == null ? void 0 : _b2.call(_a2, ctx.schema, null, ctx); - map.items.push(value); - return map; - } - if (value instanceof String || value instanceof Number || value instanceof Boolean || typeof BigInt !== "undefined" && value instanceof BigInt) { - value = value.valueOf(); - } - const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx; - let ref = void 0; - if (aliasDuplicateObjects && value && typeof value === "object") { - ref = sourceObjects.get(value); - if (ref) { - if (!ref.anchor) - ref.anchor = onAnchor(value); - return new Alias.Alias(ref.anchor); - } else { - ref = { anchor: null, node: null }; - sourceObjects.set(value, ref); - } - } - if (tagName == null ? void 0 : tagName.startsWith("!!")) - tagName = defaultTagPrefix + tagName.slice(2); - let tagObj = findTagObject(value, tagName, schema.tags); - if (!tagObj) { - if (value && typeof value.toJSON === "function") { - value = value.toJSON(); - } - if (!value || typeof value !== "object") { - const node2 = new Scalar.Scalar(value); - if (ref) - ref.node = node2; - return node2; - } - tagObj = value instanceof Map ? schema[identity.MAP] : Symbol.iterator in Object(value) ? schema[identity.SEQ] : schema[identity.MAP]; - } - if (onTagObj) { - onTagObj(tagObj); - delete ctx.onTagObj; - } - const node = (tagObj == null ? void 0 : tagObj.createNode) ? tagObj.createNode(ctx.schema, value, ctx) : typeof ((_c2 = tagObj == null ? void 0 : tagObj.nodeClass) == null ? void 0 : _c2.from) === "function" ? tagObj.nodeClass.from(ctx.schema, value, ctx) : new Scalar.Scalar(value); - if (tagName) - node.tag = tagName; - else if (!tagObj.default) - node.tag = tagObj.tag; - if (ref) - ref.node = node; - return node; - } - exports.createNode = createNode; - } -}); - -// node_modules/yaml/dist/nodes/Collection.js -var require_Collection = __commonJS({ - "node_modules/yaml/dist/nodes/Collection.js"(exports) { - "use strict"; - var createNode = require_createNode(); - var identity = require_identity(); - var Node = require_Node(); - function collectionFromPath(schema, path9, value) { - let v = value; - for (let i = path9.length - 1; i >= 0; --i) { - const k = path9[i]; - if (typeof k === "number" && Number.isInteger(k) && k >= 0) { - const a = []; - a[k] = v; - v = a; - } else { - v = /* @__PURE__ */ new Map([[k, v]]); - } - } - return createNode.createNode(v, void 0, { - aliasDuplicateObjects: false, - keepUndefined: false, - onAnchor: () => { - throw new Error("This should not happen, please report a bug."); - }, - schema, - sourceObjects: /* @__PURE__ */ new Map() - }); - } - var isEmptyPath = (path9) => path9 == null || typeof path9 === "object" && !!path9[Symbol.iterator]().next().done; - var Collection = class extends Node.NodeBase { - constructor(type, schema) { - super(type); - Object.defineProperty(this, "schema", { - value: schema, - configurable: true, - enumerable: false, - writable: true - }); - } - clone(schema) { - const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); - if (schema) - copy.schema = schema; - copy.items = copy.items.map((it) => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it); - if (this.range) - copy.range = this.range.slice(); - return copy; - } - addIn(path9, value) { - if (isEmptyPath(path9)) - this.add(value); - else { - const [key, ...rest] = path9; - const node = this.get(key, true); - if (identity.isCollection(node)) - node.addIn(rest, value); - else if (node === void 0 && this.schema) - this.set(key, collectionFromPath(this.schema, rest, value)); - else - throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); - } - } - deleteIn(path9) { - const [key, ...rest] = path9; - if (rest.length === 0) - return this.delete(key); - const node = this.get(key, true); - if (identity.isCollection(node)) - return node.deleteIn(rest); - else - throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); - } - getIn(path9, keepScalar) { - const [key, ...rest] = path9; - const node = this.get(key, true); - if (rest.length === 0) - return !keepScalar && identity.isScalar(node) ? node.value : node; - else - return identity.isCollection(node) ? node.getIn(rest, keepScalar) : void 0; - } - hasAllNullValues(allowScalar) { - return this.items.every((node) => { - if (!identity.isPair(node)) - return false; - const n = node.value; - return n == null || allowScalar && identity.isScalar(n) && n.value == null && !n.commentBefore && !n.comment && !n.tag; - }); - } - hasIn(path9) { - const [key, ...rest] = path9; - if (rest.length === 0) - return this.has(key); - const node = this.get(key, true); - return identity.isCollection(node) ? node.hasIn(rest) : false; - } - setIn(path9, value) { - const [key, ...rest] = path9; - if (rest.length === 0) { - this.set(key, value); - } else { - const node = this.get(key, true); - if (identity.isCollection(node)) - node.setIn(rest, value); - else if (node === void 0 && this.schema) - this.set(key, collectionFromPath(this.schema, rest, value)); - else - throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); - } - } - }; - exports.Collection = Collection; - exports.collectionFromPath = collectionFromPath; - exports.isEmptyPath = isEmptyPath; - } -}); - -// node_modules/yaml/dist/stringify/stringifyComment.js -var require_stringifyComment = __commonJS({ - "node_modules/yaml/dist/stringify/stringifyComment.js"(exports) { - "use strict"; - var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#"); - function indentComment(comment, indent) { - if (/^\n+$/.test(comment)) - return comment.substring(1); - return indent ? comment.replace(/^(?! *$)/gm, indent) : comment; - } - var lineComment = (str, indent, comment) => str.endsWith("\n") ? indentComment(comment, indent) : comment.includes("\n") ? "\n" + indentComment(comment, indent) : (str.endsWith(" ") ? "" : " ") + comment; - exports.indentComment = indentComment; - exports.lineComment = lineComment; - exports.stringifyComment = stringifyComment; - } -}); - -// node_modules/yaml/dist/stringify/foldFlowLines.js -var require_foldFlowLines = __commonJS({ - "node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) { - "use strict"; - var FOLD_FLOW = "flow"; - var FOLD_BLOCK = "block"; - var FOLD_QUOTED = "quoted"; - function foldFlowLines(text, indent, mode = "flow", { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) { - if (!lineWidth || lineWidth < 0) - return text; - if (lineWidth < minContentWidth) - minContentWidth = 0; - const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length); - if (text.length <= endStep) - return text; - const folds = []; - const escapedFolds = {}; - let end = lineWidth - indent.length; - if (typeof indentAtStart === "number") { - if (indentAtStart > lineWidth - Math.max(2, minContentWidth)) - folds.push(0); - else - end = lineWidth - indentAtStart; - } - let split2 = void 0; - let prev = void 0; - let overflow = false; - let i = -1; - let escStart = -1; - let escEnd = -1; - if (mode === FOLD_BLOCK) { - i = consumeMoreIndentedLines(text, i, indent.length); - if (i !== -1) - end = i + endStep; - } - for (let ch; ch = text[i += 1]; ) { - if (mode === FOLD_QUOTED && ch === "\\") { - escStart = i; - switch (text[i + 1]) { - case "x": - i += 3; - break; - case "u": - i += 5; - break; - case "U": - i += 9; - break; - default: - i += 1; - } - escEnd = i; - } - if (ch === "\n") { - if (mode === FOLD_BLOCK) - i = consumeMoreIndentedLines(text, i, indent.length); - end = i + indent.length + endStep; - split2 = void 0; - } else { - if (ch === " " && prev && prev !== " " && prev !== "\n" && prev !== " ") { - const next = text[i + 1]; - if (next && next !== " " && next !== "\n" && next !== " ") - split2 = i; - } - if (i >= end) { - if (split2) { - folds.push(split2); - end = split2 + endStep; - split2 = void 0; - } else if (mode === FOLD_QUOTED) { - while (prev === " " || prev === " ") { - prev = ch; - ch = text[i += 1]; - overflow = true; - } - const j = i > escEnd + 1 ? i - 2 : escStart - 1; - if (escapedFolds[j]) - return text; - folds.push(j); - escapedFolds[j] = true; - end = j + endStep; - split2 = void 0; - } else { - overflow = true; - } - } - } - prev = ch; - } - if (overflow && onOverflow) - onOverflow(); - if (folds.length === 0) - return text; - if (onFold) - onFold(); - let res = text.slice(0, folds[0]); - for (let i2 = 0; i2 < folds.length; ++i2) { - const fold = folds[i2]; - const end2 = folds[i2 + 1] || text.length; - if (fold === 0) - res = ` -${indent}${text.slice(0, end2)}`; - else { - if (mode === FOLD_QUOTED && escapedFolds[fold]) - res += `${text[fold]}\\`; - res += ` -${indent}${text.slice(fold + 1, end2)}`; - } - } - return res; - } - function consumeMoreIndentedLines(text, i, indent) { - let end = i; - let start = i + 1; - let ch = text[start]; - while (ch === " " || ch === " ") { - if (i < start + indent) { - ch = text[++i]; - } else { - do { - ch = text[++i]; - } while (ch && ch !== "\n"); - end = i; - start = i + 1; - ch = text[start]; - } - } - return end; - } - exports.FOLD_BLOCK = FOLD_BLOCK; - exports.FOLD_FLOW = FOLD_FLOW; - exports.FOLD_QUOTED = FOLD_QUOTED; - exports.foldFlowLines = foldFlowLines; - } -}); - -// node_modules/yaml/dist/stringify/stringifyString.js -var require_stringifyString = __commonJS({ - "node_modules/yaml/dist/stringify/stringifyString.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - var foldFlowLines = require_foldFlowLines(); - var getFoldOptions = (ctx, isBlock) => ({ - indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart, - lineWidth: ctx.options.lineWidth, - minContentWidth: ctx.options.minContentWidth - }); - var containsDocumentMarker = (str) => /^(%|---|\.\.\.)/m.test(str); - function lineLengthOverLimit(str, lineWidth, indentLength) { - if (!lineWidth || lineWidth < 0) - return false; - const limit = lineWidth - indentLength; - const strLen = str.length; - if (strLen <= limit) - return false; - for (let i = 0, start = 0; i < strLen; ++i) { - if (str[i] === "\n") { - if (i - start > limit) - return true; - start = i + 1; - if (strLen - start <= limit) - return false; - } - } - return true; - } - function doubleQuotedString(value, ctx) { - const json = JSON.stringify(value); - if (ctx.options.doubleQuotedAsJSON) - return json; - const { implicitKey } = ctx; - const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength; - const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); - let str = ""; - let start = 0; - for (let i = 0, ch = json[i]; ch; ch = json[++i]) { - if (ch === " " && json[i + 1] === "\\" && json[i + 2] === "n") { - str += json.slice(start, i) + "\\ "; - i += 1; - start = i; - ch = "\\"; - } - if (ch === "\\") - switch (json[i + 1]) { - case "u": - { - str += json.slice(start, i); - const code = json.substr(i + 2, 4); - switch (code) { - case "0000": - str += "\\0"; - break; - case "0007": - str += "\\a"; - break; - case "000b": - str += "\\v"; - break; - case "001b": - str += "\\e"; - break; - case "0085": - str += "\\N"; - break; - case "00a0": - str += "\\_"; - break; - case "2028": - str += "\\L"; - break; - case "2029": - str += "\\P"; - break; - default: - if (code.substr(0, 2) === "00") - str += "\\x" + code.substr(2); - else - str += json.substr(i, 6); - } - i += 5; - start = i + 1; - } - break; - case "n": - if (implicitKey || json[i + 2] === '"' || json.length < minMultiLineLength) { - i += 1; - } else { - str += json.slice(start, i) + "\n\n"; - while (json[i + 2] === "\\" && json[i + 3] === "n" && json[i + 4] !== '"') { - str += "\n"; - i += 2; - } - str += indent; - if (json[i + 2] === " ") - str += "\\"; - i += 1; - start = i + 1; - } - break; - default: - i += 1; - } - } - str = start ? str + json.slice(start) : json; - return implicitKey ? str : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false)); - } - function singleQuotedString(value, ctx) { - if (ctx.options.singleQuote === false || ctx.implicitKey && value.includes("\n") || /[ \t]\n|\n[ \t]/.test(value)) - return doubleQuotedString(value, ctx); - const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); - const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$& -${indent}`) + "'"; - return ctx.implicitKey ? res : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false)); - } - function quotedString(value, ctx) { - const { singleQuote } = ctx.options; - let qs; - if (singleQuote === false) - qs = doubleQuotedString; - else { - const hasDouble = value.includes('"'); - const hasSingle = value.includes("'"); - if (hasDouble && !hasSingle) - qs = singleQuotedString; - else if (hasSingle && !hasDouble) - qs = doubleQuotedString; - else - qs = singleQuote ? singleQuotedString : doubleQuotedString; - } - return qs(value, ctx); - } - var blockEndNewlines; - try { - blockEndNewlines = new RegExp("(^|(?\n"; - let chomp; - let endStart; - for (endStart = value.length; endStart > 0; --endStart) { - const ch = value[endStart - 1]; - if (ch !== "\n" && ch !== " " && ch !== " ") - break; - } - let end = value.substring(endStart); - const endNlPos = end.indexOf("\n"); - if (endNlPos === -1) { - chomp = "-"; - } else if (value === end || endNlPos !== end.length - 1) { - chomp = "+"; - if (onChompKeep) - onChompKeep(); - } else { - chomp = ""; - } - if (end) { - value = value.slice(0, -end.length); - if (end[end.length - 1] === "\n") - end = end.slice(0, -1); - end = end.replace(blockEndNewlines, `$&${indent}`); - } - let startWithSpace = false; - let startEnd; - let startNlPos = -1; - for (startEnd = 0; startEnd < value.length; ++startEnd) { - const ch = value[startEnd]; - if (ch === " ") - startWithSpace = true; - else if (ch === "\n") - startNlPos = startEnd; - else - break; - } - let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd); - if (start) { - value = value.substring(start.length); - start = start.replace(/\n+/g, `$&${indent}`); - } - const indentSize = indent ? "2" : "1"; - let header = (startWithSpace ? indentSize : "") + chomp; - if (comment) { - header += " " + commentString(comment.replace(/ ?[\r\n]+/g, " ")); - if (onComment) - onComment(); - } - if (!literal) { - const foldedValue = value.replace(/\n+/g, "\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, "$1$2").replace(/\n+/g, `$&${indent}`); - let literalFallback = false; - const foldOptions = getFoldOptions(ctx, true); - if (blockQuote !== "folded" && type !== Scalar.Scalar.BLOCK_FOLDED) { - foldOptions.onOverflow = () => { - literalFallback = true; - }; - } - const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions); - if (!literalFallback) - return `>${header} -${indent}${body}`; - } - value = value.replace(/\n+/g, `$&${indent}`); - return `|${header} -${indent}${start}${value}${end}`; - } - function plainString(item, ctx, onComment, onChompKeep) { - const { type, value } = item; - const { actualString, implicitKey, indent, indentStep, inFlow } = ctx; - if (implicitKey && value.includes("\n") || inFlow && /[[\]{},]/.test(value)) { - return quotedString(value, ctx); - } - if (!value || /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) { - return implicitKey || inFlow || !value.includes("\n") ? quotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep); - } - if (!implicitKey && !inFlow && type !== Scalar.Scalar.PLAIN && value.includes("\n")) { - return blockString(item, ctx, onComment, onChompKeep); - } - if (containsDocumentMarker(value)) { - if (indent === "") { - ctx.forceBlockIndent = true; - return blockString(item, ctx, onComment, onChompKeep); - } else if (implicitKey && indent === indentStep) { - return quotedString(value, ctx); - } - } - const str = value.replace(/\n+/g, `$& -${indent}`); - if (actualString) { - const test = (tag) => { - var _a2; - return tag.default && tag.tag !== "tag:yaml.org,2002:str" && ((_a2 = tag.test) == null ? void 0 : _a2.test(str)); - }; - const { compat, tags } = ctx.doc.schema; - if (tags.some(test) || (compat == null ? void 0 : compat.some(test))) - return quotedString(value, ctx); - } - return implicitKey ? str : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false)); - } - function stringifyString(item, ctx, onComment, onChompKeep) { - const { implicitKey, inFlow } = ctx; - const ss = typeof item.value === "string" ? item : Object.assign({}, item, { value: String(item.value) }); - let { type } = item; - if (type !== Scalar.Scalar.QUOTE_DOUBLE) { - if (/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(ss.value)) - type = Scalar.Scalar.QUOTE_DOUBLE; - } - const _stringify = (_type) => { - switch (_type) { - case Scalar.Scalar.BLOCK_FOLDED: - case Scalar.Scalar.BLOCK_LITERAL: - return implicitKey || inFlow ? quotedString(ss.value, ctx) : blockString(ss, ctx, onComment, onChompKeep); - case Scalar.Scalar.QUOTE_DOUBLE: - return doubleQuotedString(ss.value, ctx); - case Scalar.Scalar.QUOTE_SINGLE: - return singleQuotedString(ss.value, ctx); - case Scalar.Scalar.PLAIN: - return plainString(ss, ctx, onComment, onChompKeep); - default: - return null; - } - }; - let res = _stringify(type); - if (res === null) { - const { defaultKeyType, defaultStringType } = ctx.options; - const t = implicitKey && defaultKeyType || defaultStringType; - res = _stringify(t); - if (res === null) - throw new Error(`Unsupported default string type ${t}`); - } - return res; - } - exports.stringifyString = stringifyString; - } -}); - -// node_modules/yaml/dist/stringify/stringify.js -var require_stringify2 = __commonJS({ - "node_modules/yaml/dist/stringify/stringify.js"(exports) { - "use strict"; - var anchors = require_anchors(); - var identity = require_identity(); - var stringifyComment = require_stringifyComment(); - var stringifyString = require_stringifyString(); - function createStringifyContext(doc, options) { - const opt = Object.assign({ - blockQuote: true, - commentString: stringifyComment.stringifyComment, - defaultKeyType: null, - defaultStringType: "PLAIN", - directives: null, - doubleQuotedAsJSON: false, - doubleQuotedMinMultiLineLength: 40, - falseStr: "false", - flowCollectionPadding: true, - indentSeq: true, - lineWidth: 80, - minContentWidth: 20, - nullStr: "null", - simpleKeys: false, - singleQuote: null, - trueStr: "true", - verifyAliasOrder: true - }, doc.schema.toStringOptions, options); - let inFlow; - switch (opt.collectionStyle) { - case "block": - inFlow = false; - break; - case "flow": - inFlow = true; - break; - default: - inFlow = null; - } - return { - anchors: /* @__PURE__ */ new Set(), - doc, - flowCollectionPadding: opt.flowCollectionPadding ? " " : "", - indent: "", - indentStep: typeof opt.indent === "number" ? " ".repeat(opt.indent) : " ", - inFlow, - options: opt - }; - } - function getTagObject(tags, item) { - var _a2; - if (item.tag) { - const match3 = tags.filter((t) => t.tag === item.tag); - if (match3.length > 0) - return match3.find((t) => t.format === item.format) ?? match3[0]; - } - let tagObj = void 0; - let obj; - if (identity.isScalar(item)) { - obj = item.value; - let match3 = tags.filter((t) => { - var _a3; - return (_a3 = t.identify) == null ? void 0 : _a3.call(t, obj); - }); - if (match3.length > 1) { - const testMatch = match3.filter((t) => t.test); - if (testMatch.length > 0) - match3 = testMatch; - } - tagObj = match3.find((t) => t.format === item.format) ?? match3.find((t) => !t.format); - } else { - obj = item; - tagObj = tags.find((t) => t.nodeClass && obj instanceof t.nodeClass); - } - if (!tagObj) { - const name = ((_a2 = obj == null ? void 0 : obj.constructor) == null ? void 0 : _a2.name) ?? typeof obj; - throw new Error(`Tag not resolved for ${name} value`); - } - return tagObj; - } - function stringifyProps(node, tagObj, { anchors: anchors$1, doc }) { - if (!doc.directives) - return ""; - const props = []; - const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor; - if (anchor && anchors.anchorIsValid(anchor)) { - anchors$1.add(anchor); - props.push(`&${anchor}`); - } - const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag; - if (tag) - props.push(doc.directives.tagString(tag)); - return props.join(" "); - } - function stringify(item, ctx, onComment, onChompKeep) { - var _a2; - if (identity.isPair(item)) - return item.toString(ctx, onComment, onChompKeep); - if (identity.isAlias(item)) { - if (ctx.doc.directives) - return item.toString(ctx); - if ((_a2 = ctx.resolvedAliases) == null ? void 0 : _a2.has(item)) { - throw new TypeError(`Cannot stringify circular structure without alias nodes`); - } else { - if (ctx.resolvedAliases) - ctx.resolvedAliases.add(item); - else - ctx.resolvedAliases = /* @__PURE__ */ new Set([item]); - item = item.resolve(ctx.doc); - } - } - let tagObj = void 0; - const node = identity.isNode(item) ? item : ctx.doc.createNode(item, { onTagObj: (o) => tagObj = o }); - if (!tagObj) - tagObj = getTagObject(ctx.doc.schema.tags, node); - const props = stringifyProps(node, tagObj, ctx); - if (props.length > 0) - ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1; - const str = typeof tagObj.stringify === "function" ? tagObj.stringify(node, ctx, onComment, onChompKeep) : identity.isScalar(node) ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep) : node.toString(ctx, onComment, onChompKeep); - if (!props) - return str; - return identity.isScalar(node) || str[0] === "{" || str[0] === "[" ? `${props} ${str}` : `${props} -${ctx.indent}${str}`; - } - exports.createStringifyContext = createStringifyContext; - exports.stringify = stringify; - } -}); - -// node_modules/yaml/dist/stringify/stringifyPair.js -var require_stringifyPair = __commonJS({ - "node_modules/yaml/dist/stringify/stringifyPair.js"(exports) { - "use strict"; - var identity = require_identity(); - var Scalar = require_Scalar(); - var stringify = require_stringify2(); - var stringifyComment = require_stringifyComment(); - function stringifyPair({ key, value }, ctx, onComment, onChompKeep) { - const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx; - let keyComment = identity.isNode(key) && key.comment || null; - if (simpleKeys) { - if (keyComment) { - throw new Error("With simple keys, key nodes cannot have comments"); - } - if (identity.isCollection(key) || !identity.isNode(key) && typeof key === "object") { - const msg = "With simple keys, collection cannot be used as a key value"; - throw new Error(msg); - } - } - let explicitKey = !simpleKeys && (!key || keyComment && value == null && !ctx.inFlow || identity.isCollection(key) || (identity.isScalar(key) ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL : typeof key === "object")); - ctx = Object.assign({}, ctx, { - allNullValues: false, - implicitKey: !explicitKey && (simpleKeys || !allNullValues), - indent: indent + indentStep - }); - let keyCommentDone = false; - let chompKeep = false; - let str = stringify.stringify(key, ctx, () => keyCommentDone = true, () => chompKeep = true); - if (!explicitKey && !ctx.inFlow && str.length > 1024) { - if (simpleKeys) - throw new Error("With simple keys, single line scalar must not span more than 1024 characters"); - explicitKey = true; - } - if (ctx.inFlow) { - if (allNullValues || value == null) { - if (keyCommentDone && onComment) - onComment(); - return str === "" ? "?" : explicitKey ? `? ${str}` : str; - } - } else if (allNullValues && !simpleKeys || value == null && explicitKey) { - str = `? ${str}`; - if (keyComment && !keyCommentDone) { - str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); - } else if (chompKeep && onChompKeep) - onChompKeep(); - return str; - } - if (keyCommentDone) - keyComment = null; - if (explicitKey) { - if (keyComment) - str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); - str = `? ${str} -${indent}:`; - } else { - str = `${str}:`; - if (keyComment) - str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); - } - let vsb, vcb, valueComment; - if (identity.isNode(value)) { - vsb = !!value.spaceBefore; - vcb = value.commentBefore; - valueComment = value.comment; - } else { - vsb = false; - vcb = null; - valueComment = null; - if (value && typeof value === "object") - value = doc.createNode(value); - } - ctx.implicitKey = false; - if (!explicitKey && !keyComment && identity.isScalar(value)) - ctx.indentAtStart = str.length + 1; - chompKeep = false; - if (!indentSeq && indentStep.length >= 2 && !ctx.inFlow && !explicitKey && identity.isSeq(value) && !value.flow && !value.tag && !value.anchor) { - ctx.indent = ctx.indent.substring(2); - } - let valueCommentDone = false; - const valueStr = stringify.stringify(value, ctx, () => valueCommentDone = true, () => chompKeep = true); - let ws = " "; - if (keyComment || vsb || vcb) { - ws = vsb ? "\n" : ""; - if (vcb) { - const cs = commentString(vcb); - ws += ` -${stringifyComment.indentComment(cs, ctx.indent)}`; - } - if (valueStr === "" && !ctx.inFlow) { - if (ws === "\n") - ws = "\n\n"; - } else { - ws += ` -${ctx.indent}`; - } - } else if (!explicitKey && identity.isCollection(value)) { - const vs0 = valueStr[0]; - const nl0 = valueStr.indexOf("\n"); - const hasNewline = nl0 !== -1; - const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0; - if (hasNewline || !flow) { - let hasPropsLine = false; - if (hasNewline && (vs0 === "&" || vs0 === "!")) { - let sp0 = valueStr.indexOf(" "); - if (vs0 === "&" && sp0 !== -1 && sp0 < nl0 && valueStr[sp0 + 1] === "!") { - sp0 = valueStr.indexOf(" ", sp0 + 1); - } - if (sp0 === -1 || nl0 < sp0) - hasPropsLine = true; - } - if (!hasPropsLine) - ws = ` -${ctx.indent}`; - } - } else if (valueStr === "" || valueStr[0] === "\n") { - ws = ""; - } - str += ws + valueStr; - if (ctx.inFlow) { - if (valueCommentDone && onComment) - onComment(); - } else if (valueComment && !valueCommentDone) { - str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment)); - } else if (chompKeep && onChompKeep) { - onChompKeep(); - } - return str; - } - exports.stringifyPair = stringifyPair; - } -}); - -// node_modules/yaml/dist/log.js -var require_log = __commonJS({ - "node_modules/yaml/dist/log.js"(exports) { - "use strict"; - var node_process = __require("process"); - function debug(logLevel, ...messages) { - if (logLevel === "debug") - console.log(...messages); - } - function warn(logLevel, warning) { - if (logLevel === "debug" || logLevel === "warn") { - if (typeof node_process.emitWarning === "function") - node_process.emitWarning(warning); - else - console.warn(warning); - } - } - exports.debug = debug; - exports.warn = warn; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/merge.js -var require_merge = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) { - "use strict"; - var identity = require_identity(); - var Scalar = require_Scalar(); - var MERGE_KEY = "<<"; - var merge = { - identify: (value) => value === MERGE_KEY || typeof value === "symbol" && value.description === MERGE_KEY, - default: "key", - tag: "tag:yaml.org,2002:merge", - test: /^<<$/, - resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), { - addToJSMap: addMergeToJSMap - }), - stringify: () => MERGE_KEY - }; - var isMergeKey = (ctx, key) => (merge.identify(key) || identity.isScalar(key) && (!key.type || key.type === Scalar.Scalar.PLAIN) && merge.identify(key.value)) && (ctx == null ? void 0 : ctx.doc.schema.tags.some((tag) => tag.tag === merge.tag && tag.default)); - function addMergeToJSMap(ctx, map, value) { - value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value; - if (identity.isSeq(value)) - for (const it of value.items) - mergeValue(ctx, map, it); - else if (Array.isArray(value)) - for (const it of value) - mergeValue(ctx, map, it); - else - mergeValue(ctx, map, value); - } - function mergeValue(ctx, map, value) { - const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value; - if (!identity.isMap(source)) - throw new Error("Merge sources must be maps or map aliases"); - const srcMap = source.toJSON(null, ctx, Map); - for (const [key, value2] of srcMap) { - if (map instanceof Map) { - if (!map.has(key)) - map.set(key, value2); - } else if (map instanceof Set) { - map.add(key); - } else if (!Object.prototype.hasOwnProperty.call(map, key)) { - Object.defineProperty(map, key, { - value: value2, - writable: true, - enumerable: true, - configurable: true - }); - } - } - return map; - } - exports.addMergeToJSMap = addMergeToJSMap; - exports.isMergeKey = isMergeKey; - exports.merge = merge; - } -}); - -// node_modules/yaml/dist/nodes/addPairToJSMap.js -var require_addPairToJSMap = __commonJS({ - "node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) { - "use strict"; - var log = require_log(); - var merge = require_merge(); - var stringify = require_stringify2(); - var identity = require_identity(); - var toJS = require_toJS(); - function addPairToJSMap(ctx, map, { key, value }) { - if (identity.isNode(key) && key.addToJSMap) - key.addToJSMap(ctx, map, value); - else if (merge.isMergeKey(ctx, key)) - merge.addMergeToJSMap(ctx, map, value); - else { - const jsKey = toJS.toJS(key, "", ctx); - if (map instanceof Map) { - map.set(jsKey, toJS.toJS(value, jsKey, ctx)); - } else if (map instanceof Set) { - map.add(jsKey); - } else { - const stringKey = stringifyKey(key, jsKey, ctx); - const jsValue = toJS.toJS(value, stringKey, ctx); - if (stringKey in map) - Object.defineProperty(map, stringKey, { - value: jsValue, - writable: true, - enumerable: true, - configurable: true - }); - else - map[stringKey] = jsValue; - } - } - return map; - } - function stringifyKey(key, jsKey, ctx) { - if (jsKey === null) - return ""; - if (typeof jsKey !== "object") - return String(jsKey); - if (identity.isNode(key) && (ctx == null ? void 0 : ctx.doc)) { - const strCtx = stringify.createStringifyContext(ctx.doc, {}); - strCtx.anchors = /* @__PURE__ */ new Set(); - for (const node of ctx.anchors.keys()) - strCtx.anchors.add(node.anchor); - strCtx.inFlow = true; - strCtx.inStringifyKey = true; - const strKey = key.toString(strCtx); - if (!ctx.mapKeyWarned) { - let jsonStr = JSON.stringify(strKey); - if (jsonStr.length > 40) - jsonStr = jsonStr.substring(0, 36) + '..."'; - log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`); - ctx.mapKeyWarned = true; - } - return strKey; - } - return JSON.stringify(jsKey); - } - exports.addPairToJSMap = addPairToJSMap; - } -}); - -// node_modules/yaml/dist/nodes/Pair.js -var require_Pair = __commonJS({ - "node_modules/yaml/dist/nodes/Pair.js"(exports) { - "use strict"; - var createNode = require_createNode(); - var stringifyPair = require_stringifyPair(); - var addPairToJSMap = require_addPairToJSMap(); - var identity = require_identity(); - function createPair(key, value, ctx) { - const k = createNode.createNode(key, void 0, ctx); - const v = createNode.createNode(value, void 0, ctx); - return new Pair(k, v); - } - var Pair = class { - constructor(key, value = null) { - Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR }); - this.key = key; - this.value = value; - } - clone(schema) { - let { key, value } = this; - if (identity.isNode(key)) - key = key.clone(schema); - if (identity.isNode(value)) - value = value.clone(schema); - return new Pair(key, value); - } - toJSON(_, ctx) { - const pair = (ctx == null ? void 0 : ctx.mapAsMap) ? /* @__PURE__ */ new Map() : {}; - return addPairToJSMap.addPairToJSMap(ctx, pair, this); - } - toString(ctx, onComment, onChompKeep) { - return (ctx == null ? void 0 : ctx.doc) ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep) : JSON.stringify(this); - } - }; - exports.Pair = Pair; - exports.createPair = createPair; - } -}); - -// node_modules/yaml/dist/stringify/stringifyCollection.js -var require_stringifyCollection = __commonJS({ - "node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) { - "use strict"; - var identity = require_identity(); - var stringify = require_stringify2(); - var stringifyComment = require_stringifyComment(); - function stringifyCollection(collection, ctx, options) { - const flow = ctx.inFlow ?? collection.flow; - const stringify2 = flow ? stringifyFlowCollection : stringifyBlockCollection; - return stringify2(collection, ctx, options); - } - function stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) { - const { indent, options: { commentString } } = ctx; - const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null }); - let chompKeep = false; - const lines2 = []; - for (let i = 0; i < items.length; ++i) { - const item = items[i]; - let comment2 = null; - if (identity.isNode(item)) { - if (!chompKeep && item.spaceBefore) - lines2.push(""); - addCommentBefore(ctx, lines2, item.commentBefore, chompKeep); - if (item.comment) - comment2 = item.comment; - } else if (identity.isPair(item)) { - const ik = identity.isNode(item.key) ? item.key : null; - if (ik) { - if (!chompKeep && ik.spaceBefore) - lines2.push(""); - addCommentBefore(ctx, lines2, ik.commentBefore, chompKeep); - } - } - chompKeep = false; - let str2 = stringify.stringify(item, itemCtx, () => comment2 = null, () => chompKeep = true); - if (comment2) - str2 += stringifyComment.lineComment(str2, itemIndent, commentString(comment2)); - if (chompKeep && comment2) - chompKeep = false; - lines2.push(blockItemPrefix + str2); - } - let str; - if (lines2.length === 0) { - str = flowChars.start + flowChars.end; - } else { - str = lines2[0]; - for (let i = 1; i < lines2.length; ++i) { - const line = lines2[i]; - str += line ? ` -${indent}${line}` : "\n"; - } - } - if (comment) { - str += "\n" + stringifyComment.indentComment(commentString(comment), indent); - if (onComment) - onComment(); - } else if (chompKeep && onChompKeep) - onChompKeep(); - return str; - } - function stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) { - const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx; - itemIndent += indentStep; - const itemCtx = Object.assign({}, ctx, { - indent: itemIndent, - inFlow: true, - type: null - }); - let reqNewline = false; - let linesAtValue = 0; - const lines2 = []; - for (let i = 0; i < items.length; ++i) { - const item = items[i]; - let comment = null; - if (identity.isNode(item)) { - if (item.spaceBefore) - lines2.push(""); - addCommentBefore(ctx, lines2, item.commentBefore, false); - if (item.comment) - comment = item.comment; - } else if (identity.isPair(item)) { - const ik = identity.isNode(item.key) ? item.key : null; - if (ik) { - if (ik.spaceBefore) - lines2.push(""); - addCommentBefore(ctx, lines2, ik.commentBefore, false); - if (ik.comment) - reqNewline = true; - } - const iv = identity.isNode(item.value) ? item.value : null; - if (iv) { - if (iv.comment) - comment = iv.comment; - if (iv.commentBefore) - reqNewline = true; - } else if (item.value == null && (ik == null ? void 0 : ik.comment)) { - comment = ik.comment; - } - } - if (comment) - reqNewline = true; - let str = stringify.stringify(item, itemCtx, () => comment = null); - if (i < items.length - 1) - str += ","; - if (comment) - str += stringifyComment.lineComment(str, itemIndent, commentString(comment)); - if (!reqNewline && (lines2.length > linesAtValue || str.includes("\n"))) - reqNewline = true; - lines2.push(str); - linesAtValue = lines2.length; - } - const { start, end } = flowChars; - if (lines2.length === 0) { - return start + end; - } else { - if (!reqNewline) { - const len = lines2.reduce((sum, line) => sum + line.length + 2, 2); - reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth; - } - if (reqNewline) { - let str = start; - for (const line of lines2) - str += line ? ` -${indentStep}${indent}${line}` : "\n"; - return `${str} -${indent}${end}`; - } else { - return `${start}${fcPadding}${lines2.join(" ")}${fcPadding}${end}`; - } - } - } - function addCommentBefore({ indent, options: { commentString } }, lines2, comment, chompKeep) { - if (comment && chompKeep) - comment = comment.replace(/^\n+/, ""); - if (comment) { - const ic = stringifyComment.indentComment(commentString(comment), indent); - lines2.push(ic.trimStart()); - } - } - exports.stringifyCollection = stringifyCollection; - } -}); - -// node_modules/yaml/dist/nodes/YAMLMap.js -var require_YAMLMap = __commonJS({ - "node_modules/yaml/dist/nodes/YAMLMap.js"(exports) { - "use strict"; - var stringifyCollection = require_stringifyCollection(); - var addPairToJSMap = require_addPairToJSMap(); - var Collection = require_Collection(); - var identity = require_identity(); - var Pair = require_Pair(); - var Scalar = require_Scalar(); - function findPair(items, key) { - const k = identity.isScalar(key) ? key.value : key; - for (const it of items) { - if (identity.isPair(it)) { - if (it.key === key || it.key === k) - return it; - if (identity.isScalar(it.key) && it.key.value === k) - return it; - } - } - return void 0; - } - var YAMLMap = class extends Collection.Collection { - static get tagName() { - return "tag:yaml.org,2002:map"; - } - constructor(schema) { - super(identity.MAP, schema); - this.items = []; - } - static from(schema, obj, ctx) { - const { keepUndefined, replacer } = ctx; - const map = new this(schema); - const add = (key, value) => { - if (typeof replacer === "function") - value = replacer.call(obj, key, value); - else if (Array.isArray(replacer) && !replacer.includes(key)) - return; - if (value !== void 0 || keepUndefined) - map.items.push(Pair.createPair(key, value, ctx)); - }; - if (obj instanceof Map) { - for (const [key, value] of obj) - add(key, value); - } else if (obj && typeof obj === "object") { - for (const key of Object.keys(obj)) - add(key, obj[key]); - } - if (typeof schema.sortMapEntries === "function") { - map.items.sort(schema.sortMapEntries); - } - return map; - } - add(pair, overwrite) { - var _a2; - let _pair; - if (identity.isPair(pair)) - _pair = pair; - else if (!pair || typeof pair !== "object" || !("key" in pair)) { - _pair = new Pair.Pair(pair, pair == null ? void 0 : pair.value); - } else - _pair = new Pair.Pair(pair.key, pair.value); - const prev = findPair(this.items, _pair.key); - const sortEntries = (_a2 = this.schema) == null ? void 0 : _a2.sortMapEntries; - if (prev) { - if (!overwrite) - throw new Error(`Key ${_pair.key} already set`); - if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value)) - prev.value.value = _pair.value; - else - prev.value = _pair.value; - } else if (sortEntries) { - const i = this.items.findIndex((item) => sortEntries(_pair, item) < 0); - if (i === -1) - this.items.push(_pair); - else - this.items.splice(i, 0, _pair); - } else { - this.items.push(_pair); - } - } - delete(key) { - const it = findPair(this.items, key); - if (!it) - return false; - const del = this.items.splice(this.items.indexOf(it), 1); - return del.length > 0; - } - get(key, keepScalar) { - const it = findPair(this.items, key); - const node = it == null ? void 0 : it.value; - return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? void 0; - } - has(key) { - return !!findPair(this.items, key); - } - set(key, value) { - this.add(new Pair.Pair(key, value), true); - } - toJSON(_, ctx, Type) { - const map = Type ? new Type() : (ctx == null ? void 0 : ctx.mapAsMap) ? /* @__PURE__ */ new Map() : {}; - if (ctx == null ? void 0 : ctx.onCreate) - ctx.onCreate(map); - for (const item of this.items) - addPairToJSMap.addPairToJSMap(ctx, map, item); - return map; - } - toString(ctx, onComment, onChompKeep) { - if (!ctx) - return JSON.stringify(this); - for (const item of this.items) { - if (!identity.isPair(item)) - throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`); - } - if (!ctx.allNullValues && this.hasAllNullValues(false)) - ctx = Object.assign({}, ctx, { allNullValues: true }); - return stringifyCollection.stringifyCollection(this, ctx, { - blockItemPrefix: "", - flowChars: { start: "{", end: "}" }, - itemIndent: ctx.indent || "", - onChompKeep, - onComment - }); - } - }; - exports.YAMLMap = YAMLMap; - exports.findPair = findPair; - } -}); - -// node_modules/yaml/dist/schema/common/map.js -var require_map = __commonJS({ - "node_modules/yaml/dist/schema/common/map.js"(exports) { - "use strict"; - var identity = require_identity(); - var YAMLMap = require_YAMLMap(); - var map = { - collection: "map", - default: true, - nodeClass: YAMLMap.YAMLMap, - tag: "tag:yaml.org,2002:map", - resolve(map2, onError) { - if (!identity.isMap(map2)) - onError("Expected a mapping for this tag"); - return map2; - }, - createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx) - }; - exports.map = map; - } -}); - -// node_modules/yaml/dist/nodes/YAMLSeq.js -var require_YAMLSeq = __commonJS({ - "node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) { - "use strict"; - var createNode = require_createNode(); - var stringifyCollection = require_stringifyCollection(); - var Collection = require_Collection(); - var identity = require_identity(); - var Scalar = require_Scalar(); - var toJS = require_toJS(); - var YAMLSeq = class extends Collection.Collection { - static get tagName() { - return "tag:yaml.org,2002:seq"; - } - constructor(schema) { - super(identity.SEQ, schema); - this.items = []; - } - add(value) { - this.items.push(value); - } - delete(key) { - const idx = asItemIndex(key); - if (typeof idx !== "number") - return false; - const del = this.items.splice(idx, 1); - return del.length > 0; - } - get(key, keepScalar) { - const idx = asItemIndex(key); - if (typeof idx !== "number") - return void 0; - const it = this.items[idx]; - return !keepScalar && identity.isScalar(it) ? it.value : it; - } - has(key) { - const idx = asItemIndex(key); - return typeof idx === "number" && idx < this.items.length; - } - set(key, value) { - const idx = asItemIndex(key); - if (typeof idx !== "number") - throw new Error(`Expected a valid index, not ${key}.`); - const prev = this.items[idx]; - if (identity.isScalar(prev) && Scalar.isScalarValue(value)) - prev.value = value; - else - this.items[idx] = value; - } - toJSON(_, ctx) { - const seq = []; - if (ctx == null ? void 0 : ctx.onCreate) - ctx.onCreate(seq); - let i = 0; - for (const item of this.items) - seq.push(toJS.toJS(item, String(i++), ctx)); - return seq; - } - toString(ctx, onComment, onChompKeep) { - if (!ctx) - return JSON.stringify(this); - return stringifyCollection.stringifyCollection(this, ctx, { - blockItemPrefix: "- ", - flowChars: { start: "[", end: "]" }, - itemIndent: (ctx.indent || "") + " ", - onChompKeep, - onComment - }); - } - static from(schema, obj, ctx) { - const { replacer } = ctx; - const seq = new this(schema); - if (obj && Symbol.iterator in Object(obj)) { - let i = 0; - for (let it of obj) { - if (typeof replacer === "function") { - const key = obj instanceof Set ? it : String(i++); - it = replacer.call(obj, key, it); - } - seq.items.push(createNode.createNode(it, void 0, ctx)); - } - } - return seq; - } - }; - function asItemIndex(key) { - let idx = identity.isScalar(key) ? key.value : key; - if (idx && typeof idx === "string") - idx = Number(idx); - return typeof idx === "number" && Number.isInteger(idx) && idx >= 0 ? idx : null; - } - exports.YAMLSeq = YAMLSeq; - } -}); - -// node_modules/yaml/dist/schema/common/seq.js -var require_seq = __commonJS({ - "node_modules/yaml/dist/schema/common/seq.js"(exports) { - "use strict"; - var identity = require_identity(); - var YAMLSeq = require_YAMLSeq(); - var seq = { - collection: "seq", - default: true, - nodeClass: YAMLSeq.YAMLSeq, - tag: "tag:yaml.org,2002:seq", - resolve(seq2, onError) { - if (!identity.isSeq(seq2)) - onError("Expected a sequence for this tag"); - return seq2; - }, - createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx) - }; - exports.seq = seq; - } -}); - -// node_modules/yaml/dist/schema/common/string.js -var require_string2 = __commonJS({ - "node_modules/yaml/dist/schema/common/string.js"(exports) { - "use strict"; - var stringifyString = require_stringifyString(); - var string = { - identify: (value) => typeof value === "string", - default: true, - tag: "tag:yaml.org,2002:str", - resolve: (str) => str, - stringify(item, ctx, onComment, onChompKeep) { - ctx = Object.assign({ actualString: true }, ctx); - return stringifyString.stringifyString(item, ctx, onComment, onChompKeep); - } - }; - exports.string = string; - } -}); - -// node_modules/yaml/dist/schema/common/null.js -var require_null = __commonJS({ - "node_modules/yaml/dist/schema/common/null.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - var nullTag = { - identify: (value) => value == null, - createNode: () => new Scalar.Scalar(null), - default: true, - tag: "tag:yaml.org,2002:null", - test: /^(?:~|[Nn]ull|NULL)?$/, - resolve: () => new Scalar.Scalar(null), - stringify: ({ source }, ctx) => typeof source === "string" && nullTag.test.test(source) ? source : ctx.options.nullStr - }; - exports.nullTag = nullTag; - } -}); - -// node_modules/yaml/dist/schema/core/bool.js -var require_bool = __commonJS({ - "node_modules/yaml/dist/schema/core/bool.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - var boolTag = { - identify: (value) => typeof value === "boolean", - default: true, - tag: "tag:yaml.org,2002:bool", - test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, - resolve: (str) => new Scalar.Scalar(str[0] === "t" || str[0] === "T"), - stringify({ source, value }, ctx) { - if (source && boolTag.test.test(source)) { - const sv = source[0] === "t" || source[0] === "T"; - if (value === sv) - return source; - } - return value ? ctx.options.trueStr : ctx.options.falseStr; - } - }; - exports.boolTag = boolTag; - } -}); - -// node_modules/yaml/dist/stringify/stringifyNumber.js -var require_stringifyNumber = __commonJS({ - "node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) { - "use strict"; - function stringifyNumber({ format: format3, minFractionDigits, tag, value }) { - if (typeof value === "bigint") - return String(value); - const num = typeof value === "number" ? value : Number(value); - if (!isFinite(num)) - return isNaN(num) ? ".nan" : num < 0 ? "-.inf" : ".inf"; - let n = JSON.stringify(value); - if (!format3 && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) { - let i = n.indexOf("."); - if (i < 0) { - i = n.length; - n += "."; - } - let d = minFractionDigits - (n.length - i - 1); - while (d-- > 0) - n += "0"; - } - return n; - } - exports.stringifyNumber = stringifyNumber; - } -}); - -// node_modules/yaml/dist/schema/core/float.js -var require_float = __commonJS({ - "node_modules/yaml/dist/schema/core/float.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - var stringifyNumber = require_stringifyNumber(); - var floatNaN = { - identify: (value) => typeof value === "number", - default: true, - tag: "tag:yaml.org,2002:float", - test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/, - resolve: (str) => str.slice(-3).toLowerCase() === "nan" ? NaN : str[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, - stringify: stringifyNumber.stringifyNumber - }; - var floatExp = { - identify: (value) => typeof value === "number", - default: true, - tag: "tag:yaml.org,2002:float", - format: "EXP", - test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, - resolve: (str) => parseFloat(str), - stringify(node) { - const num = Number(node.value); - return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node); - } - }; - var float = { - identify: (value) => typeof value === "number", - default: true, - tag: "tag:yaml.org,2002:float", - test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/, - resolve(str) { - const node = new Scalar.Scalar(parseFloat(str)); - const dot = str.indexOf("."); - if (dot !== -1 && str[str.length - 1] === "0") - node.minFractionDigits = str.length - dot - 1; - return node; - }, - stringify: stringifyNumber.stringifyNumber - }; - exports.float = float; - exports.floatExp = floatExp; - exports.floatNaN = floatNaN; - } -}); - -// node_modules/yaml/dist/schema/core/int.js -var require_int = __commonJS({ - "node_modules/yaml/dist/schema/core/int.js"(exports) { - "use strict"; - var stringifyNumber = require_stringifyNumber(); - var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); - var intResolve = (str, offset, radix, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix); - function intStringify(node, radix, prefix) { - const { value } = node; - if (intIdentify(value) && value >= 0) - return prefix + value.toString(radix); - return stringifyNumber.stringifyNumber(node); - } - var intOct = { - identify: (value) => intIdentify(value) && value >= 0, - default: true, - tag: "tag:yaml.org,2002:int", - format: "OCT", - test: /^0o[0-7]+$/, - resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt), - stringify: (node) => intStringify(node, 8, "0o") - }; - var int = { - identify: intIdentify, - default: true, - tag: "tag:yaml.org,2002:int", - test: /^[-+]?[0-9]+$/, - resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt), - stringify: stringifyNumber.stringifyNumber - }; - var intHex = { - identify: (value) => intIdentify(value) && value >= 0, - default: true, - tag: "tag:yaml.org,2002:int", - format: "HEX", - test: /^0x[0-9a-fA-F]+$/, - resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt), - stringify: (node) => intStringify(node, 16, "0x") - }; - exports.int = int; - exports.intHex = intHex; - exports.intOct = intOct; - } -}); - -// node_modules/yaml/dist/schema/core/schema.js -var require_schema = __commonJS({ - "node_modules/yaml/dist/schema/core/schema.js"(exports) { - "use strict"; - var map = require_map(); - var _null = require_null(); - var seq = require_seq(); - var string = require_string2(); - var bool = require_bool(); - var float = require_float(); - var int = require_int(); - var schema = [ - map.map, - seq.seq, - string.string, - _null.nullTag, - bool.boolTag, - int.intOct, - int.int, - int.intHex, - float.floatNaN, - float.floatExp, - float.float - ]; - exports.schema = schema; - } -}); - -// node_modules/yaml/dist/schema/json/schema.js -var require_schema2 = __commonJS({ - "node_modules/yaml/dist/schema/json/schema.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - var map = require_map(); - var seq = require_seq(); - function intIdentify(value) { - return typeof value === "bigint" || Number.isInteger(value); - } - var stringifyJSON = ({ value }) => JSON.stringify(value); - var jsonScalars = [ - { - identify: (value) => typeof value === "string", - default: true, - tag: "tag:yaml.org,2002:str", - resolve: (str) => str, - stringify: stringifyJSON - }, - { - identify: (value) => value == null, - createNode: () => new Scalar.Scalar(null), - default: true, - tag: "tag:yaml.org,2002:null", - test: /^null$/, - resolve: () => null, - stringify: stringifyJSON - }, - { - identify: (value) => typeof value === "boolean", - default: true, - tag: "tag:yaml.org,2002:bool", - test: /^true$|^false$/, - resolve: (str) => str === "true", - stringify: stringifyJSON - }, - { - identify: intIdentify, - default: true, - tag: "tag:yaml.org,2002:int", - test: /^-?(?:0|[1-9][0-9]*)$/, - resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10), - stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value) - }, - { - identify: (value) => typeof value === "number", - default: true, - tag: "tag:yaml.org,2002:float", - test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, - resolve: (str) => parseFloat(str), - stringify: stringifyJSON - } - ]; - var jsonError = { - default: true, - tag: "", - test: /^/, - resolve(str, onError) { - onError(`Unresolved plain scalar ${JSON.stringify(str)}`); - return str; - } - }; - var schema = [map.map, seq.seq].concat(jsonScalars, jsonError); - exports.schema = schema; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/binary.js -var require_binary = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) { - "use strict"; - var node_buffer = __require("buffer"); - var Scalar = require_Scalar(); - var stringifyString = require_stringifyString(); - var binary = { - identify: (value) => value instanceof Uint8Array, - default: false, - tag: "tag:yaml.org,2002:binary", - resolve(src, onError) { - if (typeof node_buffer.Buffer === "function") { - return node_buffer.Buffer.from(src, "base64"); - } else if (typeof atob === "function") { - const str = atob(src.replace(/[\n\r]/g, "")); - const buffer = new Uint8Array(str.length); - for (let i = 0; i < str.length; ++i) - buffer[i] = str.charCodeAt(i); - return buffer; - } else { - onError("This environment does not support reading binary tags; either Buffer or atob is required"); - return src; - } - }, - stringify({ comment, type, value }, ctx, onComment, onChompKeep) { - const buf = value; - let str; - if (typeof node_buffer.Buffer === "function") { - str = buf instanceof node_buffer.Buffer ? buf.toString("base64") : node_buffer.Buffer.from(buf.buffer).toString("base64"); - } else if (typeof btoa === "function") { - let s = ""; - for (let i = 0; i < buf.length; ++i) - s += String.fromCharCode(buf[i]); - str = btoa(s); - } else { - throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required"); - } - if (!type) - type = Scalar.Scalar.BLOCK_LITERAL; - if (type !== Scalar.Scalar.QUOTE_DOUBLE) { - const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth); - const n = Math.ceil(str.length / lineWidth); - const lines2 = new Array(n); - for (let i = 0, o = 0; i < n; ++i, o += lineWidth) { - lines2[i] = str.substr(o, lineWidth); - } - str = lines2.join(type === Scalar.Scalar.BLOCK_LITERAL ? "\n" : " "); - } - return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep); - } - }; - exports.binary = binary; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/pairs.js -var require_pairs = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) { - "use strict"; - var identity = require_identity(); - var Pair = require_Pair(); - var Scalar = require_Scalar(); - var YAMLSeq = require_YAMLSeq(); - function resolvePairs(seq, onError) { - if (identity.isSeq(seq)) { - for (let i = 0; i < seq.items.length; ++i) { - let item = seq.items[i]; - if (identity.isPair(item)) - continue; - else if (identity.isMap(item)) { - if (item.items.length > 1) - onError("Each pair must have its own sequence indicator"); - const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null)); - if (item.commentBefore) - pair.key.commentBefore = pair.key.commentBefore ? `${item.commentBefore} -${pair.key.commentBefore}` : item.commentBefore; - if (item.comment) { - const cn = pair.value ?? pair.key; - cn.comment = cn.comment ? `${item.comment} -${cn.comment}` : item.comment; - } - item = pair; - } - seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item); - } - } else - onError("Expected a sequence for this tag"); - return seq; - } - function createPairs(schema, iterable, ctx) { - const { replacer } = ctx; - const pairs2 = new YAMLSeq.YAMLSeq(schema); - pairs2.tag = "tag:yaml.org,2002:pairs"; - let i = 0; - if (iterable && Symbol.iterator in Object(iterable)) - for (let it of iterable) { - if (typeof replacer === "function") - it = replacer.call(iterable, String(i++), it); - let key, value; - if (Array.isArray(it)) { - if (it.length === 2) { - key = it[0]; - value = it[1]; - } else - throw new TypeError(`Expected [key, value] tuple: ${it}`); - } else if (it && it instanceof Object) { - const keys = Object.keys(it); - if (keys.length === 1) { - key = keys[0]; - value = it[key]; - } else { - throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`); - } - } else { - key = it; - } - pairs2.items.push(Pair.createPair(key, value, ctx)); - } - return pairs2; - } - var pairs = { - collection: "seq", - default: false, - tag: "tag:yaml.org,2002:pairs", - resolve: resolvePairs, - createNode: createPairs - }; - exports.createPairs = createPairs; - exports.pairs = pairs; - exports.resolvePairs = resolvePairs; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/omap.js -var require_omap = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) { - "use strict"; - var identity = require_identity(); - var toJS = require_toJS(); - var YAMLMap = require_YAMLMap(); - var YAMLSeq = require_YAMLSeq(); - var pairs = require_pairs(); - var YAMLOMap = class extends YAMLSeq.YAMLSeq { - constructor() { - super(); - this.add = YAMLMap.YAMLMap.prototype.add.bind(this); - this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this); - this.get = YAMLMap.YAMLMap.prototype.get.bind(this); - this.has = YAMLMap.YAMLMap.prototype.has.bind(this); - this.set = YAMLMap.YAMLMap.prototype.set.bind(this); - this.tag = YAMLOMap.tag; - } - toJSON(_, ctx) { - if (!ctx) - return super.toJSON(_); - const map = /* @__PURE__ */ new Map(); - if (ctx == null ? void 0 : ctx.onCreate) - ctx.onCreate(map); - for (const pair of this.items) { - let key, value; - if (identity.isPair(pair)) { - key = toJS.toJS(pair.key, "", ctx); - value = toJS.toJS(pair.value, key, ctx); - } else { - key = toJS.toJS(pair, "", ctx); - } - if (map.has(key)) - throw new Error("Ordered maps must not include duplicate keys"); - map.set(key, value); - } - return map; - } - static from(schema, iterable, ctx) { - const pairs$1 = pairs.createPairs(schema, iterable, ctx); - const omap2 = new this(); - omap2.items = pairs$1.items; - return omap2; - } - }; - YAMLOMap.tag = "tag:yaml.org,2002:omap"; - var omap = { - collection: "seq", - identify: (value) => value instanceof Map, - nodeClass: YAMLOMap, - default: false, - tag: "tag:yaml.org,2002:omap", - resolve(seq, onError) { - const pairs$1 = pairs.resolvePairs(seq, onError); - const seenKeys = []; - for (const { key } of pairs$1.items) { - if (identity.isScalar(key)) { - if (seenKeys.includes(key.value)) { - onError(`Ordered maps must not include duplicate keys: ${key.value}`); - } else { - seenKeys.push(key.value); - } - } - } - return Object.assign(new YAMLOMap(), pairs$1); - }, - createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx) - }; - exports.YAMLOMap = YAMLOMap; - exports.omap = omap; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/bool.js -var require_bool2 = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - function boolStringify({ value, source }, ctx) { - const boolObj = value ? trueTag : falseTag; - if (source && boolObj.test.test(source)) - return source; - return value ? ctx.options.trueStr : ctx.options.falseStr; - } - var trueTag = { - identify: (value) => value === true, - default: true, - tag: "tag:yaml.org,2002:bool", - test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, - resolve: () => new Scalar.Scalar(true), - stringify: boolStringify - }; - var falseTag = { - identify: (value) => value === false, - default: true, - tag: "tag:yaml.org,2002:bool", - test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/, - resolve: () => new Scalar.Scalar(false), - stringify: boolStringify - }; - exports.falseTag = falseTag; - exports.trueTag = trueTag; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/float.js -var require_float2 = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - var stringifyNumber = require_stringifyNumber(); - var floatNaN = { - identify: (value) => typeof value === "number", - default: true, - tag: "tag:yaml.org,2002:float", - test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/, - resolve: (str) => str.slice(-3).toLowerCase() === "nan" ? NaN : str[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, - stringify: stringifyNumber.stringifyNumber - }; - var floatExp = { - identify: (value) => typeof value === "number", - default: true, - tag: "tag:yaml.org,2002:float", - format: "EXP", - test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/, - resolve: (str) => parseFloat(str.replace(/_/g, "")), - stringify(node) { - const num = Number(node.value); - return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node); - } - }; - var float = { - identify: (value) => typeof value === "number", - default: true, - tag: "tag:yaml.org,2002:float", - test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/, - resolve(str) { - const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, ""))); - const dot = str.indexOf("."); - if (dot !== -1) { - const f = str.substring(dot + 1).replace(/_/g, ""); - if (f[f.length - 1] === "0") - node.minFractionDigits = f.length; - } - return node; - }, - stringify: stringifyNumber.stringifyNumber - }; - exports.float = float; - exports.floatExp = floatExp; - exports.floatNaN = floatNaN; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/int.js -var require_int2 = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) { - "use strict"; - var stringifyNumber = require_stringifyNumber(); - var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); - function intResolve(str, offset, radix, { intAsBigInt }) { - const sign = str[0]; - if (sign === "-" || sign === "+") - offset += 1; - str = str.substring(offset).replace(/_/g, ""); - if (intAsBigInt) { - switch (radix) { - case 2: - str = `0b${str}`; - break; - case 8: - str = `0o${str}`; - break; - case 16: - str = `0x${str}`; - break; - } - const n2 = BigInt(str); - return sign === "-" ? BigInt(-1) * n2 : n2; - } - const n = parseInt(str, radix); - return sign === "-" ? -1 * n : n; - } - function intStringify(node, radix, prefix) { - const { value } = node; - if (intIdentify(value)) { - const str = value.toString(radix); - return value < 0 ? "-" + prefix + str.substr(1) : prefix + str; - } - return stringifyNumber.stringifyNumber(node); - } - var intBin = { - identify: intIdentify, - default: true, - tag: "tag:yaml.org,2002:int", - format: "BIN", - test: /^[-+]?0b[0-1_]+$/, - resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt), - stringify: (node) => intStringify(node, 2, "0b") - }; - var intOct = { - identify: intIdentify, - default: true, - tag: "tag:yaml.org,2002:int", - format: "OCT", - test: /^[-+]?0[0-7_]+$/, - resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt), - stringify: (node) => intStringify(node, 8, "0") - }; - var int = { - identify: intIdentify, - default: true, - tag: "tag:yaml.org,2002:int", - test: /^[-+]?[0-9][0-9_]*$/, - resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt), - stringify: stringifyNumber.stringifyNumber - }; - var intHex = { - identify: intIdentify, - default: true, - tag: "tag:yaml.org,2002:int", - format: "HEX", - test: /^[-+]?0x[0-9a-fA-F_]+$/, - resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt), - stringify: (node) => intStringify(node, 16, "0x") - }; - exports.int = int; - exports.intBin = intBin; - exports.intHex = intHex; - exports.intOct = intOct; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/set.js -var require_set = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) { - "use strict"; - var identity = require_identity(); - var Pair = require_Pair(); - var YAMLMap = require_YAMLMap(); - var YAMLSet = class extends YAMLMap.YAMLMap { - constructor(schema) { - super(schema); - this.tag = YAMLSet.tag; - } - add(key) { - let pair; - if (identity.isPair(key)) - pair = key; - else if (key && typeof key === "object" && "key" in key && "value" in key && key.value === null) - pair = new Pair.Pair(key.key, null); - else - pair = new Pair.Pair(key, null); - const prev = YAMLMap.findPair(this.items, pair.key); - if (!prev) - this.items.push(pair); - } - get(key, keepPair) { - const pair = YAMLMap.findPair(this.items, key); - return !keepPair && identity.isPair(pair) ? identity.isScalar(pair.key) ? pair.key.value : pair.key : pair; - } - set(key, value) { - if (typeof value !== "boolean") - throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`); - const prev = YAMLMap.findPair(this.items, key); - if (prev && !value) { - this.items.splice(this.items.indexOf(prev), 1); - } else if (!prev && value) { - this.items.push(new Pair.Pair(key)); - } - } - toJSON(_, ctx) { - return super.toJSON(_, ctx, Set); - } - toString(ctx, onComment, onChompKeep) { - if (!ctx) - return JSON.stringify(this); - if (this.hasAllNullValues(true)) - return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep); - else - throw new Error("Set items must all have null values"); - } - static from(schema, iterable, ctx) { - const { replacer } = ctx; - const set2 = new this(schema); - if (iterable && Symbol.iterator in Object(iterable)) - for (let value of iterable) { - if (typeof replacer === "function") - value = replacer.call(iterable, value, value); - set2.items.push(Pair.createPair(value, null, ctx)); - } - return set2; - } - }; - YAMLSet.tag = "tag:yaml.org,2002:set"; - var set = { - collection: "map", - identify: (value) => value instanceof Set, - nodeClass: YAMLSet, - default: false, - tag: "tag:yaml.org,2002:set", - createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx), - resolve(map, onError) { - if (identity.isMap(map)) { - if (map.hasAllNullValues(true)) - return Object.assign(new YAMLSet(), map); - else - onError("Set items must all have null values"); - } else - onError("Expected a mapping for this tag"); - return map; - } - }; - exports.YAMLSet = YAMLSet; - exports.set = set; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/timestamp.js -var require_timestamp = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) { - "use strict"; - var stringifyNumber = require_stringifyNumber(); - function parseSexagesimal(str, asBigInt) { - const sign = str[0]; - const parts = sign === "-" || sign === "+" ? str.substring(1) : str; - const num = (n) => asBigInt ? BigInt(n) : Number(n); - const res = parts.replace(/_/g, "").split(":").reduce((res2, p) => res2 * num(60) + num(p), num(0)); - return sign === "-" ? num(-1) * res : res; - } - function stringifySexagesimal(node) { - let { value } = node; - let num = (n) => n; - if (typeof value === "bigint") - num = (n) => BigInt(n); - else if (isNaN(value) || !isFinite(value)) - return stringifyNumber.stringifyNumber(node); - let sign = ""; - if (value < 0) { - sign = "-"; - value *= num(-1); - } - const _60 = num(60); - const parts = [value % _60]; - if (value < 60) { - parts.unshift(0); - } else { - value = (value - parts[0]) / _60; - parts.unshift(value % _60); - if (value >= 60) { - value = (value - parts[0]) / _60; - parts.unshift(value); - } - } - return sign + parts.map((n) => String(n).padStart(2, "0")).join(":").replace(/000000\d*$/, ""); - } - var intTime = { - identify: (value) => typeof value === "bigint" || Number.isInteger(value), - default: true, - tag: "tag:yaml.org,2002:int", - format: "TIME", - test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/, - resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt), - stringify: stringifySexagesimal - }; - var floatTime = { - identify: (value) => typeof value === "number", - default: true, - tag: "tag:yaml.org,2002:float", - format: "TIME", - test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/, - resolve: (str) => parseSexagesimal(str, false), - stringify: stringifySexagesimal - }; - var timestamp = { - identify: (value) => value instanceof Date, - default: true, - tag: "tag:yaml.org,2002:timestamp", - test: RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"), - resolve(str) { - const match3 = str.match(timestamp.test); - if (!match3) - throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd"); - const [, year, month, day, hour, minute, second] = match3.map(Number); - const millisec = match3[7] ? Number((match3[7] + "00").substr(1, 3)) : 0; - let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec); - const tz = match3[8]; - if (tz && tz !== "Z") { - let d = parseSexagesimal(tz, false); - if (Math.abs(d) < 30) - d *= 60; - date -= 6e4 * d; - } - return new Date(date); - }, - stringify: ({ value }) => value.toISOString().replace(/(T00:00:00)?\.000Z$/, "") - }; - exports.floatTime = floatTime; - exports.intTime = intTime; - exports.timestamp = timestamp; - } -}); - -// node_modules/yaml/dist/schema/yaml-1.1/schema.js -var require_schema3 = __commonJS({ - "node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) { - "use strict"; - var map = require_map(); - var _null = require_null(); - var seq = require_seq(); - var string = require_string2(); - var binary = require_binary(); - var bool = require_bool2(); - var float = require_float2(); - var int = require_int2(); - var merge = require_merge(); - var omap = require_omap(); - var pairs = require_pairs(); - var set = require_set(); - var timestamp = require_timestamp(); - var schema = [ - map.map, - seq.seq, - string.string, - _null.nullTag, - bool.trueTag, - bool.falseTag, - int.intBin, - int.intOct, - int.int, - int.intHex, - float.floatNaN, - float.floatExp, - float.float, - binary.binary, - merge.merge, - omap.omap, - pairs.pairs, - set.set, - timestamp.intTime, - timestamp.floatTime, - timestamp.timestamp - ]; - exports.schema = schema; - } -}); - -// node_modules/yaml/dist/schema/tags.js -var require_tags = __commonJS({ - "node_modules/yaml/dist/schema/tags.js"(exports) { - "use strict"; - var map = require_map(); - var _null = require_null(); - var seq = require_seq(); - var string = require_string2(); - var bool = require_bool(); - var float = require_float(); - var int = require_int(); - var schema = require_schema(); - var schema$1 = require_schema2(); - var binary = require_binary(); - var merge = require_merge(); - var omap = require_omap(); - var pairs = require_pairs(); - var schema$2 = require_schema3(); - var set = require_set(); - var timestamp = require_timestamp(); - var schemas = /* @__PURE__ */ new Map([ - ["core", schema.schema], - ["failsafe", [map.map, seq.seq, string.string]], - ["json", schema$1.schema], - ["yaml11", schema$2.schema], - ["yaml-1.1", schema$2.schema] - ]); - var tagsByName = { - binary: binary.binary, - bool: bool.boolTag, - float: float.float, - floatExp: float.floatExp, - floatNaN: float.floatNaN, - floatTime: timestamp.floatTime, - int: int.int, - intHex: int.intHex, - intOct: int.intOct, - intTime: timestamp.intTime, - map: map.map, - merge: merge.merge, - null: _null.nullTag, - omap: omap.omap, - pairs: pairs.pairs, - seq: seq.seq, - set: set.set, - timestamp: timestamp.timestamp - }; - var coreKnownTags = { - "tag:yaml.org,2002:binary": binary.binary, - "tag:yaml.org,2002:merge": merge.merge, - "tag:yaml.org,2002:omap": omap.omap, - "tag:yaml.org,2002:pairs": pairs.pairs, - "tag:yaml.org,2002:set": set.set, - "tag:yaml.org,2002:timestamp": timestamp.timestamp - }; - function getTags(customTags, schemaName, addMergeTag) { - const schemaTags = schemas.get(schemaName); - if (schemaTags && !customTags) { - return addMergeTag && !schemaTags.includes(merge.merge) ? schemaTags.concat(merge.merge) : schemaTags.slice(); - } - let tags = schemaTags; - if (!tags) { - if (Array.isArray(customTags)) - tags = []; - else { - const keys = Array.from(schemas.keys()).filter((key) => key !== "yaml11").map((key) => JSON.stringify(key)).join(", "); - throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`); - } - } - if (Array.isArray(customTags)) { - for (const tag of customTags) - tags = tags.concat(tag); - } else if (typeof customTags === "function") { - tags = customTags(tags.slice()); - } - if (addMergeTag) - tags = tags.concat(merge.merge); - return tags.reduce((tags2, tag) => { - const tagObj = typeof tag === "string" ? tagsByName[tag] : tag; - if (!tagObj) { - const tagName = JSON.stringify(tag); - const keys = Object.keys(tagsByName).map((key) => JSON.stringify(key)).join(", "); - throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`); - } - if (!tags2.includes(tagObj)) - tags2.push(tagObj); - return tags2; - }, []); - } - exports.coreKnownTags = coreKnownTags; - exports.getTags = getTags; - } -}); - -// node_modules/yaml/dist/schema/Schema.js -var require_Schema = __commonJS({ - "node_modules/yaml/dist/schema/Schema.js"(exports) { - "use strict"; - var identity = require_identity(); - var map = require_map(); - var seq = require_seq(); - var string = require_string2(); - var tags = require_tags(); - var sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0; - var Schema = class { - constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) { - this.compat = Array.isArray(compat) ? tags.getTags(compat, "compat") : compat ? tags.getTags(null, compat) : null; - this.name = typeof schema === "string" && schema || "core"; - this.knownTags = resolveKnownTags ? tags.coreKnownTags : {}; - this.tags = tags.getTags(customTags, this.name, merge); - this.toStringOptions = toStringDefaults ?? null; - Object.defineProperty(this, identity.MAP, { value: map.map }); - Object.defineProperty(this, identity.SCALAR, { value: string.string }); - Object.defineProperty(this, identity.SEQ, { value: seq.seq }); - this.sortMapEntries = typeof sortMapEntries === "function" ? sortMapEntries : sortMapEntries === true ? sortMapEntriesByKey : null; - } - clone() { - const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this)); - copy.tags = this.tags.slice(); - return copy; - } - }; - exports.Schema = Schema; - } -}); - -// node_modules/yaml/dist/stringify/stringifyDocument.js -var require_stringifyDocument = __commonJS({ - "node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) { - "use strict"; - var identity = require_identity(); - var stringify = require_stringify2(); - var stringifyComment = require_stringifyComment(); - function stringifyDocument(doc, options) { - var _a2; - const lines2 = []; - let hasDirectives = options.directives === true; - if (options.directives !== false && doc.directives) { - const dir = doc.directives.toString(doc); - if (dir) { - lines2.push(dir); - hasDirectives = true; - } else if (doc.directives.docStart) - hasDirectives = true; - } - if (hasDirectives) - lines2.push("---"); - const ctx = stringify.createStringifyContext(doc, options); - const { commentString } = ctx.options; - if (doc.commentBefore) { - if (lines2.length !== 1) - lines2.unshift(""); - const cs = commentString(doc.commentBefore); - lines2.unshift(stringifyComment.indentComment(cs, "")); - } - let chompKeep = false; - let contentComment = null; - if (doc.contents) { - if (identity.isNode(doc.contents)) { - if (doc.contents.spaceBefore && hasDirectives) - lines2.push(""); - if (doc.contents.commentBefore) { - const cs = commentString(doc.contents.commentBefore); - lines2.push(stringifyComment.indentComment(cs, "")); - } - ctx.forceBlockIndent = !!doc.comment; - contentComment = doc.contents.comment; - } - const onChompKeep = contentComment ? void 0 : () => chompKeep = true; - let body = stringify.stringify(doc.contents, ctx, () => contentComment = null, onChompKeep); - if (contentComment) - body += stringifyComment.lineComment(body, "", commentString(contentComment)); - if ((body[0] === "|" || body[0] === ">") && lines2[lines2.length - 1] === "---") { - lines2[lines2.length - 1] = `--- ${body}`; - } else - lines2.push(body); - } else { - lines2.push(stringify.stringify(doc.contents, ctx)); - } - if ((_a2 = doc.directives) == null ? void 0 : _a2.docEnd) { - if (doc.comment) { - const cs = commentString(doc.comment); - if (cs.includes("\n")) { - lines2.push("..."); - lines2.push(stringifyComment.indentComment(cs, "")); - } else { - lines2.push(`... ${cs}`); - } - } else { - lines2.push("..."); - } - } else { - let dc = doc.comment; - if (dc && chompKeep) - dc = dc.replace(/^\n+/, ""); - if (dc) { - if ((!chompKeep || contentComment) && lines2[lines2.length - 1] !== "") - lines2.push(""); - lines2.push(stringifyComment.indentComment(commentString(dc), "")); - } - } - return lines2.join("\n") + "\n"; - } - exports.stringifyDocument = stringifyDocument; - } -}); - -// node_modules/yaml/dist/doc/Document.js -var require_Document = __commonJS({ - "node_modules/yaml/dist/doc/Document.js"(exports) { - "use strict"; - var Alias = require_Alias(); - var Collection = require_Collection(); - var identity = require_identity(); - var Pair = require_Pair(); - var toJS = require_toJS(); - var Schema = require_Schema(); - var stringifyDocument = require_stringifyDocument(); - var anchors = require_anchors(); - var applyReviver = require_applyReviver(); - var createNode = require_createNode(); - var directives = require_directives(); - var Document = class { - constructor(value, replacer, options) { - this.commentBefore = null; - this.comment = null; - this.errors = []; - this.warnings = []; - Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC }); - let _replacer = null; - if (typeof replacer === "function" || Array.isArray(replacer)) { - _replacer = replacer; - } else if (options === void 0 && replacer) { - options = replacer; - replacer = void 0; - } - const opt = Object.assign({ - intAsBigInt: false, - keepSourceTokens: false, - logLevel: "warn", - prettyErrors: true, - strict: true, - stringKeys: false, - uniqueKeys: true, - version: "1.2" - }, options); - this.options = opt; - let { version } = opt; - if (options == null ? void 0 : options._directives) { - this.directives = options._directives.atDocument(); - if (this.directives.yaml.explicit) - version = this.directives.yaml.version; - } else - this.directives = new directives.Directives({ version }); - this.setSchema(version, options); - this.contents = value === void 0 ? null : this.createNode(value, _replacer, options); - } - clone() { - const copy = Object.create(Document.prototype, { - [identity.NODE_TYPE]: { value: identity.DOC } - }); - copy.commentBefore = this.commentBefore; - copy.comment = this.comment; - copy.errors = this.errors.slice(); - copy.warnings = this.warnings.slice(); - copy.options = Object.assign({}, this.options); - if (this.directives) - copy.directives = this.directives.clone(); - copy.schema = this.schema.clone(); - copy.contents = identity.isNode(this.contents) ? this.contents.clone(copy.schema) : this.contents; - if (this.range) - copy.range = this.range.slice(); - return copy; - } - add(value) { - if (assertCollection(this.contents)) - this.contents.add(value); - } - addIn(path9, value) { - if (assertCollection(this.contents)) - this.contents.addIn(path9, value); - } - createAlias(node, name) { - if (!node.anchor) { - const prev = anchors.anchorNames(this); - node.anchor = !name || prev.has(name) ? anchors.findNewAnchor(name || "a", prev) : name; - } - return new Alias.Alias(node.anchor); - } - createNode(value, replacer, options) { - let _replacer = void 0; - if (typeof replacer === "function") { - value = replacer.call({ "": value }, "", value); - _replacer = replacer; - } else if (Array.isArray(replacer)) { - const keyToStr = (v) => typeof v === "number" || v instanceof String || v instanceof Number; - const asStr = replacer.filter(keyToStr).map(String); - if (asStr.length > 0) - replacer = replacer.concat(asStr); - _replacer = replacer; - } else if (options === void 0 && replacer) { - options = replacer; - replacer = void 0; - } - const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {}; - const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors( - this, - anchorPrefix || "a" - ); - const ctx = { - aliasDuplicateObjects: aliasDuplicateObjects ?? true, - keepUndefined: keepUndefined ?? false, - onAnchor, - onTagObj, - replacer: _replacer, - schema: this.schema, - sourceObjects - }; - const node = createNode.createNode(value, tag, ctx); - if (flow && identity.isCollection(node)) - node.flow = true; - setAnchors(); - return node; - } - createPair(key, value, options = {}) { - const k = this.createNode(key, null, options); - const v = this.createNode(value, null, options); - return new Pair.Pair(k, v); - } - delete(key) { - return assertCollection(this.contents) ? this.contents.delete(key) : false; - } - deleteIn(path9) { - if (Collection.isEmptyPath(path9)) { - if (this.contents == null) - return false; - this.contents = null; - return true; - } - return assertCollection(this.contents) ? this.contents.deleteIn(path9) : false; - } - get(key, keepScalar) { - return identity.isCollection(this.contents) ? this.contents.get(key, keepScalar) : void 0; - } - getIn(path9, keepScalar) { - if (Collection.isEmptyPath(path9)) - return !keepScalar && identity.isScalar(this.contents) ? this.contents.value : this.contents; - return identity.isCollection(this.contents) ? this.contents.getIn(path9, keepScalar) : void 0; - } - has(key) { - return identity.isCollection(this.contents) ? this.contents.has(key) : false; - } - hasIn(path9) { - if (Collection.isEmptyPath(path9)) - return this.contents !== void 0; - return identity.isCollection(this.contents) ? this.contents.hasIn(path9) : false; - } - set(key, value) { - if (this.contents == null) { - this.contents = Collection.collectionFromPath(this.schema, [key], value); - } else if (assertCollection(this.contents)) { - this.contents.set(key, value); - } - } - setIn(path9, value) { - if (Collection.isEmptyPath(path9)) { - this.contents = value; - } else if (this.contents == null) { - this.contents = Collection.collectionFromPath(this.schema, Array.from(path9), value); - } else if (assertCollection(this.contents)) { - this.contents.setIn(path9, value); - } - } - setSchema(version, options = {}) { - if (typeof version === "number") - version = String(version); - let opt; - switch (version) { - case "1.1": - if (this.directives) - this.directives.yaml.version = "1.1"; - else - this.directives = new directives.Directives({ version: "1.1" }); - opt = { resolveKnownTags: false, schema: "yaml-1.1" }; - break; - case "1.2": - case "next": - if (this.directives) - this.directives.yaml.version = version; - else - this.directives = new directives.Directives({ version }); - opt = { resolveKnownTags: true, schema: "core" }; - break; - case null: - if (this.directives) - delete this.directives; - opt = null; - break; - default: { - const sv = JSON.stringify(version); - throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`); - } - } - if (options.schema instanceof Object) - this.schema = options.schema; - else if (opt) - this.schema = new Schema.Schema(Object.assign(opt, options)); - else - throw new Error(`With a null YAML version, the { schema: Schema } option is required`); - } - toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) { - const ctx = { - anchors: /* @__PURE__ */ new Map(), - doc: this, - keep: !json, - mapAsMap: mapAsMap === true, - mapKeyWarned: false, - maxAliasCount: typeof maxAliasCount === "number" ? maxAliasCount : 100 - }; - const res = toJS.toJS(this.contents, jsonArg ?? "", ctx); - if (typeof onAnchor === "function") - for (const { count, res: res2 } of ctx.anchors.values()) - onAnchor(res2, count); - return typeof reviver === "function" ? applyReviver.applyReviver(reviver, { "": res }, "", res) : res; - } - toJSON(jsonArg, onAnchor) { - return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor }); - } - toString(options = {}) { - if (this.errors.length > 0) - throw new Error("Document with errors cannot be stringified"); - if ("indent" in options && (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) { - const s = JSON.stringify(options.indent); - throw new Error(`"indent" option must be a positive integer, not ${s}`); - } - return stringifyDocument.stringifyDocument(this, options); - } - }; - function assertCollection(contents) { - if (identity.isCollection(contents)) - return true; - throw new Error("Expected a YAML collection as document contents"); - } - exports.Document = Document; - } -}); - -// node_modules/yaml/dist/errors.js -var require_errors = __commonJS({ - "node_modules/yaml/dist/errors.js"(exports) { - "use strict"; - var YAMLError = class extends Error { - constructor(name, pos, code, message) { - super(); - this.name = name; - this.code = code; - this.message = message; - this.pos = pos; - } - }; - var YAMLParseError = class extends YAMLError { - constructor(pos, code, message) { - super("YAMLParseError", pos, code, message); - } - }; - var YAMLWarning = class extends YAMLError { - constructor(pos, code, message) { - super("YAMLWarning", pos, code, message); - } - }; - var prettifyError = (src, lc) => (error) => { - if (error.pos[0] === -1) - return; - error.linePos = error.pos.map((pos) => lc.linePos(pos)); - const { line, col } = error.linePos[0]; - error.message += ` at line ${line}, column ${col}`; - let ci = col - 1; - let lineStr = src.substring(lc.lineStarts[line - 1], lc.lineStarts[line]).replace(/[\n\r]+$/, ""); - if (ci >= 60 && lineStr.length > 80) { - const trimStart = Math.min(ci - 39, lineStr.length - 79); - lineStr = "\u2026" + lineStr.substring(trimStart); - ci -= trimStart - 1; - } - if (lineStr.length > 80) - lineStr = lineStr.substring(0, 79) + "\u2026"; - if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) { - let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]); - if (prev.length > 80) - prev = prev.substring(0, 79) + "\u2026\n"; - lineStr = prev + lineStr; - } - if (/[^ ]/.test(lineStr)) { - let count = 1; - const end = error.linePos[1]; - if (end && end.line === line && end.col > col) { - count = Math.max(1, Math.min(end.col - col, 80 - ci)); - } - const pointer = " ".repeat(ci) + "^".repeat(count); - error.message += `: - -${lineStr} -${pointer} -`; - } - }; - exports.YAMLError = YAMLError; - exports.YAMLParseError = YAMLParseError; - exports.YAMLWarning = YAMLWarning; - exports.prettifyError = prettifyError; - } -}); - -// node_modules/yaml/dist/compose/resolve-props.js -var require_resolve_props = __commonJS({ - "node_modules/yaml/dist/compose/resolve-props.js"(exports) { - "use strict"; - function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) { - let spaceBefore = false; - let atNewline = startOnNewline; - let hasSpace = startOnNewline; - let comment = ""; - let commentSep = ""; - let hasNewline = false; - let reqSpace = false; - let tab = null; - let anchor = null; - let tag = null; - let newlineAfterProp = null; - let comma = null; - let found = null; - let start = null; - for (const token of tokens) { - if (reqSpace) { - if (token.type !== "space" && token.type !== "newline" && token.type !== "comma") - onError(token.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space"); - reqSpace = false; - } - if (tab) { - if (atNewline && token.type !== "comment" && token.type !== "newline") { - onError(tab, "TAB_AS_INDENT", "Tabs are not allowed as indentation"); - } - tab = null; - } - switch (token.type) { - case "space": - if (!flow && (indicator !== "doc-start" || (next == null ? void 0 : next.type) !== "flow-collection") && token.source.includes(" ")) { - tab = token; - } - hasSpace = true; - break; - case "comment": { - if (!hasSpace) - onError(token, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters"); - const cb = token.source.substring(1) || " "; - if (!comment) - comment = cb; - else - comment += commentSep + cb; - commentSep = ""; - atNewline = false; - break; - } - case "newline": - if (atNewline) { - if (comment) - comment += token.source; - else if (!found || indicator !== "seq-item-ind") - spaceBefore = true; - } else - commentSep += token.source; - atNewline = true; - hasNewline = true; - if (anchor || tag) - newlineAfterProp = token; - hasSpace = true; - break; - case "anchor": - if (anchor) - onError(token, "MULTIPLE_ANCHORS", "A node can have at most one anchor"); - if (token.source.endsWith(":")) - onError(token.offset + token.source.length - 1, "BAD_ALIAS", "Anchor ending in : is ambiguous", true); - anchor = token; - if (start === null) - start = token.offset; - atNewline = false; - hasSpace = false; - reqSpace = true; - break; - case "tag": { - if (tag) - onError(token, "MULTIPLE_TAGS", "A node can have at most one tag"); - tag = token; - if (start === null) - start = token.offset; - atNewline = false; - hasSpace = false; - reqSpace = true; - break; - } - case indicator: - if (anchor || tag) - onError(token, "BAD_PROP_ORDER", `Anchors and tags must be after the ${token.source} indicator`); - if (found) - onError(token, "UNEXPECTED_TOKEN", `Unexpected ${token.source} in ${flow ?? "collection"}`); - found = token; - atNewline = indicator === "seq-item-ind" || indicator === "explicit-key-ind"; - hasSpace = false; - break; - case "comma": - if (flow) { - if (comma) - onError(token, "UNEXPECTED_TOKEN", `Unexpected , in ${flow}`); - comma = token; - atNewline = false; - hasSpace = false; - break; - } - default: - onError(token, "UNEXPECTED_TOKEN", `Unexpected ${token.type} token`); - atNewline = false; - hasSpace = false; - } - } - const last = tokens[tokens.length - 1]; - const end = last ? last.offset + last.source.length : offset; - if (reqSpace && next && next.type !== "space" && next.type !== "newline" && next.type !== "comma" && (next.type !== "scalar" || next.source !== "")) { - onError(next.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space"); - } - if (tab && (atNewline && tab.indent <= parentIndent || (next == null ? void 0 : next.type) === "block-map" || (next == null ? void 0 : next.type) === "block-seq")) - onError(tab, "TAB_AS_INDENT", "Tabs are not allowed as indentation"); - return { - comma, - found, - spaceBefore, - comment, - hasNewline, - anchor, - tag, - newlineAfterProp, - end, - start: start ?? end - }; - } - exports.resolveProps = resolveProps; - } -}); - -// node_modules/yaml/dist/compose/util-contains-newline.js -var require_util_contains_newline = __commonJS({ - "node_modules/yaml/dist/compose/util-contains-newline.js"(exports) { - "use strict"; - function containsNewline(key) { - if (!key) - return null; - switch (key.type) { - case "alias": - case "scalar": - case "double-quoted-scalar": - case "single-quoted-scalar": - if (key.source.includes("\n")) - return true; - if (key.end) { - for (const st of key.end) - if (st.type === "newline") - return true; - } - return false; - case "flow-collection": - for (const it of key.items) { - for (const st of it.start) - if (st.type === "newline") - return true; - if (it.sep) { - for (const st of it.sep) - if (st.type === "newline") - return true; - } - if (containsNewline(it.key) || containsNewline(it.value)) - return true; - } - return false; - default: - return true; - } - } - exports.containsNewline = containsNewline; - } -}); - -// node_modules/yaml/dist/compose/util-flow-indent-check.js -var require_util_flow_indent_check = __commonJS({ - "node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) { - "use strict"; - var utilContainsNewline = require_util_contains_newline(); - function flowIndentCheck(indent, fc, onError) { - if ((fc == null ? void 0 : fc.type) === "flow-collection") { - const end = fc.end[0]; - if (end.indent === indent && (end.source === "]" || end.source === "}") && utilContainsNewline.containsNewline(fc)) { - const msg = "Flow end indicator should be more indented than parent"; - onError(end, "BAD_INDENT", msg, true); - } - } - } - exports.flowIndentCheck = flowIndentCheck; - } -}); - -// node_modules/yaml/dist/compose/util-map-includes.js -var require_util_map_includes = __commonJS({ - "node_modules/yaml/dist/compose/util-map-includes.js"(exports) { - "use strict"; - var identity = require_identity(); - function mapIncludes(ctx, items, search) { - const { uniqueKeys } = ctx.options; - if (uniqueKeys === false) - return false; - const isEqual = typeof uniqueKeys === "function" ? uniqueKeys : (a, b) => a === b || identity.isScalar(a) && identity.isScalar(b) && a.value === b.value; - return items.some((pair) => isEqual(pair.key, search)); - } - exports.mapIncludes = mapIncludes; - } -}); - -// node_modules/yaml/dist/compose/resolve-block-map.js -var require_resolve_block_map = __commonJS({ - "node_modules/yaml/dist/compose/resolve-block-map.js"(exports) { - "use strict"; - var Pair = require_Pair(); - var YAMLMap = require_YAMLMap(); - var resolveProps = require_resolve_props(); - var utilContainsNewline = require_util_contains_newline(); - var utilFlowIndentCheck = require_util_flow_indent_check(); - var utilMapIncludes = require_util_map_includes(); - var startColMsg = "All mapping items must start at the same column"; - function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) { - var _a2; - const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? YAMLMap.YAMLMap; - const map = new NodeClass(ctx.schema); - if (ctx.atRoot) - ctx.atRoot = false; - let offset = bm.offset; - let commentEnd = null; - for (const collItem of bm.items) { - const { start, key, sep: sep3, value } = collItem; - const keyProps = resolveProps.resolveProps(start, { - indicator: "explicit-key-ind", - next: key ?? (sep3 == null ? void 0 : sep3[0]), - offset, - onError, - parentIndent: bm.indent, - startOnNewline: true - }); - const implicitKey = !keyProps.found; - if (implicitKey) { - if (key) { - if (key.type === "block-seq") - onError(offset, "BLOCK_AS_IMPLICIT_KEY", "A block sequence may not be used as an implicit map key"); - else if ("indent" in key && key.indent !== bm.indent) - onError(offset, "BAD_INDENT", startColMsg); - } - if (!keyProps.anchor && !keyProps.tag && !sep3) { - commentEnd = keyProps.end; - if (keyProps.comment) { - if (map.comment) - map.comment += "\n" + keyProps.comment; - else - map.comment = keyProps.comment; - } - continue; - } - if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) { - onError(key ?? start[start.length - 1], "MULTILINE_IMPLICIT_KEY", "Implicit keys need to be on a single line"); - } - } else if (((_a2 = keyProps.found) == null ? void 0 : _a2.indent) !== bm.indent) { - onError(offset, "BAD_INDENT", startColMsg); - } - ctx.atKey = true; - const keyStart = keyProps.end; - const keyNode = key ? composeNode(ctx, key, keyProps, onError) : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError); - if (ctx.schema.compat) - utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError); - ctx.atKey = false; - if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode)) - onError(keyStart, "DUPLICATE_KEY", "Map keys must be unique"); - const valueProps = resolveProps.resolveProps(sep3 ?? [], { - indicator: "map-value-ind", - next: value, - offset: keyNode.range[2], - onError, - parentIndent: bm.indent, - startOnNewline: !key || key.type === "block-scalar" - }); - offset = valueProps.end; - if (valueProps.found) { - if (implicitKey) { - if ((value == null ? void 0 : value.type) === "block-map" && !valueProps.hasNewline) - onError(offset, "BLOCK_AS_IMPLICIT_KEY", "Nested mappings are not allowed in compact mappings"); - if (ctx.options.strict && keyProps.start < valueProps.found.offset - 1024) - onError(keyNode.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key"); - } - const valueNode = value ? composeNode(ctx, value, valueProps, onError) : composeEmptyNode(ctx, offset, sep3, null, valueProps, onError); - if (ctx.schema.compat) - utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError); - offset = valueNode.range[2]; - const pair = new Pair.Pair(keyNode, valueNode); - if (ctx.options.keepSourceTokens) - pair.srcToken = collItem; - map.items.push(pair); - } else { - if (implicitKey) - onError(keyNode.range, "MISSING_CHAR", "Implicit map keys need to be followed by map values"); - if (valueProps.comment) { - if (keyNode.comment) - keyNode.comment += "\n" + valueProps.comment; - else - keyNode.comment = valueProps.comment; - } - const pair = new Pair.Pair(keyNode); - if (ctx.options.keepSourceTokens) - pair.srcToken = collItem; - map.items.push(pair); - } - } - if (commentEnd && commentEnd < offset) - onError(commentEnd, "IMPOSSIBLE", "Map comment with trailing content"); - map.range = [bm.offset, offset, commentEnd ?? offset]; - return map; - } - exports.resolveBlockMap = resolveBlockMap; - } -}); - -// node_modules/yaml/dist/compose/resolve-block-seq.js -var require_resolve_block_seq = __commonJS({ - "node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) { - "use strict"; - var YAMLSeq = require_YAMLSeq(); - var resolveProps = require_resolve_props(); - var utilFlowIndentCheck = require_util_flow_indent_check(); - function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) { - const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? YAMLSeq.YAMLSeq; - const seq = new NodeClass(ctx.schema); - if (ctx.atRoot) - ctx.atRoot = false; - if (ctx.atKey) - ctx.atKey = false; - let offset = bs.offset; - let commentEnd = null; - for (const { start, value } of bs.items) { - const props = resolveProps.resolveProps(start, { - indicator: "seq-item-ind", - next: value, - offset, - onError, - parentIndent: bs.indent, - startOnNewline: true - }); - if (!props.found) { - if (props.anchor || props.tag || value) { - if (value && value.type === "block-seq") - onError(props.end, "BAD_INDENT", "All sequence items must start at the same column"); - else - onError(offset, "MISSING_CHAR", "Sequence item without - indicator"); - } else { - commentEnd = props.end; - if (props.comment) - seq.comment = props.comment; - continue; - } - } - const node = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, start, null, props, onError); - if (ctx.schema.compat) - utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError); - offset = node.range[2]; - seq.items.push(node); - } - seq.range = [bs.offset, offset, commentEnd ?? offset]; - return seq; - } - exports.resolveBlockSeq = resolveBlockSeq; - } -}); - -// node_modules/yaml/dist/compose/resolve-end.js -var require_resolve_end = __commonJS({ - "node_modules/yaml/dist/compose/resolve-end.js"(exports) { - "use strict"; - function resolveEnd(end, offset, reqSpace, onError) { - let comment = ""; - if (end) { - let hasSpace = false; - let sep3 = ""; - for (const token of end) { - const { source, type } = token; - switch (type) { - case "space": - hasSpace = true; - break; - case "comment": { - if (reqSpace && !hasSpace) - onError(token, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters"); - const cb = source.substring(1) || " "; - if (!comment) - comment = cb; - else - comment += sep3 + cb; - sep3 = ""; - break; - } - case "newline": - if (comment) - sep3 += source; - hasSpace = true; - break; - default: - onError(token, "UNEXPECTED_TOKEN", `Unexpected ${type} at node end`); - } - offset += source.length; - } - } - return { comment, offset }; - } - exports.resolveEnd = resolveEnd; - } -}); - -// node_modules/yaml/dist/compose/resolve-flow-collection.js -var require_resolve_flow_collection = __commonJS({ - "node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) { - "use strict"; - var identity = require_identity(); - var Pair = require_Pair(); - var YAMLMap = require_YAMLMap(); - var YAMLSeq = require_YAMLSeq(); - var resolveEnd = require_resolve_end(); - var resolveProps = require_resolve_props(); - var utilContainsNewline = require_util_contains_newline(); - var utilMapIncludes = require_util_map_includes(); - var blockMsg = "Block collections are not allowed within flow collections"; - var isBlock = (token) => token && (token.type === "block-map" || token.type === "block-seq"); - function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) { - const isMap = fc.start.source === "{"; - const fcName = isMap ? "flow map" : "flow sequence"; - const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq); - const coll = new NodeClass(ctx.schema); - coll.flow = true; - const atRoot = ctx.atRoot; - if (atRoot) - ctx.atRoot = false; - if (ctx.atKey) - ctx.atKey = false; - let offset = fc.offset + fc.start.source.length; - for (let i = 0; i < fc.items.length; ++i) { - const collItem = fc.items[i]; - const { start, key, sep: sep3, value } = collItem; - const props = resolveProps.resolveProps(start, { - flow: fcName, - indicator: "explicit-key-ind", - next: key ?? (sep3 == null ? void 0 : sep3[0]), - offset, - onError, - parentIndent: fc.indent, - startOnNewline: false - }); - if (!props.found) { - if (!props.anchor && !props.tag && !sep3 && !value) { - if (i === 0 && props.comma) - onError(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`); - else if (i < fc.items.length - 1) - onError(props.start, "UNEXPECTED_TOKEN", `Unexpected empty item in ${fcName}`); - if (props.comment) { - if (coll.comment) - coll.comment += "\n" + props.comment; - else - coll.comment = props.comment; - } - offset = props.end; - continue; - } - if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key)) - onError( - key, - "MULTILINE_IMPLICIT_KEY", - "Implicit keys of flow sequence pairs need to be on a single line" - ); - } - if (i === 0) { - if (props.comma) - onError(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`); - } else { - if (!props.comma) - onError(props.start, "MISSING_CHAR", `Missing , between ${fcName} items`); - if (props.comment) { - let prevItemComment = ""; - loop: - for (const st of start) { - switch (st.type) { - case "comma": - case "space": - break; - case "comment": - prevItemComment = st.source.substring(1); - break loop; - default: - break loop; - } - } - if (prevItemComment) { - let prev = coll.items[coll.items.length - 1]; - if (identity.isPair(prev)) - prev = prev.value ?? prev.key; - if (prev.comment) - prev.comment += "\n" + prevItemComment; - else - prev.comment = prevItemComment; - props.comment = props.comment.substring(prevItemComment.length + 1); - } - } - } - if (!isMap && !sep3 && !props.found) { - const valueNode = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, sep3, null, props, onError); - coll.items.push(valueNode); - offset = valueNode.range[2]; - if (isBlock(value)) - onError(valueNode.range, "BLOCK_IN_FLOW", blockMsg); - } else { - ctx.atKey = true; - const keyStart = props.end; - const keyNode = key ? composeNode(ctx, key, props, onError) : composeEmptyNode(ctx, keyStart, start, null, props, onError); - if (isBlock(key)) - onError(keyNode.range, "BLOCK_IN_FLOW", blockMsg); - ctx.atKey = false; - const valueProps = resolveProps.resolveProps(sep3 ?? [], { - flow: fcName, - indicator: "map-value-ind", - next: value, - offset: keyNode.range[2], - onError, - parentIndent: fc.indent, - startOnNewline: false - }); - if (valueProps.found) { - if (!isMap && !props.found && ctx.options.strict) { - if (sep3) - for (const st of sep3) { - if (st === valueProps.found) - break; - if (st.type === "newline") { - onError(st, "MULTILINE_IMPLICIT_KEY", "Implicit keys of flow sequence pairs need to be on a single line"); - break; - } - } - if (props.start < valueProps.found.offset - 1024) - onError(valueProps.found, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit flow sequence key"); - } - } else if (value) { - if ("source" in value && value.source && value.source[0] === ":") - onError(value, "MISSING_CHAR", `Missing space after : in ${fcName}`); - else - onError(valueProps.start, "MISSING_CHAR", `Missing , or : between ${fcName} items`); - } - const valueNode = value ? composeNode(ctx, value, valueProps, onError) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep3, null, valueProps, onError) : null; - if (valueNode) { - if (isBlock(value)) - onError(valueNode.range, "BLOCK_IN_FLOW", blockMsg); - } else if (valueProps.comment) { - if (keyNode.comment) - keyNode.comment += "\n" + valueProps.comment; - else - keyNode.comment = valueProps.comment; - } - const pair = new Pair.Pair(keyNode, valueNode); - if (ctx.options.keepSourceTokens) - pair.srcToken = collItem; - if (isMap) { - const map = coll; - if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode)) - onError(keyStart, "DUPLICATE_KEY", "Map keys must be unique"); - map.items.push(pair); - } else { - const map = new YAMLMap.YAMLMap(ctx.schema); - map.flow = true; - map.items.push(pair); - const endRange = (valueNode ?? keyNode).range; - map.range = [keyNode.range[0], endRange[1], endRange[2]]; - coll.items.push(map); - } - offset = valueNode ? valueNode.range[2] : valueProps.end; - } - } - const expectedEnd = isMap ? "}" : "]"; - const [ce, ...ee] = fc.end; - let cePos = offset; - if (ce && ce.source === expectedEnd) - cePos = ce.offset + ce.source.length; - else { - const name = fcName[0].toUpperCase() + fcName.substring(1); - const msg = atRoot ? `${name} must end with a ${expectedEnd}` : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`; - onError(offset, atRoot ? "MISSING_CHAR" : "BAD_INDENT", msg); - if (ce && ce.source.length !== 1) - ee.unshift(ce); - } - if (ee.length > 0) { - const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError); - if (end.comment) { - if (coll.comment) - coll.comment += "\n" + end.comment; - else - coll.comment = end.comment; - } - coll.range = [fc.offset, cePos, end.offset]; - } else { - coll.range = [fc.offset, cePos, cePos]; - } - return coll; - } - exports.resolveFlowCollection = resolveFlowCollection; - } -}); - -// node_modules/yaml/dist/compose/compose-collection.js -var require_compose_collection = __commonJS({ - "node_modules/yaml/dist/compose/compose-collection.js"(exports) { - "use strict"; - var identity = require_identity(); - var Scalar = require_Scalar(); - var YAMLMap = require_YAMLMap(); - var YAMLSeq = require_YAMLSeq(); - var resolveBlockMap = require_resolve_block_map(); - var resolveBlockSeq = require_resolve_block_seq(); - var resolveFlowCollection = require_resolve_flow_collection(); - function resolveCollection(CN, ctx, token, onError, tagName, tag) { - const coll = token.type === "block-map" ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag) : token.type === "block-seq" ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag) : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag); - const Coll = coll.constructor; - if (tagName === "!" || tagName === Coll.tagName) { - coll.tag = Coll.tagName; - return coll; - } - if (tagName) - coll.tag = tagName; - return coll; - } - function composeCollection(CN, ctx, token, props, onError) { - var _a2; - const tagToken = props.tag; - const tagName = !tagToken ? null : ctx.directives.tagName(tagToken.source, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg)); - if (token.type === "block-seq") { - const { anchor, newlineAfterProp: nl } = props; - const lastProp = anchor && tagToken ? anchor.offset > tagToken.offset ? anchor : tagToken : anchor ?? tagToken; - if (lastProp && (!nl || nl.offset < lastProp.offset)) { - const message = "Missing newline after block sequence props"; - onError(lastProp, "MISSING_CHAR", message); - } - } - const expType = token.type === "block-map" ? "map" : token.type === "block-seq" ? "seq" : token.start.source === "{" ? "map" : "seq"; - if (!tagToken || !tagName || tagName === "!" || tagName === YAMLMap.YAMLMap.tagName && expType === "map" || tagName === YAMLSeq.YAMLSeq.tagName && expType === "seq") { - return resolveCollection(CN, ctx, token, onError, tagName); - } - let tag = ctx.schema.tags.find((t) => t.tag === tagName && t.collection === expType); - if (!tag) { - const kt = ctx.schema.knownTags[tagName]; - if (kt && kt.collection === expType) { - ctx.schema.tags.push(Object.assign({}, kt, { default: false })); - tag = kt; - } else { - if (kt == null ? void 0 : kt.collection) { - onError(tagToken, "BAD_COLLECTION_TYPE", `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true); - } else { - onError(tagToken, "TAG_RESOLVE_FAILED", `Unresolved tag: ${tagName}`, true); - } - return resolveCollection(CN, ctx, token, onError, tagName); - } - } - const coll = resolveCollection(CN, ctx, token, onError, tagName, tag); - const res = ((_a2 = tag.resolve) == null ? void 0 : _a2.call(tag, coll, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg), ctx.options)) ?? coll; - const node = identity.isNode(res) ? res : new Scalar.Scalar(res); - node.range = coll.range; - node.tag = tagName; - if (tag == null ? void 0 : tag.format) - node.format = tag.format; - return node; - } - exports.composeCollection = composeCollection; - } -}); - -// node_modules/yaml/dist/compose/resolve-block-scalar.js -var require_resolve_block_scalar = __commonJS({ - "node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - function resolveBlockScalar(ctx, scalar, onError) { - const start = scalar.offset; - const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError); - if (!header) - return { value: "", type: null, comment: "", range: [start, start, start] }; - const type = header.mode === ">" ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL; - const lines2 = scalar.source ? splitLines(scalar.source) : []; - let chompStart = lines2.length; - for (let i = lines2.length - 1; i >= 0; --i) { - const content = lines2[i][1]; - if (content === "" || content === "\r") - chompStart = i; - else - break; - } - if (chompStart === 0) { - const value2 = header.chomp === "+" && lines2.length > 0 ? "\n".repeat(Math.max(1, lines2.length - 1)) : ""; - let end2 = start + header.length; - if (scalar.source) - end2 += scalar.source.length; - return { value: value2, type, comment: header.comment, range: [start, end2, end2] }; - } - let trimIndent = scalar.indent + header.indent; - let offset = scalar.offset + header.length; - let contentStart = 0; - for (let i = 0; i < chompStart; ++i) { - const [indent, content] = lines2[i]; - if (content === "" || content === "\r") { - if (header.indent === 0 && indent.length > trimIndent) - trimIndent = indent.length; - } else { - if (indent.length < trimIndent) { - const message = "Block scalars with more-indented leading empty lines must use an explicit indentation indicator"; - onError(offset + indent.length, "MISSING_CHAR", message); - } - if (header.indent === 0) - trimIndent = indent.length; - contentStart = i; - if (trimIndent === 0 && !ctx.atRoot) { - const message = "Block scalar values in collections must be indented"; - onError(offset, "BAD_INDENT", message); - } - break; - } - offset += indent.length + content.length + 1; - } - for (let i = lines2.length - 1; i >= chompStart; --i) { - if (lines2[i][0].length > trimIndent) - chompStart = i + 1; - } - let value = ""; - let sep3 = ""; - let prevMoreIndented = false; - for (let i = 0; i < contentStart; ++i) - value += lines2[i][0].slice(trimIndent) + "\n"; - for (let i = contentStart; i < chompStart; ++i) { - let [indent, content] = lines2[i]; - offset += indent.length + content.length + 1; - const crlf = content[content.length - 1] === "\r"; - if (crlf) - content = content.slice(0, -1); - if (content && indent.length < trimIndent) { - const src = header.indent ? "explicit indentation indicator" : "first line"; - const message = `Block scalar lines must not be less indented than their ${src}`; - onError(offset - content.length - (crlf ? 2 : 1), "BAD_INDENT", message); - indent = ""; - } - if (type === Scalar.Scalar.BLOCK_LITERAL) { - value += sep3 + indent.slice(trimIndent) + content; - sep3 = "\n"; - } else if (indent.length > trimIndent || content[0] === " ") { - if (sep3 === " ") - sep3 = "\n"; - else if (!prevMoreIndented && sep3 === "\n") - sep3 = "\n\n"; - value += sep3 + indent.slice(trimIndent) + content; - sep3 = "\n"; - prevMoreIndented = true; - } else if (content === "") { - if (sep3 === "\n") - value += "\n"; - else - sep3 = "\n"; - } else { - value += sep3 + content; - sep3 = " "; - prevMoreIndented = false; - } - } - switch (header.chomp) { - case "-": - break; - case "+": - for (let i = chompStart; i < lines2.length; ++i) - value += "\n" + lines2[i][0].slice(trimIndent); - if (value[value.length - 1] !== "\n") - value += "\n"; - break; - default: - value += "\n"; - } - const end = start + header.length + scalar.source.length; - return { value, type, comment: header.comment, range: [start, end, end] }; - } - function parseBlockScalarHeader({ offset, props }, strict, onError) { - if (props[0].type !== "block-scalar-header") { - onError(props[0], "IMPOSSIBLE", "Block scalar header not found"); - return null; - } - const { source } = props[0]; - const mode = source[0]; - let indent = 0; - let chomp = ""; - let error = -1; - for (let i = 1; i < source.length; ++i) { - const ch = source[i]; - if (!chomp && (ch === "-" || ch === "+")) - chomp = ch; - else { - const n = Number(ch); - if (!indent && n) - indent = n; - else if (error === -1) - error = offset + i; - } - } - if (error !== -1) - onError(error, "UNEXPECTED_TOKEN", `Block scalar header includes extra characters: ${source}`); - let hasSpace = false; - let comment = ""; - let length = source.length; - for (let i = 1; i < props.length; ++i) { - const token = props[i]; - switch (token.type) { - case "space": - hasSpace = true; - case "newline": - length += token.source.length; - break; - case "comment": - if (strict && !hasSpace) { - const message = "Comments must be separated from other tokens by white space characters"; - onError(token, "MISSING_CHAR", message); - } - length += token.source.length; - comment = token.source.substring(1); - break; - case "error": - onError(token, "UNEXPECTED_TOKEN", token.message); - length += token.source.length; - break; - default: { - const message = `Unexpected token in block scalar header: ${token.type}`; - onError(token, "UNEXPECTED_TOKEN", message); - const ts3 = token.source; - if (ts3 && typeof ts3 === "string") - length += ts3.length; - } - } - } - return { mode, indent, chomp, comment, length }; - } - function splitLines(source) { - const split2 = source.split(/\n( *)/); - const first = split2[0]; - const m = first.match(/^( *)/); - const line0 = (m == null ? void 0 : m[1]) ? [m[1], first.slice(m[1].length)] : ["", first]; - const lines2 = [line0]; - for (let i = 1; i < split2.length; i += 2) - lines2.push([split2[i], split2[i + 1]]); - return lines2; - } - exports.resolveBlockScalar = resolveBlockScalar; - } -}); - -// node_modules/yaml/dist/compose/resolve-flow-scalar.js -var require_resolve_flow_scalar = __commonJS({ - "node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) { - "use strict"; - var Scalar = require_Scalar(); - var resolveEnd = require_resolve_end(); - function resolveFlowScalar(scalar, strict, onError) { - const { offset, type, source, end } = scalar; - let _type; - let value; - const _onError = (rel, code, msg) => onError(offset + rel, code, msg); - switch (type) { - case "scalar": - _type = Scalar.Scalar.PLAIN; - value = plainValue(source, _onError); - break; - case "single-quoted-scalar": - _type = Scalar.Scalar.QUOTE_SINGLE; - value = singleQuotedValue(source, _onError); - break; - case "double-quoted-scalar": - _type = Scalar.Scalar.QUOTE_DOUBLE; - value = doubleQuotedValue(source, _onError); - break; - default: - onError(scalar, "UNEXPECTED_TOKEN", `Expected a flow scalar value, but found: ${type}`); - return { - value: "", - type: null, - comment: "", - range: [offset, offset + source.length, offset + source.length] - }; - } - const valueEnd = offset + source.length; - const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError); - return { - value, - type: _type, - comment: re.comment, - range: [offset, valueEnd, re.offset] - }; - } - function plainValue(source, onError) { - let badChar = ""; - switch (source[0]) { - case " ": - badChar = "a tab character"; - break; - case ",": - badChar = "flow indicator character ,"; - break; - case "%": - badChar = "directive indicator character %"; - break; - case "|": - case ">": { - badChar = `block scalar indicator ${source[0]}`; - break; - } - case "@": - case "`": { - badChar = `reserved character ${source[0]}`; - break; - } - } - if (badChar) - onError(0, "BAD_SCALAR_START", `Plain value cannot start with ${badChar}`); - return foldLines(source); - } - function singleQuotedValue(source, onError) { - if (source[source.length - 1] !== "'" || source.length === 1) - onError(source.length, "MISSING_CHAR", "Missing closing 'quote"); - return foldLines(source.slice(1, -1)).replace(/''/g, "'"); - } - function foldLines(source) { - let first, line; - try { - first = new RegExp("(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch; - } else { - res += ch; - } - } - if (source[source.length - 1] !== '"' || source.length === 1) - onError(source.length, "MISSING_CHAR", 'Missing closing "quote'); - return res; - } - function foldNewline(source, offset) { - let fold = ""; - let ch = source[offset + 1]; - while (ch === " " || ch === " " || ch === "\n" || ch === "\r") { - if (ch === "\r" && source[offset + 2] !== "\n") - break; - if (ch === "\n") - fold += "\n"; - offset += 1; - ch = source[offset + 1]; - } - if (!fold) - fold = " "; - return { fold, offset }; - } - var escapeCodes = { - "0": "\0", - a: "\x07", - b: "\b", - e: "\x1B", - f: "\f", - n: "\n", - r: "\r", - t: " ", - v: "\v", - N: "\x85", - _: "\xA0", - L: "\u2028", - P: "\u2029", - " ": " ", - '"': '"', - "/": "/", - "\\": "\\", - " ": " " - }; - function parseCharCode(source, offset, length, onError) { - const cc = source.substr(offset, length); - const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc); - const code = ok ? parseInt(cc, 16) : NaN; - if (isNaN(code)) { - const raw = source.substr(offset - 2, length + 2); - onError(offset - 2, "BAD_DQ_ESCAPE", `Invalid escape sequence ${raw}`); - return raw; - } - return String.fromCodePoint(code); - } - exports.resolveFlowScalar = resolveFlowScalar; - } -}); - -// node_modules/yaml/dist/compose/compose-scalar.js -var require_compose_scalar = __commonJS({ - "node_modules/yaml/dist/compose/compose-scalar.js"(exports) { - "use strict"; - var identity = require_identity(); - var Scalar = require_Scalar(); - var resolveBlockScalar = require_resolve_block_scalar(); - var resolveFlowScalar = require_resolve_flow_scalar(); - function composeScalar(ctx, token, tagToken, onError) { - const { value, type, comment, range } = token.type === "block-scalar" ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError) : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError); - const tagName = tagToken ? ctx.directives.tagName(tagToken.source, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg)) : null; - let tag; - if (ctx.options.stringKeys && ctx.atKey) { - tag = ctx.schema[identity.SCALAR]; - } else if (tagName) - tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError); - else if (token.type === "scalar") - tag = findScalarTagByTest(ctx, value, token, onError); - else - tag = ctx.schema[identity.SCALAR]; - let scalar; - try { - const res = tag.resolve(value, (msg) => onError(tagToken ?? token, "TAG_RESOLVE_FAILED", msg), ctx.options); - scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res); - } catch (error) { - const msg = error instanceof Error ? error.message : String(error); - onError(tagToken ?? token, "TAG_RESOLVE_FAILED", msg); - scalar = new Scalar.Scalar(value); - } - scalar.range = range; - scalar.source = value; - if (type) - scalar.type = type; - if (tagName) - scalar.tag = tagName; - if (tag.format) - scalar.format = tag.format; - if (comment) - scalar.comment = comment; - return scalar; - } - function findScalarTagByName(schema, value, tagName, tagToken, onError) { - var _a2; - if (tagName === "!") - return schema[identity.SCALAR]; - const matchWithTest = []; - for (const tag of schema.tags) { - if (!tag.collection && tag.tag === tagName) { - if (tag.default && tag.test) - matchWithTest.push(tag); - else - return tag; - } - } - for (const tag of matchWithTest) - if ((_a2 = tag.test) == null ? void 0 : _a2.test(value)) - return tag; - const kt = schema.knownTags[tagName]; - if (kt && !kt.collection) { - schema.tags.push(Object.assign({}, kt, { default: false, test: void 0 })); - return kt; - } - onError(tagToken, "TAG_RESOLVE_FAILED", `Unresolved tag: ${tagName}`, tagName !== "tag:yaml.org,2002:str"); - return schema[identity.SCALAR]; - } - function findScalarTagByTest({ atKey, directives, schema }, value, token, onError) { - const tag = schema.tags.find((tag2) => { - var _a2; - return (tag2.default === true || atKey && tag2.default === "key") && ((_a2 = tag2.test) == null ? void 0 : _a2.test(value)); - }) || schema[identity.SCALAR]; - if (schema.compat) { - const compat = schema.compat.find((tag2) => { - var _a2; - return tag2.default && ((_a2 = tag2.test) == null ? void 0 : _a2.test(value)); - }) ?? schema[identity.SCALAR]; - if (tag.tag !== compat.tag) { - const ts3 = directives.tagString(tag.tag); - const cs = directives.tagString(compat.tag); - const msg = `Value may be parsed as either ${ts3} or ${cs}`; - onError(token, "TAG_RESOLVE_FAILED", msg, true); - } - } - return tag; - } - exports.composeScalar = composeScalar; - } -}); - -// node_modules/yaml/dist/compose/util-empty-scalar-position.js -var require_util_empty_scalar_position = __commonJS({ - "node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) { - "use strict"; - function emptyScalarPosition(offset, before, pos) { - if (before) { - if (pos === null) - pos = before.length; - for (let i = pos - 1; i >= 0; --i) { - let st = before[i]; - switch (st.type) { - case "space": - case "comment": - case "newline": - offset -= st.source.length; - continue; - } - st = before[++i]; - while ((st == null ? void 0 : st.type) === "space") { - offset += st.source.length; - st = before[++i]; - } - break; - } - } - return offset; - } - exports.emptyScalarPosition = emptyScalarPosition; - } -}); - -// node_modules/yaml/dist/compose/compose-node.js -var require_compose_node = __commonJS({ - "node_modules/yaml/dist/compose/compose-node.js"(exports) { - "use strict"; - var Alias = require_Alias(); - var identity = require_identity(); - var composeCollection = require_compose_collection(); - var composeScalar = require_compose_scalar(); - var resolveEnd = require_resolve_end(); - var utilEmptyScalarPosition = require_util_empty_scalar_position(); - var CN = { composeNode, composeEmptyNode }; - function composeNode(ctx, token, props, onError) { - const atKey = ctx.atKey; - const { spaceBefore, comment, anchor, tag } = props; - let node; - let isSrcToken = true; - switch (token.type) { - case "alias": - node = composeAlias(ctx, token, onError); - if (anchor || tag) - onError(token, "ALIAS_PROPS", "An alias node must not specify any properties"); - break; - case "scalar": - case "single-quoted-scalar": - case "double-quoted-scalar": - case "block-scalar": - node = composeScalar.composeScalar(ctx, token, tag, onError); - if (anchor) - node.anchor = anchor.source.substring(1); - break; - case "block-map": - case "block-seq": - case "flow-collection": - node = composeCollection.composeCollection(CN, ctx, token, props, onError); - if (anchor) - node.anchor = anchor.source.substring(1); - break; - default: { - const message = token.type === "error" ? token.message : `Unsupported token (type: ${token.type})`; - onError(token, "UNEXPECTED_TOKEN", message); - node = composeEmptyNode(ctx, token.offset, void 0, null, props, onError); - isSrcToken = false; - } - } - if (anchor && node.anchor === "") - onError(anchor, "BAD_ALIAS", "Anchor cannot be an empty string"); - if (atKey && ctx.options.stringKeys && (!identity.isScalar(node) || typeof node.value !== "string" || node.tag && node.tag !== "tag:yaml.org,2002:str")) { - const msg = "With stringKeys, all keys must be strings"; - onError(tag ?? token, "NON_STRING_KEY", msg); - } - if (spaceBefore) - node.spaceBefore = true; - if (comment) { - if (token.type === "scalar" && token.source === "") - node.comment = comment; - else - node.commentBefore = comment; - } - if (ctx.options.keepSourceTokens && isSrcToken) - node.srcToken = token; - return node; - } - function composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) { - const token = { - type: "scalar", - offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos), - indent: -1, - source: "" - }; - const node = composeScalar.composeScalar(ctx, token, tag, onError); - if (anchor) { - node.anchor = anchor.source.substring(1); - if (node.anchor === "") - onError(anchor, "BAD_ALIAS", "Anchor cannot be an empty string"); - } - if (spaceBefore) - node.spaceBefore = true; - if (comment) { - node.comment = comment; - node.range[2] = end; - } - return node; - } - function composeAlias({ options }, { offset, source, end }, onError) { - const alias3 = new Alias.Alias(source.substring(1)); - if (alias3.source === "") - onError(offset, "BAD_ALIAS", "Alias cannot be an empty string"); - if (alias3.source.endsWith(":")) - onError(offset + source.length - 1, "BAD_ALIAS", "Alias ending in : is ambiguous", true); - const valueEnd = offset + source.length; - const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError); - alias3.range = [offset, valueEnd, re.offset]; - if (re.comment) - alias3.comment = re.comment; - return alias3; - } - exports.composeEmptyNode = composeEmptyNode; - exports.composeNode = composeNode; - } -}); - -// node_modules/yaml/dist/compose/compose-doc.js -var require_compose_doc = __commonJS({ - "node_modules/yaml/dist/compose/compose-doc.js"(exports) { - "use strict"; - var Document = require_Document(); - var composeNode = require_compose_node(); - var resolveEnd = require_resolve_end(); - var resolveProps = require_resolve_props(); - function composeDoc(options, directives, { offset, start, value, end }, onError) { - const opts = Object.assign({ _directives: directives }, options); - const doc = new Document.Document(void 0, opts); - const ctx = { - atKey: false, - atRoot: true, - directives: doc.directives, - options: doc.options, - schema: doc.schema - }; - const props = resolveProps.resolveProps(start, { - indicator: "doc-start", - next: value ?? (end == null ? void 0 : end[0]), - offset, - onError, - parentIndent: 0, - startOnNewline: true - }); - if (props.found) { - doc.directives.docStart = true; - if (value && (value.type === "block-map" || value.type === "block-seq") && !props.hasNewline) - onError(props.end, "MISSING_CHAR", "Block collection cannot start on same line with directives-end marker"); - } - doc.contents = value ? composeNode.composeNode(ctx, value, props, onError) : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError); - const contentEnd = doc.contents.range[2]; - const re = resolveEnd.resolveEnd(end, contentEnd, false, onError); - if (re.comment) - doc.comment = re.comment; - doc.range = [offset, contentEnd, re.offset]; - return doc; - } - exports.composeDoc = composeDoc; - } -}); - -// node_modules/yaml/dist/compose/composer.js -var require_composer = __commonJS({ - "node_modules/yaml/dist/compose/composer.js"(exports) { - "use strict"; - var node_process = __require("process"); - var directives = require_directives(); - var Document = require_Document(); - var errors = require_errors(); - var identity = require_identity(); - var composeDoc = require_compose_doc(); - var resolveEnd = require_resolve_end(); - function getErrorPos(src) { - if (typeof src === "number") - return [src, src + 1]; - if (Array.isArray(src)) - return src.length === 2 ? src : [src[0], src[1]]; - const { offset, source } = src; - return [offset, offset + (typeof source === "string" ? source.length : 1)]; - } - function parsePrelude(prelude) { - var _a2; - let comment = ""; - let atComment = false; - let afterEmptyLine = false; - for (let i = 0; i < prelude.length; ++i) { - const source = prelude[i]; - switch (source[0]) { - case "#": - comment += (comment === "" ? "" : afterEmptyLine ? "\n\n" : "\n") + (source.substring(1) || " "); - atComment = true; - afterEmptyLine = false; - break; - case "%": - if (((_a2 = prelude[i + 1]) == null ? void 0 : _a2[0]) !== "#") - i += 1; - atComment = false; - break; - default: - if (!atComment) - afterEmptyLine = true; - atComment = false; - } - } - return { comment, afterEmptyLine }; - } - var Composer = class { - constructor(options = {}) { - this.doc = null; - this.atDirectives = false; - this.prelude = []; - this.errors = []; - this.warnings = []; - this.onError = (source, code, message, warning) => { - const pos = getErrorPos(source); - if (warning) - this.warnings.push(new errors.YAMLWarning(pos, code, message)); - else - this.errors.push(new errors.YAMLParseError(pos, code, message)); - }; - this.directives = new directives.Directives({ version: options.version || "1.2" }); - this.options = options; - } - decorate(doc, afterDoc) { - const { comment, afterEmptyLine } = parsePrelude(this.prelude); - if (comment) { - const dc = doc.contents; - if (afterDoc) { - doc.comment = doc.comment ? `${doc.comment} -${comment}` : comment; - } else if (afterEmptyLine || doc.directives.docStart || !dc) { - doc.commentBefore = comment; - } else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) { - let it = dc.items[0]; - if (identity.isPair(it)) - it = it.key; - const cb = it.commentBefore; - it.commentBefore = cb ? `${comment} -${cb}` : comment; - } else { - const cb = dc.commentBefore; - dc.commentBefore = cb ? `${comment} -${cb}` : comment; - } - } - if (afterDoc) { - Array.prototype.push.apply(doc.errors, this.errors); - Array.prototype.push.apply(doc.warnings, this.warnings); - } else { - doc.errors = this.errors; - doc.warnings = this.warnings; - } - this.prelude = []; - this.errors = []; - this.warnings = []; - } - streamInfo() { - return { - comment: parsePrelude(this.prelude).comment, - directives: this.directives, - errors: this.errors, - warnings: this.warnings - }; - } - *compose(tokens, forceDoc = false, endOffset = -1) { - for (const token of tokens) - yield* this.next(token); - yield* this.end(forceDoc, endOffset); - } - *next(token) { - if (node_process.env.LOG_STREAM) - console.dir(token, { depth: null }); - switch (token.type) { - case "directive": - this.directives.add(token.source, (offset, message, warning) => { - const pos = getErrorPos(token); - pos[0] += offset; - this.onError(pos, "BAD_DIRECTIVE", message, warning); - }); - this.prelude.push(token.source); - this.atDirectives = true; - break; - case "document": { - const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError); - if (this.atDirectives && !doc.directives.docStart) - this.onError(token, "MISSING_CHAR", "Missing directives-end/doc-start indicator line"); - this.decorate(doc, false); - if (this.doc) - yield this.doc; - this.doc = doc; - this.atDirectives = false; - break; - } - case "byte-order-mark": - case "space": - break; - case "comment": - case "newline": - this.prelude.push(token.source); - break; - case "error": { - const msg = token.source ? `${token.message}: ${JSON.stringify(token.source)}` : token.message; - const error = new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", msg); - if (this.atDirectives || !this.doc) - this.errors.push(error); - else - this.doc.errors.push(error); - break; - } - case "doc-end": { - if (!this.doc) { - const msg = "Unexpected doc-end without preceding document"; - this.errors.push(new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", msg)); - break; - } - this.doc.directives.docEnd = true; - const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError); - this.decorate(this.doc, true); - if (end.comment) { - const dc = this.doc.comment; - this.doc.comment = dc ? `${dc} -${end.comment}` : end.comment; - } - this.doc.range[2] = end.offset; - break; - } - default: - this.errors.push(new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", `Unsupported token ${token.type}`)); - } - } - *end(forceDoc = false, endOffset = -1) { - if (this.doc) { - this.decorate(this.doc, true); - yield this.doc; - this.doc = null; - } else if (forceDoc) { - const opts = Object.assign({ _directives: this.directives }, this.options); - const doc = new Document.Document(void 0, opts); - if (this.atDirectives) - this.onError(endOffset, "MISSING_CHAR", "Missing directives-end indicator line"); - doc.range = [0, endOffset, endOffset]; - this.decorate(doc, false); - yield doc; - } - } - }; - exports.Composer = Composer; - } -}); - -// node_modules/yaml/dist/parse/cst-scalar.js -var require_cst_scalar = __commonJS({ - "node_modules/yaml/dist/parse/cst-scalar.js"(exports) { - "use strict"; - var resolveBlockScalar = require_resolve_block_scalar(); - var resolveFlowScalar = require_resolve_flow_scalar(); - var errors = require_errors(); - var stringifyString = require_stringifyString(); - function resolveAsScalar(token, strict = true, onError) { - if (token) { - const _onError = (pos, code, message) => { - const offset = typeof pos === "number" ? pos : Array.isArray(pos) ? pos[0] : pos.offset; - if (onError) - onError(offset, code, message); - else - throw new errors.YAMLParseError([offset, offset + 1], code, message); - }; - switch (token.type) { - case "scalar": - case "single-quoted-scalar": - case "double-quoted-scalar": - return resolveFlowScalar.resolveFlowScalar(token, strict, _onError); - case "block-scalar": - return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError); - } - } - return null; - } - function createScalarToken(value, context) { - const { implicitKey = false, indent, inFlow = false, offset = -1, type = "PLAIN" } = context; - const source = stringifyString.stringifyString({ type, value }, { - implicitKey, - indent: indent > 0 ? " ".repeat(indent) : "", - inFlow, - options: { blockQuote: true, lineWidth: -1 } - }); - const end = context.end ?? [ - { type: "newline", offset: -1, indent, source: "\n" } - ]; - switch (source[0]) { - case "|": - case ">": { - const he = source.indexOf("\n"); - const head = source.substring(0, he); - const body = source.substring(he + 1) + "\n"; - const props = [ - { type: "block-scalar-header", offset, indent, source: head } - ]; - if (!addEndtoBlockProps(props, end)) - props.push({ type: "newline", offset: -1, indent, source: "\n" }); - return { type: "block-scalar", offset, indent, props, source: body }; - } - case '"': - return { type: "double-quoted-scalar", offset, indent, source, end }; - case "'": - return { type: "single-quoted-scalar", offset, indent, source, end }; - default: - return { type: "scalar", offset, indent, source, end }; - } - } - function setScalarValue(token, value, context = {}) { - let { afterKey = false, implicitKey = false, inFlow = false, type } = context; - let indent = "indent" in token ? token.indent : null; - if (afterKey && typeof indent === "number") - indent += 2; - if (!type) - switch (token.type) { - case "single-quoted-scalar": - type = "QUOTE_SINGLE"; - break; - case "double-quoted-scalar": - type = "QUOTE_DOUBLE"; - break; - case "block-scalar": { - const header = token.props[0]; - if (header.type !== "block-scalar-header") - throw new Error("Invalid block scalar header"); - type = header.source[0] === ">" ? "BLOCK_FOLDED" : "BLOCK_LITERAL"; - break; - } - default: - type = "PLAIN"; - } - const source = stringifyString.stringifyString({ type, value }, { - implicitKey: implicitKey || indent === null, - indent: indent !== null && indent > 0 ? " ".repeat(indent) : "", - inFlow, - options: { blockQuote: true, lineWidth: -1 } - }); - switch (source[0]) { - case "|": - case ">": - setBlockScalarValue(token, source); - break; - case '"': - setFlowScalarValue(token, source, "double-quoted-scalar"); - break; - case "'": - setFlowScalarValue(token, source, "single-quoted-scalar"); - break; - default: - setFlowScalarValue(token, source, "scalar"); - } - } - function setBlockScalarValue(token, source) { - const he = source.indexOf("\n"); - const head = source.substring(0, he); - const body = source.substring(he + 1) + "\n"; - if (token.type === "block-scalar") { - const header = token.props[0]; - if (header.type !== "block-scalar-header") - throw new Error("Invalid block scalar header"); - header.source = head; - token.source = body; - } else { - const { offset } = token; - const indent = "indent" in token ? token.indent : -1; - const props = [ - { type: "block-scalar-header", offset, indent, source: head } - ]; - if (!addEndtoBlockProps(props, "end" in token ? token.end : void 0)) - props.push({ type: "newline", offset: -1, indent, source: "\n" }); - for (const key of Object.keys(token)) - if (key !== "type" && key !== "offset") - delete token[key]; - Object.assign(token, { type: "block-scalar", indent, props, source: body }); - } - } - function addEndtoBlockProps(props, end) { - if (end) - for (const st of end) - switch (st.type) { - case "space": - case "comment": - props.push(st); - break; - case "newline": - props.push(st); - return true; - } - return false; - } - function setFlowScalarValue(token, source, type) { - switch (token.type) { - case "scalar": - case "double-quoted-scalar": - case "single-quoted-scalar": - token.type = type; - token.source = source; - break; - case "block-scalar": { - const end = token.props.slice(1); - let oa = source.length; - if (token.props[0].type === "block-scalar-header") - oa -= token.props[0].source.length; - for (const tok of end) - tok.offset += oa; - delete token.props; - Object.assign(token, { type, source, end }); - break; - } - case "block-map": - case "block-seq": { - const offset = token.offset + source.length; - const nl = { type: "newline", offset, indent: token.indent, source: "\n" }; - delete token.items; - Object.assign(token, { type, source, end: [nl] }); - break; - } - default: { - const indent = "indent" in token ? token.indent : -1; - const end = "end" in token && Array.isArray(token.end) ? token.end.filter((st) => st.type === "space" || st.type === "comment" || st.type === "newline") : []; - for (const key of Object.keys(token)) - if (key !== "type" && key !== "offset") - delete token[key]; - Object.assign(token, { type, indent, source, end }); - } - } - } - exports.createScalarToken = createScalarToken; - exports.resolveAsScalar = resolveAsScalar; - exports.setScalarValue = setScalarValue; - } -}); - -// node_modules/yaml/dist/parse/cst-stringify.js -var require_cst_stringify = __commonJS({ - "node_modules/yaml/dist/parse/cst-stringify.js"(exports) { - "use strict"; - var stringify = (cst) => "type" in cst ? stringifyToken(cst) : stringifyItem(cst); - function stringifyToken(token) { - switch (token.type) { - case "block-scalar": { - let res = ""; - for (const tok of token.props) - res += stringifyToken(tok); - return res + token.source; - } - case "block-map": - case "block-seq": { - let res = ""; - for (const item of token.items) - res += stringifyItem(item); - return res; - } - case "flow-collection": { - let res = token.start.source; - for (const item of token.items) - res += stringifyItem(item); - for (const st of token.end) - res += st.source; - return res; - } - case "document": { - let res = stringifyItem(token); - if (token.end) - for (const st of token.end) - res += st.source; - return res; - } - default: { - let res = token.source; - if ("end" in token && token.end) - for (const st of token.end) - res += st.source; - return res; - } - } - } - function stringifyItem({ start, key, sep: sep3, value }) { - let res = ""; - for (const st of start) - res += st.source; - if (key) - res += stringifyToken(key); - if (sep3) - for (const st of sep3) - res += st.source; - if (value) - res += stringifyToken(value); - return res; - } - exports.stringify = stringify; - } -}); - -// node_modules/yaml/dist/parse/cst-visit.js -var require_cst_visit = __commonJS({ - "node_modules/yaml/dist/parse/cst-visit.js"(exports) { - "use strict"; - var BREAK = Symbol("break visit"); - var SKIP = Symbol("skip children"); - var REMOVE = Symbol("remove item"); - function visit(cst, visitor) { - if ("type" in cst && cst.type === "document") - cst = { start: cst.start, value: cst.value }; - _visit(Object.freeze([]), cst, visitor); - } - visit.BREAK = BREAK; - visit.SKIP = SKIP; - visit.REMOVE = REMOVE; - visit.itemAtPath = (cst, path9) => { - let item = cst; - for (const [field, index] of path9) { - const tok = item == null ? void 0 : item[field]; - if (tok && "items" in tok) { - item = tok.items[index]; - } else - return void 0; - } - return item; - }; - visit.parentCollection = (cst, path9) => { - const parent = visit.itemAtPath(cst, path9.slice(0, -1)); - const field = path9[path9.length - 1][0]; - const coll = parent == null ? void 0 : parent[field]; - if (coll && "items" in coll) - return coll; - throw new Error("Parent collection not found"); - }; - function _visit(path9, item, visitor) { - let ctrl = visitor(item, path9); - if (typeof ctrl === "symbol") - return ctrl; - for (const field of ["key", "value"]) { - const token = item[field]; - if (token && "items" in token) { - for (let i = 0; i < token.items.length; ++i) { - const ci = _visit(Object.freeze(path9.concat([[field, i]])), token.items[i], visitor); - if (typeof ci === "number") - i = ci - 1; - else if (ci === BREAK) - return BREAK; - else if (ci === REMOVE) { - token.items.splice(i, 1); - i -= 1; - } - } - if (typeof ctrl === "function" && field === "key") - ctrl = ctrl(item, path9); - } - } - return typeof ctrl === "function" ? ctrl(item, path9) : ctrl; - } - exports.visit = visit; - } -}); - -// node_modules/yaml/dist/parse/cst.js -var require_cst = __commonJS({ - "node_modules/yaml/dist/parse/cst.js"(exports) { - "use strict"; - var cstScalar = require_cst_scalar(); - var cstStringify = require_cst_stringify(); - var cstVisit = require_cst_visit(); - var BOM = "\uFEFF"; - var DOCUMENT = ""; - var FLOW_END = ""; - var SCALAR = ""; - var isCollection = (token) => !!token && "items" in token; - var isScalar = (token) => !!token && (token.type === "scalar" || token.type === "single-quoted-scalar" || token.type === "double-quoted-scalar" || token.type === "block-scalar"); - function prettyToken(token) { - switch (token) { - case BOM: - return ""; - case DOCUMENT: - return ""; - case FLOW_END: - return ""; - case SCALAR: - return ""; - default: - return JSON.stringify(token); - } - } - function tokenType(source) { - switch (source) { - case BOM: - return "byte-order-mark"; - case DOCUMENT: - return "doc-mode"; - case FLOW_END: - return "flow-error-end"; - case SCALAR: - return "scalar"; - case "---": - return "doc-start"; - case "...": - return "doc-end"; - case "": - case "\n": - case "\r\n": - return "newline"; - case "-": - return "seq-item-ind"; - case "?": - return "explicit-key-ind"; - case ":": - return "map-value-ind"; - case "{": - return "flow-map-start"; - case "}": - return "flow-map-end"; - case "[": - return "flow-seq-start"; - case "]": - return "flow-seq-end"; - case ",": - return "comma"; - } - switch (source[0]) { - case " ": - case " ": - return "space"; - case "#": - return "comment"; - case "%": - return "directive-line"; - case "*": - return "alias"; - case "&": - return "anchor"; - case "!": - return "tag"; - case "'": - return "single-quoted-scalar"; - case '"': - return "double-quoted-scalar"; - case "|": - case ">": - return "block-scalar-header"; - } - return null; - } - exports.createScalarToken = cstScalar.createScalarToken; - exports.resolveAsScalar = cstScalar.resolveAsScalar; - exports.setScalarValue = cstScalar.setScalarValue; - exports.stringify = cstStringify.stringify; - exports.visit = cstVisit.visit; - exports.BOM = BOM; - exports.DOCUMENT = DOCUMENT; - exports.FLOW_END = FLOW_END; - exports.SCALAR = SCALAR; - exports.isCollection = isCollection; - exports.isScalar = isScalar; - exports.prettyToken = prettyToken; - exports.tokenType = tokenType; - } -}); - -// node_modules/yaml/dist/parse/lexer.js -var require_lexer = __commonJS({ - "node_modules/yaml/dist/parse/lexer.js"(exports) { - "use strict"; - var cst = require_cst(); - function isEmpty(ch) { - switch (ch) { - case void 0: - case " ": - case "\n": - case "\r": - case " ": - return true; - default: - return false; - } - } - var hexDigits = new Set("0123456789ABCDEFabcdef"); - var tagChars = new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"); - var flowIndicatorChars = new Set(",[]{}"); - var invalidAnchorChars = new Set(" ,[]{}\n\r "); - var isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch); - var Lexer = class { - constructor() { - this.atEnd = false; - this.blockScalarIndent = -1; - this.blockScalarKeep = false; - this.buffer = ""; - this.flowKey = false; - this.flowLevel = 0; - this.indentNext = 0; - this.indentValue = 0; - this.lineEndPos = null; - this.next = null; - this.pos = 0; - } - *lex(source, incomplete = false) { - if (source) { - if (typeof source !== "string") - throw TypeError("source is not a string"); - this.buffer = this.buffer ? this.buffer + source : source; - this.lineEndPos = null; - } - this.atEnd = !incomplete; - let next = this.next ?? "stream"; - while (next && (incomplete || this.hasChars(1))) - next = yield* this.parseNext(next); - } - atLineEnd() { - let i = this.pos; - let ch = this.buffer[i]; - while (ch === " " || ch === " ") - ch = this.buffer[++i]; - if (!ch || ch === "#" || ch === "\n") - return true; - if (ch === "\r") - return this.buffer[i + 1] === "\n"; - return false; - } - charAt(n) { - return this.buffer[this.pos + n]; - } - continueScalar(offset) { - let ch = this.buffer[offset]; - if (this.indentNext > 0) { - let indent = 0; - while (ch === " ") - ch = this.buffer[++indent + offset]; - if (ch === "\r") { - const next = this.buffer[indent + offset + 1]; - if (next === "\n" || !next && !this.atEnd) - return offset + indent + 1; - } - return ch === "\n" || indent >= this.indentNext || !ch && !this.atEnd ? offset + indent : -1; - } - if (ch === "-" || ch === ".") { - const dt = this.buffer.substr(offset, 3); - if ((dt === "---" || dt === "...") && isEmpty(this.buffer[offset + 3])) - return -1; - } - return offset; - } - getLine() { - let end = this.lineEndPos; - if (typeof end !== "number" || end !== -1 && end < this.pos) { - end = this.buffer.indexOf("\n", this.pos); - this.lineEndPos = end; - } - if (end === -1) - return this.atEnd ? this.buffer.substring(this.pos) : null; - if (this.buffer[end - 1] === "\r") - end -= 1; - return this.buffer.substring(this.pos, end); - } - hasChars(n) { - return this.pos + n <= this.buffer.length; - } - setNext(state) { - this.buffer = this.buffer.substring(this.pos); - this.pos = 0; - this.lineEndPos = null; - this.next = state; - return null; - } - peek(n) { - return this.buffer.substr(this.pos, n); - } - *parseNext(next) { - switch (next) { - case "stream": - return yield* this.parseStream(); - case "line-start": - return yield* this.parseLineStart(); - case "block-start": - return yield* this.parseBlockStart(); - case "doc": - return yield* this.parseDocument(); - case "flow": - return yield* this.parseFlowCollection(); - case "quoted-scalar": - return yield* this.parseQuotedScalar(); - case "block-scalar": - return yield* this.parseBlockScalar(); - case "plain-scalar": - return yield* this.parsePlainScalar(); - } - } - *parseStream() { - let line = this.getLine(); - if (line === null) - return this.setNext("stream"); - if (line[0] === cst.BOM) { - yield* this.pushCount(1); - line = line.substring(1); - } - if (line[0] === "%") { - let dirEnd = line.length; - let cs = line.indexOf("#"); - while (cs !== -1) { - const ch = line[cs - 1]; - if (ch === " " || ch === " ") { - dirEnd = cs - 1; - break; - } else { - cs = line.indexOf("#", cs + 1); - } - } - while (true) { - const ch = line[dirEnd - 1]; - if (ch === " " || ch === " ") - dirEnd -= 1; - else - break; - } - const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true)); - yield* this.pushCount(line.length - n); - this.pushNewline(); - return "stream"; - } - if (this.atLineEnd()) { - const sp = yield* this.pushSpaces(true); - yield* this.pushCount(line.length - sp); - yield* this.pushNewline(); - return "stream"; - } - yield cst.DOCUMENT; - return yield* this.parseLineStart(); - } - *parseLineStart() { - const ch = this.charAt(0); - if (!ch && !this.atEnd) - return this.setNext("line-start"); - if (ch === "-" || ch === ".") { - if (!this.atEnd && !this.hasChars(4)) - return this.setNext("line-start"); - const s = this.peek(3); - if ((s === "---" || s === "...") && isEmpty(this.charAt(3))) { - yield* this.pushCount(3); - this.indentValue = 0; - this.indentNext = 0; - return s === "---" ? "doc" : "stream"; - } - } - this.indentValue = yield* this.pushSpaces(false); - if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1))) - this.indentNext = this.indentValue; - return yield* this.parseBlockStart(); - } - *parseBlockStart() { - const [ch0, ch1] = this.peek(2); - if (!ch1 && !this.atEnd) - return this.setNext("block-start"); - if ((ch0 === "-" || ch0 === "?" || ch0 === ":") && isEmpty(ch1)) { - const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true)); - this.indentNext = this.indentValue + 1; - this.indentValue += n; - return yield* this.parseBlockStart(); - } - return "doc"; - } - *parseDocument() { - yield* this.pushSpaces(true); - const line = this.getLine(); - if (line === null) - return this.setNext("doc"); - let n = yield* this.pushIndicators(); - switch (line[n]) { - case "#": - yield* this.pushCount(line.length - n); - case void 0: - yield* this.pushNewline(); - return yield* this.parseLineStart(); - case "{": - case "[": - yield* this.pushCount(1); - this.flowKey = false; - this.flowLevel = 1; - return "flow"; - case "}": - case "]": - yield* this.pushCount(1); - return "doc"; - case "*": - yield* this.pushUntil(isNotAnchorChar); - return "doc"; - case '"': - case "'": - return yield* this.parseQuotedScalar(); - case "|": - case ">": - n += yield* this.parseBlockScalarHeader(); - n += yield* this.pushSpaces(true); - yield* this.pushCount(line.length - n); - yield* this.pushNewline(); - return yield* this.parseBlockScalar(); - default: - return yield* this.parsePlainScalar(); - } - } - *parseFlowCollection() { - let nl, sp; - let indent = -1; - do { - nl = yield* this.pushNewline(); - if (nl > 0) { - sp = yield* this.pushSpaces(false); - this.indentValue = indent = sp; - } else { - sp = 0; - } - sp += yield* this.pushSpaces(true); - } while (nl + sp > 0); - const line = this.getLine(); - if (line === null) - return this.setNext("flow"); - if (indent !== -1 && indent < this.indentNext && line[0] !== "#" || indent === 0 && (line.startsWith("---") || line.startsWith("...")) && isEmpty(line[3])) { - const atFlowEndMarker = indent === this.indentNext - 1 && this.flowLevel === 1 && (line[0] === "]" || line[0] === "}"); - if (!atFlowEndMarker) { - this.flowLevel = 0; - yield cst.FLOW_END; - return yield* this.parseLineStart(); - } - } - let n = 0; - while (line[n] === ",") { - n += yield* this.pushCount(1); - n += yield* this.pushSpaces(true); - this.flowKey = false; - } - n += yield* this.pushIndicators(); - switch (line[n]) { - case void 0: - return "flow"; - case "#": - yield* this.pushCount(line.length - n); - return "flow"; - case "{": - case "[": - yield* this.pushCount(1); - this.flowKey = false; - this.flowLevel += 1; - return "flow"; - case "}": - case "]": - yield* this.pushCount(1); - this.flowKey = true; - this.flowLevel -= 1; - return this.flowLevel ? "flow" : "doc"; - case "*": - yield* this.pushUntil(isNotAnchorChar); - return "flow"; - case '"': - case "'": - this.flowKey = true; - return yield* this.parseQuotedScalar(); - case ":": { - const next = this.charAt(1); - if (this.flowKey || isEmpty(next) || next === ",") { - this.flowKey = false; - yield* this.pushCount(1); - yield* this.pushSpaces(true); - return "flow"; - } - } - default: - this.flowKey = false; - return yield* this.parsePlainScalar(); - } - } - *parseQuotedScalar() { - const quote = this.charAt(0); - let end = this.buffer.indexOf(quote, this.pos + 1); - if (quote === "'") { - while (end !== -1 && this.buffer[end + 1] === "'") - end = this.buffer.indexOf("'", end + 2); - } else { - while (end !== -1) { - let n = 0; - while (this.buffer[end - 1 - n] === "\\") - n += 1; - if (n % 2 === 0) - break; - end = this.buffer.indexOf('"', end + 1); - } - } - const qb = this.buffer.substring(0, end); - let nl = qb.indexOf("\n", this.pos); - if (nl !== -1) { - while (nl !== -1) { - const cs = this.continueScalar(nl + 1); - if (cs === -1) - break; - nl = qb.indexOf("\n", cs); - } - if (nl !== -1) { - end = nl - (qb[nl - 1] === "\r" ? 2 : 1); - } - } - if (end === -1) { - if (!this.atEnd) - return this.setNext("quoted-scalar"); - end = this.buffer.length; - } - yield* this.pushToIndex(end + 1, false); - return this.flowLevel ? "flow" : "doc"; - } - *parseBlockScalarHeader() { - this.blockScalarIndent = -1; - this.blockScalarKeep = false; - let i = this.pos; - while (true) { - const ch = this.buffer[++i]; - if (ch === "+") - this.blockScalarKeep = true; - else if (ch > "0" && ch <= "9") - this.blockScalarIndent = Number(ch) - 1; - else if (ch !== "-") - break; - } - return yield* this.pushUntil((ch) => isEmpty(ch) || ch === "#"); - } - *parseBlockScalar() { - let nl = this.pos - 1; - let indent = 0; - let ch; - loop: - for (let i2 = this.pos; ch = this.buffer[i2]; ++i2) { - switch (ch) { - case " ": - indent += 1; - break; - case "\n": - nl = i2; - indent = 0; - break; - case "\r": { - const next = this.buffer[i2 + 1]; - if (!next && !this.atEnd) - return this.setNext("block-scalar"); - if (next === "\n") - break; - } - default: - break loop; - } - } - if (!ch && !this.atEnd) - return this.setNext("block-scalar"); - if (indent >= this.indentNext) { - if (this.blockScalarIndent === -1) - this.indentNext = indent; - else { - this.indentNext = this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext); - } - do { - const cs = this.continueScalar(nl + 1); - if (cs === -1) - break; - nl = this.buffer.indexOf("\n", cs); - } while (nl !== -1); - if (nl === -1) { - if (!this.atEnd) - return this.setNext("block-scalar"); - nl = this.buffer.length; - } - } - let i = nl + 1; - ch = this.buffer[i]; - while (ch === " ") - ch = this.buffer[++i]; - if (ch === " ") { - while (ch === " " || ch === " " || ch === "\r" || ch === "\n") - ch = this.buffer[++i]; - nl = i - 1; - } else if (!this.blockScalarKeep) { - do { - let i2 = nl - 1; - let ch2 = this.buffer[i2]; - if (ch2 === "\r") - ch2 = this.buffer[--i2]; - const lastChar = i2; - while (ch2 === " ") - ch2 = this.buffer[--i2]; - if (ch2 === "\n" && i2 >= this.pos && i2 + 1 + indent > lastChar) - nl = i2; - else - break; - } while (true); - } - yield cst.SCALAR; - yield* this.pushToIndex(nl + 1, true); - return yield* this.parseLineStart(); - } - *parsePlainScalar() { - const inFlow = this.flowLevel > 0; - let end = this.pos - 1; - let i = this.pos - 1; - let ch; - while (ch = this.buffer[++i]) { - if (ch === ":") { - const next = this.buffer[i + 1]; - if (isEmpty(next) || inFlow && flowIndicatorChars.has(next)) - break; - end = i; - } else if (isEmpty(ch)) { - let next = this.buffer[i + 1]; - if (ch === "\r") { - if (next === "\n") { - i += 1; - ch = "\n"; - next = this.buffer[i + 1]; - } else - end = i; - } - if (next === "#" || inFlow && flowIndicatorChars.has(next)) - break; - if (ch === "\n") { - const cs = this.continueScalar(i + 1); - if (cs === -1) - break; - i = Math.max(i, cs - 2); - } - } else { - if (inFlow && flowIndicatorChars.has(ch)) - break; - end = i; - } - } - if (!ch && !this.atEnd) - return this.setNext("plain-scalar"); - yield cst.SCALAR; - yield* this.pushToIndex(end + 1, true); - return inFlow ? "flow" : "doc"; - } - *pushCount(n) { - if (n > 0) { - yield this.buffer.substr(this.pos, n); - this.pos += n; - return n; - } - return 0; - } - *pushToIndex(i, allowEmpty) { - const s = this.buffer.slice(this.pos, i); - if (s) { - yield s; - this.pos += s.length; - return s.length; - } else if (allowEmpty) - yield ""; - return 0; - } - *pushIndicators() { - switch (this.charAt(0)) { - case "!": - return (yield* this.pushTag()) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); - case "&": - return (yield* this.pushUntil(isNotAnchorChar)) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); - case "-": - case "?": - case ":": { - const inFlow = this.flowLevel > 0; - const ch1 = this.charAt(1); - if (isEmpty(ch1) || inFlow && flowIndicatorChars.has(ch1)) { - if (!inFlow) - this.indentNext = this.indentValue + 1; - else if (this.flowKey) - this.flowKey = false; - return (yield* this.pushCount(1)) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); - } - } - } - return 0; - } - *pushTag() { - if (this.charAt(1) === "<") { - let i = this.pos + 2; - let ch = this.buffer[i]; - while (!isEmpty(ch) && ch !== ">") - ch = this.buffer[++i]; - return yield* this.pushToIndex(ch === ">" ? i + 1 : i, false); - } else { - let i = this.pos + 1; - let ch = this.buffer[i]; - while (ch) { - if (tagChars.has(ch)) - ch = this.buffer[++i]; - else if (ch === "%" && hexDigits.has(this.buffer[i + 1]) && hexDigits.has(this.buffer[i + 2])) { - ch = this.buffer[i += 3]; - } else - break; - } - return yield* this.pushToIndex(i, false); - } - } - *pushNewline() { - const ch = this.buffer[this.pos]; - if (ch === "\n") - return yield* this.pushCount(1); - else if (ch === "\r" && this.charAt(1) === "\n") - return yield* this.pushCount(2); - else - return 0; - } - *pushSpaces(allowTabs) { - let i = this.pos - 1; - let ch; - do { - ch = this.buffer[++i]; - } while (ch === " " || allowTabs && ch === " "); - const n = i - this.pos; - if (n > 0) { - yield this.buffer.substr(this.pos, n); - this.pos = i; - } - return n; - } - *pushUntil(test) { - let i = this.pos; - let ch = this.buffer[i]; - while (!test(ch)) - ch = this.buffer[++i]; - return yield* this.pushToIndex(i, false); - } - }; - exports.Lexer = Lexer; - } -}); - -// node_modules/yaml/dist/parse/line-counter.js -var require_line_counter = __commonJS({ - "node_modules/yaml/dist/parse/line-counter.js"(exports) { - "use strict"; - var LineCounter = class { - constructor() { - this.lineStarts = []; - this.addNewLine = (offset) => this.lineStarts.push(offset); - this.linePos = (offset) => { - let low = 0; - let high = this.lineStarts.length; - while (low < high) { - const mid = low + high >> 1; - if (this.lineStarts[mid] < offset) - low = mid + 1; - else - high = mid; - } - if (this.lineStarts[low] === offset) - return { line: low + 1, col: 1 }; - if (low === 0) - return { line: 0, col: offset }; - const start = this.lineStarts[low - 1]; - return { line: low, col: offset - start + 1 }; - }; - } - }; - exports.LineCounter = LineCounter; - } -}); - -// node_modules/yaml/dist/parse/parser.js -var require_parser2 = __commonJS({ - "node_modules/yaml/dist/parse/parser.js"(exports) { - "use strict"; - var node_process = __require("process"); - var cst = require_cst(); - var lexer = require_lexer(); - function includesToken(list, type) { - for (let i = 0; i < list.length; ++i) - if (list[i].type === type) - return true; - return false; - } - function findNonEmptyIndex(list) { - for (let i = 0; i < list.length; ++i) { - switch (list[i].type) { - case "space": - case "comment": - case "newline": - break; - default: - return i; - } - } - return -1; - } - function isFlowToken(token) { - switch (token == null ? void 0 : token.type) { - case "alias": - case "scalar": - case "single-quoted-scalar": - case "double-quoted-scalar": - case "flow-collection": - return true; - default: - return false; - } - } - function getPrevProps(parent) { - switch (parent.type) { - case "document": - return parent.start; - case "block-map": { - const it = parent.items[parent.items.length - 1]; - return it.sep ?? it.start; - } - case "block-seq": - return parent.items[parent.items.length - 1].start; - default: - return []; - } - } - function getFirstKeyStartProps(prev) { - var _a2; - if (prev.length === 0) - return []; - let i = prev.length; - loop: - while (--i >= 0) { - switch (prev[i].type) { - case "doc-start": - case "explicit-key-ind": - case "map-value-ind": - case "seq-item-ind": - case "newline": - break loop; - } - } - while (((_a2 = prev[++i]) == null ? void 0 : _a2.type) === "space") { - } - return prev.splice(i, prev.length); - } - function fixFlowSeqItems(fc) { - if (fc.start.type === "flow-seq-start") { - for (const it of fc.items) { - if (it.sep && !it.value && !includesToken(it.start, "explicit-key-ind") && !includesToken(it.sep, "map-value-ind")) { - if (it.key) - it.value = it.key; - delete it.key; - if (isFlowToken(it.value)) { - if (it.value.end) - Array.prototype.push.apply(it.value.end, it.sep); - else - it.value.end = it.sep; - } else - Array.prototype.push.apply(it.start, it.sep); - delete it.sep; - } - } - } - } - var Parser2 = class { - constructor(onNewLine) { - this.atNewLine = true; - this.atScalar = false; - this.indent = 0; - this.offset = 0; - this.onKeyLine = false; - this.stack = []; - this.source = ""; - this.type = ""; - this.lexer = new lexer.Lexer(); - this.onNewLine = onNewLine; - } - *parse(source, incomplete = false) { - if (this.onNewLine && this.offset === 0) - this.onNewLine(0); - for (const lexeme of this.lexer.lex(source, incomplete)) - yield* this.next(lexeme); - if (!incomplete) - yield* this.end(); - } - *next(source) { - this.source = source; - if (node_process.env.LOG_TOKENS) - console.log("|", cst.prettyToken(source)); - if (this.atScalar) { - this.atScalar = false; - yield* this.step(); - this.offset += source.length; - return; - } - const type = cst.tokenType(source); - if (!type) { - const message = `Not a YAML token: ${source}`; - yield* this.pop({ type: "error", offset: this.offset, message, source }); - this.offset += source.length; - } else if (type === "scalar") { - this.atNewLine = false; - this.atScalar = true; - this.type = "scalar"; - } else { - this.type = type; - yield* this.step(); - switch (type) { - case "newline": - this.atNewLine = true; - this.indent = 0; - if (this.onNewLine) - this.onNewLine(this.offset + source.length); - break; - case "space": - if (this.atNewLine && source[0] === " ") - this.indent += source.length; - break; - case "explicit-key-ind": - case "map-value-ind": - case "seq-item-ind": - if (this.atNewLine) - this.indent += source.length; - break; - case "doc-mode": - case "flow-error-end": - return; - default: - this.atNewLine = false; - } - this.offset += source.length; - } - } - *end() { - while (this.stack.length > 0) - yield* this.pop(); - } - get sourceToken() { - const st = { - type: this.type, - offset: this.offset, - indent: this.indent, - source: this.source - }; - return st; - } - *step() { - const top2 = this.peek(1); - if (this.type === "doc-end" && (!top2 || top2.type !== "doc-end")) { - while (this.stack.length > 0) - yield* this.pop(); - this.stack.push({ - type: "doc-end", - offset: this.offset, - source: this.source - }); - return; - } - if (!top2) - return yield* this.stream(); - switch (top2.type) { - case "document": - return yield* this.document(top2); - case "alias": - case "scalar": - case "single-quoted-scalar": - case "double-quoted-scalar": - return yield* this.scalar(top2); - case "block-scalar": - return yield* this.blockScalar(top2); - case "block-map": - return yield* this.blockMap(top2); - case "block-seq": - return yield* this.blockSequence(top2); - case "flow-collection": - return yield* this.flowCollection(top2); - case "doc-end": - return yield* this.documentEnd(top2); - } - yield* this.pop(); - } - peek(n) { - return this.stack[this.stack.length - n]; - } - *pop(error) { - const token = error ?? this.stack.pop(); - if (!token) { - const message = "Tried to pop an empty stack"; - yield { type: "error", offset: this.offset, source: "", message }; - } else if (this.stack.length === 0) { - yield token; - } else { - const top2 = this.peek(1); - if (token.type === "block-scalar") { - token.indent = "indent" in top2 ? top2.indent : 0; - } else if (token.type === "flow-collection" && top2.type === "document") { - token.indent = 0; - } - if (token.type === "flow-collection") - fixFlowSeqItems(token); - switch (top2.type) { - case "document": - top2.value = token; - break; - case "block-scalar": - top2.props.push(token); - break; - case "block-map": { - const it = top2.items[top2.items.length - 1]; - if (it.value) { - top2.items.push({ start: [], key: token, sep: [] }); - this.onKeyLine = true; - return; - } else if (it.sep) { - it.value = token; - } else { - Object.assign(it, { key: token, sep: [] }); - this.onKeyLine = !it.explicitKey; - return; - } - break; - } - case "block-seq": { - const it = top2.items[top2.items.length - 1]; - if (it.value) - top2.items.push({ start: [], value: token }); - else - it.value = token; - break; - } - case "flow-collection": { - const it = top2.items[top2.items.length - 1]; - if (!it || it.value) - top2.items.push({ start: [], key: token, sep: [] }); - else if (it.sep) - it.value = token; - else - Object.assign(it, { key: token, sep: [] }); - return; - } - default: - yield* this.pop(); - yield* this.pop(token); - } - if ((top2.type === "document" || top2.type === "block-map" || top2.type === "block-seq") && (token.type === "block-map" || token.type === "block-seq")) { - const last = token.items[token.items.length - 1]; - if (last && !last.sep && !last.value && last.start.length > 0 && findNonEmptyIndex(last.start) === -1 && (token.indent === 0 || last.start.every((st) => st.type !== "comment" || st.indent < token.indent))) { - if (top2.type === "document") - top2.end = last.start; - else - top2.items.push({ start: last.start }); - token.items.splice(-1, 1); - } - } - } - } - *stream() { - switch (this.type) { - case "directive-line": - yield { type: "directive", offset: this.offset, source: this.source }; - return; - case "byte-order-mark": - case "space": - case "comment": - case "newline": - yield this.sourceToken; - return; - case "doc-mode": - case "doc-start": { - const doc = { - type: "document", - offset: this.offset, - start: [] - }; - if (this.type === "doc-start") - doc.start.push(this.sourceToken); - this.stack.push(doc); - return; - } - } - yield { - type: "error", - offset: this.offset, - message: `Unexpected ${this.type} token in YAML stream`, - source: this.source - }; - } - *document(doc) { - if (doc.value) - return yield* this.lineEnd(doc); - switch (this.type) { - case "doc-start": { - if (findNonEmptyIndex(doc.start) !== -1) { - yield* this.pop(); - yield* this.step(); - } else - doc.start.push(this.sourceToken); - return; - } - case "anchor": - case "tag": - case "space": - case "comment": - case "newline": - doc.start.push(this.sourceToken); - return; - } - const bv = this.startBlockValue(doc); - if (bv) - this.stack.push(bv); - else { - yield { - type: "error", - offset: this.offset, - message: `Unexpected ${this.type} token in YAML document`, - source: this.source - }; - } - } - *scalar(scalar) { - if (this.type === "map-value-ind") { - const prev = getPrevProps(this.peek(2)); - const start = getFirstKeyStartProps(prev); - let sep3; - if (scalar.end) { - sep3 = scalar.end; - sep3.push(this.sourceToken); - delete scalar.end; - } else - sep3 = [this.sourceToken]; - const map = { - type: "block-map", - offset: scalar.offset, - indent: scalar.indent, - items: [{ start, key: scalar, sep: sep3 }] - }; - this.onKeyLine = true; - this.stack[this.stack.length - 1] = map; - } else - yield* this.lineEnd(scalar); - } - *blockScalar(scalar) { - switch (this.type) { - case "space": - case "comment": - case "newline": - scalar.props.push(this.sourceToken); - return; - case "scalar": - scalar.source = this.source; - this.atNewLine = true; - this.indent = 0; - if (this.onNewLine) { - let nl = this.source.indexOf("\n") + 1; - while (nl !== 0) { - this.onNewLine(this.offset + nl); - nl = this.source.indexOf("\n", nl) + 1; - } - } - yield* this.pop(); - break; - default: - yield* this.pop(); - yield* this.step(); - } - } - *blockMap(map) { - var _a2; - const it = map.items[map.items.length - 1]; - switch (this.type) { - case "newline": - this.onKeyLine = false; - if (it.value) { - const end = "end" in it.value ? it.value.end : void 0; - const last = Array.isArray(end) ? end[end.length - 1] : void 0; - if ((last == null ? void 0 : last.type) === "comment") - end == null ? void 0 : end.push(this.sourceToken); - else - map.items.push({ start: [this.sourceToken] }); - } else if (it.sep) { - it.sep.push(this.sourceToken); - } else { - it.start.push(this.sourceToken); - } - return; - case "space": - case "comment": - if (it.value) { - map.items.push({ start: [this.sourceToken] }); - } else if (it.sep) { - it.sep.push(this.sourceToken); - } else { - if (this.atIndentedComment(it.start, map.indent)) { - const prev = map.items[map.items.length - 2]; - const end = (_a2 = prev == null ? void 0 : prev.value) == null ? void 0 : _a2.end; - if (Array.isArray(end)) { - Array.prototype.push.apply(end, it.start); - end.push(this.sourceToken); - map.items.pop(); - return; - } - } - it.start.push(this.sourceToken); - } - return; - } - if (this.indent >= map.indent) { - const atMapIndent = !this.onKeyLine && this.indent === map.indent; - const atNextItem = atMapIndent && (it.sep || it.explicitKey) && this.type !== "seq-item-ind"; - let start = []; - if (atNextItem && it.sep && !it.value) { - const nl = []; - for (let i = 0; i < it.sep.length; ++i) { - const st = it.sep[i]; - switch (st.type) { - case "newline": - nl.push(i); - break; - case "space": - break; - case "comment": - if (st.indent > map.indent) - nl.length = 0; - break; - default: - nl.length = 0; - } - } - if (nl.length >= 2) - start = it.sep.splice(nl[1]); - } - switch (this.type) { - case "anchor": - case "tag": - if (atNextItem || it.value) { - start.push(this.sourceToken); - map.items.push({ start }); - this.onKeyLine = true; - } else if (it.sep) { - it.sep.push(this.sourceToken); - } else { - it.start.push(this.sourceToken); - } - return; - case "explicit-key-ind": - if (!it.sep && !it.explicitKey) { - it.start.push(this.sourceToken); - it.explicitKey = true; - } else if (atNextItem || it.value) { - start.push(this.sourceToken); - map.items.push({ start, explicitKey: true }); - } else { - this.stack.push({ - type: "block-map", - offset: this.offset, - indent: this.indent, - items: [{ start: [this.sourceToken], explicitKey: true }] - }); - } - this.onKeyLine = true; - return; - case "map-value-ind": - if (it.explicitKey) { - if (!it.sep) { - if (includesToken(it.start, "newline")) { - Object.assign(it, { key: null, sep: [this.sourceToken] }); - } else { - const start2 = getFirstKeyStartProps(it.start); - this.stack.push({ - type: "block-map", - offset: this.offset, - indent: this.indent, - items: [{ start: start2, key: null, sep: [this.sourceToken] }] - }); - } - } else if (it.value) { - map.items.push({ start: [], key: null, sep: [this.sourceToken] }); - } else if (includesToken(it.sep, "map-value-ind")) { - this.stack.push({ - type: "block-map", - offset: this.offset, - indent: this.indent, - items: [{ start, key: null, sep: [this.sourceToken] }] - }); - } else if (isFlowToken(it.key) && !includesToken(it.sep, "newline")) { - const start2 = getFirstKeyStartProps(it.start); - const key = it.key; - const sep3 = it.sep; - sep3.push(this.sourceToken); - delete it.key; - delete it.sep; - this.stack.push({ - type: "block-map", - offset: this.offset, - indent: this.indent, - items: [{ start: start2, key, sep: sep3 }] - }); - } else if (start.length > 0) { - it.sep = it.sep.concat(start, this.sourceToken); - } else { - it.sep.push(this.sourceToken); - } - } else { - if (!it.sep) { - Object.assign(it, { key: null, sep: [this.sourceToken] }); - } else if (it.value || atNextItem) { - map.items.push({ start, key: null, sep: [this.sourceToken] }); - } else if (includesToken(it.sep, "map-value-ind")) { - this.stack.push({ - type: "block-map", - offset: this.offset, - indent: this.indent, - items: [{ start: [], key: null, sep: [this.sourceToken] }] - }); - } else { - it.sep.push(this.sourceToken); - } - } - this.onKeyLine = true; - return; - case "alias": - case "scalar": - case "single-quoted-scalar": - case "double-quoted-scalar": { - const fs6 = this.flowScalar(this.type); - if (atNextItem || it.value) { - map.items.push({ start, key: fs6, sep: [] }); - this.onKeyLine = true; - } else if (it.sep) { - this.stack.push(fs6); - } else { - Object.assign(it, { key: fs6, sep: [] }); - this.onKeyLine = true; - } - return; - } - default: { - const bv = this.startBlockValue(map); - if (bv) { - if (atMapIndent && bv.type !== "block-seq") { - map.items.push({ start }); - } - this.stack.push(bv); - return; - } - } - } - } - yield* this.pop(); - yield* this.step(); - } - *blockSequence(seq) { - var _a2; - const it = seq.items[seq.items.length - 1]; - switch (this.type) { - case "newline": - if (it.value) { - const end = "end" in it.value ? it.value.end : void 0; - const last = Array.isArray(end) ? end[end.length - 1] : void 0; - if ((last == null ? void 0 : last.type) === "comment") - end == null ? void 0 : end.push(this.sourceToken); - else - seq.items.push({ start: [this.sourceToken] }); - } else - it.start.push(this.sourceToken); - return; - case "space": - case "comment": - if (it.value) - seq.items.push({ start: [this.sourceToken] }); - else { - if (this.atIndentedComment(it.start, seq.indent)) { - const prev = seq.items[seq.items.length - 2]; - const end = (_a2 = prev == null ? void 0 : prev.value) == null ? void 0 : _a2.end; - if (Array.isArray(end)) { - Array.prototype.push.apply(end, it.start); - end.push(this.sourceToken); - seq.items.pop(); - return; - } - } - it.start.push(this.sourceToken); - } - return; - case "anchor": - case "tag": - if (it.value || this.indent <= seq.indent) - break; - it.start.push(this.sourceToken); - return; - case "seq-item-ind": - if (this.indent !== seq.indent) - break; - if (it.value || includesToken(it.start, "seq-item-ind")) - seq.items.push({ start: [this.sourceToken] }); - else - it.start.push(this.sourceToken); - return; - } - if (this.indent > seq.indent) { - const bv = this.startBlockValue(seq); - if (bv) { - this.stack.push(bv); - return; - } - } - yield* this.pop(); - yield* this.step(); - } - *flowCollection(fc) { - const it = fc.items[fc.items.length - 1]; - if (this.type === "flow-error-end") { - let top2; - do { - yield* this.pop(); - top2 = this.peek(1); - } while (top2 && top2.type === "flow-collection"); - } else if (fc.end.length === 0) { - switch (this.type) { - case "comma": - case "explicit-key-ind": - if (!it || it.sep) - fc.items.push({ start: [this.sourceToken] }); - else - it.start.push(this.sourceToken); - return; - case "map-value-ind": - if (!it || it.value) - fc.items.push({ start: [], key: null, sep: [this.sourceToken] }); - else if (it.sep) - it.sep.push(this.sourceToken); - else - Object.assign(it, { key: null, sep: [this.sourceToken] }); - return; - case "space": - case "comment": - case "newline": - case "anchor": - case "tag": - if (!it || it.value) - fc.items.push({ start: [this.sourceToken] }); - else if (it.sep) - it.sep.push(this.sourceToken); - else - it.start.push(this.sourceToken); - return; - case "alias": - case "scalar": - case "single-quoted-scalar": - case "double-quoted-scalar": { - const fs6 = this.flowScalar(this.type); - if (!it || it.value) - fc.items.push({ start: [], key: fs6, sep: [] }); - else if (it.sep) - this.stack.push(fs6); - else - Object.assign(it, { key: fs6, sep: [] }); - return; - } - case "flow-map-end": - case "flow-seq-end": - fc.end.push(this.sourceToken); - return; - } - const bv = this.startBlockValue(fc); - if (bv) - this.stack.push(bv); - else { - yield* this.pop(); - yield* this.step(); - } - } else { - const parent = this.peek(2); - if (parent.type === "block-map" && (this.type === "map-value-ind" && parent.indent === fc.indent || this.type === "newline" && !parent.items[parent.items.length - 1].sep)) { - yield* this.pop(); - yield* this.step(); - } else if (this.type === "map-value-ind" && parent.type !== "flow-collection") { - const prev = getPrevProps(parent); - const start = getFirstKeyStartProps(prev); - fixFlowSeqItems(fc); - const sep3 = fc.end.splice(1, fc.end.length); - sep3.push(this.sourceToken); - const map = { - type: "block-map", - offset: fc.offset, - indent: fc.indent, - items: [{ start, key: fc, sep: sep3 }] - }; - this.onKeyLine = true; - this.stack[this.stack.length - 1] = map; - } else { - yield* this.lineEnd(fc); - } - } - } - flowScalar(type) { - if (this.onNewLine) { - let nl = this.source.indexOf("\n") + 1; - while (nl !== 0) { - this.onNewLine(this.offset + nl); - nl = this.source.indexOf("\n", nl) + 1; - } - } - return { - type, - offset: this.offset, - indent: this.indent, - source: this.source - }; - } - startBlockValue(parent) { - switch (this.type) { - case "alias": - case "scalar": - case "single-quoted-scalar": - case "double-quoted-scalar": - return this.flowScalar(this.type); - case "block-scalar-header": - return { - type: "block-scalar", - offset: this.offset, - indent: this.indent, - props: [this.sourceToken], - source: "" - }; - case "flow-map-start": - case "flow-seq-start": - return { - type: "flow-collection", - offset: this.offset, - indent: this.indent, - start: this.sourceToken, - items: [], - end: [] - }; - case "seq-item-ind": - return { - type: "block-seq", - offset: this.offset, - indent: this.indent, - items: [{ start: [this.sourceToken] }] - }; - case "explicit-key-ind": { - this.onKeyLine = true; - const prev = getPrevProps(parent); - const start = getFirstKeyStartProps(prev); - start.push(this.sourceToken); - return { - type: "block-map", - offset: this.offset, - indent: this.indent, - items: [{ start, explicitKey: true }] - }; - } - case "map-value-ind": { - this.onKeyLine = true; - const prev = getPrevProps(parent); - const start = getFirstKeyStartProps(prev); - return { - type: "block-map", - offset: this.offset, - indent: this.indent, - items: [{ start, key: null, sep: [this.sourceToken] }] - }; - } - } - return null; - } - atIndentedComment(start, indent) { - if (this.type !== "comment") - return false; - if (this.indent <= indent) - return false; - return start.every((st) => st.type === "newline" || st.type === "space"); - } - *documentEnd(docEnd) { - if (this.type !== "doc-mode") { - if (docEnd.end) - docEnd.end.push(this.sourceToken); - else - docEnd.end = [this.sourceToken]; - if (this.type === "newline") - yield* this.pop(); - } - } - *lineEnd(token) { - switch (this.type) { - case "comma": - case "doc-start": - case "doc-end": - case "flow-seq-end": - case "flow-map-end": - case "map-value-ind": - yield* this.pop(); - yield* this.step(); - break; - case "newline": - this.onKeyLine = false; - case "space": - case "comment": - default: - if (token.end) - token.end.push(this.sourceToken); - else - token.end = [this.sourceToken]; - if (this.type === "newline") - yield* this.pop(); - } - } - }; - exports.Parser = Parser2; - } -}); - -// node_modules/yaml/dist/public-api.js -var require_public_api = __commonJS({ - "node_modules/yaml/dist/public-api.js"(exports) { - "use strict"; - var composer = require_composer(); - var Document = require_Document(); - var errors = require_errors(); - var log = require_log(); - var identity = require_identity(); - var lineCounter = require_line_counter(); - var parser2 = require_parser2(); - function parseOptions2(options) { - const prettyErrors = options.prettyErrors !== false; - const lineCounter$1 = options.lineCounter || prettyErrors && new lineCounter.LineCounter() || null; - return { lineCounter: lineCounter$1, prettyErrors }; - } - function parseAllDocuments(source, options = {}) { - const { lineCounter: lineCounter2, prettyErrors } = parseOptions2(options); - const parser$1 = new parser2.Parser(lineCounter2 == null ? void 0 : lineCounter2.addNewLine); - const composer$1 = new composer.Composer(options); - const docs = Array.from(composer$1.compose(parser$1.parse(source))); - if (prettyErrors && lineCounter2) - for (const doc of docs) { - doc.errors.forEach(errors.prettifyError(source, lineCounter2)); - doc.warnings.forEach(errors.prettifyError(source, lineCounter2)); - } - if (docs.length > 0) - return docs; - return Object.assign([], { empty: true }, composer$1.streamInfo()); - } - function parseDocument(source, options = {}) { - const { lineCounter: lineCounter2, prettyErrors } = parseOptions2(options); - const parser$1 = new parser2.Parser(lineCounter2 == null ? void 0 : lineCounter2.addNewLine); - const composer$1 = new composer.Composer(options); - let doc = null; - for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) { - if (!doc) - doc = _doc; - else if (doc.options.logLevel !== "silent") { - doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), "MULTIPLE_DOCS", "Source contains multiple documents; please use YAML.parseAllDocuments()")); - break; - } - } - if (prettyErrors && lineCounter2) { - doc.errors.forEach(errors.prettifyError(source, lineCounter2)); - doc.warnings.forEach(errors.prettifyError(source, lineCounter2)); - } - return doc; - } - function parse4(src, reviver, options) { - let _reviver = void 0; - if (typeof reviver === "function") { - _reviver = reviver; - } else if (options === void 0 && reviver && typeof reviver === "object") { - options = reviver; - } - const doc = parseDocument(src, options); - if (!doc) - return null; - doc.warnings.forEach((warning) => log.warn(doc.options.logLevel, warning)); - if (doc.errors.length > 0) { - if (doc.options.logLevel !== "silent") - throw doc.errors[0]; - else - doc.errors = []; - } - return doc.toJS(Object.assign({ reviver: _reviver }, options)); - } - function stringify(value, replacer, options) { - let _replacer = null; - if (typeof replacer === "function" || Array.isArray(replacer)) { - _replacer = replacer; - } else if (options === void 0 && replacer) { - options = replacer; - } - if (typeof options === "string") - options = options.length; - if (typeof options === "number") { - const indent = Math.round(options); - options = indent < 1 ? void 0 : indent > 8 ? { indent: 8 } : { indent }; - } - if (value === void 0) { - const { keepUndefined } = options ?? replacer ?? {}; - if (!keepUndefined) - return void 0; - } - if (identity.isDocument(value) && !_replacer) - return value.toString(options); - return new Document.Document(value, _replacer, options).toString(options); - } - exports.parse = parse4; - exports.parseAllDocuments = parseAllDocuments; - exports.parseDocument = parseDocument; - exports.stringify = stringify; - } -}); - -// node_modules/yaml/dist/index.js -var require_dist2 = __commonJS({ - "node_modules/yaml/dist/index.js"(exports) { - "use strict"; - var composer = require_composer(); - var Document = require_Document(); - var Schema = require_Schema(); - var errors = require_errors(); - var Alias = require_Alias(); - var identity = require_identity(); - var Pair = require_Pair(); - var Scalar = require_Scalar(); - var YAMLMap = require_YAMLMap(); - var YAMLSeq = require_YAMLSeq(); - var cst = require_cst(); - var lexer = require_lexer(); - var lineCounter = require_line_counter(); - var parser2 = require_parser2(); - var publicApi = require_public_api(); - var visit = require_visit(); - exports.Composer = composer.Composer; - exports.Document = Document.Document; - exports.Schema = Schema.Schema; - exports.YAMLError = errors.YAMLError; - exports.YAMLParseError = errors.YAMLParseError; - exports.YAMLWarning = errors.YAMLWarning; - exports.Alias = Alias.Alias; - exports.isAlias = identity.isAlias; - exports.isCollection = identity.isCollection; - exports.isDocument = identity.isDocument; - exports.isMap = identity.isMap; - exports.isNode = identity.isNode; - exports.isPair = identity.isPair; - exports.isScalar = identity.isScalar; - exports.isSeq = identity.isSeq; - exports.Pair = Pair.Pair; - exports.Scalar = Scalar.Scalar; - exports.YAMLMap = YAMLMap.YAMLMap; - exports.YAMLSeq = YAMLSeq.YAMLSeq; - exports.CST = cst; - exports.Lexer = lexer.Lexer; - exports.LineCounter = lineCounter.LineCounter; - exports.Parser = parser2.Parser; - exports.parse = publicApi.parse; - exports.parseAllDocuments = publicApi.parseAllDocuments; - exports.parseDocument = publicApi.parseDocument; - exports.stringify = publicApi.stringify; - exports.visit = visit.visit; - exports.visitAsync = visit.visitAsync; - } -}); - // node_modules/ejs/lib/utils.js var require_utils5 = __commonJS({ "node_modules/ejs/lib/utils.js"(exports) { @@ -27241,8 +19935,8 @@ var require_package = __commonJS({ var require_ejs = __commonJS({ "node_modules/ejs/lib/ejs.js"(exports) { "use strict"; - var fs6 = __require("fs"); - var path9 = __require("path"); + var fs5 = __require("fs"); + var path8 = __require("path"); var utils = require_utils5(); var scopeOptionWarned = false; var _VERSION_STRING = require_package().version; @@ -27269,14 +19963,14 @@ var require_ejs = __commonJS({ var _BOM = /^\uFEFF/; var _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/; exports.cache = utils.cache; - exports.fileLoader = fs6.readFileSync; + exports.fileLoader = fs5.readFileSync; exports.localsName = _DEFAULT_LOCALS_NAME; exports.promiseImpl = new Function("return this;")().Promise; exports.resolveInclude = function(name, filename, isDir) { - var dirname8 = path9.dirname; - var extname3 = path9.extname; - var resolve13 = path9.resolve; - var includePath = resolve13(isDir ? filename : dirname8(filename), name); + var dirname8 = path8.dirname; + var extname3 = path8.extname; + var resolve12 = path8.resolve; + var includePath = resolve12(isDir ? filename : dirname8(filename), name); var ext3 = extname3(name); if (!ext3) { includePath += ".ejs"; @@ -27287,35 +19981,35 @@ var require_ejs = __commonJS({ var filePath; if (paths.some(function(v) { filePath = exports.resolveInclude(name, v, true); - return fs6.existsSync(filePath); + return fs5.existsSync(filePath); })) { return filePath; } } - function getIncludePath(path10, options) { + function getIncludePath(path9, options) { var includePath; var filePath; var views = options.views; - var match3 = /^[A-Za-z]+:\\|^\//.exec(path10); + var match3 = /^[A-Za-z]+:\\|^\//.exec(path9); if (match3 && match3.length) { - path10 = path10.replace(/^\/*/, ""); + path9 = path9.replace(/^\/*/, ""); if (Array.isArray(options.root)) { - includePath = resolvePaths(path10, options.root); + includePath = resolvePaths(path9, options.root); } else { - includePath = exports.resolveInclude(path10, options.root || "/", true); + includePath = exports.resolveInclude(path9, options.root || "/", true); } } else { if (options.filename) { - filePath = exports.resolveInclude(path10, options.filename); - if (fs6.existsSync(filePath)) { + filePath = exports.resolveInclude(path9, options.filename); + if (fs5.existsSync(filePath)) { includePath = filePath; } } if (!includePath && Array.isArray(views)) { - includePath = resolvePaths(path10, views); + includePath = resolvePaths(path9, views); } if (!includePath && typeof options.includer !== "function") { - throw new Error('Could not find the include file "' + options.escapeFunction(path10) + '"'); + throw new Error('Could not find the include file "' + options.escapeFunction(path9) + '"'); } } return includePath; @@ -27351,10 +20045,10 @@ var require_ejs = __commonJS({ var result; if (!cb) { if (typeof exports.promiseImpl == "function") { - return new exports.promiseImpl(function(resolve13, reject) { + return new exports.promiseImpl(function(resolve12, reject) { try { result = handleCache(options)(data); - resolve13(result); + resolve12(result); } catch (err) { reject(err); } @@ -27374,11 +20068,11 @@ var require_ejs = __commonJS({ function fileLoader(filePath) { return exports.fileLoader(filePath); } - function includeFile(path10, options) { + function includeFile(path9, options) { var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options); - opts.filename = getIncludePath(path10, opts); + opts.filename = getIncludePath(path9, opts); if (typeof options.includer === "function") { - var includerResult = options.includer(path10, opts.filename); + var includerResult = options.includer(path9, opts.filename); if (includerResult) { if (includerResult.filename) { opts.filename = includerResult.filename; @@ -27613,12 +20307,12 @@ var require_ejs = __commonJS({ throw e; } var returnedFn = opts.client ? fn : function anonymous(data) { - var include = function(path10, includeData) { + var include = function(path9, includeData) { var d = utils.shallowCopy(utils.createNullProtoObjWherePossible(), data); if (includeData) { d = utils.shallowCopy(d, includeData); } - return includeFile(path10, opts)(d); + return includeFile(path9, opts)(d); }; return fn.apply( opts.context, @@ -27627,7 +20321,7 @@ var require_ejs = __commonJS({ }; if (opts.filename && typeof Object.defineProperty === "function") { var filename = opts.filename; - var basename2 = path9.basename(filename, path9.extname(filename)); + var basename2 = path8.basename(filename, path8.extname(filename)); try { Object.defineProperty(returnedFn, "name", { value: basename2, @@ -28572,7 +21266,7 @@ var require_unescape = __commonJS({ }); // node_modules/folder-hash/node_modules/minimatch/dist/cjs/index.js -var require_cjs2 = __commonJS({ +var require_cjs = __commonJS({ "node_modules/folder-hash/node_modules/minimatch/dist/cjs/index.js"(exports) { "use strict"; var __importDefault = exports && exports.__importDefault || function(mod) { @@ -28644,11 +21338,11 @@ var require_cjs2 = __commonJS({ return (f) => f.length === len && f !== "." && f !== ".."; }; var defaultPlatform3 = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix"; - var path9 = { + var path8 = { win32: { sep: "\\" }, posix: { sep: "/" } }; - exports.sep = defaultPlatform3 === "win32" ? path9.win32.sep : path9.posix.sep; + exports.sep = defaultPlatform3 === "win32" ? path8.win32.sep : path8.posix.sep; exports.minimatch.sep = exports.sep; exports.GLOBSTAR = Symbol("globstar **"); exports.minimatch.GLOBSTAR = exports.GLOBSTAR; @@ -29004,10 +21698,10 @@ var require_cjs2 = __commonJS({ let ai = 0; let bi = 0; let result = []; - let which2 = ""; + let which = ""; while (ai < a.length && bi < b.length) { if (a[ai] === b[bi]) { - result.push(which2 === "b" ? b[bi] : a[ai]); + result.push(which === "b" ? b[bi] : a[ai]); ai++; bi++; } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) { @@ -29017,16 +21711,16 @@ var require_cjs2 = __commonJS({ result.push(b[bi]); bi++; } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") { - if (which2 === "b") + if (which === "b") return false; - which2 = "a"; + which = "a"; result.push(a[ai]); ai++; bi++; } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") { - if (which2 === "a") + if (which === "a") return false; - which2 = "b"; + which = "b"; result.push(b[bi]); ai++; bi++; @@ -29494,7 +22188,7 @@ var require_index_cjs = __commonJS({ var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; - var index_js_1 = __importDefault(require_cjs2()); + var index_js_1 = __importDefault(require_cjs()); module.exports = Object.assign(index_js_1.default, { default: index_js_1.default, minimatch: index_js_1.default }); } }); @@ -29505,7 +22199,7 @@ var require_folder_hash = __commonJS({ var crypto = __require("crypto"); var debug = require_src(); var minimatch3 = require_index_cjs(); - var path9 = __require("path"); + var path8 = __require("path"); var defaultOptions = { algo: "sha1", algoOptions: {}, @@ -29545,14 +22239,14 @@ var require_folder_hash = __commonJS({ queue: debug("fhash:queue"), glob: debug("fhash:glob") }; - function prep(fs6) { + function prep(fs5) { let queue = []; let queueTimer = void 0; function hashElement2(name, dir, options, callback) { callback = arguments[arguments.length - 1]; return parseParameters(arguments).then(({ basename: basename2, dir: dir2, options: options2 }) => { options2.skipMatching = true; - return fs6.promises.lstat(path9.join(dir2, basename2)).then((stats) => { + return fs5.promises.lstat(path8.join(dir2, basename2)).then((stats) => { stats.name = basename2; return stats; }).then((stats) => hashElementPromise(stats, dir2, options2, true)); @@ -29587,10 +22281,10 @@ var require_folder_hash = __commonJS({ return promise.catch((err) => { if (err.code && (err.code === "EMFILE" || err.code === "ENFILE")) { log.queue(`queued ${dirname8}/${name} because of ${err.code}`); - const promise2 = new Promise((resolve13, reject) => { + const promise2 = new Promise((resolve12, reject) => { queue.push(() => { log.queue(`Will processs queued ${dirname8}/${name}`); - return hashElementPromise(stats, dirname8, options, isRootElement).then((ok) => resolve13(ok)).catch((err2) => reject(err2)); + return hashElementPromise(stats, dirname8, options, isRootElement).then((ok) => resolve12(ok)).catch((err2) => reject(err2)); }); }); if (queueTimer === void 0) { @@ -29608,7 +22302,7 @@ var require_folder_hash = __commonJS({ runnables.forEach((run) => run()); } async function hashFolderPromise(name, dir, options, isRootElement = false) { - const folderPath = path9.join(dir, name); + const folderPath = path8.join(dir, name); let ignoreBasenameOnce = options.ignoreBasenameOnce; delete options.ignoreBasenameOnce; if (options.skipMatching) { @@ -29617,7 +22311,7 @@ var require_folder_hash = __commonJS({ } else if (ignore(name, folderPath, options.folders)) { return void 0; } - const files = await fs6.promises.readdir(folderPath, { withFileTypes: true }); + const files = await fs5.promises.readdir(folderPath, { withFileTypes: true }); const children = await Promise.all( files.sort((a, b) => a.name.localeCompare(b.name)).map((child) => hashElementPromise(child, folderPath, options)) ); @@ -29627,14 +22321,14 @@ var require_folder_hash = __commonJS({ return hash; } function hashFilePromise(name, dir, options, isRootElement = false) { - const filePath = path9.join(dir, name); + const filePath = path8.join(dir, name); if (options.skipMatching) { log.match(`skipped '${filePath}'`); delete options.skipMatching; } else if (ignore(name, filePath, options.files)) { return Promise.resolve(void 0); } - return new Promise((resolve13, reject) => { + return new Promise((resolve12, reject) => { try { const hash = crypto.createHash(options.algo, options.algoOptions); if (options.files.ignoreBasename || options.ignoreBasenameOnce || isRootElement && options.files.ignoreRootName) { @@ -29643,14 +22337,14 @@ var require_folder_hash = __commonJS({ } else { hash.update(name); } - const f = fs6.createReadStream(filePath); + const f = fs5.createReadStream(filePath); f.on("error", (err) => { reject(err); }); f.pipe(hash, { end: false }); f.on("end", () => { const hashedFile = new HashedFile(name, hash, options.encoding); - return resolve13(hashedFile); + return resolve12(hashedFile); }); } catch (ex) { return reject(ex); @@ -29658,7 +22352,7 @@ var require_folder_hash = __commonJS({ }); } async function hashSymLinkPromise(name, dir, options, isRootElement = false) { - const target = await fs6.promises.readlink(path9.join(dir, name)); + const target = await fs5.promises.readlink(path8.join(dir, name)); log.symlink(`handling symbolic link ${name} -> ${target}`); if (options.symbolicLinks.include) { if (options.symbolicLinks.ignoreTargetContent) { @@ -29691,7 +22385,7 @@ var require_folder_hash = __commonJS({ options.ignoreBasenameOnce = true; } try { - const stats = await fs6.promises.stat(path9.join(dir, name)); + const stats = await fs5.promises.stat(path8.join(dir, name)); stats.name = name; const temp = await hashElementPromise(stats, dir, options, isRootElement); if (!options.symbolicLinks.ignoreTargetPath) { @@ -29719,13 +22413,13 @@ var require_folder_hash = __commonJS({ } } } - function ignore(name, path10, rules) { + function ignore(name, path9, rules) { if (rules.exclude) { if (rules.matchBasename && rules.exclude(name)) { log.match(`exclude basename '${name}'`); return true; - } else if (rules.matchPath && rules.exclude(path10)) { - log.match(`exclude path '${path10}'`); + } else if (rules.matchPath && rules.exclude(path9)) { + log.match(`exclude path '${path9}'`); return true; } } @@ -29733,15 +22427,15 @@ var require_folder_hash = __commonJS({ if (rules.matchBasename && rules.include(name)) { log.match(`include basename '${name}'`); return false; - } else if (rules.matchPath && rules.include(path10)) { - log.match(`include path '${path10}'`); + } else if (rules.matchPath && rules.include(path9)) { + log.match(`include path '${path9}'`); return false; } else { - log.match(`include rule failed for path '${path10}'`); + log.match(`include rule failed for path '${path9}'`); return true; } } - log.match(`Will not ignore unmatched '${path10}'`); + log.match(`Will not ignore unmatched '${path9}'`); return false; } return hashElement2; @@ -29752,8 +22446,8 @@ var require_folder_hash = __commonJS({ return Promise.reject(new TypeError("First argument must be a string")); } if (!isString(dir)) { - dir = path9.dirname(basename2); - basename2 = path9.basename(basename2); + dir = path8.dirname(basename2); + basename2 = path8.basename(basename2); options_ = args[1]; } if (!isObject(options_)) @@ -31125,11 +23819,11 @@ var parser = new YargsParser({ format, normalize, resolve: resolve2, - require: (path9) => { + require: (path8) => { if (typeof __require !== "undefined") { - return __require(path9); - } else if (path9.match(/\.json$/)) { - return JSON.parse(readFileSync(path9, "utf8")); + return __require(path8); + } else if (path8.match(/\.json$/)) { + return JSON.parse(readFileSync(path8, "utf8")); } else { throw Error("only .json config files are supported in ESM"); } @@ -33656,12 +26350,12 @@ var YargsInstance = class { async getCompletion(args, done) { argsert(" [function]", [args, done], arguments.length); if (!done) { - return new Promise((resolve13, reject) => { + return new Promise((resolve12, reject) => { __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, (err, completions) => { if (err) reject(err); else - resolve13(completions); + resolve12(completions); }); }); } else { @@ -35819,10 +28513,10 @@ var Minimatch = class { let ai = 0; let bi = 0; let result = []; - let which2 = ""; + let which = ""; while (ai < a.length && bi < b.length) { if (a[ai] === b[bi]) { - result.push(which2 === "b" ? b[bi] : a[ai]); + result.push(which === "b" ? b[bi] : a[ai]); ai++; bi++; } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) { @@ -35832,16 +28526,16 @@ var Minimatch = class { result.push(b[bi]); bi++; } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") { - if (which2 === "b") + if (which === "b") return false; - which2 = "a"; + which = "a"; result.push(a[ai]); ai++; bi++; } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") { - if (which2 === "a") + if (which === "a") return false; - which2 = "b"; + which = "b"; result.push(b[bi]); ai++; bi++; @@ -37368,13 +30062,13 @@ var ScreenManager = class { // node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js var PromisePolyfill = class extends Promise { static withResolver() { - let resolve13; + let resolve12; let reject; const promise = new Promise((res, rej) => { - resolve13 = res; + resolve12 = res; reject = rej; }); - return { promise, resolve: resolve13, reject }; + return { promise, resolve: resolve12, reject }; } }; @@ -37409,7 +30103,7 @@ function createPrompt(view) { output }); const screen = new ScreenManager(rl); - const { promise, resolve: resolve13, reject } = PromisePolyfill.withResolver(); + const { promise, resolve: resolve12, reject } = PromisePolyfill.withResolver(); const cancel = () => reject(new CancelPromptError()); if (signal) { const abort = () => reject(new AbortPromptError({ cause: signal.reason })); @@ -37433,7 +30127,7 @@ function createPrompt(view) { cycle(() => { try { const nextView = view(config, (value) => { - setImmediate(() => resolve13(value)); + setImmediate(() => resolve12(value)); }); if (nextView === void 0) { throw new Error(`Prompt functions must return a string. @@ -38887,12 +31581,12 @@ var ValidateFileModule = { // bazel-out/k8-fastbuild/bin/ng-dev/commit-message/utils.js var import_git_raw_commits = __toESM(require_git_raw_commits()); function getCommitsInRange(from, to = "HEAD") { - return new Promise((resolve13, reject) => { + return new Promise((resolve12, reject) => { const commits = []; const commitStream = (0, import_git_raw_commits.default)({ from, to, format: gitLogFormatForParsing }); commitStream.on("data", (commit) => commits.push(parseCommitFromGitLog(commit))); commitStream.on("error", (err) => reject(err)); - commitStream.on("end", () => resolve13(commits)); + commitStream.on("end", () => resolve12(commits)); }); } @@ -39925,10 +32619,10 @@ var Minimatch2 = class { let ai = 0; let bi = 0; let result = []; - let which2 = ""; + let which = ""; while (ai < a.length && bi < b.length) { if (a[ai] === b[bi]) { - result.push(which2 === "b" ? b[bi] : a[ai]); + result.push(which === "b" ? b[bi] : a[ai]); ai++; bi++; } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) { @@ -39938,16 +32632,16 @@ var Minimatch2 = class { result.push(b[bi]); bi++; } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") { - if (which2 === "b") + if (which === "b") return false; - which2 = "a"; + which = "a"; result.push(a[ai]); ai++; bi++; } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") { - if (which2 === "a") + if (which === "a") return false; - which2 = "b"; + which = "b"; result.push(b[bi]); ai++; bi++; @@ -40365,7 +33059,7 @@ async function getActiveFormatters() { // bazel-out/k8-fastbuild/bin/ng-dev/format/run-commands-parallel.js var AVAILABLE_THREADS = Math.max(Math.min(cpus().length, 8) - 1, 1); function runFormatterInParallel(allFiles, action) { - return new Promise(async (resolve13) => { + return new Promise(async (resolve12) => { const formatters = await getActiveFormatters(); const failures = []; const pendingCommands = []; @@ -40373,7 +33067,7 @@ function runFormatterInParallel(allFiles, action) { pendingCommands.push(...multimatch.call(void 0, allFiles, formatter.getFileMatcher(), { dot: true }).map((file) => ({ formatter, file }))); } if (pendingCommands.length === 0) { - return resolve13(false); + return resolve12(false); } switch (action) { case "format": @@ -40413,7 +33107,7 @@ function runFormatterInParallel(allFiles, action) { threads[thread] = false; if (threads.every((active) => !active)) { progressBar.stop(); - resolve13(failures); + resolve12(failures); } }); threads[thread] = true; @@ -40575,13 +33269,13 @@ import { fileURLToPath as fileURLToPath2 } from "url"; import { fork } from "child_process"; var BuildWorker = class { static async invokeBuild() { - return new Promise((resolve13) => { + return new Promise((resolve12) => { const buildProcess = fork(getBuildWorkerScriptPath(), { stdio: ["inherit", 2, 2, "ipc"] }); let builtPackages = null; buildProcess.on("message", (buildResponse) => builtPackages = buildResponse); - buildProcess.on("exit", () => resolve13(builtPackages)); + buildProcess.on("exit", () => resolve12(builtPackages)); }); } }; @@ -40595,7 +33289,7 @@ function builder10(argv) { return argv.positional("projectRoot", { type: "string", normalize: true, - coerce: (path9) => resolve6(path9), + coerce: (path8) => resolve6(path8), demandOption: true }); } @@ -40632,7 +33326,7 @@ var BuildAndLinkCommandModule = { // bazel-out/k8-fastbuild/bin/ng-dev/misc/update-yarn/cli.js import { readdirSync as readdirSync2, unlinkSync as unlinkSync2 } from "fs"; -import { join as join5 } from "path"; +import { join as join4 } from "path"; // bazel-out/k8-fastbuild/bin/ng-dev/utils/spinner.js import { cursorTo, clearLine } from "readline"; @@ -40714,110 +33408,6 @@ ${text}.`); } }; -// bazel-out/k8-fastbuild/bin/ng-dev/utils/resolve-yarn-bin.js -var import_which = __toESM(require_lib3()); -import * as fs2 from "fs"; -import * as path4 from "path"; - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/nodejs-errors.js -function isNodeJSWrappedError(value, errorType) { - return value instanceof errorType; -} - -// bazel-out/k8-fastbuild/bin/ng-dev/utils/resolve-yarn-bin.js -var import_yaml = __toESM(require_dist2()); -import lockfile from "@yarnpkg/lockfile"; -var yarnConfigFiles = [ - { fileName: ".yarnrc", parse: (c) => lockfile.parse(c).object }, - { fileName: ".yarnrc.yml", parse: (c) => (0, import_yaml.parse)(c) } -]; -async function resolveYarnScriptForProject(projectDir) { - let info2; - const yarnPathFromConfig = await getYarnPathFromConfigurationIfPresent(projectDir); - if (yarnPathFromConfig !== null) { - info2 = { binary: "node", args: [yarnPathFromConfig] }; - } - if (!info2) { - const yarnPathFromNpmBin = await getYarnPathFromNpmGlobalBinaries(); - if (yarnPathFromNpmBin !== null) { - info2 = { binary: yarnPathFromNpmBin, args: [] }; - } - } - info2 ?? (info2 = { binary: "yarn", args: [] }); - const yarnVersion = await getYarnVersion(info2); - if (yarnVersion && Number(yarnVersion.split(".")[0]) < 2) { - info2.args.push("--silent"); - info2.legacy = true; - } - return info2; -} -async function getYarnPathFromNpmGlobalBinaries() { - const npmGlobalBinPath = await getNpmGlobalBinPath(); - if (npmGlobalBinPath === null) { - return null; - } - try { - return await (0, import_which.default)("yarn", { path: npmGlobalBinPath }); - } catch (e) { - Log.debug("Could not find Yarn within NPM global binary directory. Error:", e); - return null; - } -} -async function getNpmGlobalBinPath() { - try { - return (await ChildProcess.spawn("npm", ["bin", "--global"], { mode: "silent" })).stdout.trim(); - } catch (e) { - Log.debug("Could not determine NPM global binary directory. Error:", e); - return null; - } -} -async function getYarnPathFromConfigurationIfPresent(projectDir) { - const yarnRc = await findAndParseYarnConfiguration(projectDir); - if (yarnRc === null) { - return null; - } - const yarnPath = yarnRc["yarn-path"] ?? yarnRc["yarnPath"]; - if (yarnPath === void 0) { - return null; - } - return path4.resolve(projectDir, yarnPath); -} -async function getYarnVersion(info2) { - try { - return (await ChildProcess.spawn(info2.binary, [...info2.args, "--version"], { mode: "silent" })).stdout.trim(); - } catch (e) { - Log.debug("Could not determine Yarn version. Error:", e); - return null; - } -} -async function findAndParseYarnConfiguration(projectDir) { - const files = await Promise.all(yarnConfigFiles.map(async (entry) => ({ - entry, - content: await readFileGracefully(path4.join(projectDir, entry.fileName)) - }))); - const config = files.find((entry) => entry.content !== null); - if (config === void 0) { - return null; - } - try { - return config.entry.parse(config.content); - } catch (e) { - Log.debug(`Could not parse determined Yarn configuration file (${config.entry.fileName}).`); - Log.debug(`Error:`, e); - return null; - } -} -async function readFileGracefully(filePath) { - try { - return await fs2.promises.readFile(filePath, "utf8"); - } catch (error) { - if (isNodeJSWrappedError(error, Error) && error.code === "ENOENT") { - return null; - } - throw error; - } -} - // bazel-out/k8-fastbuild/bin/ng-dev/misc/update-yarn/cli.js async function builder11(argv) { return addGithubTokenOption(argv); @@ -40846,8 +33436,8 @@ async function handler11() { git.run(["fetch", "-q", git.getRepoGitUrl(), mainBranchName]); git.checkout("FETCH_HEAD", false); spinner.update("Removing previous yarn version."); - const yarnReleasesDir = join5(git.baseDir, ".yarn/releases"); - readdirSync2(yarnReleasesDir).forEach((file) => unlinkSync2(join5(yarnReleasesDir, file))); + const yarnReleasesDir = join4(git.baseDir, ".yarn/releases"); + readdirSync2(yarnReleasesDir).forEach((file) => unlinkSync2(join4(yarnReleasesDir, file))); spinner.update("Updating yarn version."); ChildProcess.spawnSync(yarnGlobalBin, ["policies", "set-version", "latest"]); spinner.update("Confirming the version of yarn was updated."); @@ -40907,11 +33497,11 @@ var UpdateYarnCommandModule = { }; // bazel-out/k8-fastbuild/bin/ng-dev/utils/bazel-bin.js -import { join as join6 } from "path"; +import { join as join5 } from "path"; var BAZEL_BIN = void 0; function getBazelBin() { if (BAZEL_BIN === void 0) { - BAZEL_BIN = process.env.BAZEL || join6(determineRepoBaseDirFromCwd(), "node_modules/.bin/bazel"); + BAZEL_BIN = process.env.BAZEL || join5(determineRepoBaseDirFromCwd(), "node_modules/.bin/bazel"); } return BAZEL_BIN; } @@ -40968,15 +33558,15 @@ function buildMiscParser(localYargs) { } // bazel-out/k8-fastbuild/bin/ng-dev/ngbot/verify.js -var import_yaml2 = __toESM(require_dist2()); +var import_yaml = __toESM(require_dist2()); import { readFileSync as readFileSync6 } from "fs"; -import { resolve as resolve8 } from "path"; +import { resolve as resolve7 } from "path"; async function verify() { const git = await GitClient.get(); - const NGBOT_CONFIG_YAML_PATH = resolve8(git.baseDir, ".github/angular-robot.yml"); + const NGBOT_CONFIG_YAML_PATH = resolve7(git.baseDir, ".github/angular-robot.yml"); const ngBotYaml = readFileSync6(NGBOT_CONFIG_YAML_PATH, "utf8"); try { - (0, import_yaml2.parse)(ngBotYaml); + (0, import_yaml.parse)(ngBotYaml); Log.info(green("\u2714 Valid NgBot YAML config")); } catch (e) { Log.error(`! Invalid NgBot YAML config`); @@ -41212,7 +33802,7 @@ var CheckTargetBranchesModule = { }; // bazel-out/k8-fastbuild/bin/ng-dev/pr/checkout/checkout.js -import { dirname as dirname4, join as join7 } from "path"; +import { dirname as dirname4, join as join6 } from "path"; // bazel-out/k8-fastbuild/bin/ng-dev/pr/common/checkout-pr.js var import_typed_graphqlify3 = __toESM(require_dist()); @@ -41546,7 +34136,7 @@ async function checkoutPullRequest(params4, config) { } function getCommitMessageFilterScriptPath() { const bundlesDir = dirname4(fileURLToPath3(import.meta.url)); - return join7(bundlesDir, "./pr/checkout/commit-message-filter.mjs"); + return join6(bundlesDir, "./pr/checkout/commit-message-filter.mjs"); } // bazel-out/k8-fastbuild/bin/ng-dev/pr/checkout/cli.js @@ -42044,7 +34634,7 @@ var Validation3 = class extends PullRequestValidation { }; // bazel-out/k8-fastbuild/bin/ng-dev/pr/common/validation/assert-isolated-separate-files.js -import path5 from "path"; +import path4 from "path"; var isolatedSeparateFilesValidation = createPullRequestValidation({ name: "assertIsolatedSeparateFiles", canBeForceIgnored: true }, () => Validation4); var Validation4 = class extends PullRequestValidation { async assert(config, prNumber, gitClient) { @@ -42074,7 +34664,7 @@ async function getGsyncConfig(config, git) { let googleSyncConfig = null; if (config.g3SyncConfigPath) { try { - const configPath = path5.join(git.baseDir, config.g3SyncConfigPath); + const configPath = path4.join(git.baseDir, config.g3SyncConfigPath); googleSyncConfig = await getGoogleSyncConfig(configPath); } catch { } @@ -42094,8 +34684,8 @@ var PullRequestFiles = class { async pullRequestHasSeparateFiles() { const pullRequestFiles = await this.loadPullRequestFiles(); const separateFilePatterns = this.config.separateFilePatterns.map((p) => new Minimatch(p)); - for (let path9 of pullRequestFiles) { - if (separateFilePatterns.some((p) => p.match(path9))) { + for (let path8 of pullRequestFiles) { + if (separateFilePatterns.some((p) => p.match(path8))) { return true; } } @@ -42498,7 +35088,7 @@ var GithubApiMergeStrategy = class extends MergeStrategy { }; // bazel-out/k8-fastbuild/bin/ng-dev/pr/merge/strategies/autosquash-merge.js -import { dirname as dirname5, join as join8 } from "path"; +import { dirname as dirname5, join as join7 } from "path"; import { fileURLToPath as fileURLToPath4 } from "url"; var AutosquashMergeStrategy = class extends MergeStrategy { async merge(pullRequest) { @@ -42524,7 +35114,7 @@ var AutosquashMergeStrategy = class extends MergeStrategy { this.pushTargetBranchesUpstream(targetBranches); const localBranch = this.getLocalTargetBranchName(githubTargetBranch); const sha = this.git.run(["rev-parse", localBranch]).stdout.trim(); - await new Promise((resolve13) => setTimeout(resolve13, parseInt(process.env["AUTOSQUASH_TIMEOUT"] || "0"))); + await new Promise((resolve12) => setTimeout(resolve12, parseInt(process.env["AUTOSQUASH_TIMEOUT"] || "0"))); await this.git.github.issues.createComment({ ...this.git.remoteParams, issue_number: pullRequest.prNumber, @@ -42543,7 +35133,7 @@ The changes were merged into the following branches: ${targetBranches.join(", ") }; function getCommitMessageFilterScriptPath2() { const bundlesDir = dirname5(fileURLToPath4(import.meta.url)); - return join8(bundlesDir, "./pr/merge/strategies/commit-message-filter.mjs"); + return join7(bundlesDir, "./pr/merge/strategies/commit-message-filter.mjs"); } // bazel-out/k8-fastbuild/bin/ng-dev/pr/merge/merge-tool.js @@ -42895,7 +35485,7 @@ function buildPrParser(localYargs) { // bazel-out/k8-fastbuild/bin/ng-dev/pullapprove/verify.js import { readFileSync as readFileSync7 } from "fs"; -import { resolve as resolve9 } from "path"; +import { resolve as resolve8 } from "path"; // bazel-out/k8-fastbuild/bin/ng-dev/pullapprove/logging.js function logGroup(group, conditionsToPrint, printMessageFn = Log.info) { @@ -42926,7 +35516,7 @@ function logHeader(...params4) { } // bazel-out/k8-fastbuild/bin/ng-dev/pullapprove/parse-yaml.js -var import_yaml3 = __toESM(require_dist2()); +var import_yaml2 = __toESM(require_dist2()); // bazel-out/k8-fastbuild/bin/ng-dev/pullapprove/condition_errors.js var PullApproveGroupStateDependencyError = class extends Error { @@ -43092,7 +35682,7 @@ From the [${this.groupName}] group: // bazel-out/k8-fastbuild/bin/ng-dev/pullapprove/parse-yaml.js function parsePullApproveYaml(rawYaml) { - return (0, import_yaml3.parse)(rawYaml, { merge: true }); + return (0, import_yaml2.parse)(rawYaml, { merge: true }); } function getGroupsFromYaml(pullApproveYamlRaw) { const pullApprove = parsePullApproveYaml(pullApproveYamlRaw); @@ -43104,7 +35694,7 @@ function getGroupsFromYaml(pullApproveYamlRaw) { // bazel-out/k8-fastbuild/bin/ng-dev/pullapprove/verify.js async function verify2() { const git = await GitClient.get(); - const PULL_APPROVE_YAML_PATH = resolve9(git.baseDir, ".pullapprove.yml"); + const PULL_APPROVE_YAML_PATH = resolve8(git.baseDir, ".pullapprove.yml"); const REPO_FILES = git.allFiles(); const pullApproveYamlRaw = readFileSync7(PULL_APPROVE_YAML_PATH, "utf8"); const groups = getGroupsFromYaml(pullApproveYamlRaw); @@ -43595,7 +36185,7 @@ function santizeCommitMessage(content) { // bazel-out/k8-fastbuild/bin/ng-dev/release/notes/changelog.js var import_semver2 = __toESM(require_semver()); import { existsSync as existsSync2, readFileSync as readFileSync8, writeFileSync as writeFileSync3 } from "fs"; -import { join as join9 } from "path"; +import { join as join8 } from "path"; var changelogPath = "CHANGELOG.md"; var changelogArchivePath = "CHANGELOG_ARCHIVE.md"; var splitMarker = ""; @@ -43635,8 +36225,8 @@ var Changelog = class { } constructor(git) { this.git = git; - this.filePath = join9(this.git.baseDir, changelogPath); - this.archiveFilePath = join9(this.git.baseDir, changelogArchivePath); + this.filePath = join8(this.git.baseDir, changelogPath); + this.archiveFilePath = join8(this.git.baseDir, changelogArchivePath); this._entries = void 0; this._archiveEntries = void 0; } @@ -43673,11 +36263,11 @@ var Changelog = class { const changelog = this.entries.map((entry) => entry.content).join(joinMarker); writeFileSync3(this.filePath, changelog); } - getEntriesFor(path9) { - if (!existsSync2(path9)) { + getEntriesFor(path8) { + if (!existsSync2(path8)) { return []; } - return readFileSync8(path9, { encoding: "utf8" }).split(splitMarker).filter((entry) => entry.trim().length !== 0).map(parseChangelogEntry); + return readFileSync8(path8, { encoding: "utf8" }).split(splitMarker).filter((entry) => entry.trim().length !== 0).map(parseChangelogEntry); } }; function parseChangelogEntry(content) { @@ -43816,10 +36406,10 @@ var import_semver5 = __toESM(require_semver()); var ReadBufferFromStdinError = class extends Error { }; function readBufferFromStdinUntilClosed(input = process.stdin) { - return new Promise((resolve13, reject) => { + return new Promise((resolve12, reject) => { const data = []; input.on("data", (chunk) => data.push(chunk)); - input.on("end", () => resolve13(Buffer.concat(data))); + input.on("end", () => resolve12(Buffer.concat(data))); input.on("error", () => reject(new ReadBufferFromStdinError())); input.on("timeout", () => reject(new ReadBufferFromStdinError("Unexpected timeout"))); }); @@ -43922,8 +36512,8 @@ var workspaceRelativePackageJsonPath = "package.json"; var workspaceRelativeYarnLockFilePath = "yarn.lock"; // bazel-out/k8-fastbuild/bin/ng-dev/release/publish/actions.js -import { promises as fs3, existsSync as existsSync3 } from "fs"; -import path6, { join as join10 } from "path"; +import { promises as fs2, existsSync as existsSync3 } from "fs"; +import path5, { join as join9 } from "path"; // bazel-out/k8-fastbuild/bin/ng-dev/release/versioning/experimental-versions.js var import_semver6 = __toESM(require_semver()); @@ -44217,16 +36807,16 @@ var ReleaseAction = class { this.projectDir = projectDir; } async updateProjectVersion(newVersion, additionalUpdateFn) { - const pkgJsonPath = join10(this.projectDir, workspaceRelativePackageJsonPath); - const pkgJson = JSON.parse(await fs3.readFile(pkgJsonPath, "utf8")); + const pkgJsonPath = join9(this.projectDir, workspaceRelativePackageJsonPath); + const pkgJson = JSON.parse(await fs2.readFile(pkgJsonPath, "utf8")); if (additionalUpdateFn !== void 0) { additionalUpdateFn(pkgJson); } pkgJson.version = newVersion.format(); - await fs3.writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)} + await fs2.writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)} `); Log.info(green(` \u2713 Updated project version to ${pkgJson.version}`)); - if (this.config.rulesJsInteropMode && existsSync3(path6.join(this.projectDir, ".aspect"))) { + if (this.config.rulesJsInteropMode && existsSync3(path5.join(this.projectDir, ".aspect"))) { await ExternalCommands.invokeBazelUpdateAspectLockFiles(this.projectDir); } } @@ -44371,8 +36961,8 @@ var ReleaseAction = class { this.git.run(["checkout", "-q", "FETCH_HEAD", "--detach"]); } async installDependenciesForCurrentBranch() { - const nodeModulesDir = join10(this.projectDir, "node_modules"); - await fs3.rm(nodeModulesDir, { force: true, recursive: true, maxRetries: 3 }); + const nodeModulesDir = join9(this.projectDir, "node_modules"); + await fs2.rm(nodeModulesDir, { force: true, recursive: true, maxRetries: 3 }); await ExternalCommands.invokeYarnInstall(this.projectDir); } async createCommit(message, files) { @@ -44500,7 +37090,7 @@ var ReleaseAction = class { async _verifyPackageVersions(version, packages) { const experimentalVersion = createExperimentalSemver(version); for (const pkg of packages) { - const { version: packageJsonVersion } = JSON.parse(await fs3.readFile(join10(pkg.outputPath, "package.json"), "utf8")); + const { version: packageJsonVersion } = JSON.parse(await fs2.readFile(join9(pkg.outputPath, "package.json"), "utf8")); const expectedVersion = pkg.experimental ? experimentalVersion : version; const mismatchesVersion = expectedVersion.compare(packageJsonVersion) !== 0; if (mismatchesVersion) { @@ -45016,30 +37606,30 @@ var actions = [ ]; // bazel-out/k8-fastbuild/bin/ng-dev/utils/version-check.js -var import_yaml4 = __toESM(require_dist2()); -import * as path7 from "path"; -import * as fs4 from "fs"; -import lockfile2 from "@yarnpkg/lockfile"; +var import_yaml3 = __toESM(require_dist2()); +import * as path6 from "path"; +import * as fs3 from "fs"; +import lockfile from "@yarnpkg/lockfile"; async function verifyNgDevToolIsUpToDate(workspacePath) { var _a2, _b2, _c2; - const localVersion = `0.0.0-e8d26efbaea89c31f1580c61c968c8119f5247a6`; - const workspacePackageJsonFile = path7.join(workspacePath, workspaceRelativePackageJsonPath); - const workspaceDirLockFile = path7.join(workspacePath, workspaceRelativeYarnLockFilePath); + const localVersion = `0.0.0-fa81be50e9a2ea7c9b68819ac5f69f4cc5ff7605`; + const workspacePackageJsonFile = path6.join(workspacePath, workspaceRelativePackageJsonPath); + const workspaceDirLockFile = path6.join(workspacePath, workspaceRelativeYarnLockFilePath); try { - const packageJson = JSON.parse(fs4.readFileSync(workspacePackageJsonFile, "utf8")); + const packageJson = JSON.parse(fs3.readFileSync(workspacePackageJsonFile, "utf8")); if (packageJson.name === ngDevNpmPackageName) { return true; } - const lockFileContent = fs4.readFileSync(workspaceDirLockFile, "utf8"); + const lockFileContent = fs3.readFileSync(workspaceDirLockFile, "utf8"); let lockFileObject; try { - const lockFile = lockfile2.parse(lockFileContent); + const lockFile = lockfile.parse(lockFileContent); if (lockFile.type !== "success") { throw Error("Unable to parse workspace lock file. Please ensure the file is valid."); } lockFileObject = lockFile.object; } catch { - lockFileObject = (0, import_yaml4.parse)(lockFileContent); + lockFileObject = (0, import_yaml3.parse)(lockFileContent); } const devInfraPkgVersion = ((_a2 = packageJson == null ? void 0 : packageJson.dependencies) == null ? void 0 : _a2[ngDevNpmPackageName]) ?? ((_b2 = packageJson == null ? void 0 : packageJson.devDependencies) == null ? void 0 : _b2[ngDevNpmPackageName]) ?? ((_c2 = packageJson == null ? void 0 : packageJson.optionalDependencies) == null ? void 0 : _c2[ngDevNpmPackageName]); const expectedVersion = lockFileObject[`${ngDevNpmPackageName}@${devInfraPkgVersion}`].version; @@ -45283,13 +37873,13 @@ var ReleaseSetDistTagCommand = { }; // bazel-out/k8-fastbuild/bin/ng-dev/release/stamping/cli.js -import path8 from "path"; +import path7 from "path"; import url from "url"; // bazel-out/k8-fastbuild/bin/ng-dev/release/stamping/env-stamp.js -import * as fs5 from "fs"; +import * as fs4 from "fs"; var import_semver20 = __toESM(require_semver()); -import { join as join12 } from "path"; +import { join as join11 } from "path"; async function printEnvStamp(mode, includeVersion) { const git = await GitClient.get(); console.info(`BUILD_SCM_BRANCH ${getCurrentBranch(git)}`); @@ -45366,8 +37956,8 @@ function getCurrentGitUser(git) { } } function getVersionFromWorkspacePackageJson(git) { - const packageJsonPath = join12(git.baseDir, "package.json"); - const packageJson = JSON.parse(fs5.readFileSync(packageJsonPath, "utf8")); + const packageJsonPath = join11(git.baseDir, "package.json"); + const packageJson = JSON.parse(fs4.readFileSync(packageJsonPath, "utf8")); if (packageJson.version === void 0) { throw new Error(`No workspace version found in: ${packageJsonPath}`); } @@ -45392,7 +37982,7 @@ function builder23(args) { async function handler24({ mode, includeVersion, additionalStampingScript }) { await printEnvStamp(mode, includeVersion); if (additionalStampingScript !== void 0) { - const scriptURL = url.pathToFileURL(path8.resolve(additionalStampingScript)); + const scriptURL = url.pathToFileURL(path7.resolve(additionalStampingScript)); const stampingExports = await import(scriptURL.toString()); await stampingExports.default(mode); } @@ -45461,11 +38051,11 @@ function buildReleaseParser(localYargs) { // bazel-out/k8-fastbuild/bin/ng-dev/ts-circular-dependencies/index.js var import_fast_glob3 = __toESM(require_out4()); import { existsSync as existsSync4, readFileSync as readFileSync12, writeFileSync as writeFileSync4 } from "fs"; -import { isAbsolute as isAbsolute2, relative as relative3, resolve as resolve12 } from "path"; +import { isAbsolute as isAbsolute2, relative as relative3, resolve as resolve11 } from "path"; // bazel-out/k8-fastbuild/bin/ng-dev/ts-circular-dependencies/analyzer.js import { readFileSync as readFileSync11 } from "fs"; -import { dirname as dirname6, join as join13, resolve as resolve10 } from "path"; +import { dirname as dirname6, join as join12, resolve as resolve9 } from "path"; import ts2 from "typescript"; // bazel-out/k8-fastbuild/bin/ng-dev/ts-circular-dependencies/file_system.js @@ -45477,8 +38067,8 @@ function getFileStatus(filePath) { return null; } } -function convertPathToForwardSlash(path9) { - return path9.replace(/\\/g, "/"); +function convertPathToForwardSlash(path8) { + return path8.replace(/\\/g, "/"); } // bazel-out/k8-fastbuild/bin/ng-dev/ts-circular-dependencies/parser.js @@ -45512,27 +38102,27 @@ var Analyzer = class { this.unresolvedFiles = /* @__PURE__ */ new Map(); this._ignoreTypeOnlyChecks = !!ignoreTypeOnlyChecks; } - findCycles(sf, visited = /* @__PURE__ */ new WeakSet(), path9 = []) { - const previousIndex = path9.indexOf(sf); + findCycles(sf, visited = /* @__PURE__ */ new WeakSet(), path8 = []) { + const previousIndex = path8.indexOf(sf); if (previousIndex !== -1) { - return [path9.slice(previousIndex)]; + return [path8.slice(previousIndex)]; } if (visited.has(sf)) { return []; } - path9.push(sf); + path8.push(sf); visited.add(sf); const result = []; for (const ref of getModuleReferences(sf, this._ignoreTypeOnlyChecks)) { const targetFile = this._resolveImport(ref, sf.fileName); if (targetFile !== null) { - result.push(...this.findCycles(this.getSourceFile(targetFile), visited, path9.slice())); + result.push(...this.findCycles(this.getSourceFile(targetFile), visited, path8.slice())); } } return result; } getSourceFile(filePath) { - const resolvedPath = resolve10(filePath); + const resolvedPath = resolve9(filePath); if (this._sourceFileCache.has(resolvedPath)) { return this._sourceFileCache.get(resolvedPath); } @@ -45568,7 +38158,7 @@ var Analyzer = class { this.unresolvedFiles.get(originFilePath).push(specifier); } _resolveFileSpecifier(specifier, containingFilePath) { - const importFullPath = containingFilePath !== void 0 ? join13(dirname6(containingFilePath), specifier) : specifier; + const importFullPath = containingFilePath !== void 0 ? join12(dirname6(containingFilePath), specifier) : specifier; const stat = getFileStatus(importFullPath); if (stat && stat.isFile()) { return importFullPath; @@ -45581,17 +38171,17 @@ var Analyzer = class { } } if (stat && stat.isDirectory()) { - return this._resolveFileSpecifier(join13(importFullPath, "index")); + return this._resolveFileSpecifier(join12(importFullPath, "index")); } return null; } }; // bazel-out/k8-fastbuild/bin/ng-dev/ts-circular-dependencies/config.js -import { dirname as dirname7, extname as extname2, isAbsolute, resolve as resolve11 } from "path"; +import { dirname as dirname7, extname as extname2, isAbsolute, resolve as resolve10 } from "path"; async function loadTestConfig(configPath) { const configBaseDir = dirname7(configPath); - const resolveRelativePath = (relativePath) => resolve11(configBaseDir, relativePath); + const resolveRelativePath = (relativePath) => resolve10(configBaseDir, relativePath); try { let config; switch (extname2(configPath)) { @@ -45656,23 +38246,23 @@ function compareGoldens(actual, expected) { }); return { newCircularDeps, fixedCircularDeps }; } -function normalizeCircularDependency(path9) { - if (path9.length <= 1) { - return path9; +function normalizeCircularDependency(path8) { + if (path8.length <= 1) { + return path8; } let indexFirstNode = 0; - let valueFirstNode = path9[0]; - for (let i = 1; i < path9.length; i++) { - const value = path9[i]; + let valueFirstNode = path8[0]; + for (let i = 1; i < path8.length; i++) { + const value = path8[i]; if (value.localeCompare(valueFirstNode, "en") < 0) { indexFirstNode = i; valueFirstNode = value; } } if (indexFirstNode === 0) { - return path9; + return path8; } - return [...path9.slice(indexFirstNode), ...path9.slice(0, indexFirstNode)]; + return [...path8.slice(indexFirstNode), ...path8.slice(0, indexFirstNode)]; } function isSameCircularDependency(actual, expected) { if (actual.length !== expected.length) { @@ -45703,12 +38293,12 @@ function tsCircularDependenciesBuilder(localYargs) { description: "Path to the configuration file." }).option("warnings", { type: "boolean", description: "Prints all warnings." }).command("check", "Checks if the circular dependencies have changed.", (args) => args, async (argv) => { const { config: configArg, warnings } = argv; - const configPath = isAbsolute2(configArg) ? configArg : resolve12(configArg); + const configPath = isAbsolute2(configArg) ? configArg : resolve11(configArg); const config = await loadTestConfig(configPath); process.exit(main(false, config, !!warnings)); }).command("approve", "Approves the current circular dependencies.", (args) => args, async (argv) => { const { config: configArg, warnings } = argv; - const configPath = isAbsolute2(configArg) ? configArg : resolve12(configArg); + const configPath = isAbsolute2(configArg) ? configArg : resolve11(configArg); const config = await loadTestConfig(configPath); process.exit(main(true, config, !!warnings)); }); @@ -45771,8 +38361,8 @@ function main(approve, config, printWarnings) { } return 1; } -function getRelativePath(baseDir, path9) { - return convertPathToForwardSlash(relative3(baseDir, path9)); +function getRelativePath(baseDir, path8) { + return convertPathToForwardSlash(relative3(baseDir, path8)); } function convertReferenceChainToString(chain) { return chain.join(" \u2192 "); @@ -45852,12 +38442,12 @@ async function runCommands(commands) { } // bazel-out/k8-fastbuild/bin/ng-dev/perf/workflow/loader.js -var import_yaml5 = __toESM(require_dist2()); +var import_yaml4 = __toESM(require_dist2()); import { readFile } from "fs/promises"; async function loadWorkflows(src) { const filteredWorkflows = {}; const rawWorkflows = await readFile(src, { encoding: "utf-8" }); - const workflows = (0, import_yaml5.parse)(rawWorkflows).workflows; + const workflows = (0, import_yaml4.parse)(rawWorkflows).workflows; for (const [name, workflow] of Object.entries(workflows)) { if (workflow.disabled !== true) { filteredWorkflows[name] = workflow; @@ -45867,7 +38457,7 @@ async function loadWorkflows(src) { } // bazel-out/k8-fastbuild/bin/ng-dev/perf/workflow/cli.js -import { join as join14 } from "path"; +import { join as join13 } from "path"; // bazel-out/k8-fastbuild/bin/ng-dev/perf/workflow/database.js import { Spanner } from "@google-cloud/spanner"; @@ -45904,7 +38494,7 @@ function builder27(yargs) { }); } async function handler28({ configFile, list, name, commitSha }) { - const workflows = await loadWorkflows(join14(determineRepoBaseDirFromCwd(), configFile)); + const workflows = await loadWorkflows(join13(determineRepoBaseDirFromCwd(), configFile)); if (list) { process.stdout.write(JSON.stringify(Object.keys(workflows))); return; diff --git a/bundles/cli.mjs.map b/bundles/cli.mjs.map index c52f0d5..d674aec 100755 --- a/bundles/cli.mjs.map +++ b/bundles/cli.mjs.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../../../../node_modules/balanced-match/index.js", "../../../../../node_modules/brace-expansion/index.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/main.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/scanner.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/string-intern.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/format.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/parser.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/edit.js", "../../../../../node_modules/yoctocolors-cjs/index.js", "../../../../../node_modules/cli-width/index.js", "../../../../../node_modules/strip-ansi/node_modules/ansi-regex/index.js", "../../../../../node_modules/strip-ansi/index.js", "../../../../../node_modules/is-fullwidth-code-point/index.js", "../../../../../node_modules/string-width/node_modules/emoji-regex/index.js", "../../../../../node_modules/string-width/index.js", "../../../../../node_modules/color-name/index.js", "../../../../../node_modules/ansi-styles/node_modules/color-convert/conversions.js", "../../../../../node_modules/ansi-styles/node_modules/color-convert/route.js", "../../../../../node_modules/ansi-styles/node_modules/color-convert/index.js", "../../../../../node_modules/ansi-styles/index.js", "../../../../../node_modules/@inquirer/core/node_modules/wrap-ansi/index.js", "../../../../../node_modules/mute-stream/lib/index.js", "../../../../../node_modules/ansi-escapes/index.js", "../../../../../node_modules/chardet/match.js", "../../../../../node_modules/chardet/encoding/utf8.js", "../../../../../node_modules/chardet/encoding/unicode.js", "../../../../../node_modules/chardet/encoding/mbcs.js", "../../../../../node_modules/chardet/encoding/sbcs.js", "../../../../../node_modules/chardet/encoding/iso2022.js", "../../../../../node_modules/chardet/index.js", "../../../../../node_modules/safer-buffer/safer.js", "../../../../../node_modules/iconv-lite/lib/bom-handling.js", "../../../../../node_modules/iconv-lite/encodings/internal.js", "../../../../../node_modules/iconv-lite/encodings/utf16.js", "../../../../../node_modules/iconv-lite/encodings/utf7.js", "../../../../../node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../../../node_modules/iconv-lite/encodings/sbcs-data.js", "../../../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../../../node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../../../node_modules/iconv-lite/encodings/dbcs-data.js", "../../../../../node_modules/iconv-lite/encodings/index.js", "../../../../../node_modules/iconv-lite/lib/streams.js", "../../../../../node_modules/iconv-lite/lib/extend-node.js", "../../../../../node_modules/iconv-lite/lib/index.js", "../../../../../node_modules/os-tmpdir/index.js", "../../../../../node_modules/external-editor/node_modules/tmp/lib/tmp.js", "../../../../../node_modules/external-editor/main/errors/CreateFileError.js", "../../../../../node_modules/external-editor/main/errors/LaunchEditorError.js", "../../../../../node_modules/external-editor/main/errors/ReadFileError.js", "../../../../../node_modules/external-editor/main/errors/RemoveFileError.js", "../../../../../node_modules/external-editor/main/index.js", "../../../../../node_modules/conventional-commits-parser/lib/parser.js", "../../../../../node_modules/conventional-commits-parser/lib/regex.js", "../../../../../node_modules/conventional-commits-parser/index.js", "../../../../../node_modules/split2/index.js", "../../../../../node_modules/git-raw-commits/index.js", "../../../../../node_modules/cli-progress/lib/eta.js", "../../../../../node_modules/cli-progress/lib/terminal.js", "../../../../../node_modules/cli-progress/lib/format-value.js", "../../../../../node_modules/cli-progress/lib/format-bar.js", "../../../../../node_modules/cli-progress/lib/format-time.js", "../../../../../node_modules/cli-progress/lib/formatter.js", "../../../../../node_modules/cli-progress/lib/options.js", "../../../../../node_modules/cli-progress/lib/generic-bar.js", "../../../../../node_modules/cli-progress/lib/single-bar.js", "../../../../../node_modules/cli-progress/lib/multi-bar.js", "../../../../../node_modules/cli-progress/presets/legacy.js", "../../../../../node_modules/cli-progress/presets/shades-classic.js", "../../../../../node_modules/cli-progress/presets/shades-grey.js", "../../../../../node_modules/cli-progress/presets/rect.js", "../../../../../node_modules/cli-progress/presets/index.js", "../../../../../node_modules/cli-progress/cli-progress.js", "../../../../../node_modules/fast-glob/out/utils/array.js", "../../../../../node_modules/fast-glob/out/utils/errno.js", "../../../../../node_modules/fast-glob/out/utils/fs.js", "../../../../../node_modules/fast-glob/out/utils/path.js", "../../../../../node_modules/is-extglob/index.js", "../../../../../node_modules/is-glob/index.js", "../../../../../node_modules/glob-parent/index.js", "../../../../../node_modules/braces/lib/utils.js", "../../../../../node_modules/braces/lib/stringify.js", "../../../../../node_modules/is-number/index.js", "../../../../../node_modules/to-regex-range/index.js", "../../../../../node_modules/fill-range/index.js", "../../../../../node_modules/braces/lib/compile.js", "../../../../../node_modules/braces/lib/expand.js", "../../../../../node_modules/braces/lib/constants.js", "../../../../../node_modules/braces/lib/parse.js", "../../../../../node_modules/braces/index.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/constants.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/utils.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/scan.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/parse.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/picomatch.js", "../../../../../node_modules/micromatch/node_modules/picomatch/index.js", "../../../../../node_modules/micromatch/index.js", "../../../../../node_modules/fast-glob/out/utils/pattern.js", "../../../../../node_modules/merge2/index.js", "../../../../../node_modules/fast-glob/out/utils/stream.js", "../../../../../node_modules/fast-glob/out/utils/string.js", "../../../../../node_modules/fast-glob/out/utils/index.js", "../../../../../node_modules/fast-glob/out/managers/tasks.js", "../../../../../node_modules/@nodelib/fs.stat/out/providers/async.js", "../../../../../node_modules/@nodelib/fs.stat/out/providers/sync.js", "../../../../../node_modules/@nodelib/fs.stat/out/adapters/fs.js", "../../../../../node_modules/@nodelib/fs.stat/out/settings.js", "../../../../../node_modules/@nodelib/fs.stat/out/index.js", "../../../../../node_modules/queue-microtask/index.js", "../../../../../node_modules/run-parallel/index.js", "../../../../../node_modules/@nodelib/fs.scandir/out/constants.js", "../../../../../node_modules/@nodelib/fs.scandir/out/utils/fs.js", "../../../../../node_modules/@nodelib/fs.scandir/out/utils/index.js", "../../../../../node_modules/@nodelib/fs.scandir/out/providers/common.js", "../../../../../node_modules/@nodelib/fs.scandir/out/providers/async.js", "../../../../../node_modules/@nodelib/fs.scandir/out/providers/sync.js", "../../../../../node_modules/@nodelib/fs.scandir/out/adapters/fs.js", "../../../../../node_modules/@nodelib/fs.scandir/out/settings.js", "../../../../../node_modules/@nodelib/fs.scandir/out/index.js", "../../../../../node_modules/reusify/reusify.js", "../../../../../node_modules/fastq/queue.js", "../../../../../node_modules/@nodelib/fs.walk/out/readers/common.js", "../../../../../node_modules/@nodelib/fs.walk/out/readers/reader.js", "../../../../../node_modules/@nodelib/fs.walk/out/readers/async.js", "../../../../../node_modules/@nodelib/fs.walk/out/providers/async.js", "../../../../../node_modules/@nodelib/fs.walk/out/providers/stream.js", "../../../../../node_modules/@nodelib/fs.walk/out/readers/sync.js", "../../../../../node_modules/@nodelib/fs.walk/out/providers/sync.js", "../../../../../node_modules/@nodelib/fs.walk/out/settings.js", "../../../../../node_modules/@nodelib/fs.walk/out/index.js", "../../../../../node_modules/fast-glob/out/readers/reader.js", "../../../../../node_modules/fast-glob/out/readers/stream.js", "../../../../../node_modules/fast-glob/out/readers/async.js", "../../../../../node_modules/fast-glob/out/providers/matchers/matcher.js", "../../../../../node_modules/fast-glob/out/providers/matchers/partial.js", "../../../../../node_modules/fast-glob/out/providers/filters/deep.js", "../../../../../node_modules/fast-glob/out/providers/filters/entry.js", "../../../../../node_modules/fast-glob/out/providers/filters/error.js", "../../../../../node_modules/fast-glob/out/providers/transformers/entry.js", "../../../../../node_modules/fast-glob/out/providers/provider.js", "../../../../../node_modules/fast-glob/out/providers/async.js", "../../../../../node_modules/fast-glob/out/providers/stream.js", "../../../../../node_modules/fast-glob/out/readers/sync.js", "../../../../../node_modules/fast-glob/out/providers/sync.js", "../../../../../node_modules/fast-glob/out/settings.js", "../../../../../node_modules/fast-glob/out/index.js", "../../../../../node_modules/which/node_modules/isexe/src/posix.ts", "../../../../../node_modules/which/node_modules/isexe/src/win32.ts", "../../../../../node_modules/which/node_modules/isexe/dist/cjs/options.js", "../../../../../node_modules/which/node_modules/isexe/src/index.ts", "../../../../../node_modules/which/lib/index.js", "../../../../../node_modules/yaml/dist/nodes/identity.js", "../../../../../node_modules/yaml/dist/visit.js", "../../../../../node_modules/yaml/dist/doc/directives.js", "../../../../../node_modules/yaml/dist/doc/anchors.js", "../../../../../node_modules/yaml/dist/doc/applyReviver.js", "../../../../../node_modules/yaml/dist/nodes/toJS.js", "../../../../../node_modules/yaml/dist/nodes/Node.js", "../../../../../node_modules/yaml/dist/nodes/Alias.js", "../../../../../node_modules/yaml/dist/nodes/Scalar.js", "../../../../../node_modules/yaml/dist/doc/createNode.js", "../../../../../node_modules/yaml/dist/nodes/Collection.js", "../../../../../node_modules/yaml/dist/stringify/stringifyComment.js", "../../../../../node_modules/yaml/dist/stringify/foldFlowLines.js", "../../../../../node_modules/yaml/dist/stringify/stringifyString.js", "../../../../../node_modules/yaml/dist/stringify/stringify.js", "../../../../../node_modules/yaml/dist/stringify/stringifyPair.js", "../../../../../node_modules/yaml/dist/log.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/merge.js", "../../../../../node_modules/yaml/dist/nodes/addPairToJSMap.js", "../../../../../node_modules/yaml/dist/nodes/Pair.js", "../../../../../node_modules/yaml/dist/stringify/stringifyCollection.js", "../../../../../node_modules/yaml/dist/nodes/YAMLMap.js", "../../../../../node_modules/yaml/dist/schema/common/map.js", "../../../../../node_modules/yaml/dist/nodes/YAMLSeq.js", "../../../../../node_modules/yaml/dist/schema/common/seq.js", "../../../../../node_modules/yaml/dist/schema/common/string.js", "../../../../../node_modules/yaml/dist/schema/common/null.js", "../../../../../node_modules/yaml/dist/schema/core/bool.js", "../../../../../node_modules/yaml/dist/stringify/stringifyNumber.js", "../../../../../node_modules/yaml/dist/schema/core/float.js", "../../../../../node_modules/yaml/dist/schema/core/int.js", "../../../../../node_modules/yaml/dist/schema/core/schema.js", "../../../../../node_modules/yaml/dist/schema/json/schema.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/binary.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/omap.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/bool.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/float.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/int.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/set.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js", "../../../../../node_modules/yaml/dist/schema/yaml-1.1/schema.js", "../../../../../node_modules/yaml/dist/schema/tags.js", "../../../../../node_modules/yaml/dist/schema/Schema.js", "../../../../../node_modules/yaml/dist/stringify/stringifyDocument.js", "../../../../../node_modules/yaml/dist/doc/Document.js", "../../../../../node_modules/yaml/dist/errors.js", "../../../../../node_modules/yaml/dist/compose/resolve-props.js", "../../../../../node_modules/yaml/dist/compose/util-contains-newline.js", "../../../../../node_modules/yaml/dist/compose/util-flow-indent-check.js", "../../../../../node_modules/yaml/dist/compose/util-map-includes.js", "../../../../../node_modules/yaml/dist/compose/resolve-block-map.js", "../../../../../node_modules/yaml/dist/compose/resolve-block-seq.js", "../../../../../node_modules/yaml/dist/compose/resolve-end.js", "../../../../../node_modules/yaml/dist/compose/resolve-flow-collection.js", "../../../../../node_modules/yaml/dist/compose/compose-collection.js", "../../../../../node_modules/yaml/dist/compose/resolve-block-scalar.js", "../../../../../node_modules/yaml/dist/compose/resolve-flow-scalar.js", "../../../../../node_modules/yaml/dist/compose/compose-scalar.js", "../../../../../node_modules/yaml/dist/compose/util-empty-scalar-position.js", "../../../../../node_modules/yaml/dist/compose/compose-node.js", "../../../../../node_modules/yaml/dist/compose/compose-doc.js", "../../../../../node_modules/yaml/dist/compose/composer.js", "../../../../../node_modules/yaml/dist/parse/cst-scalar.js", "../../../../../node_modules/yaml/dist/parse/cst-stringify.js", "../../../../../node_modules/yaml/dist/parse/cst-visit.js", "../../../../../node_modules/yaml/dist/parse/cst.js", "../../../../../node_modules/yaml/dist/parse/lexer.js", "../../../../../node_modules/yaml/dist/parse/line-counter.js", "../../../../../node_modules/yaml/dist/parse/parser.js", "../../../../../node_modules/yaml/dist/public-api.js", "../../../../../node_modules/yaml/dist/index.js", "../../../../../node_modules/ejs/lib/utils.js", "../../../../../node_modules/ejs/lib/ejs.js", "../../../../../node_modules/ms/index.js", "../../../../../node_modules/debug/src/common.js", "../../../../../node_modules/debug/src/browser.js", "../../../../../node_modules/debug/src/node.js", "../../../../../node_modules/debug/src/index.js", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/brace-expressions.ts", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/escape.ts", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/unescape.ts", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/index.ts", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/index-cjs.ts", "../../../../../node_modules/folder-hash/index.js", "../../../../../node_modules/yargs/lib/platform-shims/esm.mjs", "../../../../../node_modules/cliui/build/lib/index.js", "../../../../../node_modules/cliui/build/lib/string-utils.js", "../../../../../node_modules/cliui/index.mjs", "../../../../../node_modules/escalade/sync/index.mjs", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/index.js", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js", "../../../../../node_modules/yargs/build/lib/utils/process-argv.js", "../../../../../node_modules/yargs/build/lib/yerror.js", "../../../../../node_modules/y18n/build/lib/platform-shims/node.js", "../../../../../node_modules/y18n/build/lib/index.js", "../../../../../node_modules/y18n/index.mjs", "../../../../../node_modules/yargs/build/lib/typings/common-types.js", "../../../../../node_modules/yargs/build/lib/utils/is-promise.js", "../../../../../node_modules/yargs/build/lib/parse-command.js", "../../../../../node_modules/yargs/build/lib/argsert.js", "../../../../../node_modules/yargs/build/lib/middleware.js", "../../../../../node_modules/yargs/build/lib/utils/maybe-async-result.js", "../../../../../node_modules/yargs/build/lib/utils/which-module.js", "../../../../../node_modules/yargs/build/lib/command.js", "../../../../../node_modules/yargs/build/lib/utils/obj-filter.js", "../../../../../node_modules/yargs/build/lib/utils/set-blocking.js", "../../../../../node_modules/yargs/build/lib/usage.js", "../../../../../node_modules/yargs/build/lib/completion-templates.js", "../../../../../node_modules/yargs/build/lib/completion.js", "../../../../../node_modules/yargs/build/lib/utils/levenshtein.js", "../../../../../node_modules/yargs/build/lib/validation.js", "../../../../../node_modules/yargs/build/lib/utils/apply-extends.js", "../../../../../node_modules/yargs/build/lib/yargs-factory.js", "../../../../../node_modules/yargs/index.mjs", "../../../../../ng-dev/utils/yargs.ts", "../../../../../ng-dev/caretaker/cli.ts", "../../../../../ng-dev/utils/git/github-yargs.ts", "../../../../../ng-dev/utils/git/github-macros.ts", "../../../../../ng-dev/caretaker/check/base.ts", "../../../../../ng-dev/caretaker/check/ci.ts", "../../../../../ng-dev/utils/g3.ts", "../../../../../node_modules/minimatch/src/index.ts", "../../../../../node_modules/minimatch/src/assert-valid-pattern.ts", "../../../../../node_modules/minimatch/src/brace-expressions.ts", "../../../../../node_modules/minimatch/src/unescape.ts", "../../../../../node_modules/minimatch/src/ast.ts", "../../../../../node_modules/minimatch/src/escape.ts", "../../../../../ng-dev/utils/g3-sync-config.ts", "../../../../../ng-dev/caretaker/check/g3.ts", "../../../../../ng-dev/caretaker/check/github.ts", "../../../../../ng-dev/caretaker/check/services.ts", "../../../../../ng-dev/caretaker/check/check.ts", "../../../../../ng-dev/caretaker/check/cli.ts", "../../../../../node_modules/@inquirer/core/dist/esm/lib/key.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/errors.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-prefix.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/hook-engine.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-state.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-effect.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/theme.js", "../../../../../node_modules/@inquirer/figures/dist/esm/index.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/make-theme.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-memo.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-ref.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-keypress.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/utils.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/pagination/lines.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/pagination/position.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/create-prompt.js", "../../../../../node_modules/signal-exit/src/signals.ts", "../../../../../node_modules/signal-exit/src/index.ts", "../../../../../node_modules/@inquirer/core/dist/esm/lib/screen-manager.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/Separator.js", "../../../../../node_modules/@inquirer/checkbox/dist/esm/index.js", "../../../../../node_modules/@inquirer/editor/dist/esm/index.js", "../../../../../node_modules/@inquirer/confirm/dist/esm/index.js", "../../../../../node_modules/@inquirer/input/dist/esm/index.js", "../../../../../node_modules/@inquirer/number/dist/esm/index.js", "../../../../../node_modules/@inquirer/expand/dist/esm/index.js", "../../../../../node_modules/@inquirer/rawlist/dist/esm/index.js", "../../../../../node_modules/@inquirer/password/dist/esm/index.js", "../../../../../node_modules/@inquirer/search/dist/esm/index.js", "../../../../../node_modules/@inquirer/select/dist/esm/index.js", "../../../../../ng-dev/utils/prompt.ts", "../../../../../ng-dev/caretaker/handoff/update-github-team.ts", "../../../../../ng-dev/caretaker/handoff/cli.ts", "../../../../../ng-dev/commit-message/restore-commit-message/restore-commit-message.ts", "../../../../../ng-dev/commit-message/restore-commit-message/commit-message-draft.ts", "../../../../../ng-dev/commit-message/restore-commit-message/cli.ts", "../../../../../ng-dev/commit-message/validate-file/validate-file.ts", "../../../../../ng-dev/commit-message/parse.ts", "../../../../../ng-dev/commit-message/validate.ts", "../../../../../ng-dev/commit-message/validate-file/cli.ts", "../../../../../ng-dev/commit-message/utils.ts", "../../../../../ng-dev/commit-message/validate-range/validate-range.ts", "../../../../../ng-dev/commit-message/validate-range/cli.ts", "../../../../../ng-dev/commit-message/cli.ts", "../../../../../ng-dev/format/run-commands-parallel.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/index.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/assert-valid-pattern.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/brace-expressions.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/unescape.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/ast.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/escape.ts", "../../../../../node_modules/array-union/index.js", "../../../../../node_modules/array-differ/index.js", "../../../../../node_modules/multimatch/index.js", "../../../../../ng-dev/format/formatters/buildifier.ts", "../../../../../ng-dev/format/formatters/base-formatter.ts", "../../../../../ng-dev/format/formatters/prettier.ts", "../../../../../ng-dev/format/formatters/index.ts", "../../../../../ng-dev/format/format.ts", "../../../../../ng-dev/format/all.ts", "../../../../../ng-dev/format/changed.ts", "../../../../../ng-dev/format/files.ts", "../../../../../ng-dev/format/staged.ts", "../../../../../ng-dev/format/cli.ts", "../../../../../ng-dev/misc/build-and-link/cli.ts", "../../../../../ng-dev/release/build/index.ts", "../../../../../ng-dev/misc/update-yarn/cli.ts", "../../../../../ng-dev/utils/spinner.ts", "../../../../../ng-dev/utils/resolve-yarn-bin.ts", "../../../../../ng-dev/utils/nodejs-errors.ts", "../../../../../ng-dev/utils/bazel-bin.ts", "../../../../../ng-dev/misc/generated-files/update-generated-files.ts", "../../../../../ng-dev/misc/generated-files/cli.ts", "../../../../../ng-dev/misc/cli.ts", "../../../../../ng-dev/ngbot/verify.ts", "../../../../../ng-dev/ngbot/cli.ts", "../../../../../ng-dev/pr/common/targeting/lts-branch.ts", "../../../../../ng-dev/utils/locale.ts", "../../../../../ng-dev/pr/common/targeting/labels.ts", "../../../../../ng-dev/pr/common/targeting/target-label.ts", "../../../../../ng-dev/pr/check-target-branches/check-target-branches.ts", "../../../../../ng-dev/pr/check-target-branches/cli.ts", "../../../../../ng-dev/pr/checkout/checkout.ts", "../../../../../ng-dev/pr/common/checkout-pr.ts", "../../../../../ng-dev/utils/github.ts", "../../../../../ng-dev/pr/checkout/cli.ts", "../../../../../ng-dev/pr/discover-new-conflicts/index.ts", "../../../../../ng-dev/pr/common/fetch-pull-request.ts", "../../../../../ng-dev/pr/discover-new-conflicts/cli.ts", "../../../../../ng-dev/pr/merge/messages.ts", "../../../../../ng-dev/pr/merge/failures.ts", "../../../../../ng-dev/pr/common/validation/validation-failure.ts", "../../../../../ng-dev/pr/common/validation/validation-config.ts", "../../../../../ng-dev/pr/common/validation/assert-allowed-target-label.ts", "../../../../../ng-dev/pr/common/validation/assert-breaking-change-info.ts", "../../../../../ng-dev/pr/common/validation/assert-completed-reviews.ts", "../../../../../ng-dev/pr/common/validation/assert-isolated-separate-files.ts", "../../../../../ng-dev/pr/common/validation/assert-enforced-statuses.ts", "../../../../../ng-dev/pr/common/validation/assert-enforce-tested.ts", "../../../../../ng-dev/pr/common/validation/assert-merge-ready.ts", "../../../../../ng-dev/pr/common/validation/assert-minimum-reviews.ts", "../../../../../ng-dev/pr/common/validation/assert-passing-ci.ts", "../../../../../ng-dev/pr/common/validation/assert-pending.ts", "../../../../../ng-dev/pr/common/validation/assert-signed-cla.ts", "../../../../../ng-dev/pr/common/validation/validate-pull-request.ts", "../../../../../ng-dev/pr/merge/strategies/strategy.ts", "../../../../../ng-dev/pr/merge/pull-request.ts", "../../../../../ng-dev/pr/merge/strategies/api-merge.ts", "../../../../../ng-dev/pr/merge/strategies/autosquash-merge.ts", "../../../../../ng-dev/pr/merge/merge-tool.ts", "../../../../../ng-dev/pr/merge/merge-pull-request.ts", "../../../../../ng-dev/pr/merge/cli.ts", "../../../../../ng-dev/pr/rebase/index.ts", "../../../../../ng-dev/pr/rebase/cli.ts", "../../../../../ng-dev/pr/cli.ts", "../../../../../ng-dev/pullapprove/verify.ts", "../../../../../ng-dev/pullapprove/logging.ts", "../../../../../ng-dev/pullapprove/parse-yaml.ts", "../../../../../ng-dev/pullapprove/condition_errors.ts", "../../../../../ng-dev/pullapprove/utils.ts", "../../../../../ng-dev/pullapprove/pullapprove_arrays.ts", "../../../../../ng-dev/pullapprove/condition_evaluator.ts", "../../../../../ng-dev/pullapprove/group.ts", "../../../../../ng-dev/pullapprove/cli.ts", "../../../../../ng-dev/release/build/cli.ts", "../../../../../ng-dev/release/versioning/print-active-trains.ts", "../../../../../ng-dev/release/info/cli.ts", "../../../../../ng-dev/release/notes/cli.ts", "../../../../../ng-dev/release/notes/release-notes.ts", "../../../../../ng-dev/release/notes/context.ts", "../../../../../ng-dev/release/notes/templates/changelog.ts", "../../../../../ng-dev/release/notes/templates/github-release.ts", "../../../../../ng-dev/release/notes/commits/unique-commit-id.ts", "../../../../../ng-dev/release/notes/commits/get-commits-in-range.ts", "../../../../../ng-dev/release/notes/changelog.ts", "../../../../../ng-dev/release/precheck/cli.ts", "../../../../../ng-dev/utils/read-stdin-until-closed.ts", "../../../../../ng-dev/release/versioning/npm-command.ts", "../../../../../ng-dev/release/publish/actions-error.ts", "../../../../../ng-dev/release/publish/actions/configure-next-as-major.ts", "../../../../../ng-dev/utils/constants.ts", "../../../../../ng-dev/release/publish/actions.ts", "../../../../../ng-dev/release/versioning/experimental-versions.ts", "../../../../../ng-dev/release/versioning/version-tags.ts", "../../../../../ng-dev/release/publish/directory-hash.ts", "../../../../../ng-dev/release/publish/built-package-info.ts", "../../../../../ng-dev/release/publish/commit-message.ts", "../../../../../ng-dev/release/publish/constants.ts", "../../../../../ng-dev/release/publish/external-commands.ts", "../../../../../ng-dev/release/publish/pull-request-state.ts", "../../../../../ng-dev/release/publish/prompt-merge.ts", "../../../../../ng-dev/release/versioning/prerelease-version.ts", "../../../../../ng-dev/utils/semver.ts", "../../../../../ng-dev/release/publish/actions/cut-lts-patch.ts", "../../../../../ng-dev/release/publish/actions/cut-new-patch.ts", "../../../../../ng-dev/release/publish/actions/shared/cut-prerelease.ts", "../../../../../ng-dev/release/publish/actions/cut-npm-next-prerelease.ts", "../../../../../ng-dev/release/publish/actions/cut-npm-next-release-candidate.ts", "../../../../../ng-dev/release/publish/actions/cut-stable.ts", "../../../../../ng-dev/release/publish/actions/exceptional-minor/cut-exceptional-minor-prerelease.ts", "../../../../../ng-dev/release/publish/actions/exceptional-minor/cut-exceptional-minor-release-candidate.ts", "../../../../../ng-dev/release/publish/actions/exceptional-minor/prepare-exceptional-minor.ts", "../../../../../ng-dev/release/publish/actions/shared/branch-off-next-branch.ts", "../../../../../ng-dev/release/publish/actions/move-next-into-feature-freeze.ts", "../../../../../ng-dev/release/publish/actions/move-next-into-release-candidate.ts", "../../../../../ng-dev/release/publish/actions/special/cut-lts-minor.ts", "../../../../../ng-dev/release/publish/actions/tag-recent-major-as-latest.ts", "../../../../../ng-dev/release/publish/actions/index.ts", "../../../../../ng-dev/utils/version-check.ts", "../../../../../ng-dev/release/publish/index.ts", "../../../../../ng-dev/release/publish/cli.ts", "../../../../../ng-dev/release/npm-dist-tag/set/cli.ts", "../../../../../ng-dev/release/set-dist-tag/cli.ts", "../../../../../ng-dev/release/stamping/cli.ts", "../../../../../ng-dev/release/stamping/env-stamp.ts", "../../../../../ng-dev/release/npm-dist-tag/delete/cli.ts", "../../../../../ng-dev/release/npm-dist-tag/cli.ts", "../../../../../ng-dev/release/cli.ts", "../../../../../ng-dev/ts-circular-dependencies/index.ts", "../../../../../ng-dev/ts-circular-dependencies/analyzer.ts", "../../../../../ng-dev/ts-circular-dependencies/file_system.ts", "../../../../../ng-dev/ts-circular-dependencies/parser.ts", "../../../../../ng-dev/ts-circular-dependencies/config.ts", "../../../../../ng-dev/ts-circular-dependencies/golden.ts", "../../../../../ng-dev/auth/login/cli.ts", "../../../../../ng-dev/auth/logout/cli.ts", "../../../../../ng-dev/auth/cli.ts", "../../../../../ng-dev/perf/workflow/workflow.ts", "../../../../../ng-dev/perf/workflow/loader.ts", "../../../../../ng-dev/perf/workflow/cli.ts", "../../../../../ng-dev/perf/workflow/database.ts", "../../../../../ng-dev/perf/cli.ts", "../../../../../ng-dev/cli.ts"], - "sourcesContent": ["'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n", "var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m) return [str];\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n if (/\\$$/.test(m.pre)) { \n for (var k = 0; k < post.length; k++) {\n var expansion = pre+ '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n } else {\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = [];\n\n for (var j = 0; j < n.length; j++) {\n N.push.apply(N, expand(n[j], false));\n }\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n }\n\n return expansions;\n}\n\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport * as formatter from './impl/format';\nimport * as edit from './impl/edit';\nimport * as scanner from './impl/scanner';\nimport * as parser from './impl/parser';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport const createScanner = scanner.createScanner;\nexport var ScanError;\n(function (ScanError) {\n ScanError[ScanError[\"None\"] = 0] = \"None\";\n ScanError[ScanError[\"UnexpectedEndOfComment\"] = 1] = \"UnexpectedEndOfComment\";\n ScanError[ScanError[\"UnexpectedEndOfString\"] = 2] = \"UnexpectedEndOfString\";\n ScanError[ScanError[\"UnexpectedEndOfNumber\"] = 3] = \"UnexpectedEndOfNumber\";\n ScanError[ScanError[\"InvalidUnicode\"] = 4] = \"InvalidUnicode\";\n ScanError[ScanError[\"InvalidEscapeCharacter\"] = 5] = \"InvalidEscapeCharacter\";\n ScanError[ScanError[\"InvalidCharacter\"] = 6] = \"InvalidCharacter\";\n})(ScanError || (ScanError = {}));\nexport var SyntaxKind;\n(function (SyntaxKind) {\n SyntaxKind[SyntaxKind[\"OpenBraceToken\"] = 1] = \"OpenBraceToken\";\n SyntaxKind[SyntaxKind[\"CloseBraceToken\"] = 2] = \"CloseBraceToken\";\n SyntaxKind[SyntaxKind[\"OpenBracketToken\"] = 3] = \"OpenBracketToken\";\n SyntaxKind[SyntaxKind[\"CloseBracketToken\"] = 4] = \"CloseBracketToken\";\n SyntaxKind[SyntaxKind[\"CommaToken\"] = 5] = \"CommaToken\";\n SyntaxKind[SyntaxKind[\"ColonToken\"] = 6] = \"ColonToken\";\n SyntaxKind[SyntaxKind[\"NullKeyword\"] = 7] = \"NullKeyword\";\n SyntaxKind[SyntaxKind[\"TrueKeyword\"] = 8] = \"TrueKeyword\";\n SyntaxKind[SyntaxKind[\"FalseKeyword\"] = 9] = \"FalseKeyword\";\n SyntaxKind[SyntaxKind[\"StringLiteral\"] = 10] = \"StringLiteral\";\n SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 11] = \"NumericLiteral\";\n SyntaxKind[SyntaxKind[\"LineCommentTrivia\"] = 12] = \"LineCommentTrivia\";\n SyntaxKind[SyntaxKind[\"BlockCommentTrivia\"] = 13] = \"BlockCommentTrivia\";\n SyntaxKind[SyntaxKind[\"LineBreakTrivia\"] = 14] = \"LineBreakTrivia\";\n SyntaxKind[SyntaxKind[\"Trivia\"] = 15] = \"Trivia\";\n SyntaxKind[SyntaxKind[\"Unknown\"] = 16] = \"Unknown\";\n SyntaxKind[SyntaxKind[\"EOF\"] = 17] = \"EOF\";\n})(SyntaxKind || (SyntaxKind = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport const getLocation = parser.getLocation;\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore, always check the errors list to find out if the input was valid.\n */\nexport const parse = parser.parse;\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport const parseTree = parser.parseTree;\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport const findNodeAtLocation = parser.findNodeAtLocation;\n/**\n * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport const findNodeAtOffset = parser.findNodeAtOffset;\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport const getNodePath = parser.getNodePath;\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport const getNodeValue = parser.getNodeValue;\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport const visit = parser.visit;\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport const stripComments = parser.stripComments;\nexport var ParseErrorCode;\n(function (ParseErrorCode) {\n ParseErrorCode[ParseErrorCode[\"InvalidSymbol\"] = 1] = \"InvalidSymbol\";\n ParseErrorCode[ParseErrorCode[\"InvalidNumberFormat\"] = 2] = \"InvalidNumberFormat\";\n ParseErrorCode[ParseErrorCode[\"PropertyNameExpected\"] = 3] = \"PropertyNameExpected\";\n ParseErrorCode[ParseErrorCode[\"ValueExpected\"] = 4] = \"ValueExpected\";\n ParseErrorCode[ParseErrorCode[\"ColonExpected\"] = 5] = \"ColonExpected\";\n ParseErrorCode[ParseErrorCode[\"CommaExpected\"] = 6] = \"CommaExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBraceExpected\"] = 7] = \"CloseBraceExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBracketExpected\"] = 8] = \"CloseBracketExpected\";\n ParseErrorCode[ParseErrorCode[\"EndOfFileExpected\"] = 9] = \"EndOfFileExpected\";\n ParseErrorCode[ParseErrorCode[\"InvalidCommentToken\"] = 10] = \"InvalidCommentToken\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfComment\"] = 11] = \"UnexpectedEndOfComment\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfString\"] = 12] = \"UnexpectedEndOfString\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfNumber\"] = 13] = \"UnexpectedEndOfNumber\";\n ParseErrorCode[ParseErrorCode[\"InvalidUnicode\"] = 14] = \"InvalidUnicode\";\n ParseErrorCode[ParseErrorCode[\"InvalidEscapeCharacter\"] = 15] = \"InvalidEscapeCharacter\";\n ParseErrorCode[ParseErrorCode[\"InvalidCharacter\"] = 16] = \"InvalidCharacter\";\n})(ParseErrorCode || (ParseErrorCode = {}));\nexport function printParseErrorCode(code) {\n switch (code) {\n case 1 /* ParseErrorCode.InvalidSymbol */: return 'InvalidSymbol';\n case 2 /* ParseErrorCode.InvalidNumberFormat */: return 'InvalidNumberFormat';\n case 3 /* ParseErrorCode.PropertyNameExpected */: return 'PropertyNameExpected';\n case 4 /* ParseErrorCode.ValueExpected */: return 'ValueExpected';\n case 5 /* ParseErrorCode.ColonExpected */: return 'ColonExpected';\n case 6 /* ParseErrorCode.CommaExpected */: return 'CommaExpected';\n case 7 /* ParseErrorCode.CloseBraceExpected */: return 'CloseBraceExpected';\n case 8 /* ParseErrorCode.CloseBracketExpected */: return 'CloseBracketExpected';\n case 9 /* ParseErrorCode.EndOfFileExpected */: return 'EndOfFileExpected';\n case 10 /* ParseErrorCode.InvalidCommentToken */: return 'InvalidCommentToken';\n case 11 /* ParseErrorCode.UnexpectedEndOfComment */: return 'UnexpectedEndOfComment';\n case 12 /* ParseErrorCode.UnexpectedEndOfString */: return 'UnexpectedEndOfString';\n case 13 /* ParseErrorCode.UnexpectedEndOfNumber */: return 'UnexpectedEndOfNumber';\n case 14 /* ParseErrorCode.InvalidUnicode */: return 'InvalidUnicode';\n case 15 /* ParseErrorCode.InvalidEscapeCharacter */: return 'InvalidEscapeCharacter';\n case 16 /* ParseErrorCode.InvalidCharacter */: return 'InvalidCharacter';\n }\n return '';\n}\n/**\n * Computes the edit operations needed to format a JSON document.\n *\n * @param documentText The input text\n * @param range The range to format or `undefined` to format the full content\n * @param options The formatting options\n * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function format(documentText, range, options) {\n return formatter.format(documentText, range, options);\n}\n/**\n * Computes the edit operations needed to modify a value in the JSON document.\n *\n * @param documentText The input text\n * @param path The path of the value to change. The path represents either to the document root, a property or an array item.\n * If the path points to an non-existing property or item, it will be created.\n * @param value The new value for the specified property or item. If the value is undefined,\n * the property or item will be removed.\n * @param options Options\n * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function modify(text, path, value, options) {\n return edit.setProperty(text, path, value, options);\n}\n/**\n * Applies edits to an input string.\n * @param text The input text\n * @param edits Edit operations following the format described in {@linkcode EditResult}.\n * @returns The text with the applied edits.\n * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.\n */\nexport function applyEdits(text, edits) {\n let sortedEdits = edits.slice(0).sort((a, b) => {\n const diff = a.offset - b.offset;\n if (diff === 0) {\n return a.length - b.length;\n }\n return diff;\n });\n let lastModifiedOffset = text.length;\n for (let i = sortedEdits.length - 1; i >= 0; i--) {\n let e = sortedEdits[i];\n if (e.offset + e.length <= lastModifiedOffset) {\n text = edit.applyEdit(text, e);\n }\n else {\n throw new Error('Overlapping edit');\n }\n lastModifiedOffset = e.offset;\n }\n return text;\n}\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport function createScanner(text, ignoreTrivia = false) {\n const len = text.length;\n let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;\n function scanHexDigits(count, exact) {\n let digits = 0;\n let value = 0;\n while (digits < count || !exact) {\n let ch = text.charCodeAt(pos);\n if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {\n value = value * 16 + ch - 48 /* CharacterCodes._0 */;\n }\n else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {\n value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;\n }\n else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {\n value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;\n }\n else {\n break;\n }\n pos++;\n digits++;\n }\n if (digits < count) {\n value = -1;\n }\n return value;\n }\n function setPosition(newPosition) {\n pos = newPosition;\n value = '';\n tokenOffset = 0;\n token = 16 /* SyntaxKind.Unknown */;\n scanError = 0 /* ScanError.None */;\n }\n function scanNumber() {\n let start = pos;\n if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {\n pos++;\n }\n else {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {\n pos++;\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n return text.substring(start, pos);\n }\n }\n let end = pos;\n if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {\n pos++;\n if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {\n pos++;\n }\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n end = pos;\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n }\n }\n return text.substring(start, end);\n }\n function scanString() {\n let result = '', start = pos;\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch = text.charCodeAt(pos);\n if (ch === 34 /* CharacterCodes.doubleQuote */) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === 92 /* CharacterCodes.backslash */) {\n result += text.substring(start, pos);\n pos++;\n if (pos >= len) {\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch2 = text.charCodeAt(pos++);\n switch (ch2) {\n case 34 /* CharacterCodes.doubleQuote */:\n result += '\\\"';\n break;\n case 92 /* CharacterCodes.backslash */:\n result += '\\\\';\n break;\n case 47 /* CharacterCodes.slash */:\n result += '/';\n break;\n case 98 /* CharacterCodes.b */:\n result += '\\b';\n break;\n case 102 /* CharacterCodes.f */:\n result += '\\f';\n break;\n case 110 /* CharacterCodes.n */:\n result += '\\n';\n break;\n case 114 /* CharacterCodes.r */:\n result += '\\r';\n break;\n case 116 /* CharacterCodes.t */:\n result += '\\t';\n break;\n case 117 /* CharacterCodes.u */:\n const ch3 = scanHexDigits(4, true);\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n }\n else {\n scanError = 4 /* ScanError.InvalidUnicode */;\n }\n break;\n default:\n scanError = 5 /* ScanError.InvalidEscapeCharacter */;\n }\n start = pos;\n continue;\n }\n if (ch >= 0 && ch <= 0x1f) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n else {\n scanError = 6 /* ScanError.InvalidCharacter */;\n // mark as error but continue with string\n }\n }\n pos++;\n }\n return result;\n }\n function scanNext() {\n value = '';\n scanError = 0 /* ScanError.None */;\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n if (pos >= len) {\n // at the end\n tokenOffset = len;\n return token = 17 /* SyntaxKind.EOF */;\n }\n let code = text.charCodeAt(pos);\n // trivia: whitespace\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n return token = 15 /* SyntaxKind.Trivia */;\n }\n // trivia: newlines\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n value += '\\n';\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = 14 /* SyntaxKind.LineBreakTrivia */;\n }\n switch (code) {\n // tokens: []{}:,\n case 123 /* CharacterCodes.openBrace */:\n pos++;\n return token = 1 /* SyntaxKind.OpenBraceToken */;\n case 125 /* CharacterCodes.closeBrace */:\n pos++;\n return token = 2 /* SyntaxKind.CloseBraceToken */;\n case 91 /* CharacterCodes.openBracket */:\n pos++;\n return token = 3 /* SyntaxKind.OpenBracketToken */;\n case 93 /* CharacterCodes.closeBracket */:\n pos++;\n return token = 4 /* SyntaxKind.CloseBracketToken */;\n case 58 /* CharacterCodes.colon */:\n pos++;\n return token = 6 /* SyntaxKind.ColonToken */;\n case 44 /* CharacterCodes.comma */:\n pos++;\n return token = 5 /* SyntaxKind.CommaToken */;\n // strings\n case 34 /* CharacterCodes.doubleQuote */:\n pos++;\n value = scanString();\n return token = 10 /* SyntaxKind.StringLiteral */;\n // comments\n case 47 /* CharacterCodes.slash */:\n const start = pos - 1;\n // Single-line comment\n if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n value = text.substring(start, pos);\n return token = 12 /* SyntaxKind.LineCommentTrivia */;\n }\n // Multi-line comment\n if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {\n pos += 2;\n const safeLength = len - 1; // For lookahead.\n let commentClosed = false;\n while (pos < safeLength) {\n const ch = text.charCodeAt(pos);\n if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n commentClosed = true;\n break;\n }\n pos++;\n if (isLineBreak(ch)) {\n if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n if (!commentClosed) {\n pos++;\n scanError = 1 /* ScanError.UnexpectedEndOfComment */;\n }\n value = text.substring(start, pos);\n return token = 13 /* SyntaxKind.BlockCommentTrivia */;\n }\n // just a single slash\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n // numbers\n case 45 /* CharacterCodes.minus */:\n value += String.fromCharCode(code);\n pos++;\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // found a minus, followed by a number so\n // we fall through to proceed with scanning\n // numbers\n case 48 /* CharacterCodes._0 */:\n case 49 /* CharacterCodes._1 */:\n case 50 /* CharacterCodes._2 */:\n case 51 /* CharacterCodes._3 */:\n case 52 /* CharacterCodes._4 */:\n case 53 /* CharacterCodes._5 */:\n case 54 /* CharacterCodes._6 */:\n case 55 /* CharacterCodes._7 */:\n case 56 /* CharacterCodes._8 */:\n case 57 /* CharacterCodes._9 */:\n value += scanNumber();\n return token = 11 /* SyntaxKind.NumericLiteral */;\n // literals and unknown symbols\n default:\n // is a literal? Read the full word.\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos);\n // keywords: true, false, null\n switch (value) {\n case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;\n case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;\n case 'null': return token = 7 /* SyntaxKind.NullKeyword */;\n }\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // some\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n }\n }\n function isUnknownContentCharacter(code) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n switch (code) {\n case 125 /* CharacterCodes.closeBrace */:\n case 93 /* CharacterCodes.closeBracket */:\n case 123 /* CharacterCodes.openBrace */:\n case 91 /* CharacterCodes.openBracket */:\n case 34 /* CharacterCodes.doubleQuote */:\n case 58 /* CharacterCodes.colon */:\n case 44 /* CharacterCodes.comma */:\n case 47 /* CharacterCodes.slash */:\n return false;\n }\n return true;\n }\n function scanNextNonTrivia() {\n let result;\n do {\n result = scanNext();\n } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);\n return result;\n }\n return {\n setPosition: setPosition,\n getPosition: () => pos,\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: () => token,\n getTokenValue: () => value,\n getTokenOffset: () => tokenOffset,\n getTokenLength: () => pos - tokenOffset,\n getTokenStartLine: () => lineStartOffset,\n getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,\n getTokenError: () => scanError,\n };\n}\nfunction isWhiteSpace(ch) {\n return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;\n}\nfunction isLineBreak(ch) {\n return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;\n}\nfunction isDigit(ch) {\n return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;\n}\nvar CharacterCodes;\n(function (CharacterCodes) {\n CharacterCodes[CharacterCodes[\"lineFeed\"] = 10] = \"lineFeed\";\n CharacterCodes[CharacterCodes[\"carriageReturn\"] = 13] = \"carriageReturn\";\n CharacterCodes[CharacterCodes[\"space\"] = 32] = \"space\";\n CharacterCodes[CharacterCodes[\"_0\"] = 48] = \"_0\";\n CharacterCodes[CharacterCodes[\"_1\"] = 49] = \"_1\";\n CharacterCodes[CharacterCodes[\"_2\"] = 50] = \"_2\";\n CharacterCodes[CharacterCodes[\"_3\"] = 51] = \"_3\";\n CharacterCodes[CharacterCodes[\"_4\"] = 52] = \"_4\";\n CharacterCodes[CharacterCodes[\"_5\"] = 53] = \"_5\";\n CharacterCodes[CharacterCodes[\"_6\"] = 54] = \"_6\";\n CharacterCodes[CharacterCodes[\"_7\"] = 55] = \"_7\";\n CharacterCodes[CharacterCodes[\"_8\"] = 56] = \"_8\";\n CharacterCodes[CharacterCodes[\"_9\"] = 57] = \"_9\";\n CharacterCodes[CharacterCodes[\"a\"] = 97] = \"a\";\n CharacterCodes[CharacterCodes[\"b\"] = 98] = \"b\";\n CharacterCodes[CharacterCodes[\"c\"] = 99] = \"c\";\n CharacterCodes[CharacterCodes[\"d\"] = 100] = \"d\";\n CharacterCodes[CharacterCodes[\"e\"] = 101] = \"e\";\n CharacterCodes[CharacterCodes[\"f\"] = 102] = \"f\";\n CharacterCodes[CharacterCodes[\"g\"] = 103] = \"g\";\n CharacterCodes[CharacterCodes[\"h\"] = 104] = \"h\";\n CharacterCodes[CharacterCodes[\"i\"] = 105] = \"i\";\n CharacterCodes[CharacterCodes[\"j\"] = 106] = \"j\";\n CharacterCodes[CharacterCodes[\"k\"] = 107] = \"k\";\n CharacterCodes[CharacterCodes[\"l\"] = 108] = \"l\";\n CharacterCodes[CharacterCodes[\"m\"] = 109] = \"m\";\n CharacterCodes[CharacterCodes[\"n\"] = 110] = \"n\";\n CharacterCodes[CharacterCodes[\"o\"] = 111] = \"o\";\n CharacterCodes[CharacterCodes[\"p\"] = 112] = \"p\";\n CharacterCodes[CharacterCodes[\"q\"] = 113] = \"q\";\n CharacterCodes[CharacterCodes[\"r\"] = 114] = \"r\";\n CharacterCodes[CharacterCodes[\"s\"] = 115] = \"s\";\n CharacterCodes[CharacterCodes[\"t\"] = 116] = \"t\";\n CharacterCodes[CharacterCodes[\"u\"] = 117] = \"u\";\n CharacterCodes[CharacterCodes[\"v\"] = 118] = \"v\";\n CharacterCodes[CharacterCodes[\"w\"] = 119] = \"w\";\n CharacterCodes[CharacterCodes[\"x\"] = 120] = \"x\";\n CharacterCodes[CharacterCodes[\"y\"] = 121] = \"y\";\n CharacterCodes[CharacterCodes[\"z\"] = 122] = \"z\";\n CharacterCodes[CharacterCodes[\"A\"] = 65] = \"A\";\n CharacterCodes[CharacterCodes[\"B\"] = 66] = \"B\";\n CharacterCodes[CharacterCodes[\"C\"] = 67] = \"C\";\n CharacterCodes[CharacterCodes[\"D\"] = 68] = \"D\";\n CharacterCodes[CharacterCodes[\"E\"] = 69] = \"E\";\n CharacterCodes[CharacterCodes[\"F\"] = 70] = \"F\";\n CharacterCodes[CharacterCodes[\"G\"] = 71] = \"G\";\n CharacterCodes[CharacterCodes[\"H\"] = 72] = \"H\";\n CharacterCodes[CharacterCodes[\"I\"] = 73] = \"I\";\n CharacterCodes[CharacterCodes[\"J\"] = 74] = \"J\";\n CharacterCodes[CharacterCodes[\"K\"] = 75] = \"K\";\n CharacterCodes[CharacterCodes[\"L\"] = 76] = \"L\";\n CharacterCodes[CharacterCodes[\"M\"] = 77] = \"M\";\n CharacterCodes[CharacterCodes[\"N\"] = 78] = \"N\";\n CharacterCodes[CharacterCodes[\"O\"] = 79] = \"O\";\n CharacterCodes[CharacterCodes[\"P\"] = 80] = \"P\";\n CharacterCodes[CharacterCodes[\"Q\"] = 81] = \"Q\";\n CharacterCodes[CharacterCodes[\"R\"] = 82] = \"R\";\n CharacterCodes[CharacterCodes[\"S\"] = 83] = \"S\";\n CharacterCodes[CharacterCodes[\"T\"] = 84] = \"T\";\n CharacterCodes[CharacterCodes[\"U\"] = 85] = \"U\";\n CharacterCodes[CharacterCodes[\"V\"] = 86] = \"V\";\n CharacterCodes[CharacterCodes[\"W\"] = 87] = \"W\";\n CharacterCodes[CharacterCodes[\"X\"] = 88] = \"X\";\n CharacterCodes[CharacterCodes[\"Y\"] = 89] = \"Y\";\n CharacterCodes[CharacterCodes[\"Z\"] = 90] = \"Z\";\n CharacterCodes[CharacterCodes[\"asterisk\"] = 42] = \"asterisk\";\n CharacterCodes[CharacterCodes[\"backslash\"] = 92] = \"backslash\";\n CharacterCodes[CharacterCodes[\"closeBrace\"] = 125] = \"closeBrace\";\n CharacterCodes[CharacterCodes[\"closeBracket\"] = 93] = \"closeBracket\";\n CharacterCodes[CharacterCodes[\"colon\"] = 58] = \"colon\";\n CharacterCodes[CharacterCodes[\"comma\"] = 44] = \"comma\";\n CharacterCodes[CharacterCodes[\"dot\"] = 46] = \"dot\";\n CharacterCodes[CharacterCodes[\"doubleQuote\"] = 34] = \"doubleQuote\";\n CharacterCodes[CharacterCodes[\"minus\"] = 45] = \"minus\";\n CharacterCodes[CharacterCodes[\"openBrace\"] = 123] = \"openBrace\";\n CharacterCodes[CharacterCodes[\"openBracket\"] = 91] = \"openBracket\";\n CharacterCodes[CharacterCodes[\"plus\"] = 43] = \"plus\";\n CharacterCodes[CharacterCodes[\"slash\"] = 47] = \"slash\";\n CharacterCodes[CharacterCodes[\"formFeed\"] = 12] = \"formFeed\";\n CharacterCodes[CharacterCodes[\"tab\"] = 9] = \"tab\";\n})(CharacterCodes || (CharacterCodes = {}));\n", "export const cachedSpaces = new Array(20).fill(0).map((_, index) => {\n return ' '.repeat(index);\n});\nconst maxCachedValues = 200;\nexport const cachedBreakLinesWithSpaces = {\n ' ': {\n '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\n' + ' '.repeat(index);\n }),\n '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r' + ' '.repeat(index);\n }),\n '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r\\n' + ' '.repeat(index);\n }),\n },\n '\\t': {\n '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\n' + '\\t'.repeat(index);\n }),\n '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r' + '\\t'.repeat(index);\n }),\n '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r\\n' + '\\t'.repeat(index);\n }),\n }\n};\nexport const supportedEols = ['\\n', '\\r', '\\r\\n'];\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nimport { cachedSpaces, cachedBreakLinesWithSpaces, supportedEols } from './string-intern';\nexport function format(documentText, range, options) {\n let initialIndentLevel;\n let formatText;\n let formatTextStart;\n let rangeStart;\n let rangeEnd;\n if (range) {\n rangeStart = range.offset;\n rangeEnd = rangeStart + range.length;\n formatTextStart = rangeStart;\n while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) {\n formatTextStart--;\n }\n let endOffset = rangeEnd;\n while (endOffset < documentText.length && !isEOL(documentText, endOffset)) {\n endOffset++;\n }\n formatText = documentText.substring(formatTextStart, endOffset);\n initialIndentLevel = computeIndentLevel(formatText, options);\n }\n else {\n formatText = documentText;\n initialIndentLevel = 0;\n formatTextStart = 0;\n rangeStart = 0;\n rangeEnd = documentText.length;\n }\n const eol = getEOL(options, documentText);\n const eolFastPathSupported = supportedEols.includes(eol);\n let numberLineBreaks = 0;\n let indentLevel = 0;\n let indentValue;\n if (options.insertSpaces) {\n indentValue = cachedSpaces[options.tabSize || 4] ?? repeat(cachedSpaces[1], options.tabSize || 4);\n }\n else {\n indentValue = '\\t';\n }\n const indentType = indentValue === '\\t' ? '\\t' : ' ';\n let scanner = createScanner(formatText, false);\n let hasError = false;\n function newLinesAndIndent() {\n if (numberLineBreaks > 1) {\n return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n const amountOfSpaces = indentValue.length * (initialIndentLevel + indentLevel);\n if (!eolFastPathSupported || amountOfSpaces > cachedBreakLinesWithSpaces[indentType][eol].length) {\n return eol + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n if (amountOfSpaces <= 0) {\n return eol;\n }\n return cachedBreakLinesWithSpaces[indentType][eol][amountOfSpaces];\n }\n function scanNext() {\n let token = scanner.scan();\n numberLineBreaks = 0;\n while (token === 15 /* SyntaxKind.Trivia */ || token === 14 /* SyntaxKind.LineBreakTrivia */) {\n if (token === 14 /* SyntaxKind.LineBreakTrivia */ && options.keepLines) {\n numberLineBreaks += 1;\n }\n else if (token === 14 /* SyntaxKind.LineBreakTrivia */) {\n numberLineBreaks = 1;\n }\n token = scanner.scan();\n }\n hasError = token === 16 /* SyntaxKind.Unknown */ || scanner.getTokenError() !== 0 /* ScanError.None */;\n return token;\n }\n const editOperations = [];\n function addEdit(text, startOffset, endOffset) {\n if (!hasError && (!range || (startOffset < rangeEnd && endOffset > rangeStart)) && documentText.substring(startOffset, endOffset) !== text) {\n editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text });\n }\n }\n let firstToken = scanNext();\n if (options.keepLines && numberLineBreaks > 0) {\n addEdit(repeat(eol, numberLineBreaks), 0, 0);\n }\n if (firstToken !== 17 /* SyntaxKind.EOF */) {\n let firstTokenStart = scanner.getTokenOffset() + formatTextStart;\n let initialIndent = (indentValue.length * initialIndentLevel < 20) && options.insertSpaces\n ? cachedSpaces[indentValue.length * initialIndentLevel]\n : repeat(indentValue, initialIndentLevel);\n addEdit(initialIndent, formatTextStart, firstTokenStart);\n }\n while (firstToken !== 17 /* SyntaxKind.EOF */) {\n let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n let secondToken = scanNext();\n let replaceContent = '';\n let needsLineBreak = false;\n while (numberLineBreaks === 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n let commentTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(cachedSpaces[1], firstTokenEnd, commentTokenStart);\n firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n needsLineBreak = secondToken === 12 /* SyntaxKind.LineCommentTrivia */;\n replaceContent = needsLineBreak ? newLinesAndIndent() : '';\n secondToken = scanNext();\n }\n if (secondToken === 2 /* SyntaxKind.CloseBraceToken */) {\n if (firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n indentLevel--;\n }\n ;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n replaceContent = newLinesAndIndent();\n }\n else if (options.keepLines) {\n replaceContent = cachedSpaces[1];\n }\n }\n else if (secondToken === 4 /* SyntaxKind.CloseBracketToken */) {\n if (firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n indentLevel--;\n }\n ;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n replaceContent = newLinesAndIndent();\n }\n else if (options.keepLines) {\n replaceContent = cachedSpaces[1];\n }\n }\n else {\n switch (firstToken) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n case 1 /* SyntaxKind.OpenBraceToken */:\n indentLevel++;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 5 /* SyntaxKind.CommaToken */:\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 12 /* SyntaxKind.LineCommentTrivia */:\n replaceContent = newLinesAndIndent();\n break;\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (!needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 6 /* SyntaxKind.ColonToken */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (!needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 10 /* SyntaxKind.StringLiteral */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (secondToken === 6 /* SyntaxKind.ColonToken */ && !needsLineBreak) {\n replaceContent = '';\n }\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n case 8 /* SyntaxKind.TrueKeyword */:\n case 9 /* SyntaxKind.FalseKeyword */:\n case 11 /* SyntaxKind.NumericLiteral */:\n case 2 /* SyntaxKind.CloseBraceToken */:\n case 4 /* SyntaxKind.CloseBracketToken */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else {\n if ((secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */) && !needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n else if (secondToken !== 5 /* SyntaxKind.CommaToken */ && secondToken !== 17 /* SyntaxKind.EOF */) {\n hasError = true;\n }\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n hasError = true;\n break;\n }\n if (numberLineBreaks > 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n replaceContent = newLinesAndIndent();\n }\n }\n if (secondToken === 17 /* SyntaxKind.EOF */) {\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = options.insertFinalNewline ? eol : '';\n }\n }\n const secondTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(replaceContent, firstTokenEnd, secondTokenStart);\n firstToken = secondToken;\n }\n return editOperations;\n}\nfunction repeat(s, count) {\n let result = '';\n for (let i = 0; i < count; i++) {\n result += s;\n }\n return result;\n}\nfunction computeIndentLevel(content, options) {\n let i = 0;\n let nChars = 0;\n const tabSize = options.tabSize || 4;\n while (i < content.length) {\n let ch = content.charAt(i);\n if (ch === cachedSpaces[1]) {\n nChars++;\n }\n else if (ch === '\\t') {\n nChars += tabSize;\n }\n else {\n break;\n }\n i++;\n }\n return Math.floor(nChars / tabSize);\n}\nfunction getEOL(options, text) {\n for (let i = 0; i < text.length; i++) {\n const ch = text.charAt(i);\n if (ch === '\\r') {\n if (i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n return '\\r\\n';\n }\n return '\\r';\n }\n else if (ch === '\\n') {\n return '\\n';\n }\n }\n return (options && options.eol) || '\\n';\n}\nexport function isEOL(text, offset) {\n return '\\r\\n'.indexOf(text.charAt(offset)) !== -1;\n}\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nvar ParseOptions;\n(function (ParseOptions) {\n ParseOptions.DEFAULT = {\n allowTrailingComma: false\n };\n})(ParseOptions || (ParseOptions = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport function getLocation(text, position) {\n const segments = []; // strings or numbers\n const earlyReturnException = new Object();\n let previousNode = undefined;\n const previousNodeInst = {\n value: {},\n offset: 0,\n length: 0,\n type: 'object',\n parent: undefined\n };\n let isAtPropertyKey = false;\n function setPreviousNode(value, offset, length, type) {\n previousNodeInst.value = value;\n previousNodeInst.offset = offset;\n previousNodeInst.length = length;\n previousNodeInst.type = type;\n previousNodeInst.colonOffset = undefined;\n previousNode = previousNodeInst;\n }\n try {\n visit(text, {\n onObjectBegin: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n isAtPropertyKey = position > offset;\n segments.push(''); // push a placeholder (will be replaced)\n },\n onObjectProperty: (name, offset, length) => {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(name, offset, length, 'property');\n segments[segments.length - 1] = name;\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onObjectEnd: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onArrayBegin: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.push(0);\n },\n onArrayEnd: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onLiteralValue: (value, offset, length) => {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(value, offset, length, getNodeType(value));\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onSeparator: (sep, offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n if (sep === ':' && previousNode && previousNode.type === 'property') {\n previousNode.colonOffset = offset;\n isAtPropertyKey = false;\n previousNode = undefined;\n }\n else if (sep === ',') {\n const last = segments[segments.length - 1];\n if (typeof last === 'number') {\n segments[segments.length - 1] = last + 1;\n }\n else {\n isAtPropertyKey = true;\n segments[segments.length - 1] = '';\n }\n previousNode = undefined;\n }\n }\n });\n }\n catch (e) {\n if (e !== earlyReturnException) {\n throw e;\n }\n }\n return {\n path: segments,\n previousNode,\n isAtPropertyKey,\n matches: (pattern) => {\n let k = 0;\n for (let i = 0; k < pattern.length && i < segments.length; i++) {\n if (pattern[k] === segments[i] || pattern[k] === '*') {\n k++;\n }\n else if (pattern[k] !== '**') {\n return false;\n }\n }\n return k === pattern.length;\n }\n };\n}\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore always check the errors list to find out if the input was valid.\n */\nexport function parse(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentProperty = null;\n let currentParent = [];\n const previousParents = [];\n function onValue(value) {\n if (Array.isArray(currentParent)) {\n currentParent.push(value);\n }\n else if (currentProperty !== null) {\n currentParent[currentProperty] = value;\n }\n }\n const visitor = {\n onObjectBegin: () => {\n const object = {};\n onValue(object);\n previousParents.push(currentParent);\n currentParent = object;\n currentProperty = null;\n },\n onObjectProperty: (name) => {\n currentProperty = name;\n },\n onObjectEnd: () => {\n currentParent = previousParents.pop();\n },\n onArrayBegin: () => {\n const array = [];\n onValue(array);\n previousParents.push(currentParent);\n currentParent = array;\n currentProperty = null;\n },\n onArrayEnd: () => {\n currentParent = previousParents.pop();\n },\n onLiteralValue: onValue,\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n return currentParent[0];\n}\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport function parseTree(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root\n function ensurePropertyComplete(endOffset) {\n if (currentParent.type === 'property') {\n currentParent.length = endOffset - currentParent.offset;\n currentParent = currentParent.parent;\n }\n }\n function onValue(valueNode) {\n currentParent.children.push(valueNode);\n return valueNode;\n }\n const visitor = {\n onObjectBegin: (offset) => {\n currentParent = onValue({ type: 'object', offset, length: -1, parent: currentParent, children: [] });\n },\n onObjectProperty: (name, offset, length) => {\n currentParent = onValue({ type: 'property', offset, length: -1, parent: currentParent, children: [] });\n currentParent.children.push({ type: 'string', value: name, offset, length, parent: currentParent });\n },\n onObjectEnd: (offset, length) => {\n ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onArrayBegin: (offset, length) => {\n currentParent = onValue({ type: 'array', offset, length: -1, parent: currentParent, children: [] });\n },\n onArrayEnd: (offset, length) => {\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onLiteralValue: (value, offset, length) => {\n onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });\n ensurePropertyComplete(offset + length);\n },\n onSeparator: (sep, offset, length) => {\n if (currentParent.type === 'property') {\n if (sep === ':') {\n currentParent.colonOffset = offset;\n }\n else if (sep === ',') {\n ensurePropertyComplete(offset);\n }\n }\n },\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n const result = currentParent.children[0];\n if (result) {\n delete result.parent;\n }\n return result;\n}\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport function findNodeAtLocation(root, path) {\n if (!root) {\n return undefined;\n }\n let node = root;\n for (let segment of path) {\n if (typeof segment === 'string') {\n if (node.type !== 'object' || !Array.isArray(node.children)) {\n return undefined;\n }\n let found = false;\n for (const propertyNode of node.children) {\n if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) {\n node = propertyNode.children[1];\n found = true;\n break;\n }\n }\n if (!found) {\n return undefined;\n }\n }\n else {\n const index = segment;\n if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {\n return undefined;\n }\n node = node.children[index];\n }\n }\n return node;\n}\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport function getNodePath(node) {\n if (!node.parent || !node.parent.children) {\n return [];\n }\n const path = getNodePath(node.parent);\n if (node.parent.type === 'property') {\n const key = node.parent.children[0].value;\n path.push(key);\n }\n else if (node.parent.type === 'array') {\n const index = node.parent.children.indexOf(node);\n if (index !== -1) {\n path.push(index);\n }\n }\n return path;\n}\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport function getNodeValue(node) {\n switch (node.type) {\n case 'array':\n return node.children.map(getNodeValue);\n case 'object':\n const obj = Object.create(null);\n for (let prop of node.children) {\n const valueNode = prop.children[1];\n if (valueNode) {\n obj[prop.children[0].value] = getNodeValue(valueNode);\n }\n }\n return obj;\n case 'null':\n case 'string':\n case 'number':\n case 'boolean':\n return node.value;\n default:\n return undefined;\n }\n}\nexport function contains(node, offset, includeRightBound = false) {\n return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));\n}\n/**\n * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport function findNodeAtOffset(node, offset, includeRightBound = false) {\n if (contains(node, offset, includeRightBound)) {\n const children = node.children;\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length && children[i].offset <= offset; i++) {\n const item = findNodeAtOffset(children[i], offset, includeRightBound);\n if (item) {\n return item;\n }\n }\n }\n return node;\n }\n return undefined;\n}\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport function visit(text, visitor, options = ParseOptions.DEFAULT) {\n const _scanner = createScanner(text, false);\n // Important: Only pass copies of this to visitor functions to prevent accidental modification, and\n // to not affect visitor functions which stored a reference to a previous JSONPath\n const _jsonPath = [];\n // Depth of onXXXBegin() callbacks suppressed. onXXXEnd() decrements this if it isn't 0 already.\n // Callbacks are only called when this value is 0.\n let suppressedCallbacks = 0;\n function toNoArgVisit(visitFunction) {\n return visitFunction ? () => suppressedCallbacks === 0 && visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toOneArgVisit(visitFunction) {\n return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toOneArgVisitWithPath(visitFunction) {\n return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;\n }\n function toBeginVisit(visitFunction) {\n return visitFunction ?\n () => {\n if (suppressedCallbacks > 0) {\n suppressedCallbacks++;\n }\n else {\n let cbReturn = visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice());\n if (cbReturn === false) {\n suppressedCallbacks = 1;\n }\n }\n }\n : () => true;\n }\n function toEndVisit(visitFunction) {\n return visitFunction ?\n () => {\n if (suppressedCallbacks > 0) {\n suppressedCallbacks--;\n }\n if (suppressedCallbacks === 0) {\n visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());\n }\n }\n : () => true;\n }\n const onObjectBegin = toBeginVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toEndVisit(visitor.onObjectEnd), onArrayBegin = toBeginVisit(visitor.onArrayBegin), onArrayEnd = toEndVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);\n const disallowComments = options && options.disallowComments;\n const allowTrailingComma = options && options.allowTrailingComma;\n function scanNext() {\n while (true) {\n const token = _scanner.scan();\n switch (_scanner.getTokenError()) {\n case 4 /* ScanError.InvalidUnicode */:\n handleError(14 /* ParseErrorCode.InvalidUnicode */);\n break;\n case 5 /* ScanError.InvalidEscapeCharacter */:\n handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);\n break;\n case 3 /* ScanError.UnexpectedEndOfNumber */:\n handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);\n break;\n case 1 /* ScanError.UnexpectedEndOfComment */:\n if (!disallowComments) {\n handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);\n }\n break;\n case 2 /* ScanError.UnexpectedEndOfString */:\n handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);\n break;\n case 6 /* ScanError.InvalidCharacter */:\n handleError(16 /* ParseErrorCode.InvalidCharacter */);\n break;\n }\n switch (token) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (disallowComments) {\n handleError(10 /* ParseErrorCode.InvalidCommentToken */);\n }\n else {\n onComment();\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n handleError(1 /* ParseErrorCode.InvalidSymbol */);\n break;\n case 15 /* SyntaxKind.Trivia */:\n case 14 /* SyntaxKind.LineBreakTrivia */:\n break;\n default:\n return token;\n }\n }\n }\n function handleError(error, skipUntilAfter = [], skipUntil = []) {\n onError(error);\n if (skipUntilAfter.length + skipUntil.length > 0) {\n let token = _scanner.getToken();\n while (token !== 17 /* SyntaxKind.EOF */) {\n if (skipUntilAfter.indexOf(token) !== -1) {\n scanNext();\n break;\n }\n else if (skipUntil.indexOf(token) !== -1) {\n break;\n }\n token = scanNext();\n }\n }\n }\n function parseString(isValue) {\n const value = _scanner.getTokenValue();\n if (isValue) {\n onLiteralValue(value);\n }\n else {\n onObjectProperty(value);\n // add property name afterwards\n _jsonPath.push(value);\n }\n scanNext();\n return true;\n }\n function parseLiteral() {\n switch (_scanner.getToken()) {\n case 11 /* SyntaxKind.NumericLiteral */:\n const tokenValue = _scanner.getTokenValue();\n let value = Number(tokenValue);\n if (isNaN(value)) {\n handleError(2 /* ParseErrorCode.InvalidNumberFormat */);\n value = 0;\n }\n onLiteralValue(value);\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n onLiteralValue(null);\n break;\n case 8 /* SyntaxKind.TrueKeyword */:\n onLiteralValue(true);\n break;\n case 9 /* SyntaxKind.FalseKeyword */:\n onLiteralValue(false);\n break;\n default:\n return false;\n }\n scanNext();\n return true;\n }\n function parseProperty() {\n if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {\n handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n return false;\n }\n parseString(false);\n if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {\n onSeparator(':');\n scanNext(); // consume colon\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n }\n else {\n handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n _jsonPath.pop(); // remove processed property name\n return true;\n }\n function parseObject() {\n onObjectBegin();\n scanNext(); // consume open brace\n let needsComma = false;\n while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (!parseProperty()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onObjectEnd();\n if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {\n handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);\n }\n else {\n scanNext(); // consume close brace\n }\n return true;\n }\n function parseArray() {\n onArrayBegin();\n scanNext(); // consume open bracket\n let isFirstElement = true;\n let needsComma = false;\n while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (isFirstElement) {\n _jsonPath.push(0);\n isFirstElement = false;\n }\n else {\n _jsonPath[_jsonPath.length - 1]++;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onArrayEnd();\n if (!isFirstElement) {\n _jsonPath.pop(); // remove array index\n }\n if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {\n handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);\n }\n else {\n scanNext(); // consume close bracket\n }\n return true;\n }\n function parseValue() {\n switch (_scanner.getToken()) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n return parseArray();\n case 1 /* SyntaxKind.OpenBraceToken */:\n return parseObject();\n case 10 /* SyntaxKind.StringLiteral */:\n return parseString(true);\n default:\n return parseLiteral();\n }\n }\n scanNext();\n if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {\n if (options.allowEmptyContent) {\n return true;\n }\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);\n }\n return true;\n}\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport function stripComments(text, replaceCh) {\n let _scanner = createScanner(text), parts = [], kind, offset = 0, pos;\n do {\n pos = _scanner.getPosition();\n kind = _scanner.scan();\n switch (kind) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n case 17 /* SyntaxKind.EOF */:\n if (offset !== pos) {\n parts.push(text.substring(offset, pos));\n }\n if (replaceCh !== undefined) {\n parts.push(_scanner.getTokenValue().replace(/[^\\r\\n]/g, replaceCh));\n }\n offset = _scanner.getPosition();\n break;\n }\n } while (kind !== 17 /* SyntaxKind.EOF */);\n return parts.join('');\n}\nexport function getNodeType(value) {\n switch (typeof value) {\n case 'boolean': return 'boolean';\n case 'number': return 'number';\n case 'string': return 'string';\n case 'object': {\n if (!value) {\n return 'null';\n }\n else if (Array.isArray(value)) {\n return 'array';\n }\n return 'object';\n }\n default: return 'null';\n }\n}\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { format, isEOL } from './format';\nimport { parseTree, findNodeAtLocation } from './parser';\nexport function removeProperty(text, path, options) {\n return setProperty(text, path, void 0, options);\n}\nexport function setProperty(text, originalPath, value, options) {\n const path = originalPath.slice();\n const errors = [];\n const root = parseTree(text, errors);\n let parent = void 0;\n let lastSegment = void 0;\n while (path.length > 0) {\n lastSegment = path.pop();\n parent = findNodeAtLocation(root, path);\n if (parent === void 0 && value !== void 0) {\n if (typeof lastSegment === 'string') {\n value = { [lastSegment]: value };\n }\n else {\n value = [value];\n }\n }\n else {\n break;\n }\n }\n if (!parent) {\n // empty document\n if (value === void 0) { // delete\n throw new Error('Can not delete in empty document');\n }\n return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options);\n }\n else if (parent.type === 'object' && typeof lastSegment === 'string' && Array.isArray(parent.children)) {\n const existing = findNodeAtLocation(parent, [lastSegment]);\n if (existing !== void 0) {\n if (value === void 0) { // delete\n if (!existing.parent) {\n throw new Error('Malformed AST');\n }\n const propertyIndex = parent.children.indexOf(existing.parent);\n let removeBegin;\n let removeEnd = existing.parent.offset + existing.parent.length;\n if (propertyIndex > 0) {\n // remove the comma of the previous node\n let previous = parent.children[propertyIndex - 1];\n removeBegin = previous.offset + previous.length;\n }\n else {\n removeBegin = parent.offset + 1;\n if (parent.children.length > 1) {\n // remove the comma of the next node\n let next = parent.children[1];\n removeEnd = next.offset;\n }\n }\n return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: '' }, options);\n }\n else {\n // set value of existing property\n return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options);\n }\n }\n else {\n if (value === void 0) { // delete\n return []; // property does not exist, nothing to do\n }\n const newProperty = `${JSON.stringify(lastSegment)}: ${JSON.stringify(value)}`;\n const index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map(p => p.children[0].value)) : parent.children.length;\n let edit;\n if (index > 0) {\n let previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n else if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty + ',' };\n }\n return withFormatting(text, edit, options);\n }\n }\n else if (parent.type === 'array' && typeof lastSegment === 'number' && Array.isArray(parent.children)) {\n const insertIndex = lastSegment;\n if (insertIndex === -1) {\n // Insert\n const newProperty = `${JSON.stringify(value)}`;\n let edit;\n if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n const previous = parent.children[parent.children.length - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else if (value === void 0 && parent.children.length >= 0) {\n // Removal\n const removalIndex = lastSegment;\n const toRemove = parent.children[removalIndex];\n let edit;\n if (parent.children.length === 1) {\n // only item\n edit = { offset: parent.offset + 1, length: parent.length - 2, content: '' };\n }\n else if (parent.children.length - 1 === removalIndex) {\n // last item\n let previous = parent.children[removalIndex - 1];\n let offset = previous.offset + previous.length;\n let parentEndOffset = parent.offset + parent.length;\n edit = { offset, length: parentEndOffset - 2 - offset, content: '' };\n }\n else {\n edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: '' };\n }\n return withFormatting(text, edit, options);\n }\n else if (value !== void 0) {\n let edit;\n const newProperty = `${JSON.stringify(value)}`;\n if (!options.isArrayInsertion && parent.children.length > lastSegment) {\n const toModify = parent.children[lastSegment];\n edit = { offset: toModify.offset, length: toModify.length, content: newProperty };\n }\n else if (parent.children.length === 0 || lastSegment === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + ',' };\n }\n else {\n const index = lastSegment > parent.children.length ? parent.children.length : lastSegment;\n const previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else {\n throw new Error(`Can not ${value === void 0 ? 'remove' : (options.isArrayInsertion ? 'insert' : 'modify')} Array index ${insertIndex} as length is not sufficient`);\n }\n }\n else {\n throw new Error(`Can not add ${typeof lastSegment !== 'number' ? 'index' : 'property'} to parent of type ${parent.type}`);\n }\n}\nfunction withFormatting(text, edit, options) {\n if (!options.formattingOptions) {\n return [edit];\n }\n // apply the edit\n let newText = applyEdit(text, edit);\n // format the new text\n let begin = edit.offset;\n let end = edit.offset + edit.content.length;\n if (edit.length === 0 || edit.content.length === 0) { // insert or remove\n while (begin > 0 && !isEOL(newText, begin - 1)) {\n begin--;\n }\n while (end < newText.length && !isEOL(newText, end)) {\n end++;\n }\n }\n const edits = format(newText, { offset: begin, length: end - begin }, { ...options.formattingOptions, keepLines: false });\n // apply the formatting edits and track the begin and end offsets of the changes\n for (let i = edits.length - 1; i >= 0; i--) {\n const edit = edits[i];\n newText = applyEdit(newText, edit);\n begin = Math.min(begin, edit.offset);\n end = Math.max(end, edit.offset + edit.length);\n end += edit.content.length - edit.length;\n }\n // create a single edit with all changes\n const editLength = text.length - (newText.length - end) - begin;\n return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }];\n}\nexport function applyEdit(text, edit) {\n return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length);\n}\nexport function isWS(text, offset) {\n return '\\r\\n \\t'.indexOf(text.charAt(offset)) !== -1;\n}\n", "const tty = require('node:tty');\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\n// Lots of optionals here to support Deno.\nconst hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + openCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nconst colors = {};\n\ncolors.reset = format(0, 0);\ncolors.bold = format(1, 22);\ncolors.dim = format(2, 22);\ncolors.italic = format(3, 23);\ncolors.underline = format(4, 24);\ncolors.overline = format(53, 55);\ncolors.inverse = format(7, 27);\ncolors.hidden = format(8, 28);\ncolors.strikethrough = format(9, 29);\n\ncolors.black = format(30, 39);\ncolors.red = format(31, 39);\ncolors.green = format(32, 39);\ncolors.yellow = format(33, 39);\ncolors.blue = format(34, 39);\ncolors.magenta = format(35, 39);\ncolors.cyan = format(36, 39);\ncolors.white = format(37, 39);\ncolors.gray = format(90, 39);\n\ncolors.bgBlack = format(40, 49);\ncolors.bgRed = format(41, 49);\ncolors.bgGreen = format(42, 49);\ncolors.bgYellow = format(43, 49);\ncolors.bgBlue = format(44, 49);\ncolors.bgMagenta = format(45, 49);\ncolors.bgCyan = format(46, 49);\ncolors.bgWhite = format(47, 49);\ncolors.bgGray = format(100, 49);\n\ncolors.redBright = format(91, 39);\ncolors.greenBright = format(92, 39);\ncolors.yellowBright = format(93, 39);\ncolors.blueBright = format(94, 39);\ncolors.magentaBright = format(95, 39);\ncolors.cyanBright = format(96, 39);\ncolors.whiteBright = format(97, 39);\n\ncolors.bgRedBright = format(101, 49);\ncolors.bgGreenBright = format(102, 49);\ncolors.bgYellowBright = format(103, 49);\ncolors.bgBlueBright = format(104, 49);\ncolors.bgMagentaBright = format(105, 49);\ncolors.bgCyanBright = format(106, 49);\ncolors.bgWhiteBright = format(107, 49);\n\nmodule.exports = colors;\n", "'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n const defaultOpts = {\n defaultWidth: 0,\n output: process.stdout,\n tty: require('tty'),\n };\n\n if (!options) {\n return defaultOpts;\n }\n\n Object.keys(defaultOpts).forEach(function (key) {\n if (!options[key]) {\n options[key] = defaultOpts[key];\n }\n });\n\n return options;\n}\n\nfunction cliWidth(options) {\n const opts = normalizeOpts(options);\n\n if (opts.output.getWindowSize) {\n return opts.output.getWindowSize()[0] || opts.defaultWidth;\n }\n\n if (opts.tty.getWindowSize) {\n return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n }\n\n if (opts.output.columns) {\n return opts.output.columns;\n }\n\n if (process.env.CLI_WIDTH) {\n const width = parseInt(process.env.CLI_WIDTH, 10);\n\n if (!isNaN(width) && width !== 0) {\n return width;\n }\n }\n\n return opts.defaultWidth;\n}\n", "'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n", "'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n", "/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n", "\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n", "'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\nconst stringWidth = require('string-width');\nconst stripAnsi = require('strip-ansi');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B'\n]);\n\nconst END_CODE = 39;\n\nconst wrapAnsi = code => `${ESCAPES.values().next().value}[${code}m`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = str => {\n\tconst words = str.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn str;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet pre = '';\n\tlet ret = '';\n\tlet escapeCode;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimLeft();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(stringVisibleTrimSpacesRight);\n\t}\n\n\tpre = rows.join('\\n');\n\n\tfor (const [index, character] of [...pre].entries()) {\n\t\tret += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst code = parseFloat(/\\d[^m]*/.exec(pre.slice(index, index + 4)));\n\t\t\tescapeCode = code === END_CODE ? null : code;\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (escapeCode && code) {\n\t\t\tif (pre[index + 1] === '\\n') {\n\t\t\t\tret += wrapAnsi(code);\n\t\t\t} else if (character === '\\n') {\n\t\t\t\tret += wrapAnsi(escapeCode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// For each newline, invoke the method separately\nmodule.exports = (string, columns, options) => {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n};\n", "const Stream = require('stream')\n\nclass MuteStream extends Stream {\n #isTTY = null\n\n constructor (opts = {}) {\n super(opts)\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n }\n\n #destSrc (key, def) {\n if (this._dest) {\n return this._dest[key]\n }\n if (this._src) {\n return this._src[key]\n }\n return def\n }\n\n #proxy (method, ...args) {\n if (typeof this._dest?.[method] === 'function') {\n this._dest[method](...args)\n }\n if (typeof this._src?.[method] === 'function') {\n this._src[method](...args)\n }\n }\n\n get isTTY () {\n if (this.#isTTY !== null) {\n return this.#isTTY\n }\n return this.#destSrc('isTTY', false)\n }\n\n // basically just get replace the getter/setter with a regular value\n set isTTY (val) {\n this.#isTTY = val\n }\n\n get rows () {\n return this.#destSrc('rows')\n }\n\n get columns () {\n return this.#destSrc('columns')\n }\n\n mute () {\n this.muted = true\n }\n\n unmute () {\n this.muted = false\n }\n\n _onpipe (src) {\n this._src = src\n }\n\n pipe (dest, options) {\n this._dest = dest\n return super.pipe(dest, options)\n }\n\n pause () {\n if (this._src) {\n return this._src.pause()\n }\n }\n\n resume () {\n if (this._src) {\n return this._src.resume()\n }\n }\n\n write (c) {\n if (this.muted) {\n if (!this.replace) {\n return true\n }\n // eslint-disable-next-line no-control-regex\n if (c.match(/^\\u001b/)) {\n if (c.indexOf(this._prompt) === 0) {\n c = c.slice(this._prompt.length)\n c = c.replace(/./g, this.replace)\n c = this._prompt + c\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.slice(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n }\n\n end (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) {\n this.emit('data', c)\n }\n this.emit('end')\n }\n\n destroy (...args) {\n return this.#proxy('destroy', ...args)\n }\n\n destroySoon (...args) {\n return this.#proxy('destroySoon', ...args)\n }\n\n close (...args) {\n return this.#proxy('close', ...args)\n }\n}\n\nmodule.exports = MuteStream\n", "'use strict';\nconst ansiEscapes = module.exports;\n// TODO: remove this in the next major version\nmodule.exports.default = ansiEscapes;\n\nconst ESC = '\\u001B[';\nconst OSC = '\\u001B]';\nconst BEL = '\\u0007';\nconst SEP = ';';\nconst isTerminalApp = process.env.TERM_PROGRAM === 'Apple_Terminal';\n\nansiEscapes.cursorTo = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tif (typeof y !== 'number') {\n\t\treturn ESC + (x + 1) + 'G';\n\t}\n\n\treturn ESC + (y + 1) + ';' + (x + 1) + 'H';\n};\n\nansiEscapes.cursorMove = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tlet ret = '';\n\n\tif (x < 0) {\n\t\tret += ESC + (-x) + 'D';\n\t} else if (x > 0) {\n\t\tret += ESC + x + 'C';\n\t}\n\n\tif (y < 0) {\n\t\tret += ESC + (-y) + 'A';\n\t} else if (y > 0) {\n\t\tret += ESC + y + 'B';\n\t}\n\n\treturn ret;\n};\n\nansiEscapes.cursorUp = (count = 1) => ESC + count + 'A';\nansiEscapes.cursorDown = (count = 1) => ESC + count + 'B';\nansiEscapes.cursorForward = (count = 1) => ESC + count + 'C';\nansiEscapes.cursorBackward = (count = 1) => ESC + count + 'D';\n\nansiEscapes.cursorLeft = ESC + 'G';\nansiEscapes.cursorSavePosition = isTerminalApp ? '\\u001B7' : ESC + 's';\nansiEscapes.cursorRestorePosition = isTerminalApp ? '\\u001B8' : ESC + 'u';\nansiEscapes.cursorGetPosition = ESC + '6n';\nansiEscapes.cursorNextLine = ESC + 'E';\nansiEscapes.cursorPrevLine = ESC + 'F';\nansiEscapes.cursorHide = ESC + '?25l';\nansiEscapes.cursorShow = ESC + '?25h';\n\nansiEscapes.eraseLines = count => {\n\tlet clear = '';\n\n\tfor (let i = 0; i < count; i++) {\n\t\tclear += ansiEscapes.eraseLine + (i < count - 1 ? ansiEscapes.cursorUp() : '');\n\t}\n\n\tif (count) {\n\t\tclear += ansiEscapes.cursorLeft;\n\t}\n\n\treturn clear;\n};\n\nansiEscapes.eraseEndLine = ESC + 'K';\nansiEscapes.eraseStartLine = ESC + '1K';\nansiEscapes.eraseLine = ESC + '2K';\nansiEscapes.eraseDown = ESC + 'J';\nansiEscapes.eraseUp = ESC + '1J';\nansiEscapes.eraseScreen = ESC + '2J';\nansiEscapes.scrollUp = ESC + 'S';\nansiEscapes.scrollDown = ESC + 'T';\n\nansiEscapes.clearScreen = '\\u001Bc';\n\nansiEscapes.clearTerminal = process.platform === 'win32' ?\n\t`${ansiEscapes.eraseScreen}${ESC}0f` :\n\t// 1. Erases the screen (Only done in case `2` is not supported)\n\t// 2. Erases the whole screen including scrollback buffer\n\t// 3. Moves cursor to the top-left position\n\t// More info: https://www.real-world-systems.com/docs/ANSIcode.html\n\t`${ansiEscapes.eraseScreen}${ESC}3J${ESC}H`;\n\nansiEscapes.beep = BEL;\n\nansiEscapes.link = (text, url) => {\n\treturn [\n\t\tOSC,\n\t\t'8',\n\t\tSEP,\n\t\tSEP,\n\t\turl,\n\t\tBEL,\n\t\ttext,\n\t\tOSC,\n\t\t'8',\n\t\tSEP,\n\t\tSEP,\n\t\tBEL\n\t].join('');\n};\n\nansiEscapes.image = (buffer, options = {}) => {\n\tlet ret = `${OSC}1337;File=inline=1`;\n\n\tif (options.width) {\n\t\tret += `;width=${options.width}`;\n\t}\n\n\tif (options.height) {\n\t\tret += `;height=${options.height}`;\n\t}\n\n\tif (options.preserveAspectRatio === false) {\n\t\tret += ';preserveAspectRatio=0';\n\t}\n\n\treturn ret + ':' + buffer.toString('base64') + BEL;\n};\n\nansiEscapes.iTerm = {\n\tsetCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`,\n\n\tannotation: (message, options = {}) => {\n\t\tlet ret = `${OSC}1337;`;\n\n\t\tconst hasX = typeof options.x !== 'undefined';\n\t\tconst hasY = typeof options.y !== 'undefined';\n\t\tif ((hasX || hasY) && !(hasX && hasY && typeof options.length !== 'undefined')) {\n\t\t\tthrow new Error('`x`, `y` and `length` must be defined when `x` or `y` is defined');\n\t\t}\n\n\t\tmessage = message.replace(/\\|/g, '');\n\n\t\tret += options.isHidden ? 'AddHiddenAnnotation=' : 'AddAnnotation=';\n\n\t\tif (options.length > 0) {\n\t\t\tret +=\n\t\t\t\t\t(hasX ?\n\t\t\t\t\t\t[message, options.length, options.x, options.y] :\n\t\t\t\t\t\t[options.length, message]).join('|');\n\t\t} else {\n\t\t\tret += message;\n\t\t}\n\n\t\treturn ret + BEL;\n\t}\n};\n", "\nmodule.exports = function(det, rec, confidence, name, lang) {\n this.confidence = confidence;\n this.name = name || rec.name(det);\n this.lang = lang;\n};\n", "\nvar Match = require ('../match');\n\n/**\n * Charset recognizer for UTF-8\n */\nmodule.exports = function() {\n this.name = function() {\n return 'UTF-8';\n };\n this.match = function(det) {\n\n var hasBOM = false,\n numValid = 0,\n numInvalid = 0,\n input = det.fRawInput,\n trailBytes = 0,\n confidence;\n\n if (det.fRawLength >= 3 &&\n (input[0] & 0xff) == 0xef && (input[1] & 0xff) == 0xbb && (input[2] & 0xff) == 0xbf) {\n hasBOM = true;\n }\n\n // Scan for multi-byte sequences\n for (var i = 0; i < det.fRawLength; i++) {\n var b = input[i];\n if ((b & 0x80) == 0)\n continue; // ASCII\n\n // Hi bit on char found. Figure out how long the sequence should be\n if ((b & 0x0e0) == 0x0c0) {\n trailBytes = 1;\n } else if ((b & 0x0f0) == 0x0e0) {\n trailBytes = 2;\n } else if ((b & 0x0f8) == 0xf0) {\n trailBytes = 3;\n } else {\n numInvalid++;\n if (numInvalid > 5)\n break;\n trailBytes = 0;\n }\n\n // Verify that we've got the right number of trail bytes in the sequence\n for (;;) {\n i++;\n if (i >= det.fRawLength)\n break;\n\n if ((input[i] & 0xc0) != 0x080) {\n numInvalid++;\n break;\n }\n if (--trailBytes == 0) {\n numValid++;\n break;\n }\n }\n }\n\n // Cook up some sort of confidence score, based on presense of a BOM\n // and the existence of valid and/or invalid multi-byte sequences.\n confidence = 0;\n if (hasBOM && numInvalid == 0)\n confidence = 100;\n else if (hasBOM && numValid > numInvalid * 10)\n confidence = 80;\n else if (numValid > 3 && numInvalid == 0)\n confidence = 100;\n else if (numValid > 0 && numInvalid == 0)\n confidence = 80;\n else if (numValid == 0 && numInvalid == 0)\n // Plain ASCII.\n confidence = 10;\n else if (numValid > numInvalid * 10)\n // Probably corruput utf-8 data. Valid sequences aren't likely by chance.\n confidence = 25;\n else\n return null\n\n return new Match(det, this, confidence);\n };\n};\n", "'use strict';\nvar util = require('util'),\n Match = require ('../match');\n\n/**\n * This class matches UTF-16 and UTF-32, both big- and little-endian. The\n * BOM will be used if it is present.\n */\nmodule.exports.UTF_16BE = function() {\n this.name = function() {\n return 'UTF-16BE';\n };\n this.match = function(det) {\n var input = det.fRawInput;\n\n if (input.length >= 2 && ((input[0] & 0xff) == 0xfe && (input[1] & 0xff) == 0xff)) {\n return new Match(det, this, 100); // confidence = 100\n }\n\n // TODO: Do some statistics to check for unsigned UTF-16BE\n return null;\n };\n};\n\nmodule.exports.UTF_16LE = function() {\n this.name = function() {\n return 'UTF-16LE';\n };\n this.match = function(det) {\n var input = det.fRawInput;\n\n if (input.length >= 2 && ((input[0] & 0xff) == 0xff && (input[1] & 0xff) == 0xfe)) {\n // LE BOM is present.\n if (input.length >= 4 && input[2] == 0x00 && input[3] == 0x00) {\n // It is probably UTF-32 LE, not UTF-16\n return null;\n }\n return new Match(det, this, 100); // confidence = 100\n }\n\n // TODO: Do some statistics to check for unsigned UTF-16LE\n return null;\n }\n};\n\nfunction UTF_32() {};\nUTF_32.prototype.match = function(det) {\n var input = det.fRawInput,\n limit = (det.fRawLength / 4) * 4,\n numValid = 0,\n numInvalid = 0,\n hasBOM = false,\n confidence = 0;\n\n if (limit == 0) {\n return null;\n }\n\n if (this.getChar(input, 0) == 0x0000FEFF) {\n hasBOM = true;\n }\n\n for (var i = 0; i < limit; i += 4) {\n var ch = this.getChar(input, i);\n\n if (ch < 0 || ch >= 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF)) {\n numInvalid += 1;\n } else {\n numValid += 1;\n }\n }\n\n // Cook up some sort of confidence score, based on presence of a BOM\n // and the existence of valid and/or invalid multi-byte sequences.\n if (hasBOM && numInvalid == 0) {\n confidence = 100;\n } else if (hasBOM && numValid > numInvalid * 10) {\n confidence = 80;\n } else if (numValid > 3 && numInvalid == 0) {\n confidence = 100;\n } else if (numValid > 0 && numInvalid == 0) {\n confidence = 80;\n } else if (numValid > numInvalid * 10) {\n // Probably corrupt UTF-32BE data. Valid sequences aren't likely by chance.\n confidence = 25;\n }\n\n // return confidence == 0 ? null : new CharsetMatch(det, this, confidence);\n return confidence == 0 ? null : new Match(det, this, confidence);\n};\n\nmodule.exports.UTF_32BE = function() {\n this.name = function() {\n return 'UTF-32BE';\n };\n this.getChar = function(input, index) {\n return (input[index + 0] & 0xff) << 24 | (input[index + 1] & 0xff) << 16 |\n (input[index + 2] & 0xff) << 8 | (input[index + 3] & 0xff);\n };\n};\nutil.inherits(module.exports.UTF_32BE, UTF_32);\n\nmodule.exports.UTF_32LE = function() {\n this.name = function() {\n return 'UTF-32LE';\n };\n this.getChar = function(input, index) {\n return (input[index + 3] & 0xff) << 24 | (input[index + 2] & 0xff) << 16 |\n (input[index + 1] & 0xff) << 8 | (input[index + 0] & 0xff);\n };\n};\nutil.inherits(module.exports.UTF_32LE, UTF_32);\n", "var util = require('util'),\n Match = require ('../match');\n\n/**\n * Binary search implementation (recursive)\n */\nfunction binarySearch(arr, searchValue) {\n function find(arr, searchValue, left, right) {\n if (right < left)\n return -1;\n\n /*\n int mid = mid = (left + right) / 2;\n There is a bug in the above line;\n Joshua Bloch suggests the following replacement:\n */\n var mid = Math.floor((left + right) >>> 1);\n if (searchValue > arr[mid])\n return find(arr, searchValue, mid + 1, right);\n\n if (searchValue < arr[mid])\n return find(arr, searchValue, left, mid - 1);\n\n return mid;\n };\n\n return find(arr, searchValue, 0, arr.length - 1);\n};\n\n// 'Character' iterated character class.\n// Recognizers for specific mbcs encodings make their 'characters' available\n// by providing a nextChar() function that fills in an instance of iteratedChar\n// with the next char from the input.\n// The returned characters are not converted to Unicode, but remain as the raw\n// bytes (concatenated into an int) from the codepage data.\n//\n// For Asian charsets, use the raw input rather than the input that has been\n// stripped of markup. Detection only considers multi-byte chars, effectively\n// stripping markup anyway, and double byte chars do occur in markup too.\n//\nfunction IteratedChar() {\n\n this.charValue = 0; // 1-4 bytes from the raw input data\n this.index = 0;\n this.nextIndex = 0;\n this.error = false;\n this.done = false;\n\n this.reset = function() {\n this.charValue = 0;\n this.index = -1;\n this.nextIndex = 0;\n this.error = false;\n this.done = false;\n };\n\n this.nextByte = function(det) {\n if (this.nextIndex >= det.fRawLength) {\n this.done = true;\n return -1;\n }\n var byteValue = det.fRawInput[this.nextIndex++] & 0x00ff;\n return byteValue;\n };\n};\n\n\n\n/**\n * Asian double or multi-byte - charsets.\n * Match is determined mostly by the input data adhering to the\n * encoding scheme for the charset, and, optionally,\n * frequency-of-occurence of characters.\n */\n\nfunction mbcs() {};\n\n/**\n * Test the match of this charset with the input text data\n * which is obtained via the CharsetDetector object.\n *\n * @param det The CharsetDetector, which contains the input text\n * to be checked for being in this charset.\n * @return Two values packed into one int (Damn java, anyhow)\n * bits 0-7: the match confidence, ranging from 0-100\n * bits 8-15: The match reason, an enum-like value.\n */\nmbcs.prototype.match = function(det) {\n\n var singleByteCharCount = 0, //TODO Do we really need this?\n doubleByteCharCount = 0,\n commonCharCount = 0,\n badCharCount = 0,\n totalCharCount = 0,\n confidence = 0;\n\n var iter = new IteratedChar();\n\n detectBlock: {\n for (iter.reset(); this.nextChar(iter, det);) {\n totalCharCount++;\n if (iter.error) {\n badCharCount++;\n } else {\n var cv = iter.charValue & 0xFFFFFFFF;\n\n if (cv <= 0xff) {\n singleByteCharCount++;\n } else {\n doubleByteCharCount++;\n if (this.commonChars != null) {\n // NOTE: This assumes that there are no 4-byte common chars.\n if (binarySearch(this.commonChars, cv) >= 0) {\n commonCharCount++;\n }\n }\n }\n }\n if (badCharCount >= 2 && badCharCount * 5 >= doubleByteCharCount) {\n // console.log('its here!')\n // Bail out early if the byte data is not matching the encoding scheme.\n break detectBlock;\n }\n }\n\n if (doubleByteCharCount <= 10 && badCharCount== 0) {\n // Not many multi-byte chars.\n if (doubleByteCharCount == 0 && totalCharCount < 10) {\n // There weren't any multibyte sequences, and there was a low density of non-ASCII single bytes.\n // We don't have enough data to have any confidence.\n // Statistical analysis of single byte non-ASCII charcters would probably help here.\n confidence = 0;\n }\n else {\n // ASCII or ISO file? It's probably not our encoding,\n // but is not incompatible with our encoding, so don't give it a zero.\n confidence = 10;\n }\n break detectBlock;\n }\n\n //\n // No match if there are too many characters that don't fit the encoding scheme.\n // (should we have zero tolerance for these?)\n //\n if (doubleByteCharCount < 20 * badCharCount) {\n confidence = 0;\n break detectBlock;\n }\n\n if (this.commonChars == null) {\n // We have no statistics on frequently occuring characters.\n // Assess confidence purely on having a reasonable number of\n // multi-byte characters (the more the better\n confidence = 30 + doubleByteCharCount - 20 * badCharCount;\n if (confidence > 100) {\n confidence = 100;\n }\n } else {\n //\n // Frequency of occurence statistics exist.\n //\n var maxVal = Math.log(parseFloat(doubleByteCharCount) / 4);\n var scaleFactor = 90.0 / maxVal;\n confidence = Math.floor(Math.log(commonCharCount + 1) * scaleFactor + 10);\n confidence = Math.min(confidence, 100);\n }\n } // end of detectBlock:\n\n return confidence == 0 ? null : new Match(det, this, confidence);\n};\n\n/**\n * Get the next character (however many bytes it is) from the input data\n * Subclasses for specific charset encodings must implement this function\n * to get characters according to the rules of their encoding scheme.\n *\n * This function is not a method of class iteratedChar only because\n * that would require a lot of extra derived classes, which is awkward.\n * @param it The iteratedChar 'struct' into which the returned char is placed.\n * @param det The charset detector, which is needed to get at the input byte data\n * being iterated over.\n * @return True if a character was returned, false at end of input.\n */\n\nmbcs.prototype.nextChar = function(iter, det) {};\n\n\n\n/**\n * Shift-JIS charset recognizer.\n */\nmodule.exports.sjis = function() {\n this.name = function() {\n return 'Shift-JIS';\n };\n this.language = function() {\n return 'ja';\n };\n\n // TODO: This set of data comes from the character frequency-\n // of-occurence analysis tool. The data needs to be moved\n // into a resource and loaded from there.\n this.commonChars = [\n 0x8140, 0x8141, 0x8142, 0x8145, 0x815b, 0x8169, 0x816a, 0x8175, 0x8176, 0x82a0,\n 0x82a2, 0x82a4, 0x82a9, 0x82aa, 0x82ab, 0x82ad, 0x82af, 0x82b1, 0x82b3, 0x82b5,\n 0x82b7, 0x82bd, 0x82be, 0x82c1, 0x82c4, 0x82c5, 0x82c6, 0x82c8, 0x82c9, 0x82cc,\n 0x82cd, 0x82dc, 0x82e0, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82f0, 0x82f1, 0x8341,\n 0x8343, 0x834e, 0x834f, 0x8358, 0x835e, 0x8362, 0x8367, 0x8375, 0x8376, 0x8389,\n 0x838a, 0x838b, 0x838d, 0x8393, 0x8e96, 0x93fa, 0x95aa\n ];\n\n this.nextChar = function(iter, det) {\n iter.index = iter.nextIndex;\n iter.error = false;\n\n var firstByte;\n firstByte = iter.charValue = iter.nextByte(det);\n if (firstByte < 0)\n return false;\n\n if (firstByte <= 0x7f || (firstByte > 0xa0 && firstByte <= 0xdf))\n return true;\n\n var secondByte = iter.nextByte(det);\n if (secondByte < 0)\n return false;\n\n iter.charValue = (firstByte << 8) | secondByte;\n if (! ((secondByte >= 0x40 && secondByte <= 0x7f) || (secondByte >= 0x80 && secondByte <= 0xff))) {\n // Illegal second byte value.\n iter.error = true;\n }\n return true;\n };\n};\nutil.inherits(module.exports.sjis, mbcs);\n\n\n\n/**\n * Big5 charset recognizer.\n */\nmodule.exports.big5 = function() {\n this.name = function() {\n return 'Big5';\n };\n this.language = function() {\n return 'zh';\n };\n // TODO: This set of data comes from the character frequency-\n // of-occurence analysis tool. The data needs to be moved\n // into a resource and loaded from there.\n this.commonChars = [\n 0xa140, 0xa141, 0xa142, 0xa143, 0xa147, 0xa149, 0xa175, 0xa176, 0xa440, 0xa446,\n 0xa447, 0xa448, 0xa451, 0xa454, 0xa457, 0xa464, 0xa46a, 0xa46c, 0xa477, 0xa4a3,\n 0xa4a4, 0xa4a7, 0xa4c1, 0xa4ce, 0xa4d1, 0xa4df, 0xa4e8, 0xa4fd, 0xa540, 0xa548,\n 0xa558, 0xa569, 0xa5cd, 0xa5e7, 0xa657, 0xa661, 0xa662, 0xa668, 0xa670, 0xa6a8,\n 0xa6b3, 0xa6b9, 0xa6d3, 0xa6db, 0xa6e6, 0xa6f2, 0xa740, 0xa751, 0xa759, 0xa7da,\n 0xa8a3, 0xa8a5, 0xa8ad, 0xa8d1, 0xa8d3, 0xa8e4, 0xa8fc, 0xa9c0, 0xa9d2, 0xa9f3,\n 0xaa6b, 0xaaba, 0xaabe, 0xaacc, 0xaafc, 0xac47, 0xac4f, 0xacb0, 0xacd2, 0xad59,\n 0xaec9, 0xafe0, 0xb0ea, 0xb16f, 0xb2b3, 0xb2c4, 0xb36f, 0xb44c, 0xb44e, 0xb54c,\n 0xb5a5, 0xb5bd, 0xb5d0, 0xb5d8, 0xb671, 0xb7ed, 0xb867, 0xb944, 0xbad8, 0xbb44,\n 0xbba1, 0xbdd1, 0xc2c4, 0xc3b9, 0xc440, 0xc45f\n ];\n this.nextChar = function(iter, det) {\n iter.index = iter.nextIndex;\n iter.error = false;\n\n var firstByte = iter.charValue = iter.nextByte(det);\n\n if (firstByte < 0)\n return false;\n\n // single byte character.\n if (firstByte <= 0x7f || firstByte == 0xff)\n return true;\n\n var secondByte = iter.nextByte(det);\n\n if (secondByte < 0)\n return false;\n\n iter.charValue = (iter.charValue << 8) | secondByte;\n\n if (secondByte < 0x40 || secondByte == 0x7f || secondByte == 0xff)\n iter.error = true;\n\n return true;\n };\n};\nutil.inherits(module.exports.big5, mbcs);\n\n\n\n/**\n * EUC charset recognizers. One abstract class that provides the common function\n * for getting the next character according to the EUC encoding scheme,\n * and nested derived classes for EUC_KR, EUC_JP, EUC_CN.\n *\n * Get the next character value for EUC based encodings.\n * Character 'value' is simply the raw bytes that make up the character\n * packed into an int.\n */\nfunction eucNextChar(iter, det) {\n iter.index = iter.nextIndex;\n iter.error = false;\n var firstByte = 0;\n var secondByte = 0;\n var thirdByte = 0;\n //int fourthByte = 0;\n buildChar: {\n firstByte = iter.charValue = iter.nextByte(det);\n if (firstByte < 0) {\n // Ran off the end of the input data\n iter.done = true;\n break buildChar;\n }\n if (firstByte <= 0x8d) {\n // single byte char\n break buildChar;\n }\n secondByte = iter.nextByte(det);\n iter.charValue = (iter.charValue << 8) | secondByte;\n if (firstByte >= 0xA1 && firstByte <= 0xfe) {\n // Two byte Char\n if (secondByte < 0xa1) {\n iter.error = true;\n }\n break buildChar;\n }\n if (firstByte == 0x8e) {\n // Code Set 2.\n // In EUC-JP, total char size is 2 bytes, only one byte of actual char value.\n // In EUC-TW, total char size is 4 bytes, three bytes contribute to char value.\n // We don't know which we've got.\n // Treat it like EUC-JP. If the data really was EUC-TW, the following two\n // bytes will look like a well formed 2 byte char.\n if (secondByte < 0xa1) {\n iter.error = true;\n }\n break buildChar;\n }\n if (firstByte == 0x8f) {\n // Code set 3.\n // Three byte total char size, two bytes of actual char value.\n thirdByte = iter.nextByte(det);\n iter.charValue = (iter.charValue << 8) | thirdByte;\n if (thirdByte < 0xa1) {\n iter.error = true;\n }\n }\n }\n return iter.done == false;\n};\n\n\n\n/**\n * The charset recognize for EUC-JP. A singleton instance of this class\n * is created and kept by the public CharsetDetector class\n */\nmodule.exports.euc_jp = function() {\n this.name = function() {\n return 'EUC-JP';\n };\n this.language = function() {\n return 'ja';\n };\n\n // TODO: This set of data comes from the character frequency-\n // of-occurence analysis tool. The data needs to be moved\n // into a resource and loaded from there.\n this.commonChars = [\n 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a6, 0xa1bc, 0xa1ca, 0xa1cb, 0xa1d6, 0xa1d7, 0xa4a2,\n 0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4af, 0xa4b1, 0xa4b3,\n 0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd, 0xa4bf, 0xa4c0, 0xa4c1, 0xa4c3, 0xa4c4,\n 0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4ce, 0xa4cf, 0xa4d0, 0xa4de,\n 0xa4df, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ef,\n 0xa4f2, 0xa4f3, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a6, 0xa5a7, 0xa5aa, 0xa5ad, 0xa5af,\n 0xa5b0, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5bf, 0xa5c3, 0xa5c6, 0xa5c7,\n 0xa5c8, 0xa5c9, 0xa5cb, 0xa5d0, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5de, 0xa5e0, 0xa5e1,\n 0xa5e5, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5f3, 0xb8a9, 0xb9d4, 0xbaee,\n 0xbbc8, 0xbef0, 0xbfb7, 0xc4ea, 0xc6fc, 0xc7bd, 0xcab8, 0xcaf3, 0xcbdc, 0xcdd1\n ];\n\n this.nextChar = eucNextChar;\n};\nutil.inherits(module.exports.euc_jp, mbcs);\n\n\n\n/**\n * The charset recognize for EUC-KR. A singleton instance of this class\n * is created and kept by the public CharsetDetector class\n */\nmodule.exports.euc_kr = function() {\n this.name = function() {\n return 'EUC-KR';\n };\n this.language = function() {\n return 'ko';\n };\n\n // TODO: This set of data comes from the character frequency-\n // of-occurence analysis tool. The data needs to be moved\n // into a resource and loaded from there.\n this.commonChars = [\n 0xb0a1, 0xb0b3, 0xb0c5, 0xb0cd, 0xb0d4, 0xb0e6, 0xb0ed, 0xb0f8, 0xb0fa, 0xb0fc,\n 0xb1b8, 0xb1b9, 0xb1c7, 0xb1d7, 0xb1e2, 0xb3aa, 0xb3bb, 0xb4c2, 0xb4cf, 0xb4d9,\n 0xb4eb, 0xb5a5, 0xb5b5, 0xb5bf, 0xb5c7, 0xb5e9, 0xb6f3, 0xb7af, 0xb7c2, 0xb7ce,\n 0xb8a6, 0xb8ae, 0xb8b6, 0xb8b8, 0xb8bb, 0xb8e9, 0xb9ab, 0xb9ae, 0xb9cc, 0xb9ce,\n 0xb9fd, 0xbab8, 0xbace, 0xbad0, 0xbaf1, 0xbbe7, 0xbbf3, 0xbbfd, 0xbcad, 0xbcba,\n 0xbcd2, 0xbcf6, 0xbdba, 0xbdc0, 0xbdc3, 0xbdc5, 0xbec6, 0xbec8, 0xbedf, 0xbeee,\n 0xbef8, 0xbefa, 0xbfa1, 0xbfa9, 0xbfc0, 0xbfe4, 0xbfeb, 0xbfec, 0xbff8, 0xc0a7,\n 0xc0af, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0c7, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d6,\n 0xc0da, 0xc0e5, 0xc0fb, 0xc0fc, 0xc1a4, 0xc1a6, 0xc1b6, 0xc1d6, 0xc1df, 0xc1f6,\n 0xc1f8, 0xc4a1, 0xc5cd, 0xc6ae, 0xc7cf, 0xc7d1, 0xc7d2, 0xc7d8, 0xc7e5, 0xc8ad\n ];\n\n this.nextChar = eucNextChar;\n};\nutil.inherits(module.exports.euc_kr, mbcs);\n\n\n\n/**\n * GB-18030 recognizer. Uses simplified Chinese statistics.\n */\nmodule.exports.gb_18030 = function() {\n this.name = function() {\n return 'GB18030';\n };\n this.language = function() {\n return 'zh';\n };\n\n /*\n * Get the next character value for EUC based encodings.\n * Character 'value' is simply the raw bytes that make up the character\n * packed into an int.\n */\n this.nextChar = function(iter, det) {\n iter.index = iter.nextIndex;\n iter.error = false;\n var firstByte = 0;\n var secondByte = 0;\n var thirdByte = 0;\n var fourthByte = 0;\n buildChar: {\n firstByte = iter.charValue = iter.nextByte(det);\n if (firstByte < 0) {\n // Ran off the end of the input data\n iter.done = true;\n break buildChar;\n }\n if (firstByte <= 0x80) {\n // single byte char\n break buildChar;\n }\n secondByte = iter.nextByte(det);\n iter.charValue = (iter.charValue << 8) | secondByte;\n if (firstByte >= 0x81 && firstByte <= 0xFE) {\n // Two byte Char\n if ((secondByte >= 0x40 && secondByte <= 0x7E) || (secondByte >=80 && secondByte <= 0xFE)) {\n break buildChar;\n }\n // Four byte char\n if (secondByte >= 0x30 && secondByte <= 0x39) {\n thirdByte = iter.nextByte(det);\n if (thirdByte >= 0x81 && thirdByte <= 0xFE) {\n fourthByte = iter.nextByte(det);\n if (fourthByte >= 0x30 && fourthByte <= 0x39) {\n iter.charValue = (iter.charValue << 16) | (thirdByte << 8) | fourthByte;\n break buildChar;\n }\n }\n }\n iter.error = true;\n break buildChar;\n }\n }\n return iter.done == false;\n };\n\n // TODO: This set of data comes from the character frequency-\n // of-occurence analysis tool. The data needs to be moved\n // into a resource and loaded from there.\n this.commonChars = [\n 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1b0, 0xa1b1, 0xa1f1, 0xa1f3, 0xa3a1, 0xa3ac,\n 0xa3ba, 0xb1a8, 0xb1b8, 0xb1be, 0xb2bb, 0xb3c9, 0xb3f6, 0xb4f3, 0xb5bd, 0xb5c4,\n 0xb5e3, 0xb6af, 0xb6d4, 0xb6e0, 0xb7a2, 0xb7a8, 0xb7bd, 0xb7d6, 0xb7dd, 0xb8b4,\n 0xb8df, 0xb8f6, 0xb9ab, 0xb9c9, 0xb9d8, 0xb9fa, 0xb9fd, 0xbacd, 0xbba7, 0xbbd6,\n 0xbbe1, 0xbbfa, 0xbcbc, 0xbcdb, 0xbcfe, 0xbdcc, 0xbecd, 0xbedd, 0xbfb4, 0xbfc6,\n 0xbfc9, 0xc0b4, 0xc0ed, 0xc1cb, 0xc2db, 0xc3c7, 0xc4dc, 0xc4ea, 0xc5cc, 0xc6f7,\n 0xc7f8, 0xc8ab, 0xc8cb, 0xc8d5, 0xc8e7, 0xc9cf, 0xc9fa, 0xcab1, 0xcab5, 0xcac7,\n 0xcad0, 0xcad6, 0xcaf5, 0xcafd, 0xccec, 0xcdf8, 0xceaa, 0xcec4, 0xced2, 0xcee5,\n 0xcfb5, 0xcfc2, 0xcfd6, 0xd0c2, 0xd0c5, 0xd0d0, 0xd0d4, 0xd1a7, 0xd2aa, 0xd2b2,\n 0xd2b5, 0xd2bb, 0xd2d4, 0xd3c3, 0xd3d0, 0xd3fd, 0xd4c2, 0xd4da, 0xd5e2, 0xd6d0\n ];\n};\nutil.inherits(module.exports.gb_18030, mbcs);\n", "var util = require('util'),\n Match = require ('../match');\n\n/**\n * This class recognizes single-byte encodings. Because the encoding scheme is so\n * simple, language statistics are used to do the matching.\n */\n\nfunction NGramParser(theNgramList, theByteMap) {\n var N_GRAM_MASK = 0xFFFFFF;\n\n this.byteIndex = 0;\n this.ngram = 0;\n\n this.ngramList = theNgramList;\n this.byteMap = theByteMap;\n\n this.ngramCount = 0;\n this.hitCount = 0;\n\n this.spaceChar;\n\n /*\n * Binary search for value in table, which must have exactly 64 entries.\n */\n this.search = function(table, value) {\n var index = 0;\n\n if (table[index + 32] <= value) index += 32;\n if (table[index + 16] <= value) index += 16;\n if (table[index + 8] <= value) index += 8;\n if (table[index + 4] <= value) index += 4;\n if (table[index + 2] <= value) index += 2;\n if (table[index + 1] <= value) index += 1;\n if (table[index] > value) index -= 1;\n\n if (index < 0 || table[index] != value)\n return -1;\n\n return index;\n };\n\n this.lookup = function(thisNgram) {\n this.ngramCount += 1;\n if (this.search(this.ngramList, thisNgram) >= 0) {\n this.hitCount += 1;\n }\n };\n\n this.addByte = function(b) {\n this.ngram = ((this.ngram << 8) + (b & 0xFF)) & N_GRAM_MASK;\n this.lookup(this.ngram);\n }\n\n this.nextByte = function(det) {\n if (this.byteIndex >= det.fInputLen)\n return -1;\n\n return det.fInputBytes[this.byteIndex++] & 0xFF;\n }\n\n this.parse = function(det, spaceCh) {\n var b, ignoreSpace = false;\n this.spaceChar = spaceCh;\n\n while ((b = this.nextByte(det)) >= 0) {\n var mb = this.byteMap[b];\n\n // TODO: 0x20 might not be a space in all character sets...\n if (mb != 0) {\n if (!(mb == this.spaceChar && ignoreSpace)) {\n this.addByte(mb);\n }\n\n ignoreSpace = (mb == this.spaceChar);\n }\n }\n\n // TODO: Is this OK? The buffer could have ended in the middle of a word...\n this.addByte(this.spaceChar);\n\n var rawPercent = this.hitCount / this.ngramCount;\n\n // TODO - This is a bit of a hack to take care of a case\n // were we were getting a confidence of 135...\n if (rawPercent > 0.33)\n return 98;\n\n return Math.floor(rawPercent * 300.0);\n };\n};\n\nfunction NGramsPlusLang(la, ng) {\n this.fLang = la;\n this.fNGrams = ng;\n};\n\nfunction sbcs() {};\nsbcs.prototype.spaceChar = 0x20;\nsbcs.prototype.ngrams = function() {};\nsbcs.prototype.byteMap = function() {};\nsbcs.prototype.match = function(det) {\n\n var ngrams = this.ngrams();\n var multiple = (Array.isArray(ngrams) && ngrams[0] instanceof NGramsPlusLang);\n\n if (!multiple) {\n var parser = new NGramParser(ngrams, this.byteMap());\n var confidence = parser.parse(det, this.spaceChar);\n return confidence <= 0 ? null : new Match(det, this, confidence);\n }\n\n var bestConfidenceSoFar = -1;\n var lang = null;\n\n for (var i = ngrams.length - 1; i >= 0; i--) {\n var ngl = ngrams[i];\n\n var parser = new NGramParser(ngl.fNGrams, this.byteMap());\n var confidence = parser.parse(det, this.spaceChar);\n if (confidence > bestConfidenceSoFar) {\n bestConfidenceSoFar = confidence;\n lang = ngl.fLang;\n }\n }\n\n var name = this.name(det);\n return bestConfidenceSoFar <= 0 ? null : new Match(det, this, bestConfidenceSoFar, name, lang);\n};\n\n\nmodule.exports.ISO_8859_1 = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,\n 0x20, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF\n ];\n };\n\n this.ngrams = function() {\n return [\n new NGramsPlusLang('da', [\n 0x206166, 0x206174, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920,\n 0x206D65, 0x206F67, 0x2070E5, 0x207369, 0x207374, 0x207469, 0x207669, 0x616620,\n 0x616E20, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646572, 0x646574,\n 0x652073, 0x656420, 0x656465, 0x656E20, 0x656E64, 0x657220, 0x657265, 0x657320,\n 0x657420, 0x666F72, 0x676520, 0x67656E, 0x676572, 0x696765, 0x696C20, 0x696E67,\n 0x6B6520, 0x6B6B65, 0x6C6572, 0x6C6967, 0x6C6C65, 0x6D6564, 0x6E6465, 0x6E6520,\n 0x6E6720, 0x6E6765, 0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722064, 0x722065,\n 0x722073, 0x726520, 0x737465, 0x742073, 0x746520, 0x746572, 0x74696C, 0x766572\n ]),\n new NGramsPlusLang('de', [\n 0x20616E, 0x206175, 0x206265, 0x206461, 0x206465, 0x206469, 0x206569, 0x206765,\n 0x206861, 0x20696E, 0x206D69, 0x207363, 0x207365, 0x20756E, 0x207665, 0x20766F,\n 0x207765, 0x207A75, 0x626572, 0x636820, 0x636865, 0x636874, 0x646173, 0x64656E,\n 0x646572, 0x646965, 0x652064, 0x652073, 0x65696E, 0x656974, 0x656E20, 0x657220,\n 0x657320, 0x67656E, 0x68656E, 0x687420, 0x696368, 0x696520, 0x696E20, 0x696E65,\n 0x697420, 0x6C6963, 0x6C6C65, 0x6E2061, 0x6E2064, 0x6E2073, 0x6E6420, 0x6E6465,\n 0x6E6520, 0x6E6720, 0x6E6765, 0x6E7465, 0x722064, 0x726465, 0x726569, 0x736368,\n 0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x756E64, 0x756E67, 0x766572\n ]),\n new NGramsPlusLang('en', [\n 0x206120, 0x20616E, 0x206265, 0x20636F, 0x20666F, 0x206861, 0x206865, 0x20696E,\n 0x206D61, 0x206F66, 0x207072, 0x207265, 0x207361, 0x207374, 0x207468, 0x20746F,\n 0x207768, 0x616964, 0x616C20, 0x616E20, 0x616E64, 0x617320, 0x617420, 0x617465,\n 0x617469, 0x642061, 0x642074, 0x652061, 0x652073, 0x652074, 0x656420, 0x656E74,\n 0x657220, 0x657320, 0x666F72, 0x686174, 0x686520, 0x686572, 0x696420, 0x696E20,\n 0x696E67, 0x696F6E, 0x697320, 0x6E2061, 0x6E2074, 0x6E6420, 0x6E6720, 0x6E7420,\n 0x6F6620, 0x6F6E20, 0x6F7220, 0x726520, 0x727320, 0x732061, 0x732074, 0x736169,\n 0x737420, 0x742074, 0x746572, 0x746861, 0x746865, 0x74696F, 0x746F20, 0x747320\n ]),\n new NGramsPlusLang('es', [\n 0x206120, 0x206361, 0x20636F, 0x206465, 0x20656C, 0x20656E, 0x206573, 0x20696E,\n 0x206C61, 0x206C6F, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365,\n 0x20756E, 0x207920, 0x612063, 0x612064, 0x612065, 0x61206C, 0x612070, 0x616369,\n 0x61646F, 0x616C20, 0x617220, 0x617320, 0x6369F3, 0x636F6E, 0x646520, 0x64656C,\n 0x646F20, 0x652064, 0x652065, 0x65206C, 0x656C20, 0x656E20, 0x656E74, 0x657320,\n 0x657374, 0x69656E, 0x69F36E, 0x6C6120, 0x6C6F73, 0x6E2065, 0x6E7465, 0x6F2064,\n 0x6F2065, 0x6F6E20, 0x6F7220, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573,\n 0x732064, 0x732065, 0x732070, 0x736520, 0x746520, 0x746F20, 0x756520, 0xF36E20\n ]),\n new NGramsPlusLang('fr', [\n 0x206175, 0x20636F, 0x206461, 0x206465, 0x206475, 0x20656E, 0x206574, 0x206C61,\n 0x206C65, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207365, 0x20736F, 0x20756E,\n 0x20E020, 0x616E74, 0x617469, 0x636520, 0x636F6E, 0x646520, 0x646573, 0x647520,\n 0x652061, 0x652063, 0x652064, 0x652065, 0x65206C, 0x652070, 0x652073, 0x656E20,\n 0x656E74, 0x657220, 0x657320, 0x657420, 0x657572, 0x696F6E, 0x697320, 0x697420,\n 0x6C6120, 0x6C6520, 0x6C6573, 0x6D656E, 0x6E2064, 0x6E6520, 0x6E7320, 0x6E7420,\n 0x6F6E20, 0x6F6E74, 0x6F7572, 0x717565, 0x72206C, 0x726520, 0x732061, 0x732064,\n 0x732065, 0x73206C, 0x732070, 0x742064, 0x746520, 0x74696F, 0x756520, 0x757220\n ]),\n new NGramsPlusLang('it', [\n 0x20616C, 0x206368, 0x20636F, 0x206465, 0x206469, 0x206520, 0x20696C, 0x20696E,\n 0x206C61, 0x207065, 0x207072, 0x20756E, 0x612063, 0x612064, 0x612070, 0x612073,\n 0x61746F, 0x636865, 0x636F6E, 0x64656C, 0x646920, 0x652061, 0x652063, 0x652064,\n 0x652069, 0x65206C, 0x652070, 0x652073, 0x656C20, 0x656C6C, 0x656E74, 0x657220,\n 0x686520, 0x692061, 0x692063, 0x692064, 0x692073, 0x696120, 0x696C20, 0x696E20,\n 0x696F6E, 0x6C6120, 0x6C6520, 0x6C6920, 0x6C6C61, 0x6E6520, 0x6E6920, 0x6E6F20,\n 0x6E7465, 0x6F2061, 0x6F2064, 0x6F2069, 0x6F2073, 0x6F6E20, 0x6F6E65, 0x706572,\n 0x726120, 0x726520, 0x736920, 0x746120, 0x746520, 0x746920, 0x746F20, 0x7A696F\n ]),\n new NGramsPlusLang('nl', [\n 0x20616C, 0x206265, 0x206461, 0x206465, 0x206469, 0x206565, 0x20656E, 0x206765,\n 0x206865, 0x20696E, 0x206D61, 0x206D65, 0x206F70, 0x207465, 0x207661, 0x207665,\n 0x20766F, 0x207765, 0x207A69, 0x61616E, 0x616172, 0x616E20, 0x616E64, 0x617220,\n 0x617420, 0x636874, 0x646520, 0x64656E, 0x646572, 0x652062, 0x652076, 0x65656E,\n 0x656572, 0x656E20, 0x657220, 0x657273, 0x657420, 0x67656E, 0x686574, 0x696520,\n 0x696E20, 0x696E67, 0x697320, 0x6E2062, 0x6E2064, 0x6E2065, 0x6E2068, 0x6E206F,\n 0x6E2076, 0x6E6465, 0x6E6720, 0x6F6E64, 0x6F6F72, 0x6F7020, 0x6F7220, 0x736368,\n 0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x76616E, 0x766572, 0x766F6F\n ]),\n new NGramsPlusLang('no', [\n 0x206174, 0x206176, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920,\n 0x206D65, 0x206F67, 0x2070E5, 0x207365, 0x20736B, 0x20736F, 0x207374, 0x207469,\n 0x207669, 0x20E520, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646574,\n 0x652073, 0x656420, 0x656E20, 0x656E65, 0x657220, 0x657265, 0x657420, 0x657474,\n 0x666F72, 0x67656E, 0x696B6B, 0x696C20, 0x696E67, 0x6B6520, 0x6B6B65, 0x6C6520,\n 0x6C6C65, 0x6D6564, 0x6D656E, 0x6E2073, 0x6E6520, 0x6E6720, 0x6E6765, 0x6E6E65,\n 0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722073, 0x726520, 0x736F6D, 0x737465,\n 0x742073, 0x746520, 0x74656E, 0x746572, 0x74696C, 0x747420, 0x747465, 0x766572\n ]),\n new NGramsPlusLang('pt', [\n 0x206120, 0x20636F, 0x206461, 0x206465, 0x20646F, 0x206520, 0x206573, 0x206D61,\n 0x206E6F, 0x206F20, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365,\n 0x20756D, 0x612061, 0x612063, 0x612064, 0x612070, 0x616465, 0x61646F, 0x616C20,\n 0x617220, 0x617261, 0x617320, 0x636F6D, 0x636F6E, 0x646120, 0x646520, 0x646F20,\n 0x646F73, 0x652061, 0x652064, 0x656D20, 0x656E74, 0x657320, 0x657374, 0x696120,\n 0x696361, 0x6D656E, 0x6E7465, 0x6E746F, 0x6F2061, 0x6F2063, 0x6F2064, 0x6F2065,\n 0x6F2070, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573, 0x732061, 0x732064,\n 0x732065, 0x732070, 0x737461, 0x746520, 0x746F20, 0x756520, 0xE36F20, 0xE7E36F\n ]),\n new NGramsPlusLang('sv', [\n 0x206174, 0x206176, 0x206465, 0x20656E, 0x2066F6, 0x206861, 0x206920, 0x20696E,\n 0x206B6F, 0x206D65, 0x206F63, 0x2070E5, 0x20736B, 0x20736F, 0x207374, 0x207469,\n 0x207661, 0x207669, 0x20E472, 0x616465, 0x616E20, 0x616E64, 0x617220, 0x617474,\n 0x636820, 0x646520, 0x64656E, 0x646572, 0x646574, 0x656420, 0x656E20, 0x657220,\n 0x657420, 0x66F672, 0x67656E, 0x696C6C, 0x696E67, 0x6B6120, 0x6C6C20, 0x6D6564,\n 0x6E2073, 0x6E6120, 0x6E6465, 0x6E6720, 0x6E6765, 0x6E696E, 0x6F6368, 0x6F6D20,\n 0x6F6E20, 0x70E520, 0x722061, 0x722073, 0x726120, 0x736B61, 0x736F6D, 0x742073,\n 0x746120, 0x746520, 0x746572, 0x74696C, 0x747420, 0x766172, 0xE47220, 0xF67220,\n ])\n ];\n };\n\n this.name = function(det) {\n return (det && det.fC1Bytes) ? 'windows-1252' : 'ISO-8859-1';\n };\n};\nutil.inherits(module.exports.ISO_8859_1, sbcs);\n\n\nmodule.exports.ISO_8859_2 = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0xB1, 0x20, 0xB3, 0x20, 0xB5, 0xB6, 0x20,\n 0x20, 0xB9, 0xBA, 0xBB, 0xBC, 0x20, 0xBE, 0xBF,\n 0x20, 0xB1, 0x20, 0xB3, 0x20, 0xB5, 0xB6, 0xB7,\n 0x20, 0xB9, 0xBA, 0xBB, 0xBC, 0x20, 0xBE, 0xBF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x20\n ];\n }\n\n this.ngrams = function() {\n return [\n new NGramsPlusLang('cs', [\n 0x206120, 0x206279, 0x20646F, 0x206A65, 0x206E61, 0x206E65, 0x206F20, 0x206F64,\n 0x20706F, 0x207072, 0x2070F8, 0x20726F, 0x207365, 0x20736F, 0x207374, 0x20746F,\n 0x207620, 0x207679, 0x207A61, 0x612070, 0x636520, 0x636820, 0x652070, 0x652073,\n 0x652076, 0x656D20, 0x656EED, 0x686F20, 0x686F64, 0x697374, 0x6A6520, 0x6B7465,\n 0x6C6520, 0x6C6920, 0x6E6120, 0x6EE920, 0x6EEC20, 0x6EED20, 0x6F2070, 0x6F646E,\n 0x6F6A69, 0x6F7374, 0x6F7520, 0x6F7661, 0x706F64, 0x706F6A, 0x70726F, 0x70F865,\n 0x736520, 0x736F75, 0x737461, 0x737469, 0x73746E, 0x746572, 0x746EED, 0x746F20,\n 0x752070, 0xBE6520, 0xE16EED, 0xE9686F, 0xED2070, 0xED2073, 0xED6D20, 0xF86564,\n ]),\n new NGramsPlusLang('hu', [\n 0x206120, 0x20617A, 0x206265, 0x206567, 0x20656C, 0x206665, 0x206861, 0x20686F,\n 0x206973, 0x206B65, 0x206B69, 0x206BF6, 0x206C65, 0x206D61, 0x206D65, 0x206D69,\n 0x206E65, 0x20737A, 0x207465, 0x20E973, 0x612061, 0x61206B, 0x61206D, 0x612073,\n 0x616B20, 0x616E20, 0x617A20, 0x62616E, 0x62656E, 0x656779, 0x656B20, 0x656C20,\n 0x656C65, 0x656D20, 0x656E20, 0x657265, 0x657420, 0x657465, 0x657474, 0x677920,\n 0x686F67, 0x696E74, 0x697320, 0x6B2061, 0x6BF67A, 0x6D6567, 0x6D696E, 0x6E2061,\n 0x6E616B, 0x6E656B, 0x6E656D, 0x6E7420, 0x6F6779, 0x732061, 0x737A65, 0x737A74,\n 0x737AE1, 0x73E967, 0x742061, 0x747420, 0x74E173, 0x7A6572, 0xE16E20, 0xE97320,\n ]),\n new NGramsPlusLang('pl', [\n 0x20637A, 0x20646F, 0x206920, 0x206A65, 0x206B6F, 0x206D61, 0x206D69, 0x206E61,\n 0x206E69, 0x206F64, 0x20706F, 0x207072, 0x207369, 0x207720, 0x207769, 0x207779,\n 0x207A20, 0x207A61, 0x612070, 0x612077, 0x616E69, 0x636820, 0x637A65, 0x637A79,\n 0x646F20, 0x647A69, 0x652070, 0x652073, 0x652077, 0x65207A, 0x65676F, 0x656A20,\n 0x656D20, 0x656E69, 0x676F20, 0x696120, 0x696520, 0x69656A, 0x6B6120, 0x6B6920,\n 0x6B6965, 0x6D6965, 0x6E6120, 0x6E6961, 0x6E6965, 0x6F2070, 0x6F7761, 0x6F7769,\n 0x706F6C, 0x707261, 0x70726F, 0x70727A, 0x727A65, 0x727A79, 0x7369EA, 0x736B69,\n 0x737461, 0x776965, 0x796368, 0x796D20, 0x7A6520, 0x7A6965, 0x7A7920, 0xF37720,\n ]),\n new NGramsPlusLang('ro', [\n 0x206120, 0x206163, 0x206361, 0x206365, 0x20636F, 0x206375, 0x206465, 0x206469,\n 0x206C61, 0x206D61, 0x207065, 0x207072, 0x207365, 0x2073E3, 0x20756E, 0x20BA69,\n 0x20EE6E, 0x612063, 0x612064, 0x617265, 0x617420, 0x617465, 0x617520, 0x636172,\n 0x636F6E, 0x637520, 0x63E320, 0x646520, 0x652061, 0x652063, 0x652064, 0x652070,\n 0x652073, 0x656120, 0x656920, 0x656C65, 0x656E74, 0x657374, 0x692061, 0x692063,\n 0x692064, 0x692070, 0x696520, 0x696920, 0x696E20, 0x6C6120, 0x6C6520, 0x6C6F72,\n 0x6C7569, 0x6E6520, 0x6E7472, 0x6F7220, 0x70656E, 0x726520, 0x726561, 0x727520,\n 0x73E320, 0x746520, 0x747275, 0x74E320, 0x756920, 0x756C20, 0xBA6920, 0xEE6E20,\n ])\n ];\n };\n\n this.name = function(det) {\n return (det && det.fC1Bytes) ? 'windows-1250' : 'ISO-8859-2';\n };\n};\nutil.inherits(module.exports.ISO_8859_2, sbcs);\n\n\nmodule.exports.ISO_8859_5 = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x20, 0xFE, 0xFF,\n 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x20, 0xFE, 0xFF\n ];\n };\n\n this.ngrams = function() {\n return [\n 0x20D220, 0x20D2DE, 0x20D4DE, 0x20D7D0, 0x20D820, 0x20DAD0, 0x20DADE, 0x20DDD0,\n 0x20DDD5, 0x20DED1, 0x20DFDE, 0x20DFE0, 0x20E0D0, 0x20E1DE, 0x20E1E2, 0x20E2DE,\n 0x20E7E2, 0x20EDE2, 0xD0DDD8, 0xD0E2EC, 0xD3DE20, 0xD5DBEC, 0xD5DDD8, 0xD5E1E2,\n 0xD5E220, 0xD820DF, 0xD8D520, 0xD8D820, 0xD8EF20, 0xDBD5DD, 0xDBD820, 0xDBECDD,\n 0xDDD020, 0xDDD520, 0xDDD8D5, 0xDDD8EF, 0xDDDE20, 0xDDDED2, 0xDE20D2, 0xDE20DF,\n 0xDE20E1, 0xDED220, 0xDED2D0, 0xDED3DE, 0xDED920, 0xDEDBEC, 0xDEDC20, 0xDEE1E2,\n 0xDFDEDB, 0xDFE0D5, 0xDFE0D8, 0xDFE0DE, 0xE0D0D2, 0xE0D5D4, 0xE1E2D0, 0xE1E2D2,\n 0xE1E2D8, 0xE1EF20, 0xE2D5DB, 0xE2DE20, 0xE2DEE0, 0xE2EC20, 0xE7E2DE, 0xEBE520\n ];\n };\n\n this.name = function(det) {\n return 'ISO-8859-5';\n };\n\n this.language = function() {\n return 'ru';\n };\n};\nutil.inherits(module.exports.ISO_8859_5, sbcs);\n\n\nmodule.exports.ISO_8859_6 = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,\n 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,\n 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n 0xD8, 0xD9, 0xDA, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20\n ];\n };\n\n this.ngrams = function() {\n return [\n 0x20C7E4, 0x20C7E6, 0x20C8C7, 0x20D9E4, 0x20E1EA, 0x20E4E4, 0x20E5E6, 0x20E8C7,\n 0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E420, 0xC7E4C3, 0xC7E4C7, 0xC7E4C8,\n 0xC7E4CA, 0xC7E4CC, 0xC7E4CD, 0xC7E4CF, 0xC7E4D3, 0xC7E4D9, 0xC7E4E2, 0xC7E4E5,\n 0xC7E4E8, 0xC7E4EA, 0xC7E520, 0xC7E620, 0xC7E6CA, 0xC820C7, 0xC920C7, 0xC920E1,\n 0xC920E4, 0xC920E5, 0xC920E8, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920,\n 0xD320C7, 0xD920C7, 0xD9E4E9, 0xE1EA20, 0xE420C7, 0xE4C920, 0xE4E920, 0xE4EA20,\n 0xE520C7, 0xE5C720, 0xE5C920, 0xE5E620, 0xE620C7, 0xE720C7, 0xE7C720, 0xE8C7E4,\n 0xE8E620, 0xE920C7, 0xEA20C7, 0xEA20E5, 0xEA20E8, 0xEAC920, 0xEAD120, 0xEAE620\n ];\n };\n\n this.name = function(det) {\n return 'ISO-8859-6';\n };\n\n this.language = function() {\n return 'ar';\n };\n};\nutil.inherits(module.exports.ISO_8859_6, sbcs);\n\n\nmodule.exports.ISO_8859_7 = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0xA1, 0xA2, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xDC, 0x20,\n 0xDD, 0xDE, 0xDF, 0x20, 0xFC, 0x20, 0xFD, 0xFE,\n 0xC0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0x20, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xDC, 0xDD, 0xDE, 0xDF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x20\n ];\n };\n\n this.ngrams = function() {\n return [\n 0x20E1ED, 0x20E1F0, 0x20E3E9, 0x20E4E9, 0x20E5F0, 0x20E720, 0x20EAE1, 0x20ECE5,\n 0x20EDE1, 0x20EF20, 0x20F0E1, 0x20F0EF, 0x20F0F1, 0x20F3F4, 0x20F3F5, 0x20F4E7,\n 0x20F4EF, 0xDFE120, 0xE120E1, 0xE120F4, 0xE1E920, 0xE1ED20, 0xE1F0FC, 0xE1F220,\n 0xE3E9E1, 0xE5E920, 0xE5F220, 0xE720F4, 0xE7ED20, 0xE7F220, 0xE920F4, 0xE9E120,\n 0xE9EADE, 0xE9F220, 0xEAE1E9, 0xEAE1F4, 0xECE520, 0xED20E1, 0xED20E5, 0xED20F0,\n 0xEDE120, 0xEFF220, 0xEFF520, 0xF0EFF5, 0xF0F1EF, 0xF0FC20, 0xF220E1, 0xF220E5,\n 0xF220EA, 0xF220F0, 0xF220F4, 0xF3E520, 0xF3E720, 0xF3F4EF, 0xF4E120, 0xF4E1E9,\n 0xF4E7ED, 0xF4E7F2, 0xF4E9EA, 0xF4EF20, 0xF4EFF5, 0xF4F9ED, 0xF9ED20, 0xFEED20\n ];\n };\n\n this.name = function(det) {\n return (det && det.fC1Bytes) ? 'windows-1253' : 'ISO-8859-7';\n };\n\n this.language = function() {\n return 'el';\n };\n};\nutil.inherits(module.exports.ISO_8859_7, sbcs);\n\nmodule.exports.ISO_8859_8 = function() {\n\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n 0xF8, 0xF9, 0xFA, 0x20, 0x20, 0x20, 0x20, 0x20\n ];\n };\n\n this.ngrams = function() {\n return [\n new NGramsPlusLang('he', [\n 0x20E0E5, 0x20E0E7, 0x20E0E9, 0x20E0FA, 0x20E1E9, 0x20E1EE, 0x20E4E0, 0x20E4E5,\n 0x20E4E9, 0x20E4EE, 0x20E4F2, 0x20E4F9, 0x20E4FA, 0x20ECE0, 0x20ECE4, 0x20EEE0,\n 0x20F2EC, 0x20F9EC, 0xE0FA20, 0xE420E0, 0xE420E1, 0xE420E4, 0xE420EC, 0xE420EE,\n 0xE420F9, 0xE4E5E0, 0xE5E020, 0xE5ED20, 0xE5EF20, 0xE5F820, 0xE5FA20, 0xE920E4,\n 0xE9E420, 0xE9E5FA, 0xE9E9ED, 0xE9ED20, 0xE9EF20, 0xE9F820, 0xE9FA20, 0xEC20E0,\n 0xEC20E4, 0xECE020, 0xECE420, 0xED20E0, 0xED20E1, 0xED20E4, 0xED20EC, 0xED20EE,\n 0xED20F9, 0xEEE420, 0xEF20E4, 0xF0E420, 0xF0E920, 0xF0E9ED, 0xF2EC20, 0xF820E4,\n 0xF8E9ED, 0xF9EC20, 0xFA20E0, 0xFA20E1, 0xFA20E4, 0xFA20EC, 0xFA20EE, 0xFA20F9,\n ]),\n new NGramsPlusLang('he', [\n 0x20E0E5, 0x20E0EC, 0x20E4E9, 0x20E4EC, 0x20E4EE, 0x20E4F0, 0x20E9F0, 0x20ECF2,\n 0x20ECF9, 0x20EDE5, 0x20EDE9, 0x20EFE5, 0x20EFE9, 0x20F8E5, 0x20F8E9, 0x20FAE0,\n 0x20FAE5, 0x20FAE9, 0xE020E4, 0xE020EC, 0xE020ED, 0xE020FA, 0xE0E420, 0xE0E5E4,\n 0xE0EC20, 0xE0EE20, 0xE120E4, 0xE120ED, 0xE120FA, 0xE420E4, 0xE420E9, 0xE420EC,\n 0xE420ED, 0xE420EF, 0xE420F8, 0xE420FA, 0xE4EC20, 0xE5E020, 0xE5E420, 0xE7E020,\n 0xE9E020, 0xE9E120, 0xE9E420, 0xEC20E4, 0xEC20ED, 0xEC20FA, 0xECF220, 0xECF920,\n 0xEDE9E9, 0xEDE9F0, 0xEDE9F8, 0xEE20E4, 0xEE20ED, 0xEE20FA, 0xEEE120, 0xEEE420,\n 0xF2E420, 0xF920E4, 0xF920ED, 0xF920FA, 0xF9E420, 0xFAE020, 0xFAE420, 0xFAE5E9,\n ])\n ];\n };\n\n this.name = function(det) {\n return (det && det.fC1Bytes) ? 'windows-1255' : 'ISO-8859-8';\n };\n\n this.language = function() {\n return 'he';\n };\n\n};\nutil.inherits(module.exports.ISO_8859_8, sbcs);\n\n\nmodule.exports.ISO_8859_9 = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,\n 0x20, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x69, 0xFE, 0xDF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF\n ];\n };\n\n this.ngrams = function() {\n return [\n 0x206261, 0x206269, 0x206275, 0x206461, 0x206465, 0x206765, 0x206861, 0x20696C,\n 0x206B61, 0x206B6F, 0x206D61, 0x206F6C, 0x207361, 0x207461, 0x207665, 0x207961,\n 0x612062, 0x616B20, 0x616C61, 0x616D61, 0x616E20, 0x616EFD, 0x617220, 0x617261,\n 0x6172FD, 0x6173FD, 0x617961, 0x626972, 0x646120, 0x646520, 0x646920, 0x652062,\n 0x65206B, 0x656469, 0x656E20, 0x657220, 0x657269, 0x657369, 0x696C65, 0x696E20,\n 0x696E69, 0x697220, 0x6C616E, 0x6C6172, 0x6C6520, 0x6C6572, 0x6E2061, 0x6E2062,\n 0x6E206B, 0x6E6461, 0x6E6465, 0x6E6520, 0x6E6920, 0x6E696E, 0x6EFD20, 0x72696E,\n 0x72FD6E, 0x766520, 0x796120, 0x796F72, 0xFD6E20, 0xFD6E64, 0xFD6EFD, 0xFDF0FD\n ];\n };\n\n this.name = function(det) {\n return (det && det.fC1Bytes) ? 'windows-1254' : 'ISO-8859-9';\n };\n\n this.language = function() {\n return 'tr';\n };\n};\nutil.inherits(module.exports.ISO_8859_9, sbcs);\n\n\nmodule.exports.windows_1251 = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x90, 0x83, 0x20, 0x83, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x9A, 0x20, 0x9C, 0x9D, 0x9E, 0x9F,\n 0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x9A, 0x20, 0x9C, 0x9D, 0x9E, 0x9F,\n 0x20, 0xA2, 0xA2, 0xBC, 0x20, 0xB4, 0x20, 0x20,\n 0xB8, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0xBF,\n 0x20, 0x20, 0xB3, 0xB3, 0xB4, 0xB5, 0x20, 0x20,\n 0xB8, 0x20, 0xBA, 0x20, 0xBC, 0xBE, 0xBE, 0xBF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF\n ];\n };\n\n this.ngrams = function() {\n return [\n 0x20E220, 0x20E2EE, 0x20E4EE, 0x20E7E0, 0x20E820, 0x20EAE0, 0x20EAEE, 0x20EDE0,\n 0x20EDE5, 0x20EEE1, 0x20EFEE, 0x20EFF0, 0x20F0E0, 0x20F1EE, 0x20F1F2, 0x20F2EE,\n 0x20F7F2, 0x20FDF2, 0xE0EDE8, 0xE0F2FC, 0xE3EE20, 0xE5EBFC, 0xE5EDE8, 0xE5F1F2,\n 0xE5F220, 0xE820EF, 0xE8E520, 0xE8E820, 0xE8FF20, 0xEBE5ED, 0xEBE820, 0xEBFCED,\n 0xEDE020, 0xEDE520, 0xEDE8E5, 0xEDE8FF, 0xEDEE20, 0xEDEEE2, 0xEE20E2, 0xEE20EF,\n 0xEE20F1, 0xEEE220, 0xEEE2E0, 0xEEE3EE, 0xEEE920, 0xEEEBFC, 0xEEEC20, 0xEEF1F2,\n 0xEFEEEB, 0xEFF0E5, 0xEFF0E8, 0xEFF0EE, 0xF0E0E2, 0xF0E5E4, 0xF1F2E0, 0xF1F2E2,\n 0xF1F2E8, 0xF1FF20, 0xF2E5EB, 0xF2EE20, 0xF2EEF0, 0xF2FC20, 0xF7F2EE, 0xFBF520\n ];\n };\n\n this.name = function(det) {\n return 'windows-1251';\n };\n\n this.language = function() {\n return 'ru';\n };\n};\nutil.inherits(module.exports.windows_1251, sbcs);\n\n\nmodule.exports.windows_1256 = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x81, 0x20, 0x83, 0x20, 0x20, 0x20, 0x20,\n 0x88, 0x20, 0x8A, 0x20, 0x9C, 0x8D, 0x8E, 0x8F,\n 0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x98, 0x20, 0x9A, 0x20, 0x9C, 0x20, 0x20, 0x9F,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,\n 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,\n 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0x20,\n 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,\n 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n 0x20, 0x20, 0x20, 0x20, 0xF4, 0x20, 0x20, 0x20,\n 0x20, 0xF9, 0x20, 0xFB, 0xFC, 0x20, 0x20, 0xFF\n ];\n };\n\n this.ngrams = function() {\n return [\n 0x20C7E1, 0x20C7E4, 0x20C8C7, 0x20DAE1, 0x20DDED, 0x20E1E1, 0x20E3E4, 0x20E6C7,\n 0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E120, 0xC7E1C3, 0xC7E1C7, 0xC7E1C8,\n 0xC7E1CA, 0xC7E1CC, 0xC7E1CD, 0xC7E1CF, 0xC7E1D3, 0xC7E1DA, 0xC7E1DE, 0xC7E1E3,\n 0xC7E1E6, 0xC7E1ED, 0xC7E320, 0xC7E420, 0xC7E4CA, 0xC820C7, 0xC920C7, 0xC920DD,\n 0xC920E1, 0xC920E3, 0xC920E6, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920,\n 0xD320C7, 0xDA20C7, 0xDAE1EC, 0xDDED20, 0xE120C7, 0xE1C920, 0xE1EC20, 0xE1ED20,\n 0xE320C7, 0xE3C720, 0xE3C920, 0xE3E420, 0xE420C7, 0xE520C7, 0xE5C720, 0xE6C7E1,\n 0xE6E420, 0xEC20C7, 0xED20C7, 0xED20E3, 0xED20E6, 0xEDC920, 0xEDD120, 0xEDE420\n ];\n };\n\n this.name = function(det) {\n return 'windows-1256';\n };\n\n this.language = function() {\n return 'ar';\n };\n};\nutil.inherits(module.exports.windows_1256, sbcs);\n\n\nmodule.exports.KOI8_R = function() {\n this.byteMap = function() {\n return [\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n 0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0xA3, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0xA3, 0x20, 0x20, 0x20, 0x20,\n 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,\n 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,\n 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,\n 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,\n 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,\n 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF\n ];\n };\n\n this.ngrams = function() {\n return [\n 0x20C4CF, 0x20C920, 0x20CBC1, 0x20CBCF, 0x20CEC1, 0x20CEC5, 0x20CFC2, 0x20D0CF,\n 0x20D0D2, 0x20D2C1, 0x20D3CF, 0x20D3D4, 0x20D4CF, 0x20D720, 0x20D7CF, 0x20DAC1,\n 0x20DCD4, 0x20DED4, 0xC1CEC9, 0xC1D4D8, 0xC5CCD8, 0xC5CEC9, 0xC5D3D4, 0xC5D420,\n 0xC7CF20, 0xC920D0, 0xC9C520, 0xC9C920, 0xC9D120, 0xCCC5CE, 0xCCC920, 0xCCD8CE,\n 0xCEC120, 0xCEC520, 0xCEC9C5, 0xCEC9D1, 0xCECF20, 0xCECFD7, 0xCF20D0, 0xCF20D3,\n 0xCF20D7, 0xCFC7CF, 0xCFCA20, 0xCFCCD8, 0xCFCD20, 0xCFD3D4, 0xCFD720, 0xCFD7C1,\n 0xD0CFCC, 0xD0D2C5, 0xD0D2C9, 0xD0D2CF, 0xD2C1D7, 0xD2C5C4, 0xD3D120, 0xD3D4C1,\n 0xD3D4C9, 0xD3D4D7, 0xD4C5CC, 0xD4CF20, 0xD4CFD2, 0xD4D820, 0xD9C820, 0xDED4CF\n ];\n };\n\n this.name = function(det) {\n return 'KOI8-R';\n };\n\n this.language = function() {\n return 'ru';\n };\n};\nutil.inherits(module.exports.KOI8_R, sbcs);\n\n\n/*\nmodule.exports.ISO_8859_7 = function() {\n this.byteMap = function() {\n return [\n\n ];\n };\n\n this.ngrams = function() {\n return [\n\n ];\n };\n\n this.name = function(det) {\n if (typeof det == 'undefined')\n return 'ISO-8859-7';\n return det.fC1Bytes ? 'windows-1253' : 'ISO-8859-7';\n };\n\n this.language = function() {\n return 'el';\n };\n};\nutil.inherits(module.exports.ISO_8859_7, sbcs);\n*/\n\n", "var util = require('util'),\n Match = require ('../match');\n\n\n/**\n * This is a superclass for the individual detectors for\n * each of the detectable members of the ISO 2022 family\n * of encodings.\n */\n\nfunction ISO_2022() {}\n\nISO_2022.prototype.match = function(det) {\n\n /**\n * Matching function shared among the 2022 detectors JP, CN and KR\n * Counts up the number of legal an unrecognized escape sequences in\n * the sample of text, and computes a score based on the total number &\n * the proportion that fit the encoding.\n *\n *\n * @param text the byte buffer containing text to analyse\n * @param textLen the size of the text in the byte.\n * @param escapeSequences the byte escape sequences to test for.\n * @return match quality, in the range of 0-100.\n */\n\n var i, j;\n var escN;\n var hits = 0;\n var misses = 0;\n var shifts = 0;\n var quality;\n\n // TODO: refactor me\n var text = det.fInputBytes;\n var textLen = det.fInputLen;\n\n scanInput:\n for (i = 0; i < textLen; i++) {\n if (text[i] == 0x1b) {\n checkEscapes:\n for (escN = 0; escN < this.escapeSequences.length; escN++) {\n var seq = this.escapeSequences[escN];\n\n if ((textLen - i) < seq.length)\n continue checkEscapes;\n\n for (j = 1; j < seq.length; j++)\n if (seq[j] != text[i + j])\n continue checkEscapes;\n\n\n hits++;\n i += seq.length - 1;\n continue scanInput;\n }\n\n misses++;\n }\n\n // Shift in/out\n if (text[i] == 0x0e || text[i] == 0x0f)\n shifts++;\n\n }\n\n if (hits == 0)\n return null;\n\n //\n // Initial quality is based on relative proportion of recongized vs.\n // unrecognized escape sequences.\n // All good: quality = 100;\n // half or less good: quality = 0;\n // linear inbetween.\n quality = (100 * hits - 100 * misses) / (hits + misses);\n\n // Back off quality if there were too few escape sequences seen.\n // Include shifts in this computation, so that KR does not get penalized\n // for having only a single Escape sequence, but many shifts.\n if (hits + shifts < 5)\n quality -= (5 - (hits + shifts)) * 10;\n\n return quality <= 0 ? null : new Match(det, this, quality);\n};\n\nmodule.exports.ISO_2022_JP = function() {\n this.name = function() {\n return 'ISO-2022-JP';\n };\n this.escapeSequences = [\n [ 0x1b, 0x24, 0x28, 0x43 ], // KS X 1001:1992\n [ 0x1b, 0x24, 0x28, 0x44 ], // JIS X 212-1990\n [ 0x1b, 0x24, 0x40 ], // JIS C 6226-1978\n [ 0x1b, 0x24, 0x41 ], // GB 2312-80\n [ 0x1b, 0x24, 0x42 ], // JIS X 208-1983\n [ 0x1b, 0x26, 0x40 ], // JIS X 208 1990, 1997\n [ 0x1b, 0x28, 0x42 ], // ASCII\n [ 0x1b, 0x28, 0x48 ], // JIS-Roman\n [ 0x1b, 0x28, 0x49 ], // Half-width katakana\n [ 0x1b, 0x28, 0x4a ], // JIS-Roman\n [ 0x1b, 0x2e, 0x41 ], // ISO 8859-1\n [ 0x1b, 0x2e, 0x46 ] // ISO 8859-7\n ];\n};\nutil.inherits(module.exports.ISO_2022_JP, ISO_2022);\n\n\n\nmodule.exports.ISO_2022_KR = function() {\n this.name = function() {\n return 'ISO-2022-KR';\n };\n this.escapeSequences = [\n [ 0x1b, 0x24, 0x29, 0x43 ]\n ];\n};\nutil.inherits(module.exports.ISO_2022_KR, ISO_2022);\n\n\n\nmodule.exports.ISO_2022_CN = function() {\n this.name = function() {\n return 'ISO-2022-CN';\n };\n this.escapeSequences = [\n [ 0x1b, 0x24, 0x29, 0x41 ], // GB 2312-80\n [ 0x1b, 0x24, 0x29, 0x47 ], // CNS 11643-1992 Plane 1\n [ 0x1b, 0x24, 0x2A, 0x48 ], // CNS 11643-1992 Plane 2\n [ 0x1b, 0x24, 0x29, 0x45 ], // ISO-IR-165\n [ 0x1b, 0x24, 0x2B, 0x49 ], // CNS 11643-1992 Plane 3\n [ 0x1b, 0x24, 0x2B, 0x4A ], // CNS 11643-1992 Plane 4\n [ 0x1b, 0x24, 0x2B, 0x4B ], // CNS 11643-1992 Plane 5\n [ 0x1b, 0x24, 0x2B, 0x4C ], // CNS 11643-1992 Plane 6\n [ 0x1b, 0x24, 0x2B, 0x4D ], // CNS 11643-1992 Plane 7\n [ 0x1b, 0x4e ], // SS2\n [ 0x1b, 0x4f ] // SS3\n ];\n};\nutil.inherits(module.exports.ISO_2022_CN, ISO_2022);\n", "\nvar fs = require('fs');\n\nvar utf8 = require('./encoding/utf8'),\n unicode = require('./encoding/unicode'),\n mbcs = require('./encoding/mbcs'),\n sbcs = require('./encoding/sbcs'),\n iso2022 = require('./encoding/iso2022');\n\nvar self = this;\n\nvar recognisers = [\n new utf8,\n new unicode.UTF_16BE,\n new unicode.UTF_16LE,\n new unicode.UTF_32BE,\n new unicode.UTF_32LE,\n new mbcs.sjis,\n new mbcs.big5,\n new mbcs.euc_jp,\n new mbcs.euc_kr,\n new mbcs.gb_18030,\n new iso2022.ISO_2022_JP,\n new iso2022.ISO_2022_KR,\n new iso2022.ISO_2022_CN,\n new sbcs.ISO_8859_1,\n new sbcs.ISO_8859_2,\n new sbcs.ISO_8859_5,\n new sbcs.ISO_8859_6,\n new sbcs.ISO_8859_7,\n new sbcs.ISO_8859_8,\n new sbcs.ISO_8859_9,\n new sbcs.windows_1251,\n new sbcs.windows_1256,\n new sbcs.KOI8_R\n];\n\nmodule.exports.detect = function(buffer, opts) {\n\n // Tally up the byte occurence statistics.\n var fByteStats = [];\n for (var i = 0; i < 256; i++)\n fByteStats[i] = 0;\n\n for (var i = buffer.length - 1; i >= 0; i--)\n fByteStats[buffer[i] & 0x00ff]++;\n\n var fC1Bytes = false;\n for (var i = 0x80; i <= 0x9F; i += 1) {\n if (fByteStats[i] != 0) {\n fC1Bytes = true;\n break;\n }\n }\n\n var context = {\n fByteStats: fByteStats,\n fC1Bytes: fC1Bytes,\n fRawInput: buffer,\n fRawLength: buffer.length,\n fInputBytes: buffer,\n fInputLen: buffer.length\n };\n\n var matches = recognisers.map(function(rec) {\n return rec.match(context);\n }).filter(function(match) {\n return !!match;\n }).sort(function(a, b) {\n return b.confidence - a.confidence;\n });\n\n if (opts && opts.returnAllMatches === true) {\n return matches;\n }\n else {\n return matches.length > 0 ? matches[0].name : null;\n }\n};\n\nmodule.exports.detectFile = function(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = undefined;\n }\n\n var fd;\n\n var handler = function(err, buffer) {\n if (fd) {\n fs.closeSync(fd);\n }\n\n if (err) return cb(err, null);\n cb(null, self.detect(buffer, opts));\n };\n\n if (opts && opts.sampleSize) {\n fd = fs.openSync(filepath, 'r'),\n sample = Buffer.allocUnsafe(opts.sampleSize);\n\n fs.read(fd, sample, 0, opts.sampleSize, null, function(err) {\n handler(err, sample);\n });\n return;\n }\n\n fs.readFile(filepath, handler);\n};\n\nmodule.exports.detectFileSync = function(filepath, opts) {\n if (opts && opts.sampleSize) {\n var fd = fs.openSync(filepath, 'r'),\n sample = Buffer.allocUnsafe(opts.sampleSize);\n\n fs.readSync(fd, sample, 0, opts.sampleSize);\n fs.closeSync(fd);\n return self.detect(sample, opts);\n }\n\n return self.detect(fs.readFileSync(filepath), opts);\n};\n\n// Wrappers for the previous functions to return all encodings\nmodule.exports.detectAll = function(buffer, opts) {\n if (typeof opts !== 'object') {\n opts = {};\n }\n opts.returnAllMatches = true;\n return self.detect(buffer, opts);\n}\n\nmodule.exports.detectFileAll = function(filepath, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = undefined;\n }\n if (typeof opts !== 'object') {\n opts = {};\n }\n opts.returnAllMatches = true;\n self.detectFile(filepath, opts, cb);\n}\n\nmodule.exports.detectFileAllSync = function(filepath, opts) {\n if (typeof opts !== 'object') {\n opts = {};\n }\n opts.returnAllMatches = true;\n return self.detectFileSync(filepath, opts);\n}\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '\uD83D\uDCA9') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n StringDecoder.call(this, codec.enc);\n}\n\nInternalDecoder.prototype = StringDecoder.prototype;\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBytes = [];\n this.initialBytesLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBytes.push(buf);\n this.initialBytesLen += buf.length;\n \n if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n this.initialBytes.length = this.initialBytesLen = 0;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var res = this.decoder.write(buf),\n trail = this.decoder.end();\n\n return trail ? (res + trail) : res;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(buf, defaultEncoding) {\n var enc = defaultEncoding || 'utf-16le';\n\n if (buf.length >= 2) {\n // Check BOM.\n if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM\n enc = 'utf-16be';\n else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM\n enc = 'utf-16le';\n else {\n // No BOM found. Try to deduce encoding from initial content.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.\n\n for (var i = 0; i < _len; i += 2) {\n if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;\n if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;\n }\n\n if (asciiCharsBE > asciiCharsLE)\n enc = 'utf-16be';\n else if (asciiCharsBE < asciiCharsLE)\n enc = 'utf-16le';\n }\n }\n\n return enc;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString();\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString();\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n", "\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n }\n}", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 decode tables.\n var thirdByteNodeIdx = this.decodeTables.length;\n var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n var fourthByteNodeIdx = this.decodeTables.length;\n var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];\n var secondByteNode = this.decodeTables[secondByteNodeIdx];\n for (var j = 0x30; j <= 0x39; j++)\n secondByteNode[j] = NODE_START - thirdByteNodeIdx;\n }\n for (var i = 0x81; i <= 0xFE; i++)\n thirdByteNode[i] = NODE_START - fourthByteNodeIdx;\n for (var i = 0x30; i <= 0x39; i++)\n fourthByteNode[i] = GB18030_CODE\n } \n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0)\n this._setEncodeChar(uCode, mbCode);\n else if (uCode <= NODE_START)\n this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);\n else if (uCode <= SEQ_START)\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n }\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBuf = Buffer.alloc(0);\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,\n seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.\n uCode;\n\n if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.\n prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);\n \n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).\n uCode = this.defaultCharUnicode.charCodeAt(0);\n }\n else if (uCode === GB18030_CODE) {\n var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode > 0xFFFF) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 + uCode % 0x400;\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBuf.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var buf = this.prevBuf.slice(1);\n\n // Parse remaining as usual.\n this.prevBuf = Buffer.alloc(0);\n this.nodeIdx = 0;\n if (buf.length > 0)\n ret += this.write(buf);\n }\n\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + Math.floor((r-l+1)/2);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n", "\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'\u20AC': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [0xa2cc],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n", "\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it. \nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n", "\"use strict\";\n\nvar Buffer = require(\"buffer\").Buffer,\n Transform = require(\"stream\").Transform;\n\n\n// == Exports ==================================================================\nmodule.exports = function(iconv) {\n \n // Additional Public API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n\n\n // Not published yet.\n iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;\n iconv._collect = IconvLiteDecoderStream.prototype.collect;\n};\n\n\n// == Encoder stream =======================================================\nfunction IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n}\n\nIconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n});\n\nIconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n}\n\n\n// == Decoder stream =======================================================\nfunction IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n}\n\nIconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n});\n\nIconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n}\n\n", "\"use strict\";\nvar Buffer = require(\"buffer\").Buffer;\n// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer\n\n// == Extend Node primitives to use iconv-lite =================================\n\nmodule.exports = function (iconv) {\n var original = undefined; // Place to keep original methods.\n\n // Node authors rewrote Buffer internals to make it compatible with\n // Uint8Array and we cannot patch key functions since then.\n // Note: this does use older Buffer API on a purpose\n iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);\n\n iconv.extendNodeEncodings = function extendNodeEncodings() {\n if (original) return;\n original = {};\n\n if (!iconv.supportsNodeEncodingsExtension) {\n console.error(\"ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node\");\n console.error(\"See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility\");\n return;\n }\n\n var nodeNativeEncodings = {\n 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, \n 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,\n };\n\n Buffer.isNativeEncoding = function(enc) {\n return enc && nodeNativeEncodings[enc.toLowerCase()];\n }\n\n // -- SlowBuffer -----------------------------------------------------------\n var SlowBuffer = require('buffer').SlowBuffer;\n\n original.SlowBufferToString = SlowBuffer.prototype.toString;\n SlowBuffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.SlowBufferWrite = SlowBuffer.prototype.write;\n SlowBuffer.prototype.write = function(string, offset, length, encoding) {\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferWrite.call(this, string, offset, length, encoding);\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n }\n\n // -- Buffer ---------------------------------------------------------------\n\n original.BufferIsEncoding = Buffer.isEncoding;\n Buffer.isEncoding = function(encoding) {\n return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);\n }\n\n original.BufferByteLength = Buffer.byteLength;\n Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferByteLength.call(this, str, encoding);\n\n // Slow, I know, but we don't have a better way yet.\n return iconv.encode(str, encoding).length;\n }\n\n original.BufferToString = Buffer.prototype.toString;\n Buffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.BufferWrite = Buffer.prototype.write;\n Buffer.prototype.write = function(string, offset, length, encoding) {\n var _offset = offset, _length = length, _encoding = encoding;\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferWrite.call(this, string, _offset, _length, _encoding);\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n\n // TODO: Set _charsWritten.\n }\n\n\n // -- Readable -------------------------------------------------------------\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n original.ReadableSetEncoding = Readable.prototype.setEncoding;\n Readable.prototype.setEncoding = function setEncoding(enc, options) {\n // Use our own decoder, it has the same interface.\n // We cannot use original function as it doesn't handle BOM-s.\n this._readableState.decoder = iconv.getDecoder(enc, options);\n this._readableState.encoding = enc;\n }\n\n Readable.prototype.collect = iconv._collect;\n }\n }\n\n // Remove iconv-lite Node primitive extensions.\n iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {\n if (!iconv.supportsNodeEncodingsExtension)\n return;\n if (!original)\n throw new Error(\"require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.\")\n\n delete Buffer.isNativeEncoding;\n\n var SlowBuffer = require('buffer').SlowBuffer;\n\n SlowBuffer.prototype.toString = original.SlowBufferToString;\n SlowBuffer.prototype.write = original.SlowBufferWrite;\n\n Buffer.isEncoding = original.BufferIsEncoding;\n Buffer.byteLength = original.BufferByteLength;\n Buffer.prototype.toString = original.BufferToString;\n Buffer.prototype.write = original.BufferWrite;\n\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n Readable.prototype.setEncoding = original.ReadableSetEncoding;\n delete Readable.prototype.collect;\n }\n\n original = undefined;\n }\n}\n", "\"use strict\";\n\n// Some environments don't have global Buffer (e.g. React Native).\n// Solution would be installing npm modules \"buffer\" and \"stream\" explicitly.\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '\uFFFD';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n\n// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.\nvar nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;\nif (nodeVer) {\n\n // Load streaming support in Node v0.10+\n var nodeVerArr = nodeVer.split(\".\").map(Number);\n if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {\n require(\"./streams\")(iconv);\n }\n\n // Load Node primitive extensions.\n require(\"./extend-node\")(iconv);\n}\n\nif (\"\u0100\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n", "'use strict';\nvar isWindows = process.platform === 'win32';\nvar trailingSlashRe = isWindows ? /[^:]\\\\$/ : /.\\/$/;\n\n// https://github.com/nodejs/node/blob/3e7a14381497a3b73dda68d05b5130563cdab420/lib/os.js#L25-L43\nmodule.exports = function () {\n\tvar path;\n\n\tif (isWindows) {\n\t\tpath = process.env.TEMP ||\n\t\t\tprocess.env.TMP ||\n\t\t\t(process.env.SystemRoot || process.env.windir) + '\\\\temp';\n\t} else {\n\t\tpath = process.env.TMPDIR ||\n\t\t\tprocess.env.TMP ||\n\t\t\tprocess.env.TEMP ||\n\t\t\t'/tmp';\n\t}\n\n\tif (trailingSlashRe.test(path)) {\n\t\tpath = path.slice(0, -1);\n\t}\n\n\treturn path;\n};\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst path = require('path');\nconst crypto = require('crypto');\nconst osTmpDir = require('os-tmpdir');\nconst _c = process.binding('constants');\n\n/*\n * The working inner variables.\n */\nconst\n /**\n * The temporary directory.\n * @type {string}\n */\n tmpDir = osTmpDir(),\n\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 448 /* 0o700 */,\n FILE_MODE = 384 /* 0o600 */,\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [];\n\nvar\n _gracefulCleanup = false,\n _uncaughtException = false;\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n var\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|Function)} options\n * @param {Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n if (typeof options == 'function') {\n return [callback || {}, options];\n }\n\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n return [options, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n if (opts.name) {\n return path.join(opts.dir || tmpDir, opts.name);\n }\n\n // mkstemps like template\n if (opts.template) {\n return opts.template.replace(TEMPLATE_PATTERN, _randomChars(6));\n }\n\n // prefix and postfix\n const name = [\n opts.prefix || 'tmp-',\n process.pid,\n _randomChars(12),\n opts.postfix || ''\n ].join('');\n\n return path.join(opts.dir || tmpDir, name);\n}\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n var\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1],\n tries = opts.name ? 1 : opts.tries || DEFAULT_TRIES;\n\n if (isNaN(tries) || tries < 0)\n return cb(new Error('Invalid tries'));\n\n if (opts.template && !opts.template.match(TEMPLATE_PATTERN))\n return cb(new Error('Invalid template provided'));\n\n (function _getUniqueName() {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n if (!err) {\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n var\n args = _parseArguments(options),\n opts = args[0],\n tries = opts.name ? 1 : opts.tries || DEFAULT_TRIES;\n\n if (isNaN(tries) || tries < 0)\n throw new Error('Invalid tries');\n\n if (opts.template && !opts.template.match(TEMPLATE_PATTERN))\n throw new Error('Invalid template provided');\n\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|fileCallback)} options the config options or the callback function\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n var\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n opts.postfix = (_isUndefined(opts.postfix)) ? '.tmp' : opts.postfix;\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(err) {\n if (err) {\n // Low probability, and the file exists, so this could be\n // ignored. If it isn't we certainly need to unlink the\n // file, and if that fails too its error is more\n // important.\n try {\n fs.unlinkSync(name);\n } catch (e) {\n if (!isENOENT(e)) {\n err = e;\n }\n }\n return cb(err);\n }\n cb(null, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts));\n });\n }\n if (opts.detachDescriptor) {\n return cb(null, name, fd, _prepareTmpFileRemoveCallback(name, -1, opts));\n }\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, fd, opts));\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n var\n args = _parseArguments(options),\n opts = args[0];\n\n opts.postfix = opts.postfix || '.tmp';\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n if (opts.discardDescriptor) {\n fs.closeSync(fd); \n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts)\n };\n}\n\n/**\n * Removes files and folders in a directory recursively.\n *\n * @param {string} root\n * @private\n */\nfunction _rmdirRecursiveSync(root) {\n const dirs = [root];\n\n do {\n var\n dir = dirs.pop(),\n deferred = false,\n files = fs.readdirSync(dir);\n\n for (var i = 0, length = files.length; i < length; i++) {\n var\n file = path.join(dir, files[i]),\n stat = fs.lstatSync(file); // lstat so we don't recurse into symlinked directories\n\n if (stat.isDirectory()) {\n if (!deferred) {\n deferred = true;\n dirs.push(dir);\n }\n dirs.push(file);\n } else {\n fs.unlinkSync(file);\n }\n }\n\n if (!deferred) {\n fs.rmdirSync(dir);\n }\n } while (dirs.length !== 0);\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n var\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n var\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts)\n };\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @returns {fileCallback}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts) {\n const removeCallback = _prepareRemoveCallback(function _removeCallback(fdPath) {\n try {\n if (0 <= fdPath[0]) {\n fs.closeSync(fdPath[0]);\n }\n }\n catch (e) {\n // under some node/windows related circumstances, a temporary file\n // may have not be created as expected or the file was already closed\n // by the user, in which case we will simply ignore the error\n if (!isEBADF(e) && !isENOENT(e)) {\n // reraise any unanticipated error\n throw e;\n }\n }\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n if (!isENOENT(e)) {\n // reraise any unanticipated error\n throw e;\n }\n }\n }, [fd, name]);\n\n if (!opts.keep) {\n _removeObjects.unshift(removeCallback);\n }\n\n return removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * @param {string} name\n * @param {Object} opts\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts) {\n const removeFunction = opts.unsafeCleanup ? _rmdirRecursiveSync : fs.rmdirSync.bind(fs);\n const removeCallback = _prepareRemoveCallback(removeFunction, name);\n\n if (!opts.keep) {\n _removeObjects.unshift(removeCallback);\n }\n\n return removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * @param {Function} removeFunction\n * @param {Object} arg\n * @returns {Function}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, arg) {\n var called = false;\n\n return function _cleanupCallback(next) {\n if (!called) {\n const index = _removeObjects.indexOf(_cleanupCallback);\n if (index >= 0) {\n _removeObjects.splice(index, 1);\n }\n\n called = true;\n removeFunction(arg);\n }\n\n if (next) next(null);\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n if (_uncaughtException && !_gracefulCleanup) {\n return;\n }\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0].call(null);\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n */\nfunction isEBADF(error) {\n return isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n */\nfunction isENOENT(error) {\n return isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {String}\n * error.errno {String|Number} any numerical value will be negated\n *\n * - Node >= 6.0 < 7.0:\n * error.code {String}\n * error.errno {Number} negated\n *\n * - Node >= 4.0 < 6.0: introduces SystemError\n * error.code {String}\n * error.errno {Number} negated\n *\n * - Node >= 0.10 < 4.0:\n * error.code {Number} negated\n * error.errno n/a\n */\nfunction isExpectedError(error, code, errno) {\n return error.code == code || error.code == errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * Also removes the created files and directories when an uncaught exception occurs.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\nconst version = process.versions.node.split('.').map(function (value) {\n return parseInt(value, 10);\n});\n\nif (version[0] === 0 && (version[1] < 9 || version[1] === 9 && version[2] < 5)) {\n process.addListener('uncaughtException', function _uncaughtExceptionThrown(err) {\n _uncaughtException = true;\n _garbageCollector();\n\n throw err;\n });\n}\n\nprocess.addListener('exit', function _exit(code) {\n if (code) _uncaughtException = true;\n _garbageCollector();\n});\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?number} tries the number of tries before give up the name generation\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fix name\n * @property {?string} dir the tmp directory to use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call after entry was removed\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\nmodule.exports.tmpdir = tmpDir;\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2018\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CreateFileError = /** @class */ (function (_super) {\n __extends(CreateFileError, _super);\n function CreateFileError(originalError) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, \"Failed to create temporary file for editor\") || this;\n _this.originalError = originalError;\n var proto = _newTarget.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(_this, proto);\n }\n else {\n _this.__proto__ = _newTarget.prototype;\n }\n return _this;\n }\n return CreateFileError;\n}(Error));\nexports.CreateFileError = CreateFileError;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2018\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LaunchEditorError = /** @class */ (function (_super) {\n __extends(LaunchEditorError, _super);\n function LaunchEditorError(originalError) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, \"Failed launch editor\") || this;\n _this.originalError = originalError;\n var proto = _newTarget.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(_this, proto);\n }\n else {\n _this.__proto__ = _newTarget.prototype;\n }\n return _this;\n }\n return LaunchEditorError;\n}(Error));\nexports.LaunchEditorError = LaunchEditorError;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2018\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ReadFileError = /** @class */ (function (_super) {\n __extends(ReadFileError, _super);\n function ReadFileError(originalError) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, \"Failed to read temporary file\") || this;\n _this.originalError = originalError;\n var proto = _newTarget.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(_this, proto);\n }\n else {\n _this.__proto__ = _newTarget.prototype;\n }\n return _this;\n }\n return ReadFileError;\n}(Error));\nexports.ReadFileError = ReadFileError;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2018\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RemoveFileError = /** @class */ (function (_super) {\n __extends(RemoveFileError, _super);\n function RemoveFileError(originalError) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, \"Failed to cleanup temporary file\") || this;\n _this.originalError = originalError;\n var proto = _newTarget.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(_this, proto);\n }\n else {\n _this.__proto__ = _newTarget.prototype;\n }\n return _this;\n }\n return RemoveFileError;\n}(Error));\nexports.RemoveFileError = RemoveFileError;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2019\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chardet_1 = require(\"chardet\");\nvar child_process_1 = require(\"child_process\");\nvar fs_1 = require(\"fs\");\nvar iconv_lite_1 = require(\"iconv-lite\");\nvar tmp_1 = require(\"tmp\");\nvar CreateFileError_1 = require(\"./errors/CreateFileError\");\nexports.CreateFileError = CreateFileError_1.CreateFileError;\nvar LaunchEditorError_1 = require(\"./errors/LaunchEditorError\");\nexports.LaunchEditorError = LaunchEditorError_1.LaunchEditorError;\nvar ReadFileError_1 = require(\"./errors/ReadFileError\");\nexports.ReadFileError = ReadFileError_1.ReadFileError;\nvar RemoveFileError_1 = require(\"./errors/RemoveFileError\");\nexports.RemoveFileError = RemoveFileError_1.RemoveFileError;\nfunction edit(text, fileOptions) {\n if (text === void 0) { text = \"\"; }\n var editor = new ExternalEditor(text, fileOptions);\n editor.run();\n editor.cleanup();\n return editor.text;\n}\nexports.edit = edit;\nfunction editAsync(text, callback, fileOptions) {\n if (text === void 0) { text = \"\"; }\n var editor = new ExternalEditor(text, fileOptions);\n editor.runAsync(function (err, result) {\n if (err) {\n setImmediate(callback, err, null);\n }\n else {\n try {\n editor.cleanup();\n setImmediate(callback, null, result);\n }\n catch (cleanupError) {\n setImmediate(callback, cleanupError, null);\n }\n }\n });\n}\nexports.editAsync = editAsync;\nvar ExternalEditor = /** @class */ (function () {\n function ExternalEditor(text, fileOptions) {\n if (text === void 0) { text = \"\"; }\n this.text = \"\";\n this.fileOptions = {};\n this.text = text;\n if (fileOptions) {\n this.fileOptions = fileOptions;\n }\n this.determineEditor();\n this.createTemporaryFile();\n }\n ExternalEditor.splitStringBySpace = function (str) {\n var pieces = [];\n var currentString = \"\";\n for (var strIndex = 0; strIndex < str.length; strIndex++) {\n var currentLetter = str[strIndex];\n if (strIndex > 0 && currentLetter === \" \" && str[strIndex - 1] !== \"\\\\\" && currentString.length > 0) {\n pieces.push(currentString);\n currentString = \"\";\n }\n else {\n currentString += currentLetter;\n }\n }\n if (currentString.length > 0) {\n pieces.push(currentString);\n }\n return pieces;\n };\n Object.defineProperty(ExternalEditor.prototype, \"temp_file\", {\n get: function () {\n console.log(\"DEPRECATED: temp_file. Use tempFile moving forward.\");\n return this.tempFile;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExternalEditor.prototype, \"last_exit_status\", {\n get: function () {\n console.log(\"DEPRECATED: last_exit_status. Use lastExitStatus moving forward.\");\n return this.lastExitStatus;\n },\n enumerable: true,\n configurable: true\n });\n ExternalEditor.prototype.run = function () {\n this.launchEditor();\n this.readTemporaryFile();\n return this.text;\n };\n ExternalEditor.prototype.runAsync = function (callback) {\n var _this = this;\n try {\n this.launchEditorAsync(function () {\n try {\n _this.readTemporaryFile();\n setImmediate(callback, null, _this.text);\n }\n catch (readError) {\n setImmediate(callback, readError, null);\n }\n });\n }\n catch (launchError) {\n setImmediate(callback, launchError, null);\n }\n };\n ExternalEditor.prototype.cleanup = function () {\n this.removeTemporaryFile();\n };\n ExternalEditor.prototype.determineEditor = function () {\n var editor = process.env.VISUAL ? process.env.VISUAL :\n process.env.EDITOR ? process.env.EDITOR :\n /^win/.test(process.platform) ? \"notepad\" :\n \"vim\";\n var editorOpts = ExternalEditor.splitStringBySpace(editor).map(function (piece) { return piece.replace(\"\\\\ \", \" \"); });\n var bin = editorOpts.shift();\n this.editor = { args: editorOpts, bin: bin };\n };\n ExternalEditor.prototype.createTemporaryFile = function () {\n try {\n this.tempFile = tmp_1.tmpNameSync(this.fileOptions);\n var opt = { encoding: \"utf8\" };\n if (this.fileOptions.hasOwnProperty(\"mode\")) {\n opt.mode = this.fileOptions.mode;\n }\n fs_1.writeFileSync(this.tempFile, this.text, opt);\n }\n catch (createFileError) {\n throw new CreateFileError_1.CreateFileError(createFileError);\n }\n };\n ExternalEditor.prototype.readTemporaryFile = function () {\n try {\n var tempFileBuffer = fs_1.readFileSync(this.tempFile);\n if (tempFileBuffer.length === 0) {\n this.text = \"\";\n }\n else {\n var encoding = chardet_1.detect(tempFileBuffer).toString();\n if (!iconv_lite_1.encodingExists(encoding)) {\n // Probably a bad idea, but will at least prevent crashing\n encoding = \"utf8\";\n }\n this.text = iconv_lite_1.decode(tempFileBuffer, encoding);\n }\n }\n catch (readFileError) {\n throw new ReadFileError_1.ReadFileError(readFileError);\n }\n };\n ExternalEditor.prototype.removeTemporaryFile = function () {\n try {\n fs_1.unlinkSync(this.tempFile);\n }\n catch (removeFileError) {\n throw new RemoveFileError_1.RemoveFileError(removeFileError);\n }\n };\n ExternalEditor.prototype.launchEditor = function () {\n try {\n var editorProcess = child_process_1.spawnSync(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: \"inherit\" });\n this.lastExitStatus = editorProcess.status;\n }\n catch (launchError) {\n throw new LaunchEditorError_1.LaunchEditorError(launchError);\n }\n };\n ExternalEditor.prototype.launchEditorAsync = function (callback) {\n var _this = this;\n try {\n var editorProcess = child_process_1.spawn(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: \"inherit\" });\n editorProcess.on(\"exit\", function (code) {\n _this.lastExitStatus = code;\n setImmediate(callback);\n });\n }\n catch (launchError) {\n throw new LaunchEditorError_1.LaunchEditorError(launchError);\n }\n };\n return ExternalEditor;\n}());\nexports.ExternalEditor = ExternalEditor;\n", "'use strict'\n\nconst CATCH_ALL = /()(.+)/gi\nconst SCISSOR = '# ------------------------ >8 ------------------------'\n\nfunction trimOffNewlines (input) {\n const result = input.match(/[^\\r\\n]/)\n if (!result) {\n return ''\n }\n const firstIndex = result.index\n let lastIndex = input.length - 1\n while (input[lastIndex] === '\\r' || input[lastIndex] === '\\n') {\n lastIndex--\n }\n return input.substring(firstIndex, lastIndex + 1)\n}\n\nfunction append (src, line) {\n if (src) {\n src += '\\n' + line\n } else {\n src = line\n }\n\n return src\n}\n\nfunction getCommentFilter (char) {\n return function (line) {\n return line.charAt(0) !== char\n }\n}\n\nfunction truncateToScissor (lines) {\n const scissorIndex = lines.indexOf(SCISSOR)\n\n if (scissorIndex === -1) {\n return lines\n }\n\n return lines.slice(0, scissorIndex)\n}\n\nfunction getReferences (input, regex) {\n const references = []\n let referenceSentences\n let referenceMatch\n\n const reApplicable = input.match(regex.references) !== null\n ? regex.references\n : CATCH_ALL\n\n while ((referenceSentences = reApplicable.exec(input))) {\n const action = referenceSentences[1] || null\n const sentence = referenceSentences[2]\n\n while ((referenceMatch = regex.referenceParts.exec(sentence))) {\n let owner = null\n let repository = referenceMatch[1] || ''\n const ownerRepo = repository.split('/')\n\n if (ownerRepo.length > 1) {\n owner = ownerRepo.shift()\n repository = ownerRepo.join('/')\n }\n\n const reference = {\n action,\n owner,\n repository: repository || null,\n issue: referenceMatch[3],\n raw: referenceMatch[0],\n prefix: referenceMatch[2]\n }\n\n references.push(reference)\n }\n }\n\n return references\n}\n\nfunction passTrough () {\n return true\n}\n\nfunction parser (raw, options, regex) {\n if (!raw || !raw.trim()) {\n throw new TypeError('Expected a raw commit')\n }\n\n if (!options || (typeof options === 'object' && !Object.keys(options).length)) {\n throw new TypeError('Expected options')\n }\n\n if (!regex) {\n throw new TypeError('Expected regex')\n }\n\n let currentProcessedField\n let mentionsMatch\n const otherFields = {}\n const commentFilter = typeof options.commentChar === 'string'\n ? getCommentFilter(options.commentChar)\n : passTrough\n const gpgFilter = line => !line.match(/^\\s*gpg:/)\n\n const rawLines = trimOffNewlines(raw).split(/\\r?\\n/)\n const lines = truncateToScissor(rawLines).filter(commentFilter).filter(gpgFilter)\n\n let continueNote = false\n let isBody = true\n const headerCorrespondence = options.headerCorrespondence?.map(function (part) {\n return part.trim()\n }) || []\n const revertCorrespondence = options.revertCorrespondence?.map(function (field) {\n return field.trim()\n }) || []\n const mergeCorrespondence = options.mergeCorrespondence?.map(function (field) {\n return field.trim()\n }) || []\n\n let body = null\n let footer = null\n let header = null\n const mentions = []\n let merge = null\n const notes = []\n const references = []\n let revert = null\n\n if (lines.length === 0) {\n return {\n body,\n footer,\n header,\n mentions,\n merge,\n notes,\n references,\n revert,\n scope: null,\n subject: null,\n type: null\n }\n }\n\n // msg parts\n merge = lines.shift()\n const mergeParts = {}\n const headerParts = {}\n body = ''\n footer = ''\n\n const mergeMatch = merge.match(options.mergePattern)\n if (mergeMatch && options.mergePattern) {\n merge = mergeMatch[0]\n\n header = lines.shift()\n while (header !== undefined && !header.trim()) {\n header = lines.shift()\n }\n if (!header) {\n header = ''\n }\n\n mergeCorrespondence.forEach(function (partName, index) {\n const partValue = mergeMatch[index + 1] || null\n mergeParts[partName] = partValue\n })\n } else {\n header = merge\n merge = null\n\n mergeCorrespondence.forEach(function (partName) {\n mergeParts[partName] = null\n })\n }\n\n const headerMatch = header.match(options.headerPattern)\n if (headerMatch) {\n headerCorrespondence.forEach(function (partName, index) {\n const partValue = headerMatch[index + 1] || null\n headerParts[partName] = partValue\n })\n } else {\n headerCorrespondence.forEach(function (partName) {\n headerParts[partName] = null\n })\n }\n\n references.push(...getReferences(header, {\n references: regex.references,\n referenceParts: regex.referenceParts\n }))\n\n // body or footer\n lines.forEach(function (line) {\n if (options.fieldPattern) {\n const fieldMatch = options.fieldPattern.exec(line)\n\n if (fieldMatch) {\n currentProcessedField = fieldMatch[1]\n\n return\n }\n\n if (currentProcessedField) {\n otherFields[currentProcessedField] = append(otherFields[currentProcessedField], line)\n\n return\n }\n }\n\n let referenceMatched\n\n // this is a new important note\n const notesMatch = line.match(regex.notes)\n if (notesMatch) {\n continueNote = true\n isBody = false\n footer = append(footer, line)\n\n const note = {\n title: notesMatch[1],\n text: notesMatch[2]\n }\n\n notes.push(note)\n\n return\n }\n\n const lineReferences = getReferences(line, {\n references: regex.references,\n referenceParts: regex.referenceParts\n })\n\n if (lineReferences.length > 0) {\n isBody = false\n referenceMatched = true\n continueNote = false\n }\n\n Array.prototype.push.apply(references, lineReferences)\n\n if (referenceMatched) {\n footer = append(footer, line)\n\n return\n }\n\n if (continueNote) {\n notes[notes.length - 1].text = append(notes[notes.length - 1].text, line)\n footer = append(footer, line)\n\n return\n }\n\n if (isBody) {\n body = append(body, line)\n } else {\n footer = append(footer, line)\n }\n })\n\n if (options.breakingHeaderPattern && notes.length === 0) {\n const breakingHeader = header.match(options.breakingHeaderPattern)\n if (breakingHeader) {\n const noteText = breakingHeader[3] // the description of the change.\n notes.push({\n title: 'BREAKING CHANGE',\n text: noteText\n })\n }\n }\n\n while ((mentionsMatch = regex.mentions.exec(raw))) {\n mentions.push(mentionsMatch[1])\n }\n\n // does this commit revert any other commit?\n const revertMatch = raw.match(options.revertPattern)\n if (revertMatch) {\n revert = {}\n revertCorrespondence.forEach(function (partName, index) {\n const partValue = revertMatch[index + 1] || null\n revert[partName] = partValue\n })\n } else {\n revert = null\n }\n\n notes.forEach(function (note) {\n note.text = trimOffNewlines(note.text)\n })\n\n const msg = {\n ...headerParts,\n ...mergeParts,\n merge,\n header,\n body: body ? trimOffNewlines(body) : null,\n footer: footer ? trimOffNewlines(footer) : null,\n notes,\n references,\n mentions,\n revert,\n ...otherFields\n }\n\n return msg\n}\n\nmodule.exports = parser\n", "'use strict'\n\nconst reNomatch = /(?!.*)/\n\nfunction join (array, joiner) {\n return array\n .map(function (val) {\n return val.trim()\n })\n .filter(function (val) {\n return val.length\n })\n .join(joiner)\n}\n\nfunction getNotesRegex (noteKeywords, notesPattern) {\n if (!noteKeywords) {\n return reNomatch\n }\n\n const noteKeywordsSelection = join(noteKeywords, '|')\n\n if (!notesPattern) {\n return new RegExp('^[\\\\s|*]*(' + noteKeywordsSelection + ')[:\\\\s]+(.*)', 'i')\n }\n\n return notesPattern(noteKeywordsSelection)\n}\n\nfunction getReferencePartsRegex (issuePrefixes, issuePrefixesCaseSensitive) {\n if (!issuePrefixes) {\n return reNomatch\n }\n\n const flags = issuePrefixesCaseSensitive ? 'g' : 'gi'\n return new RegExp('(?:.*?)??\\\\s*([\\\\w-\\\\.\\\\/]*?)??(' + join(issuePrefixes, '|') + ')([\\\\w-]*\\\\d+)', flags)\n}\n\nfunction getReferencesRegex (referenceActions) {\n if (!referenceActions) {\n // matches everything\n return /()(.+)/gi\n }\n\n const joinedKeywords = join(referenceActions, '|')\n return new RegExp('(' + joinedKeywords + ')(?:\\\\s+(.*?))(?=(?:' + joinedKeywords + ')|$)', 'gi')\n}\n\nmodule.exports = function (options) {\n options = options || {}\n const reNotes = getNotesRegex(options.noteKeywords, options.notesPattern)\n const reReferenceParts = getReferencePartsRegex(options.issuePrefixes, options.issuePrefixesCaseSensitive)\n const reReferences = getReferencesRegex(options.referenceActions)\n\n return {\n notes: reNotes,\n referenceParts: reReferenceParts,\n references: reReferences,\n mentions: /@([\\w-]+)/g\n }\n}\n", "'use strict'\n\nconst { Transform } = require('stream')\nconst parser = require('./lib/parser')\nconst regex = require('./lib/regex')\n\nfunction assignOpts (options) {\n options = {\n headerPattern: /^(\\w*)(?:\\(([\\w$.\\-*/ ]*)\\))?: (.*)$/,\n headerCorrespondence: ['type', 'scope', 'subject'],\n referenceActions: [\n 'close',\n 'closes',\n 'closed',\n 'fix',\n 'fixes',\n 'fixed',\n 'resolve',\n 'resolves',\n 'resolved'\n ],\n issuePrefixes: ['#'],\n noteKeywords: ['BREAKING CHANGE', 'BREAKING-CHANGE'],\n fieldPattern: /^-(.*?)-$/,\n revertPattern: /^Revert\\s\"([\\s\\S]*)\"\\s*This reverts commit (\\w*)\\./,\n revertCorrespondence: ['header', 'hash'],\n warn: function () {},\n mergePattern: null,\n mergeCorrespondence: null,\n ...options\n }\n\n if (typeof options.headerPattern === 'string') {\n options.headerPattern = new RegExp(options.headerPattern)\n }\n\n if (typeof options.headerCorrespondence === 'string') {\n options.headerCorrespondence = options.headerCorrespondence.split(',')\n }\n\n if (typeof options.referenceActions === 'string') {\n options.referenceActions = options.referenceActions.split(',')\n }\n\n if (typeof options.issuePrefixes === 'string') {\n options.issuePrefixes = options.issuePrefixes.split(',')\n }\n\n if (typeof options.noteKeywords === 'string') {\n options.noteKeywords = options.noteKeywords.split(',')\n }\n\n if (typeof options.fieldPattern === 'string') {\n options.fieldPattern = new RegExp(options.fieldPattern)\n }\n\n if (typeof options.revertPattern === 'string') {\n options.revertPattern = new RegExp(options.revertPattern)\n }\n\n if (typeof options.revertCorrespondence === 'string') {\n options.revertCorrespondence = options.revertCorrespondence.split(',')\n }\n\n if (typeof options.mergePattern === 'string') {\n options.mergePattern = new RegExp(options.mergePattern)\n }\n\n return options\n}\n\nfunction conventionalCommitsParser (options) {\n options = assignOpts(options)\n const reg = regex(options)\n\n return new Transform({\n objectMode: true,\n highWaterMark: 16,\n transform (data, enc, cb) {\n let commit\n\n try {\n commit = parser(data.toString(), options, reg)\n cb(null, commit)\n } catch (err) {\n if (options.warn === true) {\n cb(err)\n } else {\n options.warn(err.toString())\n cb(null, '')\n }\n }\n }\n })\n}\n\nfunction sync (commit, options) {\n options = assignOpts(options)\n const reg = regex(options)\n\n return parser(commit, options, reg)\n}\n\nmodule.exports = conventionalCommitsParser\nmodule.exports.sync = sync\n", "/*\nCopyright (c) 2014-2021, Matteo Collina \n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n*/\n\n'use strict'\n\nconst { Transform } = require('stream')\nconst { StringDecoder } = require('string_decoder')\nconst kLast = Symbol('last')\nconst kDecoder = Symbol('decoder')\n\nfunction transform (chunk, enc, cb) {\n let list\n if (this.overflow) { // Line buffer is full. Skip to start of next line.\n const buf = this[kDecoder].write(chunk)\n list = buf.split(this.matcher)\n\n if (list.length === 1) return cb() // Line ending not found. Discard entire chunk.\n\n // Line ending found. Discard trailing fragment of previous line and reset overflow state.\n list.shift()\n this.overflow = false\n } else {\n this[kLast] += this[kDecoder].write(chunk)\n list = this[kLast].split(this.matcher)\n }\n\n this[kLast] = list.pop()\n\n for (let i = 0; i < list.length; i++) {\n try {\n push(this, this.mapper(list[i]))\n } catch (error) {\n return cb(error)\n }\n }\n\n this.overflow = this[kLast].length > this.maxLength\n if (this.overflow && !this.skipOverflow) {\n cb(new Error('maximum buffer reached'))\n return\n }\n\n cb()\n}\n\nfunction flush (cb) {\n // forward any gibberish left in there\n this[kLast] += this[kDecoder].end()\n\n if (this[kLast]) {\n try {\n push(this, this.mapper(this[kLast]))\n } catch (error) {\n return cb(error)\n }\n }\n\n cb()\n}\n\nfunction push (self, val) {\n if (val !== undefined) {\n self.push(val)\n }\n}\n\nfunction noop (incoming) {\n return incoming\n}\n\nfunction split (matcher, mapper, options) {\n // Set defaults for any arguments not supplied.\n matcher = matcher || /\\r?\\n/\n mapper = mapper || noop\n options = options || {}\n\n // Test arguments explicitly.\n switch (arguments.length) {\n case 1:\n // If mapper is only argument.\n if (typeof matcher === 'function') {\n mapper = matcher\n matcher = /\\r?\\n/\n // If options is only argument.\n } else if (typeof matcher === 'object' && !(matcher instanceof RegExp) && !matcher[Symbol.split]) {\n options = matcher\n matcher = /\\r?\\n/\n }\n break\n\n case 2:\n // If mapper and options are arguments.\n if (typeof matcher === 'function') {\n options = mapper\n mapper = matcher\n matcher = /\\r?\\n/\n // If matcher and options are arguments.\n } else if (typeof mapper === 'object') {\n options = mapper\n mapper = noop\n }\n }\n\n options = Object.assign({}, options)\n options.autoDestroy = true\n options.transform = transform\n options.flush = flush\n options.readableObjectMode = true\n\n const stream = new Transform(options)\n\n stream[kLast] = ''\n stream[kDecoder] = new StringDecoder('utf8')\n stream.matcher = matcher\n stream.mapper = mapper\n stream.maxLength = options.maxLength\n stream.skipOverflow = options.skipOverflow || false\n stream.overflow = false\n stream._destroy = function (err, cb) {\n // Weird Node v12 bug that we need to work around\n this._writableState.errorEmitted = false\n cb(err)\n }\n\n return stream\n}\n\nmodule.exports = split\n", "\nconst { Readable, Transform } = require('stream')\nconst { execFile } = require('child_process')\nconst split = require('split2')\n\nconst DELIMITER = '------------------------ >8 ------------------------'\n\nfunction normalizeExecOpts (execOpts) {\n execOpts = execOpts || {}\n execOpts.cwd = execOpts.cwd || process.cwd()\n\n return execOpts\n}\n\nfunction normalizeGitOpts (gitOpts) {\n gitOpts = gitOpts || {}\n gitOpts.format = gitOpts.format || '%B'\n gitOpts.from = gitOpts.from || ''\n gitOpts.to = gitOpts.to || 'HEAD'\n\n return gitOpts\n}\n\nasync function getGitArgs (gitOpts) {\n const { default: dargs } = await import('dargs')\n const gitFormat = `--format=${gitOpts.format || ''}%n${DELIMITER}`\n const gitFromTo = [gitOpts.from, gitOpts.to].filter(Boolean).join('..')\n const gitArgs = ['log', gitFormat, gitFromTo]\n .concat(dargs(gitOpts, {\n excludes: ['debug', 'from', 'to', 'format', 'path', 'ignore']\n }))\n\n // allow commits to focus on specific directories.\n // this is useful for monorepos.\n if (gitOpts.path) {\n gitArgs.push('--', ...Array.isArray(gitOpts.path) ? gitOpts.path : [gitOpts.path])\n }\n\n return gitArgs\n}\n\nfunction gitRawCommits (rawGitOpts, rawExecOpts) {\n const readable = new Readable()\n readable._read = () => {}\n\n const gitOpts = normalizeGitOpts(rawGitOpts)\n const execOpts = normalizeExecOpts(rawExecOpts)\n let isError = false\n\n getGitArgs(gitOpts).then((args) => {\n if (gitOpts.debug) {\n gitOpts.debug('Your git-log command is:\\ngit ' + args.join(' '))\n }\n\n const ignoreRegex = typeof gitOpts.ignore === 'string'\n ? new RegExp(gitOpts.ignore)\n : gitOpts.ignore\n const shouldNotIgnore = ignoreRegex\n ? chunk => !ignoreRegex.test(chunk.toString())\n : () => true\n\n const child = execFile('git', args, {\n cwd: execOpts.cwd,\n maxBuffer: Infinity\n })\n\n child.stdout\n .pipe(split(DELIMITER + '\\n'))\n .pipe(\n new Transform({\n transform (chunk, enc, cb) {\n isError = false\n setImmediate(() => {\n if (shouldNotIgnore(chunk)) {\n readable.push(chunk)\n }\n cb()\n })\n },\n flush (cb) {\n setImmediate(() => {\n if (!isError) {\n readable.push(null)\n readable.emit('close')\n }\n\n cb()\n })\n }\n })\n )\n\n child.stderr\n .pipe(\n new Transform({\n objectMode: true,\n highWaterMark: 16,\n transform (chunk) {\n isError = true\n readable.emit('error', new Error(chunk))\n readable.emit('close')\n }\n })\n )\n })\n\n return readable\n}\n\nmodule.exports = gitRawCommits\n", "\n// ETA calculation\nclass ETA{\n\n constructor(length, initTime, initValue){\n // size of eta buffer\n this.etaBufferLength = length || 100;\n\n // eta buffer with initial values\n this.valueBuffer = [initValue];\n this.timeBuffer = [initTime];\n\n // eta time value\n this.eta = '0';\n }\n\n // add new values to calculation buffer\n update(time, value, total){\n this.valueBuffer.push(value);\n this.timeBuffer.push(time);\n\n // trigger recalculation\n this.calculate(total-value);\n }\n\n // fetch estimated time\n getTime(){\n return this.eta;\n }\n\n // eta calculation - request number of remaining events\n calculate(remaining){\n // get number of samples in eta buffer\n const currentBufferSize = this.valueBuffer.length;\n const buffer = Math.min(this.etaBufferLength, currentBufferSize);\n\n const v_diff = this.valueBuffer[currentBufferSize - 1] - this.valueBuffer[currentBufferSize - buffer];\n const t_diff = this.timeBuffer[currentBufferSize - 1] - this.timeBuffer[currentBufferSize - buffer];\n\n // get progress per ms\n const vt_rate = v_diff/t_diff;\n\n // strip past elements\n this.valueBuffer = this.valueBuffer.slice(-this.etaBufferLength);\n this.timeBuffer = this.timeBuffer.slice(-this.etaBufferLength);\n\n // eq: vt_rate *x = total\n const eta = Math.ceil(remaining/vt_rate/1000);\n\n // check values\n if (isNaN(eta)){\n this.eta = 'NULL';\n\n // +/- Infinity --- NaN already handled\n }else if (!isFinite(eta)){\n this.eta = 'INF';\n\n // > 10M s ? - set upper display limit ~115days (1e7/60/60/24)\n }else if (eta > 1e7){\n this.eta = 'INF';\n\n // negative ?\n }else if (eta < 0){\n this.eta = 0;\n\n }else{\n // assign\n this.eta = eta;\n }\n }\n}\n\nmodule.exports = ETA;", "const _readline = require('readline');\n\n// low-level terminal interactions\nclass Terminal{\n\n constructor(outputStream){\n this.stream = outputStream;\n\n // default: line wrapping enabled\n this.linewrap = true;\n\n // current, relative y position\n this.dy = 0;\n }\n\n // save cursor position + settings\n cursorSave(){\n if (!this.stream.isTTY){\n return;\n }\n\n // save position\n this.stream.write('\\x1B7');\n }\n\n // restore last cursor position + settings\n cursorRestore(){\n if (!this.stream.isTTY){\n return;\n }\n\n // restore cursor\n this.stream.write('\\x1B8');\n }\n\n // show/hide cursor\n cursor(enabled){\n if (!this.stream.isTTY){\n return;\n }\n\n if (enabled){\n this.stream.write('\\x1B[?25h');\n }else{\n this.stream.write('\\x1B[?25l');\n }\n }\n\n // change cursor positionn\n cursorTo(x=null, y=null){\n if (!this.stream.isTTY){\n return;\n }\n\n // move cursor absolute\n _readline.cursorTo(this.stream, x, y);\n }\n\n // change relative cursor position\n cursorRelative(dx=null, dy=null){\n if (!this.stream.isTTY){\n return;\n }\n\n // store current position\n this.dy = this.dy + dy;\n \n // move cursor relative\n _readline.moveCursor(this.stream, dx, dy);\n }\n\n // relative reset\n cursorRelativeReset(){\n if (!this.stream.isTTY){\n return;\n }\n\n // move cursor to initial line\n _readline.moveCursor(this.stream, 0, -this.dy);\n\n // first char\n _readline.cursorTo(this.stream, 0, null);\n\n // reset counter\n this.dy = 0;\n }\n\n // clear to the right from cursor\n clearRight(){\n if (!this.stream.isTTY){\n return;\n }\n\n _readline.clearLine(this.stream, 1);\n }\n\n // clear the full line\n clearLine(){\n if (!this.stream.isTTY){\n return;\n }\n\n _readline.clearLine(this.stream, 0);\n }\n\n // clear everyting beyond the current line\n clearBottom(){\n if (!this.stream.isTTY){\n return;\n }\n\n _readline.clearScreenDown(this.stream);\n }\n\n // add new line; increment counter\n newline(){\n this.stream.write('\\n');\n this.dy++;\n }\n\n // write content to output stream\n // @TODO use string-width to strip length\n write(s, rawWrite=false){\n // line wrapping enabled ? trim output\n // this is just a fallback mechanism in case user enabled line-wrapping via options or set it to auto\n if (this.linewrap === true && rawWrite === false){\n this.stream.write(s.substr(0, this.getWidth()));\n\n // standard behaviour with disabled linewrapping\n }else{\n this.stream.write(s);\n }\n }\n\n // control line wrapping\n lineWrapping(enabled){\n if (!this.stream.isTTY){\n return;\n }\n\n // store state\n this.linewrap = enabled;\n if (enabled){\n this.stream.write('\\x1B[?7h');\n }else{\n this.stream.write('\\x1B[?7l');\n }\n }\n\n // tty environment ?\n isTTY(){\n return (this.stream.isTTY === true);\n }\n\n // get terminal width\n getWidth(){\n // set max width to 80 in tty-mode and 200 in notty-mode\n return this.stream.columns || (this.stream.isTTY ? 80 : 200);\n }\n}\n\nmodule.exports = Terminal;\n", "// default value format (apply autopadding)\n\n// format valueset\nmodule.exports = function formatValue(v, options, type){\n // no autopadding ? passthrough\n if (options.autopadding !== true){\n return v;\n }\n\n // padding\n function autopadding(value, length){\n return (options.autopaddingChar + value).slice(-length);\n }\n\n switch (type){\n case 'percentage':\n return autopadding(v, 3);\n\n default:\n return v;\n }\n}", "// format bar\nmodule.exports = function formatBar(progress, options){\n // calculate barsize\n const completeSize = Math.round(progress*options.barsize);\n const incompleteSize = options.barsize-completeSize;\n\n // generate bar string by stripping the pre-rendered strings\n return options.barCompleteString.substr(0, completeSize) +\n options.barGlue +\n options.barIncompleteString.substr(0, incompleteSize);\n}", "// default time format\n\n// format a number of seconds into hours and minutes as appropriate\nmodule.exports = function formatTime(t, options, roundToMultipleOf){\n function round(input) {\n if (roundToMultipleOf) {\n return roundToMultipleOf * Math.round(input / roundToMultipleOf);\n } else {\n return input\n }\n }\n\n // leading zero padding\n function autopadding(v){\n return (options.autopaddingChar + v).slice(-2);\n }\n\n // > 1h ?\n if (t > 3600) {\n return autopadding(Math.floor(t / 3600)) + 'h' + autopadding(round((t % 3600) / 60)) + 'm';\n\n // > 60s ?\n } else if (t > 60) {\n return autopadding(Math.floor(t / 60)) + 'm' + autopadding(round((t % 60))) + 's';\n\n // > 10s ?\n } else if (t > 10) {\n return autopadding(round(t)) + 's';\n\n // default: don't apply round to multiple\n }else{\n return autopadding(t) + 's';\n }\n}", "const _stringWidth = require('string-width');\nconst _defaultFormatValue = require('./format-value');\nconst _defaultFormatBar = require('./format-bar');\nconst _defaultFormatTime = require('./format-time');\n\n// generic formatter\nmodule.exports = function defaultFormatter(options, params, payload){\n\n // copy format string\n let s = options.format;\n\n // custom time format set ?\n const formatTime = options.formatTime || _defaultFormatTime;\n \n // custom value format set ?\n const formatValue = options.formatValue || _defaultFormatValue;\n\n // custom bar format set ?\n const formatBar = options.formatBar || _defaultFormatBar;\n\n // calculate progress in percent\n const percentage = Math.floor(params.progress*100) + '';\n\n // bar stopped and stopTime set ?\n const stopTime = params.stopTime || Date.now();\n\n // calculate elapsed time\n const elapsedTime = Math.round((stopTime - params.startTime)/1000);\n\n // merges data from payload and calculated\n const context = Object.assign({}, payload, {\n bar: formatBar(params.progress, options),\n\n percentage: formatValue(percentage, options, 'percentage'),\n total: formatValue(params.total, options, 'total'),\n value: formatValue(params.value, options, 'value'),\n\n eta: formatValue(params.eta, options, 'eta'),\n eta_formatted: formatTime(params.eta, options, 5),\n \n duration: formatValue(elapsedTime, options, 'duration'),\n duration_formatted: formatTime(elapsedTime, options, 1)\n });\n\n // assign placeholder tokens\n s = s.replace(/\\{(\\w+)\\}/g, function(match, key){\n // key exists within payload/context\n if (typeof context[key] !== 'undefined') {\n return context[key];\n }\n\n // no changes to unknown values\n return match;\n });\n\n // calculate available whitespace (2 characters margin of error)\n const fullMargin = Math.max(0, params.maxWidth - _stringWidth(s) -2);\n const halfMargin = Math.floor(fullMargin / 2);\n\n // distribute available whitespace according to position\n switch (options.align) {\n\n // fill start-of-line with whitespaces\n case 'right':\n s = (fullMargin > 0) ? ' '.repeat(fullMargin) + s : s;\n break;\n\n // distribute whitespaces to left+right\n case 'center':\n s = (halfMargin > 0) ? ' '.repeat(halfMargin) + s : s;\n break;\n\n // default: left align, no additional whitespaces\n case 'left':\n default:\n break;\n }\n\n return s;\n}\n", "// utility to merge defaults\nfunction mergeOption(v, defaultValue){\n if (typeof v === 'undefined' || v === null){\n return defaultValue;\n }else{\n return v;\n }\n}\n\nmodule.exports = {\n // set global options\n parse: function parse(rawOptions, preset){\n\n // options storage\n const options = {};\n\n // merge preset\n const opt = Object.assign({}, preset, rawOptions);\n\n // the max update rate in fps (redraw will only triggered on value change)\n options.throttleTime = 1000 / (mergeOption(opt.fps, 10));\n\n // the output stream to write on\n options.stream = mergeOption(opt.stream, process.stderr);\n\n // external terminal provided ?\n options.terminal = mergeOption(opt.terminal, null);\n\n // clear on finish ?\n options.clearOnComplete = mergeOption(opt.clearOnComplete, false);\n\n // stop on finish ?\n options.stopOnComplete = mergeOption(opt.stopOnComplete, false);\n\n // size of the progressbar in chars\n options.barsize = mergeOption(opt.barsize, 40);\n\n // position of the progress bar - 'left' (default), 'right' or 'center'\n options.align = mergeOption(opt.align, 'left');\n\n // hide the cursor ?\n options.hideCursor = mergeOption(opt.hideCursor, false);\n\n // disable linewrapping ?\n options.linewrap = mergeOption(opt.linewrap, false);\n\n // glue sequence (control chars) between bar elements ?\n options.barGlue = mergeOption(opt.barGlue, '');\n\n // bar chars\n options.barCompleteChar = mergeOption(opt.barCompleteChar, '=');\n options.barIncompleteChar = mergeOption(opt.barIncompleteChar, '-');\n\n // the bar format\n options.format = mergeOption(opt.format, 'progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}');\n\n // external time-format provided ?\n options.formatTime = mergeOption(opt.formatTime, null);\n\n // external value-format provided ?\n options.formatValue = mergeOption(opt.formatValue, null);\n\n // external bar-format provided ?\n options.formatBar = mergeOption(opt.formatBar, null);\n\n // the number of results to average ETA over\n options.etaBufferLength = mergeOption(opt.etaBuffer, 10);\n\n // automatic eta updates based on fps\n options.etaAsynchronousUpdate = mergeOption(opt.etaAsynchronousUpdate, false);\n\n // progress calculation relative to start value ? default start at 0\n options.progressCalculationRelative = mergeOption(opt.progressCalculationRelative, false);\n\n // allow synchronous updates ?\n options.synchronousUpdate = mergeOption(opt.synchronousUpdate, true);\n\n // notty mode\n options.noTTYOutput = mergeOption(opt.noTTYOutput, false);\n\n // schedule - 2s\n options.notTTYSchedule = mergeOption(opt.notTTYSchedule, 2000);\n \n // emptyOnZero - false\n options.emptyOnZero = mergeOption(opt.emptyOnZero, false);\n\n // force bar redraw even if progress did not change\n options.forceRedraw = mergeOption(opt.forceRedraw, false);\n\n // automated padding to fixed width ?\n options.autopadding = mergeOption(opt.autopadding, false);\n\n // stop bar on SIGINT/SIGTERM to restore cursor settings ?\n options.gracefulExit = mergeOption(opt.gracefulExit, false);\n\n return options;\n },\n\n // derived options: instance specific, has to be created for every bar element\n assignDerivedOptions: function assignDerivedOptions(options){\n // pre-render bar strings (performance)\n options.barCompleteString = options.barCompleteChar.repeat(options.barsize + 1);\n options.barIncompleteString = options.barIncompleteChar.repeat(options.barsize + 1);\n\n // autopadding character - empty in case autopadding is disabled\n options.autopaddingChar = options.autopadding ? mergeOption(options.autopaddingChar, ' ') : '';\n\n return options;\n }\n};", "const _ETA = require('./eta');\nconst _Terminal = require('./terminal');\nconst _formatter = require('./formatter');\nconst _options = require('./options');\nconst _EventEmitter = require('events');\n\n// Progress-Bar constructor\nmodule.exports = class GenericBar extends _EventEmitter{\n\n constructor(options){\n super();\n\n // store options and assign derived ones (instance specific)\n this.options = _options.assignDerivedOptions(options);\n\n // store terminal instance\n this.terminal = (this.options.terminal) ? this.options.terminal : new _Terminal(this.options.stream);\n\n // the current bar value\n this.value = 0;\n\n // bar start value (used for progress calculation)\n this.startValue = 0;\n\n // the end value of the bar\n this.total = 100;\n\n // last drawn string - only render on change!\n this.lastDrawnString = null;\n\n // start time (used for eta calculation)\n this.startTime = null;\n\n // stop time (used for duration calculation)\n this.stopTime = null;\n\n // last update time\n this.lastRedraw = Date.now();\n\n // default eta calculator (will be re-create on start)\n this.eta = new _ETA(this.options.etaBufferLength, 0, 0);\n\n // payload data\n this.payload = {};\n\n // progress bar active ?\n this.isActive = false;\n\n // use default formatter or custom one ?\n this.formatter = (typeof this.options.format === 'function') ? this.options.format : _formatter;\n }\n\n // internal render function\n render(forceRendering=false){\n\n // formatter params\n const params = {\n progress: this.getProgress(),\n eta: this.eta.getTime(),\n startTime: this.startTime,\n stopTime: this.stopTime,\n total: this.total,\n value: this.value,\n maxWidth: this.terminal.getWidth()\n };\n\n // automatic eta update ? (long running processes)\n if (this.options.etaAsynchronousUpdate){\n this.updateETA();\n }\n\n // format string\n const s = this.formatter(this.options, params, this.payload);\n\n const forceRedraw = forceRendering || this.options.forceRedraw\n // force redraw in notty-mode!\n || (this.options.noTTYOutput && !this.terminal.isTTY());\n\n // string changed ? only trigger redraw on change!\n if (forceRedraw || this.lastDrawnString != s){\n // trigger event\n this.emit('redraw-pre');\n\n // set cursor to start of line\n this.terminal.cursorTo(0, null);\n\n // write output\n this.terminal.write(s);\n\n // clear to the right from cursor\n this.terminal.clearRight();\n\n // store string\n this.lastDrawnString = s;\n\n // set last redraw time\n this.lastRedraw = Date.now();\n\n // trigger event\n this.emit('redraw-post');\n }\n }\n\n // start the progress bar\n start(total, startValue, payload){\n // set initial values\n this.value = startValue || 0;\n this.total = (typeof total !== 'undefined' && total >= 0) ? total : 100;\n\n // set start value for progress calculation\n this.startValue = (startValue || 0);\n\n // store payload (optional)\n this.payload = payload || {};\n\n // store start time for duration+eta calculation\n this.startTime = Date.now();\n\n // reset stop time for 're-start' scenario (used for duration calculation)\n this.stopTime = null;\n\n // reset string line buffer (redraw detection)\n this.lastDrawnString = '';\n\n // initialize eta buffer\n this.eta = new _ETA(this.options.etaBufferLength, this.startTime, this.value);\n\n // set flag\n this.isActive = true;\n\n // start event\n this.emit('start', total, startValue);\n }\n\n // stop the bar\n stop(){\n // set flag\n this.isActive = false;\n \n // store stop timestamp to get total duration\n this.stopTime = Date.now();\n\n // stop event\n this.emit('stop', this.total, this.value);\n }\n\n // update the bar value\n // update(value, payload)\n // update(payload)\n update(arg0, arg1 = {}){\n // value set ?\n // update(value, [payload]);\n if (typeof arg0 === 'number') {\n // update value\n this.value = arg0;\n\n // add new value; recalculate eta\n this.eta.update(Date.now(), arg0, this.total);\n }\n\n // extract payload\n // update(value, payload)\n // update(payload)\n const payloadData = ((typeof arg0 === 'object') ? arg0 : arg1) || {};\n\n // update event (before stop() is called)\n this.emit('update', this.total, this.value);\n\n // merge payload\n for (const key in payloadData){\n this.payload[key] = payloadData[key];\n }\n\n // limit reached ? autostop set ?\n if (this.value >= this.getTotal() && this.options.stopOnComplete) {\n this.stop();\n }\n }\n\n // calculate the actual progress value\n getProgress(){\n // calculate the normalized current progress\n let progress = (this.value/this.total);\n\n // use relative progress calculation ? range between startValue and total is then used as 100%\n // startValue (offset) is ignored for calculations\n if (this.options.progressCalculationRelative){\n progress = (this.value-this.startValue)/(this.total-this.startValue);\n }\n\n // handle NaN Errors caused by total=0. Set to complete in this case\n if (isNaN(progress)){\n progress = (this.options && this.options.emptyOnZero) ? 0.0 : 1.0;\n }\n\n // limiter\n progress = Math.min(Math.max(progress, 0.0), 1.0);\n\n return progress;\n }\n\n // update the bar value\n // increment(delta, payload)\n // increment(payload)\n increment(arg0 = 1, arg1 = {}){\n // increment([payload]) => step=1\n // handle the use case when `step` is omitted but payload is passed\n if (typeof arg0 === 'object') {\n this.update(this.value + 1, arg0);\n \n // increment([step=1], [payload={}])\n }else{\n this.update(this.value + arg0, arg1);\n }\n }\n\n // get the total (limit) value\n getTotal(){\n return this.total;\n }\n\n // set the total (limit) value\n setTotal(total){\n if (typeof total !== 'undefined' && total >= 0){\n this.total = total;\n }\n }\n\n // force eta calculation update (long running processes)\n updateETA(){\n // add new value; recalculate eta\n this.eta.update(Date.now(), this.value, this.total);\n }\n}\n", "const _GenericBar = require('./generic-bar');\nconst _options = require('./options');\n\n// Progress-Bar constructor\nmodule.exports = class SingleBar extends _GenericBar{\n\n constructor(options, preset){\n super(_options.parse(options, preset));\n\n // the update timer\n this.timer = null;\n\n // disable synchronous updates in notty mode\n if (this.options.noTTYOutput && this.terminal.isTTY() === false){\n this.options.synchronousUpdate = false;\n }\n\n // update interval\n this.schedulingRate = (this.terminal.isTTY() ? this.options.throttleTime : this.options.notTTYSchedule);\n\n // callback used for gracefulExit\n this.sigintCallback = null;\n }\n\n // internal render function\n render(){\n // stop timer\n if (this.timer){\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n // run internal rendering\n super.render();\n\n // add new line in notty mode!\n if (this.options.noTTYOutput && this.terminal.isTTY() === false){\n this.terminal.newline();\n }\n\n // next update\n this.timer = setTimeout(this.render.bind(this), this.schedulingRate);\n }\n\n update(current, payload){\n // timer inactive ?\n if (!this.timer) {\n return;\n }\n\n super.update(current, payload);\n\n // trigger synchronous update ?\n // check for throttle time \n if (this.options.synchronousUpdate && (this.lastRedraw + this.options.throttleTime*2) < Date.now()){\n // force update\n this.render();\n }\n }\n\n // start the progress bar\n start(total, startValue, payload){\n // progress updates are only visible in TTY mode!\n if (this.options.noTTYOutput === false && this.terminal.isTTY() === false){\n return;\n }\n\n // add handler to restore cursor settings (stop the bar) on SIGINT/SIGTERM ?\n if (this.sigintCallback === null && this.options.gracefulExit){\n this.sigintCallback = this.stop.bind(this);\n process.once('SIGINT', this.sigintCallback);\n process.once('SIGTERM', this.sigintCallback);\n }\n\n // save current cursor settings\n this.terminal.cursorSave();\n\n // hide the cursor ?\n if (this.options.hideCursor === true){\n this.terminal.cursor(false);\n }\n\n // disable line wrapping ?\n if (this.options.linewrap === false){\n this.terminal.lineWrapping(false);\n }\n\n // initialize bar\n super.start(total, startValue, payload);\n\n // redraw on start!\n this.render();\n }\n\n // stop the bar\n stop(){\n // timer inactive ?\n if (!this.timer) {\n return;\n }\n \n // remove sigint listener\n if (this.sigintCallback){\n process.removeListener('SIGINT', this.sigintCallback);\n process.removeListener('SIGTERM', this.sigintCallback);\n this.sigintCallback = null;\n }\n\n // trigger final rendering\n this.render();\n\n // restore state\n super.stop();\n\n // stop timer\n clearTimeout(this.timer);\n this.timer = null;\n\n // cursor hidden ?\n if (this.options.hideCursor === true){\n this.terminal.cursor(true);\n }\n\n // re-enable line wrapping ?\n if (this.options.linewrap === false){\n this.terminal.lineWrapping(true);\n }\n\n // restore cursor on complete (position + settings)\n this.terminal.cursorRestore();\n\n // clear line on complete ?\n if (this.options.clearOnComplete){\n this.terminal.cursorTo(0, null);\n this.terminal.clearLine();\n }else{\n // new line on complete\n this.terminal.newline();\n }\n }\n}", "const _Terminal = require('./terminal');\nconst _BarElement = require('./generic-bar');\nconst _options = require('./options');\nconst _EventEmitter = require('events');\n\n// Progress-Bar constructor\nmodule.exports = class MultiBar extends _EventEmitter{\n\n constructor(options, preset){\n super();\n\n // list of bars\n this.bars = [];\n\n // parse+store options\n this.options = _options.parse(options, preset);\n\n // disable synchronous updates\n this.options.synchronousUpdate = false;\n\n // store terminal instance\n this.terminal = (this.options.terminal) ? this.options.terminal : new _Terminal(this.options.stream);\n\n // the update timer\n this.timer = null;\n\n // progress bar active ?\n this.isActive = false;\n\n // update interval\n this.schedulingRate = (this.terminal.isTTY() ? this.options.throttleTime : this.options.notTTYSchedule);\n\n // logging output buffer\n this.loggingBuffer = [];\n\n // callback used for gracefulExit\n this.sigintCallback = null;\n }\n\n // add a new bar to the stack\n create(total, startValue, payload, barOptions={}){\n // create new bar element and merge global options + overrides\n // use the same global terminal instance for all instances\n const bar = new _BarElement(Object.assign(\n {}, \n\n // global options\n this.options, \n\n // terminal instance\n {\n terminal: this.terminal\n },\n\n // overrides\n barOptions,\n ));\n\n // store bar\n this.bars.push(bar);\n\n // progress updates are only visible in TTY mode!\n if (this.options.noTTYOutput === false && this.terminal.isTTY() === false){\n return bar;\n }\n\n // add handler to restore cursor settings (stop the bar) on SIGINT/SIGTERM ?\n if (this.sigintCallback === null && this.options.gracefulExit){\n this.sigintCallback = this.stop.bind(this);\n process.once('SIGINT', this.sigintCallback);\n process.once('SIGTERM', this.sigintCallback);\n }\n \n // multiprogress already active ?\n if (!this.isActive){\n // hide the cursor ?\n if (this.options.hideCursor === true){\n this.terminal.cursor(false);\n }\n\n // disable line wrapping ?\n if (this.options.linewrap === false){\n this.terminal.lineWrapping(false);\n }\n \n // initialize update timer\n this.timer = setTimeout(this.update.bind(this), this.schedulingRate);\n }\n\n // set flag\n this.isActive = true;\n\n // start progress bar\n bar.start(total, startValue, payload);\n\n // trigger event\n this.emit('start');\n\n // return new instance\n return bar;\n }\n\n // remove a bar from the stack\n remove(bar){\n // find element\n const index = this.bars.indexOf(bar);\n\n // element found ?\n if (index < 0){\n return false;\n }\n\n // remove element\n this.bars.splice(index, 1);\n\n // force update\n this.update();\n\n // clear bottom\n this.terminal.newline();\n this.terminal.clearBottom();\n\n return true;\n }\n\n // internal update routine\n update(){\n // stop timer\n if (this.timer){\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n // trigger event\n this.emit('update-pre');\n \n // reset cursor\n this.terminal.cursorRelativeReset();\n\n // trigger event\n this.emit('redraw-pre');\n\n // content within logging buffer ?\n if (this.loggingBuffer.length > 0){\n this.terminal.clearLine();\n\n // flush logging buffer and write content to terminal\n while (this.loggingBuffer.length > 0){\n this.terminal.write(this.loggingBuffer.shift(), true);\n }\n }\n\n // update each bar\n for (let i=0; i< this.bars.length; i++){\n // add new line ?\n if (i > 0){\n this.terminal.newline();\n }\n\n // render\n this.bars[i].render();\n }\n\n // trigger event\n this.emit('redraw-post');\n\n // add new line in notty mode!\n if (this.options.noTTYOutput && this.terminal.isTTY() === false){\n this.terminal.newline();\n this.terminal.newline();\n }\n\n // next update\n this.timer = setTimeout(this.update.bind(this), this.schedulingRate);\n\n // trigger event\n this.emit('update-post');\n\n // stop if stopOnComplete and all bars stopped\n if (this.options.stopOnComplete && !this.bars.find(bar => bar.isActive)) {\n this.stop();\n }\n }\n\n stop(){\n\n // stop timer\n clearTimeout(this.timer);\n this.timer = null;\n\n // remove sigint listener\n if (this.sigintCallback){\n process.removeListener('SIGINT', this.sigintCallback);\n process.removeListener('SIGTERM', this.sigintCallback);\n this.sigintCallback = null;\n }\n\n // set flag\n this.isActive = false;\n\n // cursor hidden ?\n if (this.options.hideCursor === true){\n this.terminal.cursor(true);\n }\n\n // re-enable line wrpaping ?\n if (this.options.linewrap === false){\n this.terminal.lineWrapping(true);\n }\n\n // reset cursor\n this.terminal.cursorRelativeReset();\n\n // trigger event\n this.emit('stop-pre-clear');\n\n // clear line on complete ?\n if (this.options.clearOnComplete){\n // clear all bars\n this.terminal.clearBottom();\n \n // or show final progress ?\n }else{\n // update each bar\n for (let i=0; i< this.bars.length; i++){\n // add new line ?\n if (i > 0){\n this.terminal.newline();\n }\n\n // trigger final rendering\n this.bars[i].render();\n\n // stop\n this.bars[i].stop();\n }\n\n // new line on complete\n this.terminal.newline();\n }\n\n // trigger event\n this.emit('stop');\n }\n\n log(s){\n // push content into logging buffer\n this.loggingBuffer.push(s);\n }\n}\n", "// cli-progress legacy style as of 1.x\nmodule.exports = {\n format: 'progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}',\n barCompleteChar: '=',\n barIncompleteChar: '-'\n};", "// cli-progress legacy style as of 1.x\nmodule.exports = {\n format: ' {bar} {percentage}% | ETA: {eta}s | {value}/{total}',\n barCompleteChar: '\\u2588',\n barIncompleteChar: '\\u2591'\n};", "\n// cli-progress legacy style as of 1.x\nmodule.exports = {\n format: ' \\u001b[90m{bar}\\u001b[0m {percentage}% | ETA: {eta}s | {value}/{total}',\n barCompleteChar: '\\u2588',\n barIncompleteChar: '\\u2591'\n};", "module.exports = {\n format: ' {bar}\\u25A0 {percentage}% | ETA: {eta}s | {value}/{total}',\n barCompleteChar: '\\u25A0',\n barIncompleteChar: ' '\n};", "const _legacy = require('./legacy');\nconst _shades_classic = require('./shades-classic');\nconst _shades_grey = require('./shades-grey');\nconst _rect = require('./rect');\n\nmodule.exports = {\n legacy: _legacy,\n shades_classic: _shades_classic,\n shades_grey: _shades_grey,\n rect: _rect\n};", "const _SingleBar = require('./lib/single-bar');\nconst _MultiBar = require('./lib/multi-bar');\nconst _Presets = require('./presets/index');\nconst _Formatter = require('./lib/formatter');\nconst _defaultFormatValue = require('./lib/format-value');\nconst _defaultFormatBar = require('./lib/format-bar');\nconst _defaultFormatTime = require('./lib/format-time');\n\n// sub-module access\nmodule.exports = {\n Bar: _SingleBar,\n SingleBar: _SingleBar,\n MultiBar: _MultiBar,\n Presets: _Presets,\n Format: {\n Formatter: _Formatter,\n BarFormat: _defaultFormatBar,\n ValueFormat: _defaultFormatValue,\n TimeFormat: _defaultFormatTime\n }\n};", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitWhen = exports.flatten = void 0;\nfunction flatten(items) {\n return items.reduce((collection, item) => [].concat(collection, item), []);\n}\nexports.flatten = flatten;\nfunction splitWhen(items, predicate) {\n const result = [[]];\n let groupIndex = 0;\n for (const item of items) {\n if (predicate(item)) {\n groupIndex++;\n result[groupIndex] = [];\n }\n else {\n result[groupIndex].push(item);\n }\n }\n return result;\n}\nexports.splitWhen = splitWhen;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEnoentCodeError = void 0;\nfunction isEnoentCodeError(error) {\n return error.code === 'ENOENT';\n}\nexports.isEnoentCodeError = isEnoentCodeError;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n constructor(name, stats) {\n this.name = name;\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n this.isDirectory = stats.isDirectory.bind(stats);\n this.isFIFO = stats.isFIFO.bind(stats);\n this.isFile = stats.isFile.bind(stats);\n this.isSocket = stats.isSocket.bind(stats);\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n }\n}\nfunction createDirentFromStats(name, stats) {\n return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = void 0;\nconst os = require(\"os\");\nconst path = require(\"path\");\nconst IS_WINDOWS_PLATFORM = os.platform() === 'win32';\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\n/**\n * All non-escaped special characters.\n * Posix: ()*?[]{|}, !+@ before (, ! at the beginning, \\\\ before non-special characters.\n * Windows: (){}[], !+@ before (, ! at the beginning.\n */\nconst POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\()|\\\\(?![!()*+?@[\\]{|}]))/g;\nconst WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()[\\]{}]|^!|[!+@](?=\\())/g;\n/**\n * The device path (\\\\.\\ or \\\\?\\).\n * https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#dos-device-paths\n */\nconst DOS_DEVICE_PATH_RE = /^\\\\\\\\([.?])/;\n/**\n * All backslashes except those escaping special characters.\n * Windows: !()+@{}\n * https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions\n */\nconst WINDOWS_BACKSLASHES_RE = /\\\\(?![!()+@[\\]{}])/g;\n/**\n * Designed to work only with simple paths: `dir\\\\file`.\n */\nfunction unixify(filepath) {\n return filepath.replace(/\\\\/g, '/');\n}\nexports.unixify = unixify;\nfunction makeAbsolute(cwd, filepath) {\n return path.resolve(cwd, filepath);\n}\nexports.makeAbsolute = makeAbsolute;\nfunction removeLeadingDotSegment(entry) {\n // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n if (entry.charAt(0) === '.') {\n const secondCharactery = entry.charAt(1);\n if (secondCharactery === '/' || secondCharactery === '\\\\') {\n return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\n }\n }\n return entry;\n}\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\nexports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath;\nfunction escapeWindowsPath(pattern) {\n return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\n}\nexports.escapeWindowsPath = escapeWindowsPath;\nfunction escapePosixPath(pattern) {\n return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\n}\nexports.escapePosixPath = escapePosixPath;\nexports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern;\nfunction convertWindowsPathToPattern(filepath) {\n return escapeWindowsPath(filepath)\n .replace(DOS_DEVICE_PATH_RE, '//$1')\n .replace(WINDOWS_BACKSLASHES_RE, '/');\n}\nexports.convertWindowsPathToPattern = convertWindowsPathToPattern;\nfunction convertPosixPathToPattern(filepath) {\n return escapePosixPath(filepath);\n}\nexports.convertPosixPathToPattern = convertPosixPathToPattern;\n", "/*!\n * is-extglob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n", "/*!\n * is-glob \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n var pipeIndex = -2;\n var closeSquareIndex = -2;\n var closeCurlyIndex = -2;\n var closeParenIndex = -2;\n var backSlashIndex = -2;\n while (index < str.length) {\n if (str[index] === '*') {\n return true;\n }\n\n if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n return true;\n }\n\n if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n if (closeSquareIndex < index) {\n closeSquareIndex = str.indexOf(']', index);\n }\n if (closeSquareIndex > index) {\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n }\n }\n\n if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n closeCurlyIndex = str.indexOf('}', index);\n if (closeCurlyIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n return true;\n }\n }\n }\n\n if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n closeParenIndex = str.indexOf(')', index);\n if (closeParenIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n\n if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n if (pipeIndex < index) {\n pipeIndex = str.indexOf('|', index);\n }\n if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n closeParenIndex = str.indexOf(')', pipeIndex);\n if (closeParenIndex > pipeIndex) {\n backSlashIndex = str.indexOf('\\\\', pipeIndex);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nvar relaxedCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n while (index < str.length) {\n if (/[*?{}()[\\]]/.test(str[index])) {\n return true;\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var check = strictCheck;\n\n // optionally relax check\n if (options && options.strict === false) {\n check = relaxedCheck;\n }\n\n return check(str);\n};\n", "'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n", "'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n const node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n const ele = arr[i];\n\n if (Array.isArray(ele)) {\n flat(ele);\n continue;\n }\n\n if (ele !== undefined) {\n result.push(ele);\n }\n }\n return result;\n };\n\n flat(args);\n return result;\n};\n", "'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n const stringify = (node, parent = {}) => {\n const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (const child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n", "/*!\n * is-number \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n", "/*!\n * to-regex-range \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n", "/*!\n * fill-range \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options, maxLen)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n", "'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n const walk = (node, parent = {}) => {\n const invalidBlock = utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n const invalid = invalidBlock === true || invalidNode === true;\n const prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n\n if (node.isClose === true) {\n console.log('node.isClose', prefix, node.value);\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? prefix + node.value : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? prefix + node.value : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n const args = utils.reduce(node.nodes);\n const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (const child of node.nodes) {\n output += walk(child, node);\n }\n }\n\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n", "'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n const result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (const item of queue) {\n if (Array.isArray(item)) {\n for (const value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n const walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n const args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n const enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n const child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n", "'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 10000,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n", "'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n const opts = options || {};\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n const ast = { type: 'root', input, nodes: [] };\n const stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n const length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n const open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n const brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n const type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n const open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n const siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n const before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n const parent = stack[stack.length - 1];\n const index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (const pattern of input) {\n const result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n", "'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n", "'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n", "'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n", "'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n", "'use strict';\n\nmodule.exports = require('./lib/picomatch');\n", "'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\n\nconst isEmptyString = v => v === '' || v === './';\nconst hasBraces = v => {\n const index = v.indexOf('{');\n return index > -1 && v.indexOf('}', index) > -1;\n};\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array} `list` List of strings to match.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = new Set(micromatch(list, patterns, { ...options, onResult }));\n\n for (let item of items) {\n if (!matches.has(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.parse(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !hasBraces(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\n// exposed for tests\nmicromatch.hasBraces = hasBraces;\nmodule.exports = micromatch;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAbsolute = exports.partitionAbsoluteAndRelative = exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\nconst path = require(\"path\");\nconst globParent = require(\"glob-parent\");\nconst micromatch = require(\"micromatch\");\nconst GLOBSTAR = '**';\nconst ESCAPE_SYMBOL = '\\\\';\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[[^[]*]/;\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/;\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\([^(]*\\)/;\nconst BRACE_EXPANSION_SEPARATORS_RE = /,|\\.\\./;\n/**\n * Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string.\n * The latter is due to the presence of the device path at the beginning of the UNC path.\n */\nconst DOUBLE_SLASH_RE = /(?!^)\\/{2,}/g;\nfunction isStaticPattern(pattern, options = {}) {\n return !isDynamicPattern(pattern, options);\n}\nexports.isStaticPattern = isStaticPattern;\nfunction isDynamicPattern(pattern, options = {}) {\n /**\n * A special case with an empty string is necessary for matching patterns that start with a forward slash.\n * An empty string cannot be a dynamic pattern.\n * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\n */\n if (pattern === '') {\n return false;\n }\n /**\n * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\n * filepath directly (without read directory).\n */\n if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\n return true;\n }\n if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n if (options.braceExpansion !== false && hasBraceExpansion(pattern)) {\n return true;\n }\n return false;\n}\nexports.isDynamicPattern = isDynamicPattern;\nfunction hasBraceExpansion(pattern) {\n const openingBraceIndex = pattern.indexOf('{');\n if (openingBraceIndex === -1) {\n return false;\n }\n const closingBraceIndex = pattern.indexOf('}', openingBraceIndex + 1);\n if (closingBraceIndex === -1) {\n return false;\n }\n const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex);\n return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent);\n}\nfunction convertToPositivePattern(pattern) {\n return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\n}\nexports.convertToPositivePattern = convertToPositivePattern;\nfunction convertToNegativePattern(pattern) {\n return '!' + pattern;\n}\nexports.convertToNegativePattern = convertToNegativePattern;\nfunction isNegativePattern(pattern) {\n return pattern.startsWith('!') && pattern[1] !== '(';\n}\nexports.isNegativePattern = isNegativePattern;\nfunction isPositivePattern(pattern) {\n return !isNegativePattern(pattern);\n}\nexports.isPositivePattern = isPositivePattern;\nfunction getNegativePatterns(patterns) {\n return patterns.filter(isNegativePattern);\n}\nexports.getNegativePatterns = getNegativePatterns;\nfunction getPositivePatterns(patterns) {\n return patterns.filter(isPositivePattern);\n}\nexports.getPositivePatterns = getPositivePatterns;\n/**\n * Returns patterns that can be applied inside the current directory.\n *\n * @example\n * // ['./*', '*', 'a/*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsInsideCurrentDirectory(patterns) {\n return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern));\n}\nexports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory;\n/**\n * Returns patterns to be expanded relative to (outside) the current directory.\n *\n * @example\n * // ['../*', './../*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsOutsideCurrentDirectory(patterns) {\n return patterns.filter(isPatternRelatedToParentDirectory);\n}\nexports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory;\nfunction isPatternRelatedToParentDirectory(pattern) {\n return pattern.startsWith('..') || pattern.startsWith('./..');\n}\nexports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory;\nfunction getBaseDirectory(pattern) {\n return globParent(pattern, { flipBackslashes: false });\n}\nexports.getBaseDirectory = getBaseDirectory;\nfunction hasGlobStar(pattern) {\n return pattern.includes(GLOBSTAR);\n}\nexports.hasGlobStar = hasGlobStar;\nfunction endsWithSlashGlobStar(pattern) {\n return pattern.endsWith('/' + GLOBSTAR);\n}\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\nfunction isAffectDepthOfReadingPattern(pattern) {\n const basename = path.basename(pattern);\n return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\n}\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\nfunction expandPatternsWithBraceExpansion(patterns) {\n return patterns.reduce((collection, pattern) => {\n return collection.concat(expandBraceExpansion(pattern));\n }, []);\n}\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\nfunction expandBraceExpansion(pattern) {\n const patterns = micromatch.braces(pattern, { expand: true, nodupes: true, keepEscaping: true });\n /**\n * Sort the patterns by length so that the same depth patterns are processed side by side.\n * `a/{b,}/{c,}/*` \u2013 `['a///*', 'a/b//*', 'a//c/*', 'a/b/c/*']`\n */\n patterns.sort((a, b) => a.length - b.length);\n /**\n * Micromatch can return an empty string in the case of patterns like `{a,}`.\n */\n return patterns.filter((pattern) => pattern !== '');\n}\nexports.expandBraceExpansion = expandBraceExpansion;\nfunction getPatternParts(pattern, options) {\n let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\n /**\n * The scan method returns an empty array in some cases.\n * See micromatch/picomatch#58 for more details.\n */\n if (parts.length === 0) {\n parts = [pattern];\n }\n /**\n * The scan method does not return an empty part for the pattern with a forward slash.\n * This is another part of micromatch/picomatch#58.\n */\n if (parts[0].startsWith('/')) {\n parts[0] = parts[0].slice(1);\n parts.unshift('');\n }\n return parts;\n}\nexports.getPatternParts = getPatternParts;\nfunction makeRe(pattern, options) {\n return micromatch.makeRe(pattern, options);\n}\nexports.makeRe = makeRe;\nfunction convertPatternsToRe(patterns, options) {\n return patterns.map((pattern) => makeRe(pattern, options));\n}\nexports.convertPatternsToRe = convertPatternsToRe;\nfunction matchAny(entry, patternsRe) {\n return patternsRe.some((patternRe) => patternRe.test(entry));\n}\nexports.matchAny = matchAny;\n/**\n * This package only works with forward slashes as a path separator.\n * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes.\n */\nfunction removeDuplicateSlashes(pattern) {\n return pattern.replace(DOUBLE_SLASH_RE, '/');\n}\nexports.removeDuplicateSlashes = removeDuplicateSlashes;\nfunction partitionAbsoluteAndRelative(patterns) {\n const absolute = [];\n const relative = [];\n for (const pattern of patterns) {\n if (isAbsolute(pattern)) {\n absolute.push(pattern);\n }\n else {\n relative.push(pattern);\n }\n }\n return [absolute, relative];\n}\nexports.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative;\nfunction isAbsolute(pattern) {\n return path.isAbsolute(pattern);\n}\nexports.isAbsolute = isAbsolute;\n", "'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n const streamsQueue = []\n const args = slice.call(arguments)\n let merging = false\n let options = args[args.length - 1]\n\n if (options && !Array.isArray(options) && options.pipe == null) {\n args.pop()\n } else {\n options = {}\n }\n\n const doEnd = options.end !== false\n const doPipeError = options.pipeError === true\n if (options.objectMode == null) {\n options.objectMode = true\n }\n if (options.highWaterMark == null) {\n options.highWaterMark = 64 * 1024\n }\n const mergedStream = PassThrough(options)\n\n function addStream () {\n for (let i = 0, len = arguments.length; i < len; i++) {\n streamsQueue.push(pauseStreams(arguments[i], options))\n }\n mergeStream()\n return this\n }\n\n function mergeStream () {\n if (merging) {\n return\n }\n merging = true\n\n let streams = streamsQueue.shift()\n if (!streams) {\n process.nextTick(endStream)\n return\n }\n if (!Array.isArray(streams)) {\n streams = [streams]\n }\n\n let pipesCount = streams.length + 1\n\n function next () {\n if (--pipesCount > 0) {\n return\n }\n merging = false\n mergeStream()\n }\n\n function pipe (stream) {\n function onend () {\n stream.removeListener('merge2UnpipeEnd', onend)\n stream.removeListener('end', onend)\n if (doPipeError) {\n stream.removeListener('error', onerror)\n }\n next()\n }\n function onerror (err) {\n mergedStream.emit('error', err)\n }\n // skip ended stream\n if (stream._readableState.endEmitted) {\n return next()\n }\n\n stream.on('merge2UnpipeEnd', onend)\n stream.on('end', onend)\n\n if (doPipeError) {\n stream.on('error', onerror)\n }\n\n stream.pipe(mergedStream, { end: false })\n // compatible for old stream\n stream.resume()\n }\n\n for (let i = 0; i < streams.length; i++) {\n pipe(streams[i])\n }\n\n next()\n }\n\n function endStream () {\n merging = false\n // emit 'queueDrain' when all streams merged.\n mergedStream.emit('queueDrain')\n if (doEnd) {\n mergedStream.end()\n }\n }\n\n mergedStream.setMaxListeners(0)\n mergedStream.add = addStream\n mergedStream.on('unpipe', function (stream) {\n stream.emit('merge2UnpipeEnd')\n })\n\n if (args.length) {\n addStream.apply(null, args)\n }\n return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n if (!Array.isArray(streams)) {\n // Backwards-compat with old-style streams\n if (!streams._readableState && streams.pipe) {\n streams = streams.pipe(PassThrough(options))\n }\n if (!streams._readableState || !streams.pause || !streams.pipe) {\n throw new Error('Only readable stream can be merged.')\n }\n streams.pause()\n } else {\n for (let i = 0, len = streams.length; i < len; i++) {\n streams[i] = pauseStreams(streams[i], options)\n }\n }\n return streams\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nconst merge2 = require(\"merge2\");\nfunction merge(streams) {\n const mergedStream = merge2(streams);\n streams.forEach((stream) => {\n stream.once('error', (error) => mergedStream.emit('error', error));\n });\n mergedStream.once('close', () => propagateCloseEventToSources(streams));\n mergedStream.once('end', () => propagateCloseEventToSources(streams));\n return mergedStream;\n}\nexports.merge = merge;\nfunction propagateCloseEventToSources(streams) {\n streams.forEach((stream) => stream.emit('close'));\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmpty = exports.isString = void 0;\nfunction isString(input) {\n return typeof input === 'string';\n}\nexports.isString = isString;\nfunction isEmpty(input) {\n return input === '';\n}\nexports.isEmpty = isEmpty;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\nconst array = require(\"./array\");\nexports.array = array;\nconst errno = require(\"./errno\");\nexports.errno = errno;\nconst fs = require(\"./fs\");\nexports.fs = fs;\nconst path = require(\"./path\");\nexports.path = path;\nconst pattern = require(\"./pattern\");\nexports.pattern = pattern;\nconst stream = require(\"./stream\");\nexports.stream = stream;\nconst string = require(\"./string\");\nexports.string = string;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;\nconst utils = require(\"../utils\");\nfunction generate(input, settings) {\n const patterns = processPatterns(input, settings);\n const ignore = processPatterns(settings.ignore, settings);\n const positivePatterns = getPositivePatterns(patterns);\n const negativePatterns = getNegativePatternsAsPositive(patterns, ignore);\n const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));\n const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\n const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\n const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\n return staticTasks.concat(dynamicTasks);\n}\nexports.generate = generate;\nfunction processPatterns(input, settings) {\n let patterns = input;\n /**\n * The original pattern like `{,*,**,a/*}` can lead to problems checking the depth when matching entry\n * and some problems with the micromatch package (see fast-glob issues: #365, #394).\n *\n * To solve this problem, we expand all patterns containing brace expansion. This can lead to a slight slowdown\n * in matching in the case of a large set of patterns after expansion.\n */\n if (settings.braceExpansion) {\n patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns);\n }\n /**\n * If the `baseNameMatch` option is enabled, we must add globstar to patterns, so that they can be used\n * at any nesting level.\n *\n * We do this here, because otherwise we have to complicate the filtering logic. For example, we need to change\n * the pattern in the filter before creating a regular expression. There is no need to change the patterns\n * in the application. Only on the input.\n */\n if (settings.baseNameMatch) {\n patterns = patterns.map((pattern) => pattern.includes('/') ? pattern : `**/${pattern}`);\n }\n /**\n * This method also removes duplicate slashes that may have been in the pattern or formed as a result of expansion.\n */\n return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern));\n}\n/**\n * Returns tasks grouped by basic pattern directories.\n *\n * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.\n * This is necessary because directory traversal starts at the base directory and goes deeper.\n */\nfunction convertPatternsToTasks(positive, negative, dynamic) {\n const tasks = [];\n const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive);\n const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive);\n const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory);\n const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory);\n tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic));\n /*\n * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory\n * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest.\n */\n if ('.' in insideCurrentDirectoryGroup) {\n tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic));\n }\n else {\n tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic));\n }\n return tasks;\n}\nexports.convertPatternsToTasks = convertPatternsToTasks;\nfunction getPositivePatterns(patterns) {\n return utils.pattern.getPositivePatterns(patterns);\n}\nexports.getPositivePatterns = getPositivePatterns;\nfunction getNegativePatternsAsPositive(patterns, ignore) {\n const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\n const positive = negative.map(utils.pattern.convertToPositivePattern);\n return positive;\n}\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\nfunction groupPatternsByBaseDirectory(patterns) {\n const group = {};\n return patterns.reduce((collection, pattern) => {\n const base = utils.pattern.getBaseDirectory(pattern);\n if (base in collection) {\n collection[base].push(pattern);\n }\n else {\n collection[base] = [pattern];\n }\n return collection;\n }, group);\n}\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\n return Object.keys(positive).map((base) => {\n return convertPatternGroupToTask(base, positive[base], negative, dynamic);\n });\n}\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\n return {\n dynamic,\n positive,\n negative,\n base,\n patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\n };\n}\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings, callback) {\n settings.fs.lstat(path, (lstatError, lstat) => {\n if (lstatError !== null) {\n callFailureCallback(callback, lstatError);\n return;\n }\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n callSuccessCallback(callback, lstat);\n return;\n }\n settings.fs.stat(path, (statError, stat) => {\n if (statError !== null) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n callFailureCallback(callback, statError);\n return;\n }\n callSuccessCallback(callback, lstat);\n return;\n }\n if (settings.markSymbolicLink) {\n stat.isSymbolicLink = () => true;\n }\n callSuccessCallback(callback, stat);\n });\n });\n}\nexports.read = read;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n callback(null, result);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings) {\n const lstat = settings.fs.lstatSync(path);\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n return lstat;\n }\n try {\n const stat = settings.fs.statSync(path);\n if (settings.markSymbolicLink) {\n stat.isSymbolicLink = () => true;\n }\n return stat;\n }\n catch (error) {\n if (!settings.throwErrorOnBrokenSymbolicLink) {\n return lstat;\n }\n throw error;\n }\n}\nexports.read = read;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n stat: fs.stat,\n lstatSync: fs.lstatSync,\n statSync: fs.statSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n if (fsMethods === undefined) {\n return exports.FILE_SYSTEM_ADAPTER;\n }\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\n this.fs = fs.createFileSystemAdapter(this._options.fs);\n this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.statSync = exports.stat = exports.Settings = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n async.read(path, getSettings(), optionsOrSettingsOrCallback);\n return;\n }\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.stat = stat;\nfunction statSync(path, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n return sync.read(path, settings);\n}\nexports.statSync = statSync;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n", "/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n", "/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\nif (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) {\n throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);\n}\nconst MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\nconst MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\nconst SUPPORTED_MAJOR_VERSION = 10;\nconst SUPPORTED_MINOR_VERSION = 10;\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\n/**\n * IS `true` for Node.js 10.10 and greater.\n */\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n constructor(name, stats) {\n this.name = name;\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n this.isDirectory = stats.isDirectory.bind(stats);\n this.isFIFO = stats.isFIFO.bind(stats);\n this.isFile = stats.isFile.bind(stats);\n this.isSocket = stats.isSocket.bind(stats);\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n }\n}\nfunction createDirentFromStats(name, stats) {\n return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fs = void 0;\nconst fs = require(\"./fs\");\nexports.fs = fs;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = void 0;\nfunction joinPathSegments(a, b, separator) {\n /**\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n */\n if (a.endsWith(separator)) {\n return a + b;\n }\n return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst rpl = require(\"run-parallel\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings, callback) {\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n readdirWithFileTypes(directory, settings, callback);\n return;\n }\n readdir(directory, settings, callback);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings, callback) {\n settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\n if (readdirError !== null) {\n callFailureCallback(callback, readdirError);\n return;\n }\n const entries = dirents.map((dirent) => ({\n dirent,\n name: dirent.name,\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n }));\n if (!settings.followSymbolicLinks) {\n callSuccessCallback(callback, entries);\n return;\n }\n const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\n rpl(tasks, (rplError, rplEntries) => {\n if (rplError !== null) {\n callFailureCallback(callback, rplError);\n return;\n }\n callSuccessCallback(callback, rplEntries);\n });\n });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction makeRplTaskEntry(entry, settings) {\n return (done) => {\n if (!entry.dirent.isSymbolicLink()) {\n done(null, entry);\n return;\n }\n settings.fs.stat(entry.path, (statError, stats) => {\n if (statError !== null) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n done(statError);\n return;\n }\n done(null, entry);\n return;\n }\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n done(null, entry);\n });\n };\n}\nfunction readdir(directory, settings, callback) {\n settings.fs.readdir(directory, (readdirError, names) => {\n if (readdirError !== null) {\n callFailureCallback(callback, readdirError);\n return;\n }\n const tasks = names.map((name) => {\n const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n return (done) => {\n fsStat.stat(path, settings.fsStatSettings, (error, stats) => {\n if (error !== null) {\n done(error);\n return;\n }\n const entry = {\n name,\n path,\n dirent: utils.fs.createDirentFromStats(name, stats)\n };\n if (settings.stats) {\n entry.stats = stats;\n }\n done(null, entry);\n });\n };\n });\n rpl(tasks, (rplError, entries) => {\n if (rplError !== null) {\n callFailureCallback(callback, rplError);\n return;\n }\n callSuccessCallback(callback, entries);\n });\n });\n}\nexports.readdir = readdir;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n callback(null, result);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings) {\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n return readdirWithFileTypes(directory, settings);\n }\n return readdir(directory, settings);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings) {\n const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\n return dirents.map((dirent) => {\n const entry = {\n dirent,\n name: dirent.name,\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n };\n if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\n try {\n const stats = settings.fs.statSync(entry.path);\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n }\n catch (error) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n throw error;\n }\n }\n }\n return entry;\n });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction readdir(directory, settings) {\n const names = settings.fs.readdirSync(directory);\n return names.map((name) => {\n const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\n const entry = {\n name,\n path: entryPath,\n dirent: utils.fs.createDirentFromStats(name, stats)\n };\n if (settings.stats) {\n entry.stats = stats;\n }\n return entry;\n });\n}\nexports.readdir = readdir;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n stat: fs.stat,\n lstatSync: fs.lstatSync,\n statSync: fs.statSync,\n readdir: fs.readdir,\n readdirSync: fs.readdirSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n if (fsMethods === undefined) {\n return exports.FILE_SYSTEM_ADAPTER;\n }\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\n this.fs = fs.createFileSystemAdapter(this._options.fs);\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n this.stats = this._getValue(this._options.stats, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n this.fsStatSettings = new fsStat.Settings({\n followSymbolicLink: this.followSymbolicLinks,\n fs: this.fs,\n throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\n });\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n async.read(path, getSettings(), optionsOrSettingsOrCallback);\n return;\n }\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.scandir = scandir;\nfunction scandirSync(path, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n return sync.read(path, settings);\n}\nexports.scandirSync = scandirSync;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n", "'use strict'\n\nfunction reusify (Constructor) {\n var head = new Constructor()\n var tail = head\n\n function get () {\n var current = head\n\n if (current.next) {\n head = current.next\n } else {\n head = new Constructor()\n tail = head\n }\n\n current.next = null\n\n return current\n }\n\n function release (obj) {\n tail.next = obj\n tail = obj\n }\n\n return {\n get: get,\n release: release\n }\n}\n\nmodule.exports = reusify\n", "'use strict'\n\n/* eslint-disable no-var */\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, _concurrency) {\n if (typeof context === 'function') {\n _concurrency = worker\n worker = context\n context = null\n }\n\n if (!(_concurrency >= 1)) {\n throw new Error('fastqueue concurrency must be equal to or greater than 1')\n }\n\n var cache = reusify(Task)\n var queueHead = null\n var queueTail = null\n var _running = 0\n var errorHandler = null\n\n var self = {\n push: push,\n drain: noop,\n saturated: noop,\n pause: pause,\n paused: false,\n\n get concurrency () {\n return _concurrency\n },\n set concurrency (value) {\n if (!(value >= 1)) {\n throw new Error('fastqueue concurrency must be equal to or greater than 1')\n }\n _concurrency = value\n\n if (self.paused) return\n for (; queueHead && _running < _concurrency;) {\n _running++\n release()\n }\n },\n\n running: running,\n resume: resume,\n idle: idle,\n length: length,\n getQueue: getQueue,\n unshift: unshift,\n empty: noop,\n kill: kill,\n killAndDrain: killAndDrain,\n error: error\n }\n\n return self\n\n function running () {\n return _running\n }\n\n function pause () {\n self.paused = true\n }\n\n function length () {\n var current = queueHead\n var counter = 0\n\n while (current) {\n current = current.next\n counter++\n }\n\n return counter\n }\n\n function getQueue () {\n var current = queueHead\n var tasks = []\n\n while (current) {\n tasks.push(current.value)\n current = current.next\n }\n\n return tasks\n }\n\n function resume () {\n if (!self.paused) return\n self.paused = false\n if (queueHead === null) {\n _running++\n release()\n return\n }\n for (; queueHead && _running < _concurrency;) {\n _running++\n release()\n }\n }\n\n function idle () {\n return _running === 0 && self.length() === 0\n }\n\n function push (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running >= _concurrency || self.paused) {\n if (queueTail) {\n queueTail.next = current\n queueTail = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function unshift (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running >= _concurrency || self.paused) {\n if (queueHead) {\n current.next = queueHead\n queueHead = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function release (holder) {\n if (holder) {\n cache.release(holder)\n }\n var next = queueHead\n if (next && _running <= _concurrency) {\n if (!self.paused) {\n if (queueTail === queueHead) {\n queueTail = null\n }\n queueHead = next.next\n next.next = null\n worker.call(context, next.value, next.worked)\n if (queueTail === null) {\n self.empty()\n }\n } else {\n _running--\n }\n } else if (--_running === 0) {\n self.drain()\n }\n }\n\n function kill () {\n queueHead = null\n queueTail = null\n self.drain = noop\n }\n\n function killAndDrain () {\n queueHead = null\n queueTail = null\n self.drain()\n self.drain = noop\n }\n\n function error (handler) {\n errorHandler = handler\n }\n}\n\nfunction noop () {}\n\nfunction Task () {\n this.value = null\n this.callback = noop\n this.next = null\n this.release = noop\n this.context = null\n this.errorHandler = null\n\n var self = this\n\n this.worked = function worked (err, result) {\n var callback = self.callback\n var errorHandler = self.errorHandler\n var val = self.value\n self.value = null\n self.callback = noop\n if (self.errorHandler) {\n errorHandler(err, val)\n }\n callback.call(self.context, err, result)\n self.release(self)\n }\n}\n\nfunction queueAsPromised (context, worker, _concurrency) {\n if (typeof context === 'function') {\n _concurrency = worker\n worker = context\n context = null\n }\n\n function asyncWrapper (arg, cb) {\n worker.call(this, arg)\n .then(function (res) {\n cb(null, res)\n }, cb)\n }\n\n var queue = fastqueue(context, asyncWrapper, _concurrency)\n\n var pushCb = queue.push\n var unshiftCb = queue.unshift\n\n queue.push = push\n queue.unshift = unshift\n queue.drained = drained\n\n return queue\n\n function push (value) {\n var p = new Promise(function (resolve, reject) {\n pushCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n\n // Let's fork the promise chain to\n // make the error bubble up to the user but\n // not lead to a unhandledRejection\n p.catch(noop)\n\n return p\n }\n\n function unshift (value) {\n var p = new Promise(function (resolve, reject) {\n unshiftCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n\n // Let's fork the promise chain to\n // make the error bubble up to the user but\n // not lead to a unhandledRejection\n p.catch(noop)\n\n return p\n }\n\n function drained () {\n var p = new Promise(function (resolve) {\n process.nextTick(function () {\n if (queue.idle()) {\n resolve()\n } else {\n var previousDrain = queue.drain\n queue.drain = function () {\n if (typeof previousDrain === 'function') previousDrain()\n resolve()\n queue.drain = previousDrain\n }\n }\n })\n })\n\n return p\n }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\nfunction isFatalError(settings, error) {\n if (settings.errorFilter === null) {\n return true;\n }\n return !settings.errorFilter(error);\n}\nexports.isFatalError = isFatalError;\nfunction isAppliedFilter(filter, value) {\n return filter === null || filter(value);\n}\nexports.isAppliedFilter = isAppliedFilter;\nfunction replacePathSegmentSeparator(filepath, separator) {\n return filepath.split(/[/\\\\]/).join(separator);\n}\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\nfunction joinPathSegments(a, b, separator) {\n if (a === '') {\n return b;\n }\n /**\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n */\n if (a.endsWith(separator)) {\n return a + b;\n }\n return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst common = require(\"./common\");\nclass Reader {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\n }\n}\nexports.default = Reader;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst fastq = require(\"fastq\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass AsyncReader extends reader_1.default {\n constructor(_root, _settings) {\n super(_root, _settings);\n this._settings = _settings;\n this._scandir = fsScandir.scandir;\n this._emitter = new events_1.EventEmitter();\n this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\n this._isFatalError = false;\n this._isDestroyed = false;\n this._queue.drain = () => {\n if (!this._isFatalError) {\n this._emitter.emit('end');\n }\n };\n }\n read() {\n this._isFatalError = false;\n this._isDestroyed = false;\n setImmediate(() => {\n this._pushToQueue(this._root, this._settings.basePath);\n });\n return this._emitter;\n }\n get isDestroyed() {\n return this._isDestroyed;\n }\n destroy() {\n if (this._isDestroyed) {\n throw new Error('The reader is already destroyed');\n }\n this._isDestroyed = true;\n this._queue.killAndDrain();\n }\n onEntry(callback) {\n this._emitter.on('entry', callback);\n }\n onError(callback) {\n this._emitter.once('error', callback);\n }\n onEnd(callback) {\n this._emitter.once('end', callback);\n }\n _pushToQueue(directory, base) {\n const queueItem = { directory, base };\n this._queue.push(queueItem, (error) => {\n if (error !== null) {\n this._handleError(error);\n }\n });\n }\n _worker(item, done) {\n this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\n if (error !== null) {\n done(error, undefined);\n return;\n }\n for (const entry of entries) {\n this._handleEntry(entry, item.base);\n }\n done(null, undefined);\n });\n }\n _handleError(error) {\n if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\n return;\n }\n this._isFatalError = true;\n this._isDestroyed = true;\n this._emitter.emit('error', error);\n }\n _handleEntry(entry, base) {\n if (this._isDestroyed || this._isFatalError) {\n return;\n }\n const fullpath = entry.path;\n if (base !== undefined) {\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n }\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n this._emitEntry(entry);\n }\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n }\n }\n _emitEntry(entry) {\n this._emitter.emit('entry', entry);\n }\n}\nexports.default = AsyncReader;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_1 = require(\"../readers/async\");\nclass AsyncProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new async_1.default(this._root, this._settings);\n this._storage = [];\n }\n read(callback) {\n this._reader.onError((error) => {\n callFailureCallback(callback, error);\n });\n this._reader.onEntry((entry) => {\n this._storage.push(entry);\n });\n this._reader.onEnd(() => {\n callSuccessCallback(callback, this._storage);\n });\n this._reader.read();\n }\n}\nexports.default = AsyncProvider;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, entries) {\n callback(null, entries);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst async_1 = require(\"../readers/async\");\nclass StreamProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new async_1.default(this._root, this._settings);\n this._stream = new stream_1.Readable({\n objectMode: true,\n read: () => { },\n destroy: () => {\n if (!this._reader.isDestroyed) {\n this._reader.destroy();\n }\n }\n });\n }\n read() {\n this._reader.onError((error) => {\n this._stream.emit('error', error);\n });\n this._reader.onEntry((entry) => {\n this._stream.push(entry);\n });\n this._reader.onEnd(() => {\n this._stream.push(null);\n });\n this._reader.read();\n return this._stream;\n }\n}\nexports.default = StreamProvider;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass SyncReader extends reader_1.default {\n constructor() {\n super(...arguments);\n this._scandir = fsScandir.scandirSync;\n this._storage = [];\n this._queue = new Set();\n }\n read() {\n this._pushToQueue(this._root, this._settings.basePath);\n this._handleQueue();\n return this._storage;\n }\n _pushToQueue(directory, base) {\n this._queue.add({ directory, base });\n }\n _handleQueue() {\n for (const item of this._queue.values()) {\n this._handleDirectory(item.directory, item.base);\n }\n }\n _handleDirectory(directory, base) {\n try {\n const entries = this._scandir(directory, this._settings.fsScandirSettings);\n for (const entry of entries) {\n this._handleEntry(entry, base);\n }\n }\n catch (error) {\n this._handleError(error);\n }\n }\n _handleError(error) {\n if (!common.isFatalError(this._settings, error)) {\n return;\n }\n throw error;\n }\n _handleEntry(entry, base) {\n const fullpath = entry.path;\n if (base !== undefined) {\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n }\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n this._pushToStorage(entry);\n }\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n }\n }\n _pushToStorage(entry) {\n this._storage.push(entry);\n }\n}\nexports.default = SyncReader;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nclass SyncProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new sync_1.default(this._root, this._settings);\n }\n read() {\n return this._reader.read();\n }\n}\nexports.default = SyncProvider;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.basePath = this._getValue(this._options.basePath, undefined);\n this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY);\n this.deepFilter = this._getValue(this._options.deepFilter, null);\n this.entryFilter = this._getValue(this._options.entryFilter, null);\n this.errorFilter = this._getValue(this._options.errorFilter, null);\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n this.fsScandirSettings = new fsScandir.Settings({\n followSymbolicLinks: this._options.followSymbolicLinks,\n fs: this._options.fs,\n pathSegmentSeparator: this._options.pathSegmentSeparator,\n stats: this._options.stats,\n throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\n });\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\n return;\n }\n new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\n}\nexports.walk = walk;\nfunction walkSync(directory, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n const provider = new sync_1.default(directory, settings);\n return provider.read();\n}\nexports.walkSync = walkSync;\nfunction walkStream(directory, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n const provider = new stream_1.default(directory, settings);\n return provider.read();\n}\nexports.walkStream = walkStream;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst utils = require(\"../utils\");\nclass Reader {\n constructor(_settings) {\n this._settings = _settings;\n this._fsStatSettings = new fsStat.Settings({\n followSymbolicLink: this._settings.followSymbolicLinks,\n fs: this._settings.fs,\n throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\n });\n }\n _getFullEntryPath(filepath) {\n return path.resolve(this._settings.cwd, filepath);\n }\n _makeEntry(stats, pattern) {\n const entry = {\n name: pattern,\n path: pattern,\n dirent: utils.fs.createDirentFromStats(pattern, stats)\n };\n if (this._settings.stats) {\n entry.stats = stats;\n }\n return entry;\n }\n _isFatalError(error) {\n return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\n }\n}\nexports.default = Reader;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderStream extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkStream = fsWalk.walkStream;\n this._stat = fsStat.stat;\n }\n dynamic(root, options) {\n return this._walkStream(root, options);\n }\n static(patterns, options) {\n const filepaths = patterns.map(this._getFullEntryPath, this);\n const stream = new stream_1.PassThrough({ objectMode: true });\n stream._write = (index, _enc, done) => {\n return this._getEntry(filepaths[index], patterns[index], options)\n .then((entry) => {\n if (entry !== null && options.entryFilter(entry)) {\n stream.push(entry);\n }\n if (index === filepaths.length - 1) {\n stream.end();\n }\n done();\n })\n .catch(done);\n };\n for (let i = 0; i < filepaths.length; i++) {\n stream.write(i);\n }\n return stream;\n }\n _getEntry(filepath, pattern, options) {\n return this._getStat(filepath)\n .then((stats) => this._makeEntry(stats, pattern))\n .catch((error) => {\n if (options.errorFilter(error)) {\n return null;\n }\n throw error;\n });\n }\n _getStat(filepath) {\n return new Promise((resolve, reject) => {\n this._stat(filepath, this._fsStatSettings, (error, stats) => {\n return error === null ? resolve(stats) : reject(error);\n });\n });\n }\n}\nexports.default = ReaderStream;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nconst stream_1 = require(\"./stream\");\nclass ReaderAsync extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkAsync = fsWalk.walk;\n this._readerStream = new stream_1.default(this._settings);\n }\n dynamic(root, options) {\n return new Promise((resolve, reject) => {\n this._walkAsync(root, options, (error, entries) => {\n if (error === null) {\n resolve(entries);\n }\n else {\n reject(error);\n }\n });\n });\n }\n async static(patterns, options) {\n const entries = [];\n const stream = this._readerStream.static(patterns, options);\n // After #235, replace it with an asynchronous iterator.\n return new Promise((resolve, reject) => {\n stream.once('error', reject);\n stream.on('data', (entry) => entries.push(entry));\n stream.once('end', () => resolve(entries));\n });\n }\n}\nexports.default = ReaderAsync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass Matcher {\n constructor(_patterns, _settings, _micromatchOptions) {\n this._patterns = _patterns;\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n this._storage = [];\n this._fillStorage();\n }\n _fillStorage() {\n for (const pattern of this._patterns) {\n const segments = this._getPatternSegments(pattern);\n const sections = this._splitSegmentsIntoSections(segments);\n this._storage.push({\n complete: sections.length <= 1,\n pattern,\n segments,\n sections\n });\n }\n }\n _getPatternSegments(pattern) {\n const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\n return parts.map((part) => {\n const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\n if (!dynamic) {\n return {\n dynamic: false,\n pattern: part\n };\n }\n return {\n dynamic: true,\n pattern: part,\n patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\n };\n });\n }\n _splitSegmentsIntoSections(segments) {\n return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\n }\n}\nexports.default = Matcher;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst matcher_1 = require(\"./matcher\");\nclass PartialMatcher extends matcher_1.default {\n match(filepath) {\n const parts = filepath.split('/');\n const levels = parts.length;\n const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\n for (const pattern of patterns) {\n const section = pattern.sections[0];\n /**\n * In this case, the pattern has a globstar and we must read all directories unconditionally,\n * but only if the level has reached the end of the first group.\n *\n * fixtures/{a,b}/**\n * ^ true/false ^ always true\n */\n if (!pattern.complete && levels > section.length) {\n return true;\n }\n const match = parts.every((part, index) => {\n const segment = pattern.segments[index];\n if (segment.dynamic && segment.patternRe.test(part)) {\n return true;\n }\n if (!segment.dynamic && segment.pattern === part) {\n return true;\n }\n return false;\n });\n if (match) {\n return true;\n }\n }\n return false;\n }\n}\nexports.default = PartialMatcher;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nconst partial_1 = require(\"../matchers/partial\");\nclass DeepFilter {\n constructor(_settings, _micromatchOptions) {\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n }\n getFilter(basePath, positive, negative) {\n const matcher = this._getMatcher(positive);\n const negativeRe = this._getNegativePatternsRe(negative);\n return (entry) => this._filter(basePath, entry, matcher, negativeRe);\n }\n _getMatcher(patterns) {\n return new partial_1.default(patterns, this._settings, this._micromatchOptions);\n }\n _getNegativePatternsRe(patterns) {\n const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\n return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\n }\n _filter(basePath, entry, matcher, negativeRe) {\n if (this._isSkippedByDeep(basePath, entry.path)) {\n return false;\n }\n if (this._isSkippedSymbolicLink(entry)) {\n return false;\n }\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\n if (this._isSkippedByPositivePatterns(filepath, matcher)) {\n return false;\n }\n return this._isSkippedByNegativePatterns(filepath, negativeRe);\n }\n _isSkippedByDeep(basePath, entryPath) {\n /**\n * Avoid unnecessary depth calculations when it doesn't matter.\n */\n if (this._settings.deep === Infinity) {\n return false;\n }\n return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\n }\n _getEntryLevel(basePath, entryPath) {\n const entryPathDepth = entryPath.split('/').length;\n if (basePath === '') {\n return entryPathDepth;\n }\n const basePathDepth = basePath.split('/').length;\n return entryPathDepth - basePathDepth;\n }\n _isSkippedSymbolicLink(entry) {\n return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\n }\n _isSkippedByPositivePatterns(entryPath, matcher) {\n return !this._settings.baseNameMatch && !matcher.match(entryPath);\n }\n _isSkippedByNegativePatterns(entryPath, patternsRe) {\n return !utils.pattern.matchAny(entryPath, patternsRe);\n }\n}\nexports.default = DeepFilter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryFilter {\n constructor(_settings, _micromatchOptions) {\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n this.index = new Map();\n }\n getFilter(positive, negative) {\n const [absoluteNegative, relativeNegative] = utils.pattern.partitionAbsoluteAndRelative(negative);\n const patterns = {\n positive: {\n all: utils.pattern.convertPatternsToRe(positive, this._micromatchOptions)\n },\n negative: {\n absolute: utils.pattern.convertPatternsToRe(absoluteNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })),\n relative: utils.pattern.convertPatternsToRe(relativeNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true }))\n }\n };\n return (entry) => this._filter(entry, patterns);\n }\n _filter(entry, patterns) {\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\n if (this._settings.unique && this._isDuplicateEntry(filepath)) {\n return false;\n }\n if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\n return false;\n }\n const isMatched = this._isMatchToPatternsSet(filepath, patterns, entry.dirent.isDirectory());\n if (this._settings.unique && isMatched) {\n this._createIndexRecord(filepath);\n }\n return isMatched;\n }\n _isDuplicateEntry(filepath) {\n return this.index.has(filepath);\n }\n _createIndexRecord(filepath) {\n this.index.set(filepath, undefined);\n }\n _onlyFileFilter(entry) {\n return this._settings.onlyFiles && !entry.dirent.isFile();\n }\n _onlyDirectoryFilter(entry) {\n return this._settings.onlyDirectories && !entry.dirent.isDirectory();\n }\n _isMatchToPatternsSet(filepath, patterns, isDirectory) {\n const isMatched = this._isMatchToPatterns(filepath, patterns.positive.all, isDirectory);\n if (!isMatched) {\n return false;\n }\n const isMatchedByRelativeNegative = this._isMatchToPatterns(filepath, patterns.negative.relative, isDirectory);\n if (isMatchedByRelativeNegative) {\n return false;\n }\n const isMatchedByAbsoluteNegative = this._isMatchToAbsoluteNegative(filepath, patterns.negative.absolute, isDirectory);\n if (isMatchedByAbsoluteNegative) {\n return false;\n }\n return true;\n }\n _isMatchToAbsoluteNegative(filepath, patternsRe, isDirectory) {\n if (patternsRe.length === 0) {\n return false;\n }\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n return this._isMatchToPatterns(fullpath, patternsRe, isDirectory);\n }\n _isMatchToPatterns(filepath, patternsRe, isDirectory) {\n if (patternsRe.length === 0) {\n return false;\n }\n // Trying to match files and directories by patterns.\n const isMatched = utils.pattern.matchAny(filepath, patternsRe);\n // A pattern with a trailling slash can be used for directory matching.\n // To apply such pattern, we need to add a tralling slash to the path.\n if (!isMatched && isDirectory) {\n return utils.pattern.matchAny(filepath + '/', patternsRe);\n }\n return isMatched;\n }\n}\nexports.default = EntryFilter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass ErrorFilter {\n constructor(_settings) {\n this._settings = _settings;\n }\n getFilter() {\n return (error) => this._isNonFatalError(error);\n }\n _isNonFatalError(error) {\n return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\n }\n}\nexports.default = ErrorFilter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryTransformer {\n constructor(_settings) {\n this._settings = _settings;\n }\n getTransformer() {\n return (entry) => this._transform(entry);\n }\n _transform(entry) {\n let filepath = entry.path;\n if (this._settings.absolute) {\n filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n filepath = utils.path.unixify(filepath);\n }\n if (this._settings.markDirectories && entry.dirent.isDirectory()) {\n filepath += '/';\n }\n if (!this._settings.objectMode) {\n return filepath;\n }\n return Object.assign(Object.assign({}, entry), { path: filepath });\n }\n}\nexports.default = EntryTransformer;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst deep_1 = require(\"./filters/deep\");\nconst entry_1 = require(\"./filters/entry\");\nconst error_1 = require(\"./filters/error\");\nconst entry_2 = require(\"./transformers/entry\");\nclass Provider {\n constructor(_settings) {\n this._settings = _settings;\n this.errorFilter = new error_1.default(this._settings);\n this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\n this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\n this.entryTransformer = new entry_2.default(this._settings);\n }\n _getRootDirectory(task) {\n return path.resolve(this._settings.cwd, task.base);\n }\n _getReaderOptions(task) {\n const basePath = task.base === '.' ? '' : task.base;\n return {\n basePath,\n pathSegmentSeparator: '/',\n concurrency: this._settings.concurrency,\n deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\n entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\n errorFilter: this.errorFilter.getFilter(),\n followSymbolicLinks: this._settings.followSymbolicLinks,\n fs: this._settings.fs,\n stats: this._settings.stats,\n throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\n transform: this.entryTransformer.getTransformer()\n };\n }\n _getMicromatchOptions() {\n return {\n dot: this._settings.dot,\n matchBase: this._settings.baseNameMatch,\n nobrace: !this._settings.braceExpansion,\n nocase: !this._settings.caseSensitiveMatch,\n noext: !this._settings.extglob,\n noglobstar: !this._settings.globstar,\n posix: true,\n strictSlashes: false\n };\n }\n}\nexports.default = Provider;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_1 = require(\"../readers/async\");\nconst provider_1 = require(\"./provider\");\nclass ProviderAsync extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new async_1.default(this._settings);\n }\n async read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const entries = await this.api(root, task, options);\n return entries.map((entry) => options.transform(entry));\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderAsync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst stream_2 = require(\"../readers/stream\");\nconst provider_1 = require(\"./provider\");\nclass ProviderStream extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new stream_2.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const source = this.api(root, task, options);\n const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\n source\n .once('error', (error) => destination.emit('error', error))\n .on('data', (entry) => destination.emit('data', options.transform(entry)))\n .once('end', () => destination.emit('end'));\n destination\n .once('close', () => source.destroy());\n return destination;\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderStream;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderSync extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkSync = fsWalk.walkSync;\n this._statSync = fsStat.statSync;\n }\n dynamic(root, options) {\n return this._walkSync(root, options);\n }\n static(patterns, options) {\n const entries = [];\n for (const pattern of patterns) {\n const filepath = this._getFullEntryPath(pattern);\n const entry = this._getEntry(filepath, pattern, options);\n if (entry === null || !options.entryFilter(entry)) {\n continue;\n }\n entries.push(entry);\n }\n return entries;\n }\n _getEntry(filepath, pattern, options) {\n try {\n const stats = this._getStat(filepath);\n return this._makeEntry(stats, pattern);\n }\n catch (error) {\n if (options.errorFilter(error)) {\n return null;\n }\n throw error;\n }\n }\n _getStat(filepath) {\n return this._statSync(filepath, this._fsStatSettings);\n }\n}\nexports.default = ReaderSync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nconst provider_1 = require(\"./provider\");\nclass ProviderSync extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new sync_1.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const entries = this.api(root, task, options);\n return entries.map(options.transform);\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderSync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nconst os = require(\"os\");\n/**\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\n */\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n lstatSync: fs.lstatSync,\n stat: fs.stat,\n statSync: fs.statSync,\n readdir: fs.readdir,\n readdirSync: fs.readdirSync\n};\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.absolute = this._getValue(this._options.absolute, false);\n this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\n this.braceExpansion = this._getValue(this._options.braceExpansion, true);\n this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\n this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\n this.cwd = this._getValue(this._options.cwd, process.cwd());\n this.deep = this._getValue(this._options.deep, Infinity);\n this.dot = this._getValue(this._options.dot, false);\n this.extglob = this._getValue(this._options.extglob, true);\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\n this.fs = this._getFileSystemMethods(this._options.fs);\n this.globstar = this._getValue(this._options.globstar, true);\n this.ignore = this._getValue(this._options.ignore, []);\n this.markDirectories = this._getValue(this._options.markDirectories, false);\n this.objectMode = this._getValue(this._options.objectMode, false);\n this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\n this.onlyFiles = this._getValue(this._options.onlyFiles, true);\n this.stats = this._getValue(this._options.stats, false);\n this.suppressErrors = this._getValue(this._options.suppressErrors, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\n this.unique = this._getValue(this._options.unique, true);\n if (this.onlyDirectories) {\n this.onlyFiles = false;\n }\n if (this.stats) {\n this.objectMode = true;\n }\n // Remove the cast to the array in the next major (#404).\n this.ignore = [].concat(this.ignore);\n }\n _getValue(option, value) {\n return option === undefined ? value : option;\n }\n _getFileSystemMethods(methods = {}) {\n return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\n }\n}\nexports.default = Settings;\n", "\"use strict\";\nconst taskManager = require(\"./managers/tasks\");\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nconst utils = require(\"./utils\");\nasync function FastGlob(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, async_1.default, options);\n const result = await Promise.all(works);\n return utils.array.flatten(result);\n}\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\n// eslint-disable-next-line no-redeclare\n(function (FastGlob) {\n FastGlob.glob = FastGlob;\n FastGlob.globSync = sync;\n FastGlob.globStream = stream;\n FastGlob.async = FastGlob;\n function sync(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, sync_1.default, options);\n return utils.array.flatten(works);\n }\n FastGlob.sync = sync;\n function stream(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, stream_1.default, options);\n /**\n * The stream returned by the provider cannot work with an asynchronous iterator.\n * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\n * This affects performance (+25%). I don't see best solution right now.\n */\n return utils.stream.merge(works);\n }\n FastGlob.stream = stream;\n function generateTasks(source, options) {\n assertPatternsInput(source);\n const patterns = [].concat(source);\n const settings = new settings_1.default(options);\n return taskManager.generate(patterns, settings);\n }\n FastGlob.generateTasks = generateTasks;\n function isDynamicPattern(source, options) {\n assertPatternsInput(source);\n const settings = new settings_1.default(options);\n return utils.pattern.isDynamicPattern(source, settings);\n }\n FastGlob.isDynamicPattern = isDynamicPattern;\n function escapePath(source) {\n assertPatternsInput(source);\n return utils.path.escape(source);\n }\n FastGlob.escapePath = escapePath;\n function convertPathToPattern(source) {\n assertPatternsInput(source);\n return utils.path.convertPathToPattern(source);\n }\n FastGlob.convertPathToPattern = convertPathToPattern;\n let posix;\n (function (posix) {\n function escapePath(source) {\n assertPatternsInput(source);\n return utils.path.escapePosixPath(source);\n }\n posix.escapePath = escapePath;\n function convertPathToPattern(source) {\n assertPatternsInput(source);\n return utils.path.convertPosixPathToPattern(source);\n }\n posix.convertPathToPattern = convertPathToPattern;\n })(posix = FastGlob.posix || (FastGlob.posix = {}));\n let win32;\n (function (win32) {\n function escapePath(source) {\n assertPatternsInput(source);\n return utils.path.escapeWindowsPath(source);\n }\n win32.escapePath = escapePath;\n function convertPathToPattern(source) {\n assertPatternsInput(source);\n return utils.path.convertWindowsPathToPattern(source);\n }\n win32.convertPathToPattern = convertPathToPattern;\n })(win32 = FastGlob.win32 || (FastGlob.win32 = {}));\n})(FastGlob || (FastGlob = {}));\nfunction getWorks(source, _Provider, options) {\n const patterns = [].concat(source);\n const settings = new settings_1.default(options);\n const tasks = taskManager.generate(patterns, settings);\n const provider = new _Provider(settings);\n return tasks.map(provider.read, provider);\n}\nfunction assertPatternsInput(input) {\n const source = [].concat(input);\n const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\n if (!isValidSource) {\n throw new TypeError('Patterns must be a string (non empty) or an array of strings');\n }\n}\nmodule.exports = FastGlob;\n", "/**\n * This is the Posix implementation of isexe, which uses the file\n * mode and uid/gid values.\n *\n * @module\n */\n\nimport { Stats, statSync } from 'fs'\nimport { stat } from 'fs/promises'\nimport { IsexeOptions } from './options'\n\n/**\n * Determine whether a path is executable according to the mode and\n * current (or specified) user and group IDs.\n */\nexport const isexe = async (\n path: string,\n options: IsexeOptions = {}\n): Promise => {\n const { ignoreErrors = false } = options\n try {\n return checkStat(await stat(path), options)\n } catch (e) {\n const er = e as NodeJS.ErrnoException\n if (ignoreErrors || er.code === 'EACCES') return false\n throw er\n }\n}\n\n/**\n * Synchronously determine whether a path is executable according to\n * the mode and current (or specified) user and group IDs.\n */\nexport const sync = (\n path: string,\n options: IsexeOptions = {}\n): boolean => {\n const { ignoreErrors = false } = options\n try {\n return checkStat(statSync(path), options)\n } catch (e) {\n const er = e as NodeJS.ErrnoException\n if (ignoreErrors || er.code === 'EACCES') return false\n throw er\n }\n}\n\nconst checkStat = (stat: Stats, options: IsexeOptions) =>\n stat.isFile() && checkMode(stat, options)\n\nconst checkMode = (stat: Stats, options: IsexeOptions) => {\n const myUid = options.uid ?? process.getuid?.()\n const myGroups = options.groups ?? process.getgroups?.() ?? []\n const myGid = options.gid ?? process.getgid?.() ?? myGroups[0]\n if (myUid === undefined || myGid === undefined) {\n throw new Error('cannot get uid or gid')\n }\n\n const groups = new Set([myGid, ...myGroups])\n\n const mod = stat.mode\n const uid = stat.uid\n const gid = stat.gid\n\n const u = parseInt('100', 8)\n const g = parseInt('010', 8)\n const o = parseInt('001', 8)\n const ug = u | g\n\n return !!(\n mod & o ||\n (mod & g && groups.has(gid)) ||\n (mod & u && uid === myUid) ||\n (mod & ug && myUid === 0)\n )\n}\n", "/**\n * This is the Windows implementation of isexe, which uses the file\n * extension and PATHEXT setting.\n *\n * @module\n */\n\nimport { Stats, statSync } from 'fs'\nimport { stat } from 'fs/promises'\nimport { IsexeOptions } from './options'\n\n/**\n * Determine whether a path is executable based on the file extension\n * and PATHEXT environment variable (or specified pathExt option)\n */\nexport const isexe = async (\n path: string,\n options: IsexeOptions = {}\n): Promise => {\n const { ignoreErrors = false } = options\n try {\n return checkStat(await stat(path), path, options)\n } catch (e) {\n const er = e as NodeJS.ErrnoException\n if (ignoreErrors || er.code === 'EACCES') return false\n throw er\n }\n}\n\n/**\n * Synchronously determine whether a path is executable based on the file\n * extension and PATHEXT environment variable (or specified pathExt option)\n */\nexport const sync = (\n path: string,\n options: IsexeOptions = {}\n): boolean => {\n const { ignoreErrors = false } = options\n try {\n return checkStat(statSync(path), path, options)\n } catch (e) {\n const er = e as NodeJS.ErrnoException\n if (ignoreErrors || er.code === 'EACCES') return false\n throw er\n }\n}\n\nconst checkPathExt = (path: string, options: IsexeOptions) => {\n const { pathExt = process.env.PATHEXT || '' } = options\n const peSplit = pathExt.split(';')\n if (peSplit.indexOf('') !== -1) {\n return true\n }\n\n for (let i = 0; i < peSplit.length; i++) {\n const p = peSplit[i].toLowerCase()\n const ext = path.substring(path.length - p.length).toLowerCase()\n\n if (p && ext === p) {\n return true\n }\n }\n return false\n}\n\nconst checkStat = (stat: Stats, path: string, options: IsexeOptions) =>\n stat.isFile() && checkPathExt(path, options)\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=options.js.map", "import * as posix from './posix.js'\nimport * as win32 from './win32.js'\nexport * from './options.js'\nexport { win32, posix }\n\nconst platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform\nconst impl = platform === 'win32' ? win32 : posix\n\n/**\n * Determine whether a path is executable on the current platform.\n */\nexport const isexe = impl.isexe\n/**\n * Synchronously determine whether a path is executable on the\n * current platform.\n */\nexport const sync = impl.sync\n", "const { isexe, sync: isexeSync } = require('isexe')\nconst { join, delimiter, sep, posix } = require('path')\n\nconst isWindows = process.platform === 'win32'\n\n// used to check for slashed in commands passed in. always checks for the posix\n// seperator on all platforms, and checks for the current separator when not on\n// a posix platform. don't use the isWindows check for this since that is mocked\n// in tests but we still need the code to actually work when called. that is also\n// why it is ignored from coverage.\n/* istanbul ignore next */\nconst rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? '' : sep}]`.replace(/(\\\\)/g, '\\\\$1'))\nconst rRel = new RegExp(`^\\\\.${rSlash.source}`)\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, {\n path: optPath = process.env.PATH,\n pathExt: optPathExt = process.env.PATHEXT,\n delimiter: optDelimiter = delimiter,\n}) => {\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(rSlash) ? [''] : [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(optPath || /* istanbul ignore next: very unusual */ '').split(optDelimiter),\n ]\n\n if (isWindows) {\n const pathExtExe = optPathExt ||\n ['.EXE', '.CMD', '.BAT', '.COM'].join(optDelimiter)\n const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()])\n if (cmd.includes('.') && pathExt[0] !== '') {\n pathExt.unshift('')\n }\n return { pathEnv, pathExt, pathExtExe }\n }\n\n return { pathEnv, pathExt: [''] }\n}\n\nconst getPathPart = (raw, cmd) => {\n const pathPart = /^\".*\"$/.test(raw) ? raw.slice(1, -1) : raw\n const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : ''\n return prefix + join(pathPart, cmd)\n}\n\nconst which = async (cmd, opt = {}) => {\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (const envPart of pathEnv) {\n const p = getPathPart(envPart, cmd)\n\n for (const ext of pathExt) {\n const withExt = p + ext\n const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true })\n if (is) {\n if (!opt.all) {\n return withExt\n }\n found.push(withExt)\n }\n }\n }\n\n if (opt.all && found.length) {\n return found\n }\n\n if (opt.nothrow) {\n return null\n }\n\n throw getNotFoundError(cmd)\n}\n\nconst whichSync = (cmd, opt = {}) => {\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (const pathEnvPart of pathEnv) {\n const p = getPathPart(pathEnvPart, cmd)\n\n for (const ext of pathExt) {\n const withExt = p + ext\n const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true })\n if (is) {\n if (!opt.all) {\n return withExt\n }\n found.push(withExt)\n }\n }\n }\n\n if (opt.all && found.length) {\n return found\n }\n\n if (opt.nothrow) {\n return null\n }\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n", "'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n if (!prevAnchors)\n prevAnchors = anchorNames(doc);\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n", "'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n", "'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n", "'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n", "'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc) {\n let found = undefined;\n visit.visit(doc, {\n Node: (_key, node) => {\n if (node === this)\n return visit.visit.BREAK;\n if (node.anchor === this.source)\n found = node;\n }\n });\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n", "'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n if (!ref.anchor)\n ref.anchor = onAnchor(value);\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n", "'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n", "'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (!value ||\n /^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - empty string, '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n", "'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? typeof obj;\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag;\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n if (!tagObj)\n tagObj = getTagObject(ctx.doc.schema.tags, node);\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n", "'use strict';\n\nvar node_process = require('node:process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n", "'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n", "'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n", "'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n", "'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n", "'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n", "'use strict';\n\nvar node_buffer = require('node:buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n if (!type)\n type = Scalar.Scalar.BLOCK_LITERAL;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value.toISOString().replace(/(T00:00:00)?\\.000Z$/, '')\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n", "'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n", "'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n", "'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '\u2026' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '\u2026';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '\u2026\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n", "'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n", "'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n", "'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n", "'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n", "'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n", "'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // \u2192 key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt?.collection) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n", "'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n if (pos === null)\n pos = before.length;\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n", "'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n", "'use strict';\n\nvar node_process = require('node:process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n", "'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n", "'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n", "'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` \u2013 Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` \u2013 Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` \u2013 Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` \u2013 The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n", "'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n", "'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n", "'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n", "'use strict';\n\nvar node_process = require('node:process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (atMapIndent && bv.type !== 'block-seq') {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n", "'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n", "'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n", "/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n/**\n * Private utility functions\n * @module utils\n * @private\n */\n\n'use strict';\n\nvar regExpChars = /[|\\\\{}()[\\]^$+*?.]/g;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hasOwn = function (obj, key) { return hasOwnProperty.apply(obj, [key]); };\n\n/**\n * Escape characters reserved in regular expressions.\n *\n * If `string` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} string Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\nexports.escapeRegExpChars = function (string) {\n // istanbul ignore if\n if (!string) {\n return '';\n }\n return String(string).replace(regExpChars, '\\\\$&');\n};\n\nvar _ENCODE_HTML_RULES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nvar _MATCH_HTML = /[&<>'\"]/g;\n\nfunction encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n}\n\n/**\n * Stringified version of constants used by {@link module:utils.escapeXML}.\n *\n * It is used in the process of generating {@link ClientFunction}s.\n *\n * @readonly\n * @type {String}\n */\n\nvar escapeFuncStr =\n 'var _ENCODE_HTML_RULES = {\\n'\n+ ' \"&\": \"&\"\\n'\n+ ' , \"<\": \"<\"\\n'\n+ ' , \">\": \">\"\\n'\n+ ' , \\'\"\\': \""\"\\n'\n+ ' , \"\\'\": \"'\"\\n'\n+ ' }\\n'\n+ ' , _MATCH_HTML = /[&<>\\'\"]/g;\\n'\n+ 'function encode_char(c) {\\n'\n+ ' return _ENCODE_HTML_RULES[c] || c;\\n'\n+ '};\\n';\n\n/**\n * Escape characters reserved in XML.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @implements {EscapeCallback}\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\n\nexports.escapeXML = function (markup) {\n return markup == undefined\n ? ''\n : String(markup)\n .replace(_MATCH_HTML, encode_char);\n};\n\nfunction escapeXMLToString() {\n return Function.prototype.toString.call(this) + ';\\n' + escapeFuncStr;\n}\n\ntry {\n if (typeof Object.defineProperty === 'function') {\n // If the Function prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n // cannot have the property changed using an assignment. If using strict mode, attempting that will cause an error. If not using strict\n // mode, attempting that will be silently ignored.\n // However, we can still explicitly shadow the prototype's \"toString\" property by defining a new \"toString\" property on this object.\n Object.defineProperty(exports.escapeXML, 'toString', { value: escapeXMLToString });\n } else {\n // If Object.defineProperty() doesn't exist, attempt to shadow this property using the assignment operator.\n exports.escapeXML.toString = escapeXMLToString;\n }\n} catch (err) {\n console.warn('Unable to set escapeXML.toString (is the Function prototype frozen?)');\n}\n\n/**\n * Naive copy of properties from one object to another.\n * Does not recurse into non-scalar properties\n * Does not check to see if the property has a value before copying\n *\n * @param {Object} to Destination object\n * @param {Object} from Source object\n * @return {Object} Destination object\n * @static\n * @private\n */\nexports.shallowCopy = function (to, from) {\n from = from || {};\n if ((to !== null) && (to !== undefined)) {\n for (var p in from) {\n if (!hasOwn(from, p)) {\n continue;\n }\n if (p === '__proto__' || p === 'constructor') {\n continue;\n }\n to[p] = from[p];\n }\n }\n return to;\n};\n\n/**\n * Naive copy of a list of key names, from one object to another.\n * Only copies property if it is actually defined\n * Does not recurse into non-scalar properties\n *\n * @param {Object} to Destination object\n * @param {Object} from Source object\n * @param {Array} list List of properties to copy\n * @return {Object} Destination object\n * @static\n * @private\n */\nexports.shallowCopyFromList = function (to, from, list) {\n list = list || [];\n from = from || {};\n if ((to !== null) && (to !== undefined)) {\n for (var i = 0; i < list.length; i++) {\n var p = list[i];\n if (typeof from[p] != 'undefined') {\n if (!hasOwn(from, p)) {\n continue;\n }\n if (p === '__proto__' || p === 'constructor') {\n continue;\n }\n to[p] = from[p];\n }\n }\n }\n return to;\n};\n\n/**\n * Simple in-process cache implementation. Does not implement limits of any\n * sort.\n *\n * @implements {Cache}\n * @static\n * @private\n */\nexports.cache = {\n _data: {},\n set: function (key, val) {\n this._data[key] = val;\n },\n get: function (key) {\n return this._data[key];\n },\n remove: function (key) {\n delete this._data[key];\n },\n reset: function () {\n this._data = {};\n }\n};\n\n/**\n * Transforms hyphen case variable into camel case.\n *\n * @param {String} string Hyphen case string\n * @return {String} Camel case string\n * @static\n * @private\n */\nexports.hyphenToCamel = function (str) {\n return str.replace(/-[a-z]/g, function (match) { return match[1].toUpperCase(); });\n};\n\n/**\n * Returns a null-prototype object in runtimes that support it\n *\n * @return {Object} Object, prototype will be set to null where possible\n * @static\n * @private\n */\nexports.createNullProtoObjWherePossible = (function () {\n if (typeof Object.create == 'function') {\n return function () {\n return Object.create(null);\n };\n }\n if (!({__proto__: null} instanceof Object)) {\n return function () {\n return {__proto__: null};\n };\n }\n // Not possible, just pass through\n return function () {\n return {};\n };\n})();\n\nexports.hasOwnOnlyObject = function (obj) {\n var o = exports.createNullProtoObjWherePossible();\n for (var p in obj) {\n if (hasOwn(obj, p)) {\n o[p] = obj[p];\n }\n }\n return o;\n};\n\n", "/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n'use strict';\n\n/**\n * @file Embedded JavaScript templating engine. {@link http://ejs.co}\n * @author Matthew Eernisse \n * @author Tiancheng \"Timothy\" Gu \n * @project EJS\n * @license {@link http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0}\n */\n\n/**\n * EJS internal functions.\n *\n * Technically this \"module\" lies in the same file as {@link module:ejs}, for\n * the sake of organization all the private functions re grouped into this\n * module.\n *\n * @module ejs-internal\n * @private\n */\n\n/**\n * Embedded JavaScript templating engine.\n *\n * @module ejs\n * @public\n */\n\n\nvar fs = require('fs');\nvar path = require('path');\nvar utils = require('./utils');\n\nvar scopeOptionWarned = false;\n/** @type {string} */\nvar _VERSION_STRING = require('../package.json').version;\nvar _DEFAULT_OPEN_DELIMITER = '<';\nvar _DEFAULT_CLOSE_DELIMITER = '>';\nvar _DEFAULT_DELIMITER = '%';\nvar _DEFAULT_LOCALS_NAME = 'locals';\nvar _NAME = 'ejs';\nvar _REGEX_STRING = '(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)';\nvar _OPTS_PASSABLE_WITH_DATA = ['delimiter', 'scope', 'context', 'debug', 'compileDebug',\n 'client', '_with', 'rmWhitespace', 'strict', 'filename', 'async'];\n// We don't allow 'cache' option to be passed in the data obj for\n// the normal `render` call, but this is where Express 2 & 3 put it\n// so we make an exception for `renderFile`\nvar _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat('cache');\nvar _BOM = /^\\uFEFF/;\nvar _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/;\n\n/**\n * EJS template function cache. This can be a LRU object from lru-cache NPM\n * module. By default, it is {@link module:utils.cache}, a simple in-process\n * cache that grows continuously.\n *\n * @type {Cache}\n */\n\nexports.cache = utils.cache;\n\n/**\n * Custom file loader. Useful for template preprocessing or restricting access\n * to a certain part of the filesystem.\n *\n * @type {fileLoader}\n */\n\nexports.fileLoader = fs.readFileSync;\n\n/**\n * Name of the object containing the locals.\n *\n * This variable is overridden by {@link Options}`.localsName` if it is not\n * `undefined`.\n *\n * @type {String}\n * @public\n */\n\nexports.localsName = _DEFAULT_LOCALS_NAME;\n\n/**\n * Promise implementation -- defaults to the native implementation if available\n * This is mostly just for testability\n *\n * @type {PromiseConstructorLike}\n * @public\n */\n\nexports.promiseImpl = (new Function('return this;'))().Promise;\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String} name specified path\n * @param {String} filename parent file path\n * @param {Boolean} [isDir=false] whether the parent file path is a directory\n * @return {String}\n */\nexports.resolveInclude = function(name, filename, isDir) {\n var dirname = path.dirname;\n var extname = path.extname;\n var resolve = path.resolve;\n var includePath = resolve(isDir ? filename : dirname(filename), name);\n var ext = extname(name);\n if (!ext) {\n includePath += '.ejs';\n }\n return includePath;\n};\n\n/**\n * Try to resolve file path on multiple directories\n *\n * @param {String} name specified path\n * @param {Array} paths list of possible parent directory paths\n * @return {String}\n */\nfunction resolvePaths(name, paths) {\n var filePath;\n if (paths.some(function (v) {\n filePath = exports.resolveInclude(name, v, true);\n return fs.existsSync(filePath);\n })) {\n return filePath;\n }\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param {String} path specified path\n * @param {Options} options compilation options\n * @return {String}\n */\nfunction getIncludePath(path, options) {\n var includePath;\n var filePath;\n var views = options.views;\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path);\n\n // Abs path\n if (match && match.length) {\n path = path.replace(/^\\/*/, '');\n if (Array.isArray(options.root)) {\n includePath = resolvePaths(path, options.root);\n } else {\n includePath = exports.resolveInclude(path, options.root || '/', true);\n }\n }\n // Relative paths\n else {\n // Look relative to a passed filename first\n if (options.filename) {\n filePath = exports.resolveInclude(path, options.filename);\n if (fs.existsSync(filePath)) {\n includePath = filePath;\n }\n }\n // Then look in any views directories\n if (!includePath && Array.isArray(views)) {\n includePath = resolvePaths(path, views);\n }\n if (!includePath && typeof options.includer !== 'function') {\n throw new Error('Could not find the include file \"' +\n options.escapeFunction(path) + '\"');\n }\n }\n return includePath;\n}\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `template` is not set, the file specified in `options.filename` will be\n * read.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @memberof module:ejs-internal\n * @param {Options} options compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache(options, template) {\n var func;\n var filename = options.filename;\n var hasTemplate = arguments.length > 1;\n\n if (options.cache) {\n if (!filename) {\n throw new Error('cache option requires a filename');\n }\n func = exports.cache.get(filename);\n if (func) {\n return func;\n }\n if (!hasTemplate) {\n template = fileLoader(filename).toString().replace(_BOM, '');\n }\n }\n else if (!hasTemplate) {\n // istanbul ignore if: should not happen at all\n if (!filename) {\n throw new Error('Internal EJS error: no file name or template '\n + 'provided');\n }\n template = fileLoader(filename).toString().replace(_BOM, '');\n }\n func = exports.compile(template, options);\n if (options.cache) {\n exports.cache.set(filename, func);\n }\n return func;\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @memberof module:ejs-internal\n * @param {Options} options compilation options\n * @param {Object} data template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache(options, data, cb) {\n var result;\n if (!cb) {\n if (typeof exports.promiseImpl == 'function') {\n return new exports.promiseImpl(function (resolve, reject) {\n try {\n result = handleCache(options)(data);\n resolve(result);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n else {\n throw new Error('Please provide a callback function');\n }\n }\n else {\n try {\n result = handleCache(options)(data);\n }\n catch (err) {\n return cb(err);\n }\n\n cb(null, result);\n }\n}\n\n/**\n * fileLoader is independent\n *\n * @param {String} filePath ejs file path.\n * @return {String} The contents of the specified file.\n * @static\n */\n\nfunction fileLoader(filePath){\n return exports.fileLoader(filePath);\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @memberof module:ejs-internal\n * @param {String} path path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile(path, options) {\n var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options);\n opts.filename = getIncludePath(path, opts);\n if (typeof options.includer === 'function') {\n var includerResult = options.includer(path, opts.filename);\n if (includerResult) {\n if (includerResult.filename) {\n opts.filename = includerResult.filename;\n }\n if (includerResult.template) {\n return handleCache(opts, includerResult.template);\n }\n }\n }\n return handleCache(opts);\n}\n\n/**\n * Re-throw the given `err` in context to the `str` of ejs, `filename`, and\n * `lineno`.\n *\n * @implements {RethrowCallback}\n * @memberof module:ejs-internal\n * @param {Error} err Error object\n * @param {String} str EJS source\n * @param {String} flnm file name of the EJS file\n * @param {Number} lineno line number of the error\n * @param {EscapeCallback} esc\n * @static\n */\n\nfunction rethrow(err, str, flnm, lineno, esc) {\n var lines = str.split('\\n');\n var start = Math.max(lineno - 3, 0);\n var end = Math.min(lines.length, lineno + 3);\n var filename = esc(flnm);\n // Error context\n var context = lines.slice(start, end).map(function (line, i){\n var curr = i + start + 1;\n return (curr == lineno ? ' >> ' : ' ')\n + curr\n + '| '\n + line;\n }).join('\\n');\n\n // Alter exception message\n err.path = filename;\n err.message = (filename || 'ejs') + ':'\n + lineno + '\\n'\n + context + '\\n\\n'\n + err.message;\n\n throw err;\n}\n\nfunction stripSemi(str){\n return str.replace(/;(\\s*$)/, '$1');\n}\n\n/**\n * Compile the given `str` of ejs into a template function.\n *\n * @param {String} template EJS template\n *\n * @param {Options} [opts] compilation options\n *\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `opts.client`, either type might be returned.\n * Note that the return type of the function also depends on the value of `opts.async`.\n * @public\n */\n\nexports.compile = function compile(template, opts) {\n var templ;\n\n // v1 compat\n // 'scope' is 'context'\n // FIXME: Remove this in a future version\n if (opts && opts.scope) {\n if (!scopeOptionWarned){\n console.warn('`scope` option is deprecated and will be removed in EJS 3');\n scopeOptionWarned = true;\n }\n if (!opts.context) {\n opts.context = opts.scope;\n }\n delete opts.scope;\n }\n templ = new Template(template, opts);\n return templ.compile();\n};\n\n/**\n * Render the given `template` of ejs.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String} template EJS template\n * @param {Object} [data={}] template data\n * @param {Options} [opts={}] compilation and rendering options\n * @return {(String|Promise)}\n * Return value type depends on `opts.async`.\n * @public\n */\n\nexports.render = function (template, d, o) {\n var data = d || utils.createNullProtoObjWherePossible();\n var opts = o || utils.createNullProtoObjWherePossible();\n\n // No options object -- if there are optiony names\n // in the data, copy them to options\n if (arguments.length == 2) {\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA);\n }\n\n return handleCache(opts, template)(data);\n};\n\n/**\n * Render an EJS file at the given `path` and callback `cb(err, str)`.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String} path path to the EJS file\n * @param {Object} [data={}] template data\n * @param {Options} [opts={}] compilation and rendering options\n * @param {RenderFileCallback} cb callback\n * @public\n */\n\nexports.renderFile = function () {\n var args = Array.prototype.slice.call(arguments);\n var filename = args.shift();\n var cb;\n var opts = {filename: filename};\n var data;\n var viewOpts;\n\n // Do we have a callback?\n if (typeof arguments[arguments.length - 1] == 'function') {\n cb = args.pop();\n }\n // Do we have data/opts?\n if (args.length) {\n // Should always have data obj\n data = args.shift();\n // Normal passed opts (data obj + opts obj)\n if (args.length) {\n // Use shallowCopy so we don't pollute passed in opts obj with new vals\n utils.shallowCopy(opts, args.pop());\n }\n // Special casing for Express (settings + opts-in-data)\n else {\n // Express 3 and 4\n if (data.settings) {\n // Pull a few things from known locations\n if (data.settings.views) {\n opts.views = data.settings.views;\n }\n if (data.settings['view cache']) {\n opts.cache = true;\n }\n // Undocumented after Express 2, but still usable, esp. for\n // items that are unsafe to be passed along with data, like `root`\n viewOpts = data.settings['view options'];\n if (viewOpts) {\n utils.shallowCopy(opts, viewOpts);\n }\n }\n // Express 2 and lower, values set in app.locals, or people who just\n // want to pass options in their data. NOTE: These values will override\n // anything previously set in settings or settings['view options']\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);\n }\n opts.filename = filename;\n }\n else {\n data = utils.createNullProtoObjWherePossible();\n }\n\n return tryHandleCache(opts, data, cb);\n};\n\n/**\n * Clear intermediate JavaScript cache. Calls {@link Cache#reset}.\n * @public\n */\n\n/**\n * EJS template class\n * @public\n */\nexports.Template = Template;\n\nexports.clearCache = function () {\n exports.cache.reset();\n};\n\nfunction Template(text, optsParam) {\n var opts = utils.hasOwnOnlyObject(optsParam);\n var options = utils.createNullProtoObjWherePossible();\n this.templateText = text;\n /** @type {string | null} */\n this.mode = null;\n this.truncate = false;\n this.currentLine = 1;\n this.source = '';\n options.client = opts.client || false;\n options.escapeFunction = opts.escape || opts.escapeFunction || utils.escapeXML;\n options.compileDebug = opts.compileDebug !== false;\n options.debug = !!opts.debug;\n options.filename = opts.filename;\n options.openDelimiter = opts.openDelimiter || exports.openDelimiter || _DEFAULT_OPEN_DELIMITER;\n options.closeDelimiter = opts.closeDelimiter || exports.closeDelimiter || _DEFAULT_CLOSE_DELIMITER;\n options.delimiter = opts.delimiter || exports.delimiter || _DEFAULT_DELIMITER;\n options.strict = opts.strict || false;\n options.context = opts.context;\n options.cache = opts.cache || false;\n options.rmWhitespace = opts.rmWhitespace;\n options.root = opts.root;\n options.includer = opts.includer;\n options.outputFunctionName = opts.outputFunctionName;\n options.localsName = opts.localsName || exports.localsName || _DEFAULT_LOCALS_NAME;\n options.views = opts.views;\n options.async = opts.async;\n options.destructuredLocals = opts.destructuredLocals;\n options.legacyInclude = typeof opts.legacyInclude != 'undefined' ? !!opts.legacyInclude : true;\n\n if (options.strict) {\n options._with = false;\n }\n else {\n options._with = typeof opts._with != 'undefined' ? opts._with : true;\n }\n\n this.opts = options;\n\n this.regex = this.createRegex();\n}\n\nTemplate.modes = {\n EVAL: 'eval',\n ESCAPED: 'escaped',\n RAW: 'raw',\n COMMENT: 'comment',\n LITERAL: 'literal'\n};\n\nTemplate.prototype = {\n createRegex: function () {\n var str = _REGEX_STRING;\n var delim = utils.escapeRegExpChars(this.opts.delimiter);\n var open = utils.escapeRegExpChars(this.opts.openDelimiter);\n var close = utils.escapeRegExpChars(this.opts.closeDelimiter);\n str = str.replace(/%/g, delim)\n .replace(//g, close);\n return new RegExp(str);\n },\n\n compile: function () {\n /** @type {string} */\n var src;\n /** @type {ClientFunction} */\n var fn;\n var opts = this.opts;\n var prepended = '';\n var appended = '';\n /** @type {EscapeCallback} */\n var escapeFn = opts.escapeFunction;\n /** @type {FunctionConstructor} */\n var ctor;\n /** @type {string} */\n var sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : 'undefined';\n\n if (!this.source) {\n this.generateSource();\n prepended +=\n ' var __output = \"\";\\n' +\n ' function __append(s) { if (s !== undefined && s !== null) __output += s }\\n';\n if (opts.outputFunctionName) {\n if (!_JS_IDENTIFIER.test(opts.outputFunctionName)) {\n throw new Error('outputFunctionName is not a valid JS identifier.');\n }\n prepended += ' var ' + opts.outputFunctionName + ' = __append;' + '\\n';\n }\n if (opts.localsName && !_JS_IDENTIFIER.test(opts.localsName)) {\n throw new Error('localsName is not a valid JS identifier.');\n }\n if (opts.destructuredLocals && opts.destructuredLocals.length) {\n var destructuring = ' var __locals = (' + opts.localsName + ' || {}),\\n';\n for (var i = 0; i < opts.destructuredLocals.length; i++) {\n var name = opts.destructuredLocals[i];\n if (!_JS_IDENTIFIER.test(name)) {\n throw new Error('destructuredLocals[' + i + '] is not a valid JS identifier.');\n }\n if (i > 0) {\n destructuring += ',\\n ';\n }\n destructuring += name + ' = __locals.' + name;\n }\n prepended += destructuring + ';\\n';\n }\n if (opts._with !== false) {\n prepended += ' with (' + opts.localsName + ' || {}) {' + '\\n';\n appended += ' }' + '\\n';\n }\n appended += ' return __output;' + '\\n';\n this.source = prepended + this.source + appended;\n }\n\n if (opts.compileDebug) {\n src = 'var __line = 1' + '\\n'\n + ' , __lines = ' + JSON.stringify(this.templateText) + '\\n'\n + ' , __filename = ' + sanitizedFilename + ';' + '\\n'\n + 'try {' + '\\n'\n + this.source\n + '} catch (e) {' + '\\n'\n + ' rethrow(e, __lines, __filename, __line, escapeFn);' + '\\n'\n + '}' + '\\n';\n }\n else {\n src = this.source;\n }\n\n if (opts.client) {\n src = 'escapeFn = escapeFn || ' + escapeFn.toString() + ';' + '\\n' + src;\n if (opts.compileDebug) {\n src = 'rethrow = rethrow || ' + rethrow.toString() + ';' + '\\n' + src;\n }\n }\n\n if (opts.strict) {\n src = '\"use strict\";\\n' + src;\n }\n if (opts.debug) {\n console.log(src);\n }\n if (opts.compileDebug && opts.filename) {\n src = src + '\\n'\n + '//# sourceURL=' + sanitizedFilename + '\\n';\n }\n\n try {\n if (opts.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = (new Function('return (async function(){}).constructor;'))();\n }\n catch(e) {\n if (e instanceof SyntaxError) {\n throw new Error('This environment does not support async/await');\n }\n else {\n throw e;\n }\n }\n }\n else {\n ctor = Function;\n }\n fn = new ctor(opts.localsName + ', escapeFn, include, rethrow', src);\n }\n catch(e) {\n // istanbul ignore else\n if (e instanceof SyntaxError) {\n if (opts.filename) {\n e.message += ' in ' + opts.filename;\n }\n e.message += ' while compiling ejs\\n\\n';\n e.message += 'If the above error is not helpful, you may want to try EJS-Lint:\\n';\n e.message += 'https://github.com/RyanZim/EJS-Lint';\n if (!opts.async) {\n e.message += '\\n';\n e.message += 'Or, if you meant to create an async function, pass `async: true` as an option.';\n }\n }\n throw e;\n }\n\n // Return a callable function which will execute the function\n // created by the source-code, with the passed data as locals\n // Adds a local `include` function which allows full recursive include\n var returnedFn = opts.client ? fn : function anonymous(data) {\n var include = function (path, includeData) {\n var d = utils.shallowCopy(utils.createNullProtoObjWherePossible(), data);\n if (includeData) {\n d = utils.shallowCopy(d, includeData);\n }\n return includeFile(path, opts)(d);\n };\n return fn.apply(opts.context,\n [data || utils.createNullProtoObjWherePossible(), escapeFn, include, rethrow]);\n };\n if (opts.filename && typeof Object.defineProperty === 'function') {\n var filename = opts.filename;\n var basename = path.basename(filename, path.extname(filename));\n try {\n Object.defineProperty(returnedFn, 'name', {\n value: basename,\n writable: false,\n enumerable: false,\n configurable: true\n });\n } catch (e) {/* ignore */}\n }\n return returnedFn;\n },\n\n generateSource: function () {\n var opts = this.opts;\n\n if (opts.rmWhitespace) {\n // Have to use two separate replace here as `^` and `$` operators don't\n // work well with `\\r` and empty lines don't work well with the `m` flag.\n this.templateText =\n this.templateText.replace(/[\\r\\n]+/g, '\\n').replace(/^\\s+|\\s+$/gm, '');\n }\n\n // Slurp spaces and tabs before <%_ and after _%>\n this.templateText =\n this.templateText.replace(/[ \\t]*<%_/gm, '<%_').replace(/_%>[ \\t]*/gm, '_%>');\n\n var self = this;\n var matches = this.parseTemplateText();\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n\n if (matches && matches.length) {\n matches.forEach(function (line, index) {\n var closing;\n // If this is an opening tag, check for closing tags\n // FIXME: May end up with some false positives here\n // Better to store modes as k/v with openDelimiter + delimiter as key\n // Then this can simply check against the map\n if ( line.indexOf(o + d) === 0 // If it is a tag\n && line.indexOf(o + d + d) !== 0) { // and is not escaped\n closing = matches[index + 2];\n if (!(closing == d + c || closing == '-' + d + c || closing == '_' + d + c)) {\n throw new Error('Could not find matching close tag for \"' + line + '\".');\n }\n }\n self.scanLine(line);\n });\n }\n\n },\n\n parseTemplateText: function () {\n var str = this.templateText;\n var pat = this.regex;\n var result = pat.exec(str);\n var arr = [];\n var firstPos;\n\n while (result) {\n firstPos = result.index;\n\n if (firstPos !== 0) {\n arr.push(str.substring(0, firstPos));\n str = str.slice(firstPos);\n }\n\n arr.push(result[0]);\n str = str.slice(result[0].length);\n result = pat.exec(str);\n }\n\n if (str) {\n arr.push(str);\n }\n\n return arr;\n },\n\n _addOutput: function (line) {\n if (this.truncate) {\n // Only replace single leading linebreak in the line after\n // -%> tag -- this is the single, trailing linebreak\n // after the tag that the truncation mode replaces\n // Handle Win / Unix / old Mac linebreaks -- do the \\r\\n\n // combo first in the regex-or\n line = line.replace(/^(?:\\r\\n|\\r|\\n)/, '');\n this.truncate = false;\n }\n if (!line) {\n return line;\n }\n\n // Preserve literal slashes\n line = line.replace(/\\\\/g, '\\\\\\\\');\n\n // Convert linebreaks\n line = line.replace(/\\n/g, '\\\\n');\n line = line.replace(/\\r/g, '\\\\r');\n\n // Escape double-quotes\n // - this will be the delimiter during execution\n line = line.replace(/\"/g, '\\\\\"');\n this.source += ' ; __append(\"' + line + '\")' + '\\n';\n },\n\n scanLine: function (line) {\n var self = this;\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n var newLineCount = 0;\n\n newLineCount = (line.split('\\n').length - 1);\n\n switch (line) {\n case o + d:\n case o + d + '_':\n this.mode = Template.modes.EVAL;\n break;\n case o + d + '=':\n this.mode = Template.modes.ESCAPED;\n break;\n case o + d + '-':\n this.mode = Template.modes.RAW;\n break;\n case o + d + '#':\n this.mode = Template.modes.COMMENT;\n break;\n case o + d + d:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(o + d + d, o + d) + '\")' + '\\n';\n break;\n case d + d + c:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(d + d + c, d + c) + '\")' + '\\n';\n break;\n case d + c:\n case '-' + d + c:\n case '_' + d + c:\n if (this.mode == Template.modes.LITERAL) {\n this._addOutput(line);\n }\n\n this.mode = null;\n this.truncate = line.indexOf('-') === 0 || line.indexOf('_') === 0;\n break;\n default:\n // In script mode, depends on type of tag\n if (this.mode) {\n // If '//' is found without a line break, add a line break.\n switch (this.mode) {\n case Template.modes.EVAL:\n case Template.modes.ESCAPED:\n case Template.modes.RAW:\n if (line.lastIndexOf('//') > line.lastIndexOf('\\n')) {\n line += '\\n';\n }\n }\n switch (this.mode) {\n // Just executing code\n case Template.modes.EVAL:\n this.source += ' ; ' + line + '\\n';\n break;\n // Exec, esc, and output\n case Template.modes.ESCAPED:\n this.source += ' ; __append(escapeFn(' + stripSemi(line) + '))' + '\\n';\n break;\n // Exec and output\n case Template.modes.RAW:\n this.source += ' ; __append(' + stripSemi(line) + ')' + '\\n';\n break;\n case Template.modes.COMMENT:\n // Do nothing\n break;\n // Literal <%% mode, append as raw output\n case Template.modes.LITERAL:\n this._addOutput(line);\n break;\n }\n }\n // In string mode, just add the output\n else {\n this._addOutput(line);\n }\n }\n\n if (self.opts.compileDebug && newLineCount) {\n this.currentLine += newLineCount;\n this.source += ' ; __line = ' + this.currentLine + '\\n';\n }\n }\n};\n\n/**\n * Escape characters reserved in XML.\n *\n * This is simply an export of {@link module:utils.escapeXML}.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @public\n * @func\n * */\nexports.escapeXML = utils.escapeXML;\n\n/**\n * Express.js support.\n *\n * This is an alias for {@link module:ejs.renderFile}, in order to support\n * Express.js out-of-the-box.\n *\n * @func\n */\n\nexports.__express = exports.renderFile;\n\n/**\n * Version of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.VERSION = _VERSION_STRING;\n\n/**\n * Name for detection of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.name = _NAME;\n\n/* istanbul ignore if */\nif (typeof window != 'undefined') {\n window.ejs = exports;\n}\n\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(' ', ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n src: string,\n uFlag: boolean,\n consumed: number,\n hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n glob: string,\n position: number\n): ParseClassResult => {\n const pos = position\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression')\n }\n /* c8 ignore stop */\n const ranges: string[] = []\n const negs: string[] = []\n\n let i = pos + 1\n let sawStart = false\n let uflag = false\n let escaping = false\n let negate = false\n let endPos = pos\n let rangeStart = ''\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i)\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true\n i++\n continue\n }\n\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1\n break\n }\n\n sawStart = true\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true\n i++\n continue\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true]\n }\n i += cls.length\n if (neg) negs.push(unip)\n else ranges.push(unip)\n uflag = uflag || u\n continue WHILE\n }\n }\n }\n\n // now it's just a normal character, effectively\n escaping = false\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n } else if (c === rangeStart) {\n ranges.push(braceEscape(c))\n }\n rangeStart = ''\n i++\n continue\n }\n\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'))\n i += 2\n continue\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c\n i += 2\n continue\n }\n\n // not the start of a range, just a single character\n ranges.push(braceEscape(c))\n i++\n }\n\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false]\n }\n\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true]\n }\n\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (\n negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate\n ) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n return [regexpEscape(r), false, endPos - pos, false]\n }\n\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n const comb =\n ranges.length && negs.length\n ? '(' + sranges + '|' + snegs + ')'\n : ranges.length\n ? sranges\n : snegs\n\n return [comb, uflag, endPos - pos, true]\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n }: Pick = {}\n) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n return windowsPathsNoEscape\n ? s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes. For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n }: Pick = {}\n) => {\n return windowsPathsNoEscape\n ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n", "import expand from 'brace-expansion'\nimport { parseClass } from './brace-expressions.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n | 'aix'\n | 'android'\n | 'darwin'\n | 'freebsd'\n | 'haiku'\n | 'linux'\n | 'openbsd'\n | 'sunos'\n | 'win32'\n | 'cygwin'\n | 'netbsd'\n\nexport interface MinimatchOptions {\n nobrace?: boolean\n nocomment?: boolean\n nonegate?: boolean\n debug?: boolean\n noglobstar?: boolean\n noext?: boolean\n nonull?: boolean\n windowsPathsNoEscape?: boolean\n allowWindowsEscape?: boolean\n partial?: boolean\n dot?: boolean\n nocase?: boolean\n nocaseMagicOnly?: boolean\n magicalBraces?: boolean\n matchBase?: boolean\n flipNegate?: boolean\n preserveMultipleSlashes?: boolean\n optimizationLevel?: number\n platform?: Platform\n windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n p: string,\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\nexport default minimatch\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n typeof process === 'object' && process\n ? (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\nconst plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)' },\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' },\n}\ntype StateChar = '!' | '?' | '+' | '*' | '@'\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\n// \"abc\" -> { a:true, b:true, c:true }\nconst charSet = (s: string) =>\n s.split('').reduce((set: { [k: string]: boolean }, c) => {\n set[c] = true\n return set\n }, {})\n\n// characters that need to be escaped in RegExp.\nconst reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// characters that indicate we have to add the pattern start\nconst addPatternStartSet = charSet('[.(')\n\nexport const filter =\n (pattern: string, options: MinimatchOptions = {}) =>\n (p: string) =>\n minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n orig(p, pattern, ext(def, options))\n\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern: string, options: MinimatchOptions = {}) {\n super(pattern, ext(def, options))\n }\n static defaults(options: MinimatchOptions) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n },\n\n unescape: (\n s: string,\n options: Pick = {}\n ) => orig.unescape(s, ext(def, options)),\n\n escape: (\n s: string,\n options: Pick = {}\n ) => orig.escape(s, ext(def, options)),\n\n filter: (pattern: string, options: MinimatchOptions = {}) =>\n orig.filter(pattern, ext(def, options)),\n\n defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n orig.makeRe(pattern, ext(def, options)),\n\n braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n orig.braceExpand(pattern, ext(def, options)),\n\n match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n orig.match(list, pattern, ext(def, options)),\n\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\nconst MAX_PATTERN_LENGTH = 1024 * 64\nconst assertValidPattern: (pattern: any) => void = (\n pattern: any\n): asserts pattern is string => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globUnescape = (s: string) => s.replace(/\\\\(.)/g, '$1')\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\ninterface PatternListEntry {\n type: string\n start: number\n reStart: number\n open: string\n close: string\n}\ninterface NegativePatternListEntry extends PatternListEntry {\n reEnd: number\n}\n\nexport type MMRegExp = RegExp & {\n _src?: string\n _glob?: string\n}\n\ntype SubparseReturn = [string, boolean]\ntype ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\ntype ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n options: MinimatchOptions\n set: ParseReturnFiltered[][]\n pattern: string\n\n windowsPathsNoEscape: boolean\n nonegate: boolean\n negate: boolean\n comment: boolean\n empty: boolean\n preserveMultipleSlashes: boolean\n partial: boolean\n globSet: string[]\n globParts: string[][]\n nocase: boolean\n\n isWindows: boolean\n platform: Platform\n windowsNoMagicRoot: boolean\n\n regexp: false | null | MMRegExp\n constructor(pattern: string, options: MinimatchOptions = {}) {\n assertValidPattern(pattern)\n\n options = options || {}\n this.options = options\n this.pattern = pattern\n this.platform = options.platform || defaultPlatform\n this.isWindows = this.platform === 'win32'\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n this.regexp = null\n this.negate = false\n this.nonegate = !!options.nonegate\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n this.nocase = !!this.options.nocase\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined\n ? options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase)\n\n this.globSet = []\n this.globParts = []\n this.set = []\n\n // make the set of regexps etc.\n this.make()\n }\n\n hasMagic(): boolean {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string') return true\n }\n }\n return false\n }\n\n debug(..._: any[]) {}\n\n make() {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())]\n\n if (options.debug) {\n this.debug = (...args: any[]) => console.error(...args)\n }\n\n this.debug(this.pattern, this.globSet)\n\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n this.globParts = this.preprocess(rawGlobParts)\n this.debug(this.pattern, this.globParts)\n\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3])\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n } else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1\n ) as ParseReturnFiltered[][]\n\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i]\n if (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])\n ) {\n p[2] = '?'\n }\n }\n }\n\n this.debug(this.pattern, this.set)\n }\n\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts: string[][]) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs\n while (parts[i + 1] === '**') {\n i++\n }\n if (i !== gs) {\n parts.splice(gs, i - gs)\n }\n }\n return parts\n })\n }\n\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop()\n return set\n }\n }\n set.push(part)\n return set\n }, [])\n return parts.length === 0 ? [''] : parts\n })\n }\n\n levelTwoFileOptimize(parts: string | string[]) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts)\n }\n let didSomething: boolean = false\n do {\n didSomething = false\n //
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes\n        )\n        if (!matched) continue\n        globParts[i] = matched\n        globParts[j] = []\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // a UNC pattern like //?/c:/* can match a path like c:/x\n    // and vice versa\n    if (this.isWindows) {\n      const fileUNC =\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        typeof file[3] === 'string' &&\n        /^[a-z]:$/i.test(file[3])\n      const patternUNC =\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      if (fileUNC && patternUNC) {\n        const fd = file[3] as string\n        const pd = pattern[3] as string\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          file[3] = pd\n        }\n      } else if (patternUNC && typeof file[0] === 'string') {\n        const pd = pattern[3] as string\n        const fd = file[0]\n        if (pd.toLowerCase() === fd.toLowerCase()) {\n          pattern[3] = fd\n          pattern = pattern.slice(3)\n        }\n      } else if (fileUNC && typeof pattern[0] === 'string') {\n        const fd = file[3]\n        if (fd.toLowerCase() === pattern[0].toLowerCase()) {\n          pattern[0] = fd\n          file = file.slice(3)\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // dont' need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn | SubparseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n          ? starDotExtTestDot\n          : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n          ? qmarksTestDot\n          : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    let re = ''\n    let hasMagic = false\n    let escaping = false\n    // ? => one single character\n    const patternListStack: PatternListEntry[] = []\n    const negativeLists: NegativePatternListEntry[] = []\n    let stateChar: StateChar | false = false\n    let uflag = false\n    let pl: PatternListEntry | undefined\n    // . and .. never match anything that doesn't start with .,\n    // even when options.dot is set.  However, if the pattern\n    // starts with ., then traversal patterns can match.\n    let dotTravAllowed = pattern.charAt(0) === '.'\n    let dotFileAllowed = options.dot || dotTravAllowed\n    const patternStart = () =>\n      dotTravAllowed\n        ? ''\n        : dotFileAllowed\n        ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n        : '(?!\\\\.)'\n    const subPatternStart = (p: string) =>\n      p.charAt(0) === '.'\n        ? ''\n        : options.dot\n        ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n        : '(?!\\\\.)'\n\n    const clearStateChar = () => {\n      if (stateChar) {\n        // we had some state-tracking character\n        // that wasn't consumed by this pass.\n        switch (stateChar) {\n          case '*':\n            re += star\n            hasMagic = true\n            break\n          case '?':\n            re += qmark\n            hasMagic = true\n            break\n          default:\n            re += '\\\\' + stateChar\n            break\n        }\n        this.debug('clearStateChar %j %j', stateChar, re)\n        stateChar = false\n      }\n    }\n\n    for (\n      let i = 0, c: string;\n      i < pattern.length && (c = pattern.charAt(i));\n      i++\n    ) {\n      this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n      // skip over any that are escaped.\n      if (escaping) {\n        // completely not allowed, even escaped.\n        // should be impossible.\n        /* c8 ignore start */\n        if (c === '/') {\n          return false\n        }\n        /* c8 ignore stop */\n\n        if (reSpecials[c]) {\n          re += '\\\\'\n        }\n        re += c\n        escaping = false\n        continue\n      }\n\n      switch (c) {\n        // Should already be path-split by now.\n        /* c8 ignore start */\n        case '/': {\n          return false\n        }\n        /* c8 ignore stop */\n\n        case '\\\\':\n          clearStateChar()\n          escaping = true\n          continue\n\n        // the various stateChar values\n        // for the \"extglob\" stuff.\n        case '?':\n        case '*':\n        case '+':\n        case '@':\n        case '!':\n          this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n          // if we already have a stateChar, then it means\n          // that there was something like ** or +? in there.\n          // Handle the stateChar, then proceed with this one.\n          this.debug('call clearStateChar %j', stateChar)\n          clearStateChar()\n          stateChar = c\n          // if extglob is disabled, then +(asdf|foo) isn't a thing.\n          // just clear the statechar *now*, rather than even diving into\n          // the patternList stuff.\n          if (options.noext) clearStateChar()\n          continue\n\n        case '(': {\n          if (!stateChar) {\n            re += '\\\\('\n            continue\n          }\n\n          const plEntry: PatternListEntry = {\n            type: stateChar,\n            start: i - 1,\n            reStart: re.length,\n            open: plTypes[stateChar].open,\n            close: plTypes[stateChar].close,\n          }\n          this.debug(this.pattern, '\\t', plEntry)\n          patternListStack.push(plEntry)\n          // negation is (?:(?!(?:js)(?:))[^/]*)\n          re += plEntry.open\n          // next entry starts with a dot maybe?\n          if (plEntry.start === 0 && plEntry.type !== '!') {\n            dotTravAllowed = true\n            re += subPatternStart(pattern.slice(i + 1))\n          }\n          this.debug('plType %j %j', stateChar, re)\n          stateChar = false\n          continue\n        }\n\n        case ')': {\n          const plEntry = patternListStack[patternListStack.length - 1]\n          if (!plEntry) {\n            re += '\\\\)'\n            continue\n          }\n          patternListStack.pop()\n\n          // closing an extglob\n          clearStateChar()\n          hasMagic = true\n          pl = plEntry\n          // negation is (?:(?!js)[^/]*)\n          // The others are (?:)\n          re += pl.close\n          if (pl.type === '!') {\n            negativeLists.push(Object.assign(pl, { reEnd: re.length }))\n          }\n          continue\n        }\n\n        case '|': {\n          const plEntry = patternListStack[patternListStack.length - 1]\n          if (!plEntry) {\n            re += '\\\\|'\n            continue\n          }\n\n          clearStateChar()\n          re += '|'\n          // next subpattern can start with a dot?\n          if (plEntry.start === 0 && plEntry.type !== '!') {\n            dotTravAllowed = true\n            re += subPatternStart(pattern.slice(i + 1))\n          }\n          continue\n        }\n\n        // these are mostly the same in regexp and glob\n        case '[':\n          // swallow any state-tracking char before the [\n          clearStateChar()\n          const [src, needUflag, consumed, magic] = parseClass(pattern, i)\n          if (consumed) {\n            re += src\n            uflag = uflag || needUflag\n            i += consumed - 1\n            hasMagic = hasMagic || magic\n          } else {\n            re += '\\\\['\n          }\n          continue\n\n        case ']':\n          re += '\\\\' + c\n          continue\n\n        default:\n          // swallow any state char that wasn't consumed\n          clearStateChar()\n\n          re += regExpEscape(c)\n          break\n      } // switch\n    } // for\n\n    // handle the case where we had a +( thing at the *end*\n    // of the pattern.\n    // each pattern list stack adds 3 chars, and we need to go through\n    // and escape any | chars that were passed through as-is for the regexp.\n    // Go through and escape them, taking care not to double-escape any\n    // | chars that were already escaped.\n    for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n      let tail: string\n      tail = re.slice(pl.reStart + pl.open.length)\n      this.debug(this.pattern, 'setting tail', re, pl)\n      // maybe some even number of \\, then maybe 1 \\, followed by a |\n      tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, (_, $1, $2) => {\n        if (!$2) {\n          // the | isn't already escaped, so escape it.\n          $2 = '\\\\'\n          // should already be done\n          /* c8 ignore start */\n        }\n        /* c8 ignore stop */\n\n        // need to escape all those slashes *again*, without escaping the\n        // one that we need for escaping the | character.  As it works out,\n        // escaping an even number of slashes can be done by simply repeating\n        // it exactly after itself.  That's why this trick works.\n        //\n        // I am sorry that you have to see this.\n        return $1 + $1 + $2 + '|'\n      })\n\n      this.debug('tail=%j\\n   %s', tail, tail, pl, re)\n      const t =\n        pl.type === '*' ? star : pl.type === '?' ? qmark : '\\\\' + pl.type\n\n      hasMagic = true\n      re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n    }\n\n    // handle trailing things that only matter at the very end.\n    clearStateChar()\n    if (escaping) {\n      // trailing \\\\\n      re += '\\\\\\\\'\n    }\n\n    // only need to apply the nodot start if the re starts with\n    // something that could conceivably capture a dot\n    const addPatternStart = addPatternStartSet[re.charAt(0)]\n\n    // Hack to work around lack of negative lookbehind in JS\n    // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n    // like 'a.xyz.yz' doesn't match.  So, the first negative\n    // lookahead, has to look ALL the way ahead, to the end of\n    // the pattern.\n    for (let n = negativeLists.length - 1; n > -1; n--) {\n      const nl = negativeLists[n]\n\n      const nlBefore = re.slice(0, nl.reStart)\n      const nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n      let nlAfter = re.slice(nl.reEnd)\n      const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter\n\n      // Handle nested stuff like *(*.js|!(*.json)), where open parens\n      // mean that we should *not* include the ) in the bit that is considered\n      // \"after\" the negated section.\n      const closeParensBefore = nlBefore.split(')').length\n      const openParensBefore = nlBefore.split('(').length - closeParensBefore\n      let cleanAfter = nlAfter\n      for (let i = 0; i < openParensBefore; i++) {\n        cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n      }\n      nlAfter = cleanAfter\n\n      const dollar = nlAfter === '' ? '(?:$|\\\\/)' : ''\n\n      re = nlBefore + nlFirst + nlAfter + dollar + nlLast\n    }\n\n    // if the re is not \"\" at this point, then we need to make sure\n    // it doesn't match against an empty path part.\n    // Otherwise a/* will match a/, which it should not.\n    if (re !== '' && hasMagic) {\n      re = '(?=.)' + re\n    }\n\n    if (addPatternStart) {\n      re = patternStart() + re\n    }\n\n    // if it's nocase, and the lcase/uppercase don't match, it's magic\n    if (options.nocase && !hasMagic && !options.nocaseMagicOnly) {\n      hasMagic = pattern.toUpperCase() !== pattern.toLowerCase()\n    }\n\n    // skip the regexp for non-magical patterns\n    // unescape anything in it, though, so that it'll be\n    // an exact match against a file etc.\n    if (!hasMagic) {\n      return globUnescape(re)\n    }\n\n    const flags = (options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    try {\n      const ext = fastTest\n        ? {\n            _glob: pattern,\n            _src: re,\n            test: fastTest,\n          }\n        : {\n            _glob: pattern,\n            _src: re,\n          }\n      return Object.assign(new RegExp('^' + re + '$', flags), ext)\n      /* c8 ignore start */\n    } catch (er) {\n      // should be impossible\n      // If it was an invalid regular expression, then it can't match\n      // anything.  This trick looks for a character after the end of\n      // the string, which is of course impossible, except in multi-line\n      // mode, but it's not a /m regex.\n      this.debug('invalid regexp', er)\n      return new RegExp('$.')\n    }\n    /* c8 ignore stop */\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n      ? twoStarDot\n      : twoStarNoDot\n    const flags = options.nocase ? 'i' : ''\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p =>\n          typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n            ? GLOBSTAR\n            : p._src\n        ) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        return pp.filter(p => p !== GLOBSTAR).join('/')\n      })\n      .join('|')\n\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^(?:' + re + ')$'\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').*$'\n\n    try {\n      this.regexp = new RegExp(re, flags)\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "import minimatch from './index.js'\n\nexport = Object.assign(minimatch, { default: minimatch, minimatch })\n", "\uFEFFconst crypto = require('crypto'),\n  debug = require('debug'),\n  minimatch = require('minimatch'),\n  path = require('path');\n\nconst defaultOptions = {\n  algo: 'sha1', // see crypto.getHashes() for options\n  algoOptions: {},\n  encoding: 'base64', // 'base64', 'base64url', 'hex' or 'binary'\n  files: {\n    exclude: [],\n    include: [],\n    matchBasename: true,\n    matchPath: false,\n    ignoreBasename: false,\n    ignoreRootName: false,\n  },\n  folders: {\n    exclude: [],\n    include: [],\n    matchBasename: true,\n    matchPath: false,\n    ignoreBasename: false,\n    ignoreRootName: false,\n  },\n  symbolicLinks: {\n    include: true,\n    ignoreBasename: false,\n    ignoreTargetPath: true,\n    ignoreTargetContent: false,\n    ignoreTargetContentAfterError: false,\n  },\n};\n\n// Use the environment variable DEBUG to log output, e.g. `set DEBUG=fhash:*`\nconst log = {\n  match: debug('fhash:match'),\n  params: params => {\n    debug('fhash:parameters')(params);\n    return params;\n  },\n  err: debug('fhash:err'),\n  symlink: debug('fhash:symlink'),\n  queue: debug('fhash:queue'),\n  glob: debug('fhash:glob'),\n};\n\nfunction prep(fs) {\n  let queue = [];\n  let queueTimer = undefined;\n\n  function hashElement(name, dir, options, callback) {\n    callback = arguments[arguments.length - 1];\n\n    return parseParameters(arguments)\n      .then(({ basename, dir, options }) => {\n        // this is only used for the root level\n        options.skipMatching = true;\n        return fs.promises\n          .lstat(path.join(dir, basename))\n          .then(stats => {\n            stats.name = basename;\n            return stats;\n          })\n          .then(stats => hashElementPromise(stats, dir, options, true));\n      })\n      .then(result => {\n        if (isFunction(callback)) {\n          return callback(undefined, result);\n        } else {\n          return result;\n        }\n      })\n      .catch(reason => {\n        log.err('Fatal error:', reason);\n        if (isFunction(callback)) {\n          return callback(reason);\n        } else {\n          throw reason;\n        }\n      });\n  }\n\n  /**\n   * @param {fs.Stats} stats folder element, can also be of type fs.Dirent\n   * @param {string} dirname\n   * @param {Options} options\n   * @param {boolean} isRootElement\n   */\n  function hashElementPromise(stats, dirname, options, isRootElement = false) {\n    const name = stats.name;\n    let promise = undefined;\n    if (stats.isDirectory()) {\n      promise = hashFolderPromise(name, dirname, options, isRootElement);\n    } else if (stats.isFile()) {\n      promise = hashFilePromise(name, dirname, options, isRootElement);\n    } else if (stats.isSymbolicLink()) {\n      promise = hashSymLinkPromise(name, dirname, options, isRootElement);\n    } else {\n      log.err('hashElementPromise cannot handle ', stats);\n      return Promise.resolve({ name, hash: 'Error: unknown element type' });\n    }\n\n    return promise.catch(err => {\n      if (err.code && (err.code === 'EMFILE' || err.code === 'ENFILE')) {\n        log.queue(`queued ${dirname}/${name} because of ${err.code}`);\n\n        const promise = new Promise((resolve, reject) => {\n          queue.push(() => {\n            log.queue(`Will processs queued ${dirname}/${name}`);\n            return hashElementPromise(stats, dirname, options, isRootElement)\n              .then(ok => resolve(ok))\n              .catch(err => reject(err));\n          });\n        });\n\n        if (queueTimer === undefined) {\n          queueTimer = setTimeout(processQueue, 0);\n        }\n        return promise;\n      }\n\n      throw err;\n    });\n  }\n\n  function processQueue() {\n    queueTimer = undefined;\n    const runnables = queue;\n    queue = [];\n    runnables.forEach(run => run());\n  }\n\n  async function hashFolderPromise(name, dir, options, isRootElement = false) {\n    const folderPath = path.join(dir, name);\n    let ignoreBasenameOnce = options.ignoreBasenameOnce;\n    delete options.ignoreBasenameOnce;\n\n    if (options.skipMatching) {\n      // this is currently only used for the root folder\n      log.match(`skipped '${folderPath}'`);\n      delete options.skipMatching;\n    } else if (ignore(name, folderPath, options.folders)) {\n      return undefined;\n    }\n\n    const files = await fs.promises.readdir(folderPath, { withFileTypes: true });\n    const children = await Promise.all(\n      files\n        .sort((a, b) => a.name.localeCompare(b.name))\n        .map(child => hashElementPromise(child, folderPath, options)),\n    );\n\n    if (ignoreBasenameOnce) options.ignoreBasenameOnce = true;\n    const hash = new HashedFolder(name, children.filter(notUndefined), options, isRootElement);\n    return hash;\n  }\n\n  function hashFilePromise(name, dir, options, isRootElement = false) {\n    const filePath = path.join(dir, name);\n\n    if (options.skipMatching) {\n      // this is currently only used for the root folder\n      log.match(`skipped '${filePath}'`);\n      delete options.skipMatching;\n    } else if (ignore(name, filePath, options.files)) {\n      return Promise.resolve(undefined);\n    }\n\n    return new Promise((resolve, reject) => {\n      try {\n        const hash = crypto.createHash(options.algo, options.algoOptions);\n        if (\n          options.files.ignoreBasename ||\n          options.ignoreBasenameOnce ||\n          (isRootElement && options.files.ignoreRootName)\n        ) {\n          delete options.ignoreBasenameOnce;\n          log.match(`omitted name of ${filePath} from hash`);\n        } else {\n          hash.update(name);\n        }\n\n        const f = fs.createReadStream(filePath);\n        f.on('error', err => {\n          reject(err);\n        });\n        f.pipe(hash, { end: false });\n\n        f.on('end', () => {\n          const hashedFile = new HashedFile(name, hash, options.encoding);\n          return resolve(hashedFile);\n        });\n      } catch (ex) {\n        return reject(ex);\n      }\n    });\n  }\n\n  async function hashSymLinkPromise(name, dir, options, isRootElement = false) {\n    const target = await fs.promises.readlink(path.join(dir, name));\n    log.symlink(`handling symbolic link ${name} -> ${target}`);\n    if (options.symbolicLinks.include) {\n      if (options.symbolicLinks.ignoreTargetContent) {\n        return symLinkIgnoreTargetContent(name, target, options, isRootElement);\n      } else {\n        return symLinkResolve(name, dir, target, options, isRootElement);\n      }\n    } else {\n      log.symlink('skipping symbolic link');\n      return Promise.resolve(undefined);\n    }\n  }\n\n  function symLinkIgnoreTargetContent(name, target, options, isRootElement) {\n    delete options.skipMatching; // only used for the root level\n    log.symlink('ignoring symbolic link target content');\n    const hash = crypto.createHash(options.algo, options.algoOptions);\n    if (!options.symbolicLinks.ignoreBasename && !(isRootElement && options.files.ignoreRootName)) {\n      log.symlink('hash basename');\n      hash.update(name);\n    }\n    if (!options.symbolicLinks.ignoreTargetPath) {\n      log.symlink('hash targetpath');\n      hash.update(target);\n    }\n    return Promise.resolve(new HashedFile(name, hash, options.encoding));\n  }\n\n  async function symLinkResolve(name, dir, target, options, isRootElement) {\n    delete options.skipMatching; // only used for the root level\n    if (options.symbolicLinks.ignoreBasename) {\n      options.ignoreBasenameOnce = true;\n    }\n\n    try {\n      const stats = await fs.promises.stat(path.join(dir, name));\n      stats.name = name;\n      const temp = await hashElementPromise(stats, dir, options, isRootElement);\n\n      if (!options.symbolicLinks.ignoreTargetPath) {\n        const hash = crypto.createHash(options.algo, options.algoOptions);\n        hash.update(temp.hash);\n        log.symlink('hash targetpath');\n        hash.update(target);\n        temp.hash = hash.digest(options.encoding);\n      }\n      return temp;\n    } catch (err) {\n      if (options.symbolicLinks.ignoreTargetContentAfterError) {\n        log.symlink(`Ignoring error \"${err.code}\" when hashing symbolic link ${name}`, err);\n        const hash = crypto.createHash(options.algo, options.algoOptions);\n        if (\n          !options.symbolicLinks.ignoreBasename &&\n          !(isRootElement && options.files.ignoreRootName)\n        ) {\n          hash.update(name);\n        }\n        if (!options.symbolicLinks.ignoreTargetPath) {\n          hash.update(target);\n        }\n        return new HashedFile(name, hash, options.encoding);\n      } else {\n        log.symlink(`Error \"${err.code}\": When hashing symbolic link ${name}`, err);\n        throw err;\n      }\n    }\n  }\n\n  function ignore(name, path, rules) {\n    if (rules.exclude) {\n      if (rules.matchBasename && rules.exclude(name)) {\n        log.match(`exclude basename '${name}'`);\n        return true;\n      } else if (rules.matchPath && rules.exclude(path)) {\n        log.match(`exclude path '${path}'`);\n        return true;\n      }\n    }\n    if (rules.include) {\n      if (rules.matchBasename && rules.include(name)) {\n        log.match(`include basename '${name}'`);\n        return false;\n      } else if (rules.matchPath && rules.include(path)) {\n        log.match(`include path '${path}'`);\n        return false;\n      } else {\n        log.match(`include rule failed for path '${path}'`);\n        return true;\n      }\n    }\n\n    log.match(`Will not ignore unmatched '${path}'`);\n    return false;\n  }\n\n  return hashElement;\n}\n\nfunction parseParameters(args) {\n  let basename = args[0],\n    dir = args[1],\n    options_ = args[2];\n\n  if (!isString(basename)) {\n    return Promise.reject(new TypeError('First argument must be a string'));\n  }\n\n  if (!isString(dir)) {\n    dir = path.dirname(basename);\n    basename = path.basename(basename);\n    options_ = args[1];\n  }\n\n  // parse options (fallback default options)\n  if (!isObject(options_)) options_ = {};\n  const options = {\n    algo: options_.algo || defaultOptions.algo,\n    algoOptions: options_.algoOptions || defaultOptions.algoOptions,\n    encoding: options_.encoding || defaultOptions.encoding,\n    files: Object.assign({}, defaultOptions.files, options_.files),\n    folders: Object.assign({}, defaultOptions.folders, options_.folders),\n    match: Object.assign({}, defaultOptions.match, options_.match),\n    symbolicLinks: Object.assign({}, defaultOptions.symbolicLinks, options_.symbolicLinks),\n  };\n\n  // transform match globs to Regex\n  options.files.exclude = reduceGlobPatterns(options.files.exclude, 'exclude files');\n  options.files.include = reduceGlobPatterns(options.files.include, 'include files');\n  options.folders.exclude = reduceGlobPatterns(options.folders.exclude, 'exclude folders');\n  options.folders.include = reduceGlobPatterns(options.folders.include, 'include folders');\n\n  return Promise.resolve(log.params({ basename, dir, options }));\n}\n\nconst HashedFolder = function HashedFolder(name, children, options, isRootElement = false) {\n  this.name = name;\n  this.children = children;\n\n  const hash = crypto.createHash(options.algo, options.algoOptions);\n  if (\n    options.folders.ignoreBasename ||\n    options.ignoreBasenameOnce ||\n    (isRootElement && options.folders.ignoreRootName)\n  ) {\n    delete options.ignoreBasenameOnce;\n    log.match(`omitted name of folder ${name} from hash`);\n  } else {\n    hash.update(name);\n  }\n  children.forEach(child => {\n    if (child.hash) {\n      hash.update(child.hash);\n    }\n  });\n\n  this.hash = hash.digest(options.encoding);\n};\n\nHashedFolder.prototype.toString = function (padding = '') {\n  const first = `${padding}{ name: '${this.name}', hash: '${this.hash}',\\n`;\n  padding += '  ';\n\n  return `${first}${padding}children: ${this.childrenToString(padding)}}`;\n};\n\nHashedFolder.prototype.childrenToString = function (padding = '') {\n  if (this.children.length === 0) {\n    return '[]';\n  } else {\n    const nextPadding = padding + '  ';\n    const children = this.children.map(child => child.toString(nextPadding)).join('\\n');\n    return `[\\n${children}\\n${padding}]`;\n  }\n};\n\nconst HashedFile = function HashedFile(name, hash, encoding) {\n  this.name = name;\n  this.hash = hash.digest(encoding);\n};\n\nHashedFile.prototype.toString = function (padding = '') {\n  return padding + \"{ name: '\" + this.name + \"', hash: '\" + this.hash + \"' }\";\n};\n\nfunction isFunction(any) {\n  return typeof any === 'function';\n}\n\nfunction isString(str) {\n  return typeof str === 'string' || str instanceof String;\n}\n\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object';\n}\n\nfunction notUndefined(obj) {\n  return typeof obj !== 'undefined';\n}\n\nfunction reduceGlobPatterns(globs, name) {\n  if (isFunction(globs)) {\n    log.glob(`Using function to ${name}`);\n    return globs;\n  } else if (!globs || !Array.isArray(globs) || globs.length === 0) {\n    return undefined;\n  } else {\n    // combine globs into one single RegEx\n    const regex = new RegExp(\n      globs\n        .reduce((acc, exclude) => {\n          return acc + '|' + minimatch.makeRe(exclude).source;\n        }, '')\n        .substr(1),\n    );\n    log.glob(`Reduced glob patterns to ${name}`, { from: globs, to: regex });\n    return param => regex.test(param);\n  }\n}\n\nmodule.exports = {\n  defaults: defaultOptions,\n  hashElement: prep(require('fs')),\n  // exposed for testing\n  prep,\n  parseParameters,\n};\n", "'use strict'\n\nimport { notStrictEqual, strictEqual } from 'assert'\nimport cliui from 'cliui'\nimport escalade from 'escalade/sync'\nimport { inspect } from 'util'\nimport { readFileSync } from 'fs'\nimport { fileURLToPath } from 'url';\nimport Parser from 'yargs-parser'\nimport { basename, dirname, extname, relative, resolve } from 'path'\nimport { getProcessArgvBin } from '../../build/lib/utils/process-argv.js'\nimport { YError } from '../../build/lib/yerror.js'\nimport y18n from 'y18n'\n\nconst REQUIRE_ERROR = 'require is not supported by ESM'\nconst REQUIRE_DIRECTORY_ERROR = 'loading a directory of commands is not supported yet for ESM'\n\nlet __dirname;\ntry {\n  __dirname = fileURLToPath(import.meta.url);\n} catch (e) {\n  __dirname = process.cwd();\n}\nconst mainFilename = __dirname.substring(0, __dirname.lastIndexOf('node_modules'));\n\nexport default {\n  assert: {\n    notStrictEqual,\n    strictEqual\n  },\n  cliui,\n  findUp: escalade,\n  getEnv: (key) => {\n    return process.env[key]\n  },\n  inspect,\n  getCallerFile: () => {\n    throw new YError(REQUIRE_DIRECTORY_ERROR)\n  },\n  getProcessArgvBin,\n  mainFilename: mainFilename || process.cwd(),\n  Parser,\n  path: {\n    basename,\n    dirname,\n    extname,\n    relative,\n    resolve\n  },\n  process: {\n    argv: () => process.argv,\n    cwd: process.cwd,\n    emitWarning: (warning, type) => process.emitWarning(warning, type),\n    execPath: () => process.execPath,\n    exit: process.exit,\n    nextTick: process.nextTick,\n    stdColumns: typeof process.stdout.columns !== 'undefined' ? process.stdout.columns : null\n  },\n  readFileSync,\n  require: () => {\n    throw new YError(REQUIRE_ERROR)\n  },\n  requireDirectory: () => {\n    throw new YError(REQUIRE_DIRECTORY_ERROR)\n  },\n  stringWidth: (str) => {\n    return [...str].length\n  },\n  y18n: y18n({\n    directory: resolve(__dirname, '../../../locales'),\n    updateFiles: false\n  })\n}\n", "'use strict';\nconst align = {\n    right: alignRight,\n    center: alignCenter\n};\nconst top = 0;\nconst right = 1;\nconst bottom = 2;\nconst left = 3;\nexport class UI {\n    constructor(opts) {\n        var _a;\n        this.width = opts.width;\n        this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true;\n        this.rows = [];\n    }\n    span(...args) {\n        const cols = this.div(...args);\n        cols.span = true;\n    }\n    resetOutput() {\n        this.rows = [];\n    }\n    div(...args) {\n        if (args.length === 0) {\n            this.div('');\n        }\n        if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') {\n            return this.applyLayoutDSL(args[0]);\n        }\n        const cols = args.map(arg => {\n            if (typeof arg === 'string') {\n                return this.colFromString(arg);\n            }\n            return arg;\n        });\n        this.rows.push(cols);\n        return cols;\n    }\n    shouldApplyLayoutDSL(...args) {\n        return args.length === 1 && typeof args[0] === 'string' &&\n            /[\\t\\n]/.test(args[0]);\n    }\n    applyLayoutDSL(str) {\n        const rows = str.split('\\n').map(row => row.split('\\t'));\n        let leftColumnWidth = 0;\n        // simple heuristic for layout, make sure the\n        // second column lines up along the left-hand.\n        // don't allow the first column to take up more\n        // than 50% of the screen.\n        rows.forEach(columns => {\n            if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) {\n                leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0]));\n            }\n        });\n        // generate a table:\n        //  replacing ' ' with padding calculations.\n        //  using the algorithmically generated width.\n        rows.forEach(columns => {\n            this.div(...columns.map((r, i) => {\n                return {\n                    text: r.trim(),\n                    padding: this.measurePadding(r),\n                    width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined\n                };\n            }));\n        });\n        return this.rows[this.rows.length - 1];\n    }\n    colFromString(text) {\n        return {\n            text,\n            padding: this.measurePadding(text)\n        };\n    }\n    measurePadding(str) {\n        // measure padding without ansi escape codes\n        const noAnsi = mixin.stripAnsi(str);\n        return [0, noAnsi.match(/\\s*$/)[0].length, 0, noAnsi.match(/^\\s*/)[0].length];\n    }\n    toString() {\n        const lines = [];\n        this.rows.forEach(row => {\n            this.rowToString(row, lines);\n        });\n        // don't display any lines with the\n        // hidden flag set.\n        return lines\n            .filter(line => !line.hidden)\n            .map(line => line.text)\n            .join('\\n');\n    }\n    rowToString(row, lines) {\n        this.rasterize(row).forEach((rrow, r) => {\n            let str = '';\n            rrow.forEach((col, c) => {\n                const { width } = row[c]; // the width with padding.\n                const wrapWidth = this.negatePadding(row[c]); // the width without padding.\n                let ts = col; // temporary string used during alignment/padding.\n                if (wrapWidth > mixin.stringWidth(col)) {\n                    ts += ' '.repeat(wrapWidth - mixin.stringWidth(col));\n                }\n                // align the string within its column.\n                if (row[c].align && row[c].align !== 'left' && this.wrap) {\n                    const fn = align[row[c].align];\n                    ts = fn(ts, wrapWidth);\n                    if (mixin.stringWidth(ts) < wrapWidth) {\n                        ts += ' '.repeat((width || 0) - mixin.stringWidth(ts) - 1);\n                    }\n                }\n                // apply border and padding to string.\n                const padding = row[c].padding || [0, 0, 0, 0];\n                if (padding[left]) {\n                    str += ' '.repeat(padding[left]);\n                }\n                str += addBorder(row[c], ts, '| ');\n                str += ts;\n                str += addBorder(row[c], ts, ' |');\n                if (padding[right]) {\n                    str += ' '.repeat(padding[right]);\n                }\n                // if prior row is span, try to render the\n                // current row on the prior line.\n                if (r === 0 && lines.length > 0) {\n                    str = this.renderInline(str, lines[lines.length - 1]);\n                }\n            });\n            // remove trailing whitespace.\n            lines.push({\n                text: str.replace(/ +$/, ''),\n                span: row.span\n            });\n        });\n        return lines;\n    }\n    // if the full 'source' can render in\n    // the target line, do so.\n    renderInline(source, previousLine) {\n        const match = source.match(/^ */);\n        const leadingWhitespace = match ? match[0].length : 0;\n        const target = previousLine.text;\n        const targetTextWidth = mixin.stringWidth(target.trimRight());\n        if (!previousLine.span) {\n            return source;\n        }\n        // if we're not applying wrapping logic,\n        // just always append to the span.\n        if (!this.wrap) {\n            previousLine.hidden = true;\n            return target + source;\n        }\n        if (leadingWhitespace < targetTextWidth) {\n            return source;\n        }\n        previousLine.hidden = true;\n        return target.trimRight() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimLeft();\n    }\n    rasterize(row) {\n        const rrows = [];\n        const widths = this.columnWidths(row);\n        let wrapped;\n        // word wrap all columns, and create\n        // a data-structure that is easy to rasterize.\n        row.forEach((col, c) => {\n            // leave room for left and right padding.\n            col.width = widths[c];\n            if (this.wrap) {\n                wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\\n');\n            }\n            else {\n                wrapped = col.text.split('\\n');\n            }\n            if (col.border) {\n                wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.');\n                wrapped.push(\"'\" + '-'.repeat(this.negatePadding(col) + 2) + \"'\");\n            }\n            // add top and bottom padding.\n            if (col.padding) {\n                wrapped.unshift(...new Array(col.padding[top] || 0).fill(''));\n                wrapped.push(...new Array(col.padding[bottom] || 0).fill(''));\n            }\n            wrapped.forEach((str, r) => {\n                if (!rrows[r]) {\n                    rrows.push([]);\n                }\n                const rrow = rrows[r];\n                for (let i = 0; i < c; i++) {\n                    if (rrow[i] === undefined) {\n                        rrow.push('');\n                    }\n                }\n                rrow.push(str);\n            });\n        });\n        return rrows;\n    }\n    negatePadding(col) {\n        let wrapWidth = col.width || 0;\n        if (col.padding) {\n            wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0);\n        }\n        if (col.border) {\n            wrapWidth -= 4;\n        }\n        return wrapWidth;\n    }\n    columnWidths(row) {\n        if (!this.wrap) {\n            return row.map(col => {\n                return col.width || mixin.stringWidth(col.text);\n            });\n        }\n        let unset = row.length;\n        let remainingWidth = this.width;\n        // column widths can be set in config.\n        const widths = row.map(col => {\n            if (col.width) {\n                unset--;\n                remainingWidth -= col.width;\n                return col.width;\n            }\n            return undefined;\n        });\n        // any unset widths should be calculated.\n        const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0;\n        return widths.map((w, i) => {\n            if (w === undefined) {\n                return Math.max(unsetWidth, _minWidth(row[i]));\n            }\n            return w;\n        });\n    }\n}\nfunction addBorder(col, ts, style) {\n    if (col.border) {\n        if (/[.']-+[.']/.test(ts)) {\n            return '';\n        }\n        if (ts.trim().length !== 0) {\n            return style;\n        }\n        return '  ';\n    }\n    return '';\n}\n// calculates the minimum width of\n// a column, based on padding preferences.\nfunction _minWidth(col) {\n    const padding = col.padding || [];\n    const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0);\n    if (col.border) {\n        return minWidth + 4;\n    }\n    return minWidth;\n}\nfunction getWindowWidth() {\n    /* istanbul ignore next: depends on terminal */\n    if (typeof process === 'object' && process.stdout && process.stdout.columns) {\n        return process.stdout.columns;\n    }\n    return 80;\n}\nfunction alignRight(str, width) {\n    str = str.trim();\n    const strWidth = mixin.stringWidth(str);\n    if (strWidth < width) {\n        return ' '.repeat(width - strWidth) + str;\n    }\n    return str;\n}\nfunction alignCenter(str, width) {\n    str = str.trim();\n    const strWidth = mixin.stringWidth(str);\n    /* istanbul ignore next */\n    if (strWidth >= width) {\n        return str;\n    }\n    return ' '.repeat((width - strWidth) >> 1) + str;\n}\nlet mixin;\nexport function cliui(opts, _mixin) {\n    mixin = _mixin;\n    return new UI({\n        width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(),\n        wrap: opts === null || opts === void 0 ? void 0 : opts.wrap\n    });\n}\n", "// Minimal replacement for ansi string helpers \"wrap-ansi\" and \"strip-ansi\".\n// to facilitate ESM and Deno modules.\n// TODO: look at porting https://www.npmjs.com/package/wrap-ansi to ESM.\n// The npm application\n// Copyright (c) npm, Inc. and Contributors\n// Licensed on the terms of The Artistic License 2.0\n// See: https://github.com/npm/cli/blob/4c65cd952bc8627811735bea76b9b110cc4fc80e/lib/utils/ansi-trim.js\nconst ansi = new RegExp('\\x1b(?:\\\\[(?:\\\\d+[ABCDEFGJKSTm]|\\\\d+;\\\\d+[Hfm]|' +\n    '\\\\d+;\\\\d+;\\\\d+m|6n|s|u|\\\\?25[lh])|\\\\w)', 'g');\nexport function stripAnsi(str) {\n    return str.replace(ansi, '');\n}\nexport function wrap(str, width) {\n    const [start, end] = str.match(ansi) || ['', ''];\n    str = stripAnsi(str);\n    let wrapped = '';\n    for (let i = 0; i < str.length; i++) {\n        if (i !== 0 && (i % width) === 0) {\n            wrapped += '\\n';\n        }\n        wrapped += str.charAt(i);\n    }\n    if (start && end) {\n        wrapped = `${start}${wrapped}${end}`;\n    }\n    return wrapped;\n}\n", "// Bootstrap cliui with CommonJS dependencies:\nimport { cliui } from './build/lib/index.js'\nimport { wrap, stripAnsi } from './build/lib/string-utils.js'\n\nexport default function ui (opts) {\n  return cliui(opts, {\n    stringWidth: (str) => {\n      return [...str].length\n    },\n    stripAnsi,\n    wrap\n  })\n}\n", "import { dirname, resolve } from 'path';\nimport { readdirSync, statSync } from 'fs';\n\nexport default function (start, callback) {\n\tlet dir = resolve('.', start);\n\tlet tmp, stats = statSync(dir);\n\n\tif (!stats.isDirectory()) {\n\t\tdir = dirname(dir);\n\t}\n\n\twhile (true) {\n\t\ttmp = callback(dir, readdirSync(dir));\n\t\tif (tmp) return resolve(dir, tmp);\n\t\tdir = dirname(tmp = dir);\n\t\tif (tmp === dir) break;\n\t}\n}\n", "/**\n * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js\n * CJS and ESM environments.\n *\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nvar _a, _b, _c;\nimport { format } from 'util';\nimport { normalize, resolve } from 'path';\nimport { camelCase, decamelize, looksLikeNumber } from './string-utils.js';\nimport { YargsParser } from './yargs-parser.js';\nimport { readFileSync } from 'fs';\n// See https://github.com/yargs/yargs-parser#supported-nodejs-versions for our\n// version support policy. The YARGS_MIN_NODE_VERSION is used for testing only.\nconst minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION)\n    ? Number(process.env.YARGS_MIN_NODE_VERSION)\n    : 12;\nconst nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1);\nif (nodeVersion) {\n    const major = Number(nodeVersion.match(/^([^.]+)/)[1]);\n    if (major < minNodeVersion) {\n        throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);\n    }\n}\n// Creates a yargs-parser instance using Node.js standard libraries:\nconst env = process ? process.env : {};\nconst parser = new YargsParser({\n    cwd: process.cwd,\n    env: () => {\n        return env;\n    },\n    format,\n    normalize,\n    resolve,\n    // TODO: figure  out a  way to combine ESM and CJS coverage, such  that\n    // we can exercise all the lines below:\n    require: (path) => {\n        if (typeof require !== 'undefined') {\n            return require(path);\n        }\n        else if (path.match(/\\.json$/)) {\n            // Addresses: https://github.com/yargs/yargs/issues/2040\n            return JSON.parse(readFileSync(path, 'utf8'));\n        }\n        else {\n            throw Error('only .json config files are supported in ESM');\n        }\n    }\n});\nconst yargsParser = function Parser(args, opts) {\n    const result = parser.parse(args.slice(), opts);\n    return result.argv;\n};\nyargsParser.detailed = function (args, opts) {\n    return parser.parse(args.slice(), opts);\n};\nyargsParser.camelCase = camelCase;\nyargsParser.decamelize = decamelize;\nyargsParser.looksLikeNumber = looksLikeNumber;\nexport default yargsParser;\n", "/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nexport function camelCase(str) {\n    // Handle the case where an argument is provided as camel case, e.g., fooBar.\n    // by ensuring that the string isn't already mixed case:\n    const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase();\n    if (!isCamelCase) {\n        str = str.toLowerCase();\n    }\n    if (str.indexOf('-') === -1 && str.indexOf('_') === -1) {\n        return str;\n    }\n    else {\n        let camelcase = '';\n        let nextChrUpper = false;\n        const leadingHyphens = str.match(/^-+/);\n        for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {\n            let chr = str.charAt(i);\n            if (nextChrUpper) {\n                nextChrUpper = false;\n                chr = chr.toUpperCase();\n            }\n            if (i !== 0 && (chr === '-' || chr === '_')) {\n                nextChrUpper = true;\n            }\n            else if (chr !== '-' && chr !== '_') {\n                camelcase += chr;\n            }\n        }\n        return camelcase;\n    }\n}\nexport function decamelize(str, joinString) {\n    const lowercase = str.toLowerCase();\n    joinString = joinString || '-';\n    let notCamelcase = '';\n    for (let i = 0; i < str.length; i++) {\n        const chrLower = lowercase.charAt(i);\n        const chrString = str.charAt(i);\n        if (chrLower !== chrString && i > 0) {\n            notCamelcase += `${joinString}${lowercase.charAt(i)}`;\n        }\n        else {\n            notCamelcase += chrString;\n        }\n    }\n    return notCamelcase;\n}\nexport function looksLikeNumber(x) {\n    if (x === null || x === undefined)\n        return false;\n    // if loaded from config, may already be a number.\n    if (typeof x === 'number')\n        return true;\n    // hexadecimal.\n    if (/^0x[0-9a-f]+$/i.test(x))\n        return true;\n    // don't treat 0123 as a number; as it drops the leading '0'.\n    if (/^0[^.]/.test(x))\n        return false;\n    return /^[-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n", "/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\n// take an un-split argv string and tokenize it.\nexport function tokenizeArgString(argString) {\n    if (Array.isArray(argString)) {\n        return argString.map(e => typeof e !== 'string' ? e + '' : e);\n    }\n    argString = argString.trim();\n    let i = 0;\n    let prevC = null;\n    let c = null;\n    let opening = null;\n    const args = [];\n    for (let ii = 0; ii < argString.length; ii++) {\n        prevC = c;\n        c = argString.charAt(ii);\n        // split on spaces unless we're in quotes.\n        if (c === ' ' && !opening) {\n            if (!(prevC === ' ')) {\n                i++;\n            }\n            continue;\n        }\n        // don't split the string if we're in matching\n        // opening or closing single and double quotes.\n        if (c === opening) {\n            opening = null;\n        }\n        else if ((c === \"'\" || c === '\"') && !opening) {\n            opening = c;\n        }\n        if (!args[i])\n            args[i] = '';\n        args[i] += c;\n    }\n    return args;\n}\n", "/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nexport var DefaultValuesForTypeKey;\n(function (DefaultValuesForTypeKey) {\n    DefaultValuesForTypeKey[\"BOOLEAN\"] = \"boolean\";\n    DefaultValuesForTypeKey[\"STRING\"] = \"string\";\n    DefaultValuesForTypeKey[\"NUMBER\"] = \"number\";\n    DefaultValuesForTypeKey[\"ARRAY\"] = \"array\";\n})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {}));\n", "/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nimport { tokenizeArgString } from './tokenize-arg-string.js';\nimport { DefaultValuesForTypeKey } from './yargs-parser-types.js';\nimport { camelCase, decamelize, looksLikeNumber } from './string-utils.js';\nlet mixin;\nexport class YargsParser {\n    constructor(_mixin) {\n        mixin = _mixin;\n    }\n    parse(argsInput, options) {\n        const opts = Object.assign({\n            alias: undefined,\n            array: undefined,\n            boolean: undefined,\n            config: undefined,\n            configObjects: undefined,\n            configuration: undefined,\n            coerce: undefined,\n            count: undefined,\n            default: undefined,\n            envPrefix: undefined,\n            narg: undefined,\n            normalize: undefined,\n            string: undefined,\n            number: undefined,\n            __: undefined,\n            key: undefined\n        }, options);\n        // allow a string argument to be passed in rather\n        // than an argv array.\n        const args = tokenizeArgString(argsInput);\n        // tokenizeArgString adds extra quotes to args if argsInput is a string\n        // only strip those extra quotes in processValue if argsInput is a string\n        const inputIsString = typeof argsInput === 'string';\n        // aliases might have transitive relationships, normalize this.\n        const aliases = combineAliases(Object.assign(Object.create(null), opts.alias));\n        const configuration = Object.assign({\n            'boolean-negation': true,\n            'camel-case-expansion': true,\n            'combine-arrays': false,\n            'dot-notation': true,\n            'duplicate-arguments-array': true,\n            'flatten-duplicate-arrays': true,\n            'greedy-arrays': true,\n            'halt-at-non-option': false,\n            'nargs-eats-options': false,\n            'negation-prefix': 'no-',\n            'parse-numbers': true,\n            'parse-positional-numbers': true,\n            'populate--': false,\n            'set-placeholder-key': false,\n            'short-option-groups': true,\n            'strip-aliased': false,\n            'strip-dashed': false,\n            'unknown-options-as-args': false\n        }, opts.configuration);\n        const defaults = Object.assign(Object.create(null), opts.default);\n        const configObjects = opts.configObjects || [];\n        const envPrefix = opts.envPrefix;\n        const notFlagsOption = configuration['populate--'];\n        const notFlagsArgv = notFlagsOption ? '--' : '_';\n        const newAliases = Object.create(null);\n        const defaulted = Object.create(null);\n        // allow a i18n handler to be passed in, default to a fake one (util.format).\n        const __ = opts.__ || mixin.format;\n        const flags = {\n            aliases: Object.create(null),\n            arrays: Object.create(null),\n            bools: Object.create(null),\n            strings: Object.create(null),\n            numbers: Object.create(null),\n            counts: Object.create(null),\n            normalize: Object.create(null),\n            configs: Object.create(null),\n            nargs: Object.create(null),\n            coercions: Object.create(null),\n            keys: []\n        };\n        const negative = /^-([0-9]+(\\.[0-9]+)?|\\.[0-9]+)$/;\n        const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)');\n        [].concat(opts.array || []).filter(Boolean).forEach(function (opt) {\n            const key = typeof opt === 'object' ? opt.key : opt;\n            // assign to flags[bools|strings|numbers]\n            const assignment = Object.keys(opt).map(function (key) {\n                const arrayFlagKeys = {\n                    boolean: 'bools',\n                    string: 'strings',\n                    number: 'numbers'\n                };\n                return arrayFlagKeys[key];\n            }).filter(Boolean).pop();\n            // assign key to be coerced\n            if (assignment) {\n                flags[assignment][key] = true;\n            }\n            flags.arrays[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) {\n            flags.bools[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.string || []).filter(Boolean).forEach(function (key) {\n            flags.strings[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.number || []).filter(Boolean).forEach(function (key) {\n            flags.numbers[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.count || []).filter(Boolean).forEach(function (key) {\n            flags.counts[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) {\n            flags.normalize[key] = true;\n            flags.keys.push(key);\n        });\n        if (typeof opts.narg === 'object') {\n            Object.entries(opts.narg).forEach(([key, value]) => {\n                if (typeof value === 'number') {\n                    flags.nargs[key] = value;\n                    flags.keys.push(key);\n                }\n            });\n        }\n        if (typeof opts.coerce === 'object') {\n            Object.entries(opts.coerce).forEach(([key, value]) => {\n                if (typeof value === 'function') {\n                    flags.coercions[key] = value;\n                    flags.keys.push(key);\n                }\n            });\n        }\n        if (typeof opts.config !== 'undefined') {\n            if (Array.isArray(opts.config) || typeof opts.config === 'string') {\n                ;\n                [].concat(opts.config).filter(Boolean).forEach(function (key) {\n                    flags.configs[key] = true;\n                });\n            }\n            else if (typeof opts.config === 'object') {\n                Object.entries(opts.config).forEach(([key, value]) => {\n                    if (typeof value === 'boolean' || typeof value === 'function') {\n                        flags.configs[key] = value;\n                    }\n                });\n            }\n        }\n        // create a lookup table that takes into account all\n        // combinations of aliases: {f: ['foo'], foo: ['f']}\n        extendAliases(opts.key, aliases, opts.default, flags.arrays);\n        // apply default values to all aliases.\n        Object.keys(defaults).forEach(function (key) {\n            (flags.aliases[key] || []).forEach(function (alias) {\n                defaults[alias] = defaults[key];\n            });\n        });\n        let error = null;\n        checkConfiguration();\n        let notFlags = [];\n        const argv = Object.assign(Object.create(null), { _: [] });\n        // TODO(bcoe): for the first pass at removing object prototype  we didn't\n        // remove all prototypes from objects returned by this API, we might want\n        // to gradually move towards doing so.\n        const argvReturn = {};\n        for (let i = 0; i < args.length; i++) {\n            const arg = args[i];\n            const truncatedArg = arg.replace(/^-{3,}/, '---');\n            let broken;\n            let key;\n            let letters;\n            let m;\n            let next;\n            let value;\n            // any unknown option (except for end-of-options, \"--\")\n            if (arg !== '--' && /^-/.test(arg) && isUnknownOptionAsArg(arg)) {\n                pushPositional(arg);\n                // ---, ---=, ----, etc,\n            }\n            else if (truncatedArg.match(/^---+(=|$)/)) {\n                // options without key name are invalid.\n                pushPositional(arg);\n                continue;\n                // -- separated by =\n            }\n            else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) {\n                // Using [\\s\\S] instead of . because js doesn't support the\n                // 'dotall' regex modifier. See:\n                // http://stackoverflow.com/a/1068308/13216\n                m = arg.match(/^--?([^=]+)=([\\s\\S]*)$/);\n                // arrays format = '--f=a b c'\n                if (m !== null && Array.isArray(m) && m.length >= 3) {\n                    if (checkAllAliases(m[1], flags.arrays)) {\n                        i = eatArray(i, m[1], args, m[2]);\n                    }\n                    else if (checkAllAliases(m[1], flags.nargs) !== false) {\n                        // nargs format = '--f=monkey washing cat'\n                        i = eatNargs(i, m[1], args, m[2]);\n                    }\n                    else {\n                        setArg(m[1], m[2], true);\n                    }\n                }\n            }\n            else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {\n                m = arg.match(negatedBoolean);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false);\n                }\n                // -- separated by space.\n            }\n            else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) {\n                m = arg.match(/^--?(.+)/);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    if (checkAllAliases(key, flags.arrays)) {\n                        // array format = '--foo a b c'\n                        i = eatArray(i, key, args);\n                    }\n                    else if (checkAllAliases(key, flags.nargs) !== false) {\n                        // nargs format = '--foo a b c'\n                        // should be truthy even if: flags.nargs[key] === 0\n                        i = eatNargs(i, key, args);\n                    }\n                    else {\n                        next = args[i + 1];\n                        if (next !== undefined && (!next.match(/^-/) ||\n                            next.match(negative)) &&\n                            !checkAllAliases(key, flags.bools) &&\n                            !checkAllAliases(key, flags.counts)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else if (/^(true|false)$/.test(next)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else {\n                            setArg(key, defaultValue(key));\n                        }\n                    }\n                }\n                // dot-notation flag separated by '='.\n            }\n            else if (arg.match(/^-.\\..+=/)) {\n                m = arg.match(/^-([^=]+)=([\\s\\S]*)$/);\n                if (m !== null && Array.isArray(m) && m.length >= 3) {\n                    setArg(m[1], m[2]);\n                }\n                // dot-notation flag separated by space.\n            }\n            else if (arg.match(/^-.\\..+/) && !arg.match(negative)) {\n                next = args[i + 1];\n                m = arg.match(/^-(.\\..+)/);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    if (next !== undefined && !next.match(/^-/) &&\n                        !checkAllAliases(key, flags.bools) &&\n                        !checkAllAliases(key, flags.counts)) {\n                        setArg(key, next);\n                        i++;\n                    }\n                    else {\n                        setArg(key, defaultValue(key));\n                    }\n                }\n            }\n            else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {\n                letters = arg.slice(1, -1).split('');\n                broken = false;\n                for (let j = 0; j < letters.length; j++) {\n                    next = arg.slice(j + 2);\n                    if (letters[j + 1] && letters[j + 1] === '=') {\n                        value = arg.slice(j + 3);\n                        key = letters[j];\n                        if (checkAllAliases(key, flags.arrays)) {\n                            // array format = '-f=a b c'\n                            i = eatArray(i, key, args, value);\n                        }\n                        else if (checkAllAliases(key, flags.nargs) !== false) {\n                            // nargs format = '-f=monkey washing cat'\n                            i = eatNargs(i, key, args, value);\n                        }\n                        else {\n                            setArg(key, value);\n                        }\n                        broken = true;\n                        break;\n                    }\n                    if (next === '-') {\n                        setArg(letters[j], next);\n                        continue;\n                    }\n                    // current letter is an alphabetic character and next value is a number\n                    if (/[A-Za-z]/.test(letters[j]) &&\n                        /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next) &&\n                        checkAllAliases(next, flags.bools) === false) {\n                        setArg(letters[j], next);\n                        broken = true;\n                        break;\n                    }\n                    if (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n                        setArg(letters[j], next);\n                        broken = true;\n                        break;\n                    }\n                    else {\n                        setArg(letters[j], defaultValue(letters[j]));\n                    }\n                }\n                key = arg.slice(-1)[0];\n                if (!broken && key !== '-') {\n                    if (checkAllAliases(key, flags.arrays)) {\n                        // array format = '-f a b c'\n                        i = eatArray(i, key, args);\n                    }\n                    else if (checkAllAliases(key, flags.nargs) !== false) {\n                        // nargs format = '-f a b c'\n                        // should be truthy even if: flags.nargs[key] === 0\n                        i = eatNargs(i, key, args);\n                    }\n                    else {\n                        next = args[i + 1];\n                        if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||\n                            next.match(negative)) &&\n                            !checkAllAliases(key, flags.bools) &&\n                            !checkAllAliases(key, flags.counts)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else if (/^(true|false)$/.test(next)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else {\n                            setArg(key, defaultValue(key));\n                        }\n                    }\n                }\n            }\n            else if (arg.match(/^-[0-9]$/) &&\n                arg.match(negative) &&\n                checkAllAliases(arg.slice(1), flags.bools)) {\n                // single-digit boolean alias, e.g: xargs -0\n                key = arg.slice(1);\n                setArg(key, defaultValue(key));\n            }\n            else if (arg === '--') {\n                notFlags = args.slice(i + 1);\n                break;\n            }\n            else if (configuration['halt-at-non-option']) {\n                notFlags = args.slice(i);\n                break;\n            }\n            else {\n                pushPositional(arg);\n            }\n        }\n        // order of precedence:\n        // 1. command line arg\n        // 2. value from env var\n        // 3. value from config file\n        // 4. value from config objects\n        // 5. configured default value\n        applyEnvVars(argv, true); // special case: check env vars that point to config file\n        applyEnvVars(argv, false);\n        setConfig(argv);\n        setConfigObjects();\n        applyDefaultsAndAliases(argv, flags.aliases, defaults, true);\n        applyCoercions(argv);\n        if (configuration['set-placeholder-key'])\n            setPlaceholderKeys(argv);\n        // for any counts either not in args or without an explicit default, set to 0\n        Object.keys(flags.counts).forEach(function (key) {\n            if (!hasKey(argv, key.split('.')))\n                setArg(key, 0);\n        });\n        // '--' defaults to undefined.\n        if (notFlagsOption && notFlags.length)\n            argv[notFlagsArgv] = [];\n        notFlags.forEach(function (key) {\n            argv[notFlagsArgv].push(key);\n        });\n        if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {\n            Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {\n                delete argv[key];\n            });\n        }\n        if (configuration['strip-aliased']) {\n            ;\n            [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {\n                if (configuration['camel-case-expansion'] && alias.includes('-')) {\n                    delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')];\n                }\n                delete argv[alias];\n            });\n        }\n        // Push argument into positional array, applying numeric coercion:\n        function pushPositional(arg) {\n            const maybeCoercedNumber = maybeCoerceNumber('_', arg);\n            if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') {\n                argv._.push(maybeCoercedNumber);\n            }\n        }\n        // how many arguments should we consume, based\n        // on the nargs option?\n        function eatNargs(i, key, args, argAfterEqualSign) {\n            let ii;\n            let toEat = checkAllAliases(key, flags.nargs);\n            // NaN has a special meaning for the array type, indicating that one or\n            // more values are expected.\n            toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat;\n            if (toEat === 0) {\n                if (!isUndefined(argAfterEqualSign)) {\n                    error = Error(__('Argument unexpected for: %s', key));\n                }\n                setArg(key, defaultValue(key));\n                return i;\n            }\n            let available = isUndefined(argAfterEqualSign) ? 0 : 1;\n            if (configuration['nargs-eats-options']) {\n                // classic behavior, yargs eats positional and dash arguments.\n                if (args.length - (i + 1) + available < toEat) {\n                    error = Error(__('Not enough arguments following: %s', key));\n                }\n                available = toEat;\n            }\n            else {\n                // nargs will not consume flag arguments, e.g., -abc, --foo,\n                // and terminates when one is observed.\n                for (ii = i + 1; ii < args.length; ii++) {\n                    if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii]))\n                        available++;\n                    else\n                        break;\n                }\n                if (available < toEat)\n                    error = Error(__('Not enough arguments following: %s', key));\n            }\n            let consumed = Math.min(available, toEat);\n            if (!isUndefined(argAfterEqualSign) && consumed > 0) {\n                setArg(key, argAfterEqualSign);\n                consumed--;\n            }\n            for (ii = i + 1; ii < (consumed + i + 1); ii++) {\n                setArg(key, args[ii]);\n            }\n            return (i + consumed);\n        }\n        // if an option is an array, eat all non-hyphenated arguments\n        // following it... YUM!\n        // e.g., --foo apple banana cat becomes [\"apple\", \"banana\", \"cat\"]\n        function eatArray(i, key, args, argAfterEqualSign) {\n            let argsToSet = [];\n            let next = argAfterEqualSign || args[i + 1];\n            // If both array and nargs are configured, enforce the nargs count:\n            const nargsCount = checkAllAliases(key, flags.nargs);\n            if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) {\n                argsToSet.push(true);\n            }\n            else if (isUndefined(next) ||\n                (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) {\n                // for keys without value ==> argsToSet remains an empty []\n                // set user default value, if available\n                if (defaults[key] !== undefined) {\n                    const defVal = defaults[key];\n                    argsToSet = Array.isArray(defVal) ? defVal : [defVal];\n                }\n            }\n            else {\n                // value in --option=value is eaten as is\n                if (!isUndefined(argAfterEqualSign)) {\n                    argsToSet.push(processValue(key, argAfterEqualSign, true));\n                }\n                for (let ii = i + 1; ii < args.length; ii++) {\n                    if ((!configuration['greedy-arrays'] && argsToSet.length > 0) ||\n                        (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount))\n                        break;\n                    next = args[ii];\n                    if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))\n                        break;\n                    i = ii;\n                    argsToSet.push(processValue(key, next, inputIsString));\n                }\n            }\n            // If both array and nargs are configured, create an error if less than\n            // nargs positionals were found. NaN has special meaning, indicating\n            // that at least one value is required (more are okay).\n            if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) ||\n                (isNaN(nargsCount) && argsToSet.length === 0))) {\n                error = Error(__('Not enough arguments following: %s', key));\n            }\n            setArg(key, argsToSet);\n            return i;\n        }\n        function setArg(key, val, shouldStripQuotes = inputIsString) {\n            if (/-/.test(key) && configuration['camel-case-expansion']) {\n                const alias = key.split('.').map(function (prop) {\n                    return camelCase(prop);\n                }).join('.');\n                addNewAlias(key, alias);\n            }\n            const value = processValue(key, val, shouldStripQuotes);\n            const splitKey = key.split('.');\n            setKey(argv, splitKey, value);\n            // handle populating aliases of the full key\n            if (flags.aliases[key]) {\n                flags.aliases[key].forEach(function (x) {\n                    const keyProperties = x.split('.');\n                    setKey(argv, keyProperties, value);\n                });\n            }\n            // handle populating aliases of the first element of the dot-notation key\n            if (splitKey.length > 1 && configuration['dot-notation']) {\n                ;\n                (flags.aliases[splitKey[0]] || []).forEach(function (x) {\n                    let keyProperties = x.split('.');\n                    // expand alias with nested objects in key\n                    const a = [].concat(splitKey);\n                    a.shift(); // nuke the old key.\n                    keyProperties = keyProperties.concat(a);\n                    // populate alias only if is not already an alias of the full key\n                    // (already populated above)\n                    if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) {\n                        setKey(argv, keyProperties, value);\n                    }\n                });\n            }\n            // Set normalize getter and setter when key is in 'normalize' but isn't an array\n            if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {\n                const keys = [key].concat(flags.aliases[key] || []);\n                keys.forEach(function (key) {\n                    Object.defineProperty(argvReturn, key, {\n                        enumerable: true,\n                        get() {\n                            return val;\n                        },\n                        set(value) {\n                            val = typeof value === 'string' ? mixin.normalize(value) : value;\n                        }\n                    });\n                });\n            }\n        }\n        function addNewAlias(key, alias) {\n            if (!(flags.aliases[key] && flags.aliases[key].length)) {\n                flags.aliases[key] = [alias];\n                newAliases[alias] = true;\n            }\n            if (!(flags.aliases[alias] && flags.aliases[alias].length)) {\n                addNewAlias(alias, key);\n            }\n        }\n        function processValue(key, val, shouldStripQuotes) {\n            // strings may be quoted, clean this up as we assign values.\n            if (shouldStripQuotes) {\n                val = stripQuotes(val);\n            }\n            // handle parsing boolean arguments --foo=true --bar false.\n            if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {\n                if (typeof val === 'string')\n                    val = val === 'true';\n            }\n            let value = Array.isArray(val)\n                ? val.map(function (v) { return maybeCoerceNumber(key, v); })\n                : maybeCoerceNumber(key, val);\n            // increment a count given as arg (either no value or value parsed as boolean)\n            if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {\n                value = increment();\n            }\n            // Set normalized value when key is in 'normalize' and in 'arrays'\n            if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {\n                if (Array.isArray(val))\n                    value = val.map((val) => { return mixin.normalize(val); });\n                else\n                    value = mixin.normalize(val);\n            }\n            return value;\n        }\n        function maybeCoerceNumber(key, value) {\n            if (!configuration['parse-positional-numbers'] && key === '_')\n                return value;\n            if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {\n                const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`))));\n                if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) {\n                    value = Number(value);\n                }\n            }\n            return value;\n        }\n        // set args from config.json file, this should be\n        // applied last so that defaults can be applied.\n        function setConfig(argv) {\n            const configLookup = Object.create(null);\n            // expand defaults/aliases, in-case any happen to reference\n            // the config.json file.\n            applyDefaultsAndAliases(configLookup, flags.aliases, defaults);\n            Object.keys(flags.configs).forEach(function (configKey) {\n                const configPath = argv[configKey] || configLookup[configKey];\n                if (configPath) {\n                    try {\n                        let config = null;\n                        const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);\n                        const resolveConfig = flags.configs[configKey];\n                        if (typeof resolveConfig === 'function') {\n                            try {\n                                config = resolveConfig(resolvedConfigPath);\n                            }\n                            catch (e) {\n                                config = e;\n                            }\n                            if (config instanceof Error) {\n                                error = config;\n                                return;\n                            }\n                        }\n                        else {\n                            config = mixin.require(resolvedConfigPath);\n                        }\n                        setConfigObject(config);\n                    }\n                    catch (ex) {\n                        // Deno will receive a PermissionDenied error if an attempt is\n                        // made to load config without the --allow-read flag:\n                        if (ex.name === 'PermissionDenied')\n                            error = ex;\n                        else if (argv[configKey])\n                            error = Error(__('Invalid JSON config file: %s', configPath));\n                    }\n                }\n            });\n        }\n        // set args from config object.\n        // it recursively checks nested objects.\n        function setConfigObject(config, prev) {\n            Object.keys(config).forEach(function (key) {\n                const value = config[key];\n                const fullKey = prev ? prev + '.' + key : key;\n                // if the value is an inner object and we have dot-notation\n                // enabled, treat inner objects in config the same as\n                // heavily nested dot notations (foo.bar.apple).\n                if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {\n                    // if the value is an object but not an array, check nested object\n                    setConfigObject(value, fullKey);\n                }\n                else {\n                    // setting arguments via CLI takes precedence over\n                    // values within the config file.\n                    if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) {\n                        setArg(fullKey, value);\n                    }\n                }\n            });\n        }\n        // set all config objects passed in opts\n        function setConfigObjects() {\n            if (typeof configObjects !== 'undefined') {\n                configObjects.forEach(function (configObject) {\n                    setConfigObject(configObject);\n                });\n            }\n        }\n        function applyEnvVars(argv, configOnly) {\n            if (typeof envPrefix === 'undefined')\n                return;\n            const prefix = typeof envPrefix === 'string' ? envPrefix : '';\n            const env = mixin.env();\n            Object.keys(env).forEach(function (envVar) {\n                if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {\n                    // get array of nested keys and convert them to camel case\n                    const keys = envVar.split('__').map(function (key, i) {\n                        if (i === 0) {\n                            key = key.substring(prefix.length);\n                        }\n                        return camelCase(key);\n                    });\n                    if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) {\n                        setArg(keys.join('.'), env[envVar]);\n                    }\n                }\n            });\n        }\n        function applyCoercions(argv) {\n            let coerce;\n            const applied = new Set();\n            Object.keys(argv).forEach(function (key) {\n                if (!applied.has(key)) { // If we haven't already coerced this option via one of its aliases\n                    coerce = checkAllAliases(key, flags.coercions);\n                    if (typeof coerce === 'function') {\n                        try {\n                            const value = maybeCoerceNumber(key, coerce(argv[key]));\n                            ([].concat(flags.aliases[key] || [], key)).forEach(ali => {\n                                applied.add(ali);\n                                argv[ali] = value;\n                            });\n                        }\n                        catch (err) {\n                            error = err;\n                        }\n                    }\n                }\n            });\n        }\n        function setPlaceholderKeys(argv) {\n            flags.keys.forEach((key) => {\n                // don't set placeholder keys for dot notation options 'foo.bar'.\n                if (~key.indexOf('.'))\n                    return;\n                if (typeof argv[key] === 'undefined')\n                    argv[key] = undefined;\n            });\n            return argv;\n        }\n        function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) {\n            Object.keys(defaults).forEach(function (key) {\n                if (!hasKey(obj, key.split('.'))) {\n                    setKey(obj, key.split('.'), defaults[key]);\n                    if (canLog)\n                        defaulted[key] = true;\n                    (aliases[key] || []).forEach(function (x) {\n                        if (hasKey(obj, x.split('.')))\n                            return;\n                        setKey(obj, x.split('.'), defaults[key]);\n                    });\n                }\n            });\n        }\n        function hasKey(obj, keys) {\n            let o = obj;\n            if (!configuration['dot-notation'])\n                keys = [keys.join('.')];\n            keys.slice(0, -1).forEach(function (key) {\n                o = (o[key] || {});\n            });\n            const key = keys[keys.length - 1];\n            if (typeof o !== 'object')\n                return false;\n            else\n                return key in o;\n        }\n        function setKey(obj, keys, value) {\n            let o = obj;\n            if (!configuration['dot-notation'])\n                keys = [keys.join('.')];\n            keys.slice(0, -1).forEach(function (key) {\n                // TODO(bcoe): in the next major version of yargs, switch to\n                // Object.create(null) for dot notation:\n                key = sanitizeKey(key);\n                if (typeof o === 'object' && o[key] === undefined) {\n                    o[key] = {};\n                }\n                if (typeof o[key] !== 'object' || Array.isArray(o[key])) {\n                    // ensure that o[key] is an array, and that the last item is an empty object.\n                    if (Array.isArray(o[key])) {\n                        o[key].push({});\n                    }\n                    else {\n                        o[key] = [o[key], {}];\n                    }\n                    // we want to update the empty object at the end of the o[key] array, so set o to that object\n                    o = o[key][o[key].length - 1];\n                }\n                else {\n                    o = o[key];\n                }\n            });\n            // TODO(bcoe): in the next major version of yargs, switch to\n            // Object.create(null) for dot notation:\n            const key = sanitizeKey(keys[keys.length - 1]);\n            const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays);\n            const isValueArray = Array.isArray(value);\n            let duplicate = configuration['duplicate-arguments-array'];\n            // nargs has higher priority than duplicate\n            if (!duplicate && checkAllAliases(key, flags.nargs)) {\n                duplicate = true;\n                if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {\n                    o[key] = undefined;\n                }\n            }\n            if (value === increment()) {\n                o[key] = increment(o[key]);\n            }\n            else if (Array.isArray(o[key])) {\n                if (duplicate && isTypeArray && isValueArray) {\n                    o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]);\n                }\n                else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {\n                    o[key] = value;\n                }\n                else {\n                    o[key] = o[key].concat([value]);\n                }\n            }\n            else if (o[key] === undefined && isTypeArray) {\n                o[key] = isValueArray ? value : [value];\n            }\n            else if (duplicate && !(o[key] === undefined ||\n                checkAllAliases(key, flags.counts) ||\n                checkAllAliases(key, flags.bools))) {\n                o[key] = [o[key], value];\n            }\n            else {\n                o[key] = value;\n            }\n        }\n        // extend the aliases list with inferred aliases.\n        function extendAliases(...args) {\n            args.forEach(function (obj) {\n                Object.keys(obj || {}).forEach(function (key) {\n                    // short-circuit if we've already added a key\n                    // to the aliases array, for example it might\n                    // exist in both 'opts.default' and 'opts.key'.\n                    if (flags.aliases[key])\n                        return;\n                    flags.aliases[key] = [].concat(aliases[key] || []);\n                    // For \"--option-name\", also set argv.optionName\n                    flags.aliases[key].concat(key).forEach(function (x) {\n                        if (/-/.test(x) && configuration['camel-case-expansion']) {\n                            const c = camelCase(x);\n                            if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n                                flags.aliases[key].push(c);\n                                newAliases[c] = true;\n                            }\n                        }\n                    });\n                    // For \"--optionName\", also set argv['option-name']\n                    flags.aliases[key].concat(key).forEach(function (x) {\n                        if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {\n                            const c = decamelize(x, '-');\n                            if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n                                flags.aliases[key].push(c);\n                                newAliases[c] = true;\n                            }\n                        }\n                    });\n                    flags.aliases[key].forEach(function (x) {\n                        flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {\n                            return x !== y;\n                        }));\n                    });\n                });\n            });\n        }\n        function checkAllAliases(key, flag) {\n            const toCheck = [].concat(flags.aliases[key] || [], key);\n            const keys = Object.keys(flag);\n            const setAlias = toCheck.find(key => keys.includes(key));\n            return setAlias ? flag[setAlias] : false;\n        }\n        function hasAnyFlag(key) {\n            const flagsKeys = Object.keys(flags);\n            const toCheck = [].concat(flagsKeys.map(k => flags[k]));\n            return toCheck.some(function (flag) {\n                return Array.isArray(flag) ? flag.includes(key) : flag[key];\n            });\n        }\n        function hasFlagsMatching(arg, ...patterns) {\n            const toCheck = [].concat(...patterns);\n            return toCheck.some(function (pattern) {\n                const match = arg.match(pattern);\n                return match && hasAnyFlag(match[1]);\n            });\n        }\n        // based on a simplified version of the short flag group parsing logic\n        function hasAllShortFlags(arg) {\n            // if this is a negative number, or doesn't start with a single hyphen, it's not a short flag group\n            if (arg.match(negative) || !arg.match(/^-[^-]+/)) {\n                return false;\n            }\n            let hasAllFlags = true;\n            let next;\n            const letters = arg.slice(1).split('');\n            for (let j = 0; j < letters.length; j++) {\n                next = arg.slice(j + 2);\n                if (!hasAnyFlag(letters[j])) {\n                    hasAllFlags = false;\n                    break;\n                }\n                if ((letters[j + 1] && letters[j + 1] === '=') ||\n                    next === '-' ||\n                    (/[A-Za-z]/.test(letters[j]) && /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) ||\n                    (letters[j + 1] && letters[j + 1].match(/\\W/))) {\n                    break;\n                }\n            }\n            return hasAllFlags;\n        }\n        function isUnknownOptionAsArg(arg) {\n            return configuration['unknown-options-as-args'] && isUnknownOption(arg);\n        }\n        function isUnknownOption(arg) {\n            arg = arg.replace(/^-{3,}/, '--');\n            // ignore negative numbers\n            if (arg.match(negative)) {\n                return false;\n            }\n            // if this is a short option group and all of them are configured, it isn't unknown\n            if (hasAllShortFlags(arg)) {\n                return false;\n            }\n            // e.g. '--count=2'\n            const flagWithEquals = /^-+([^=]+?)=[\\s\\S]*$/;\n            // e.g. '-a' or '--arg'\n            const normalFlag = /^-+([^=]+?)$/;\n            // e.g. '-a-'\n            const flagEndingInHyphen = /^-+([^=]+?)-$/;\n            // e.g. '-abc123'\n            const flagEndingInDigits = /^-+([^=]+?\\d+)$/;\n            // e.g. '-a/usr/local'\n            const flagEndingInNonWordCharacters = /^-+([^=]+?)\\W+.*$/;\n            // check the different types of flag styles, including negatedBoolean, a pattern defined near the start of the parse method\n            return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters);\n        }\n        // make a best effort to pick a default value\n        // for an option based on name and type.\n        function defaultValue(key) {\n            if (!checkAllAliases(key, flags.bools) &&\n                !checkAllAliases(key, flags.counts) &&\n                `${key}` in defaults) {\n                return defaults[key];\n            }\n            else {\n                return defaultForType(guessType(key));\n            }\n        }\n        // return a default value, given the type of a flag.,\n        function defaultForType(type) {\n            const def = {\n                [DefaultValuesForTypeKey.BOOLEAN]: true,\n                [DefaultValuesForTypeKey.STRING]: '',\n                [DefaultValuesForTypeKey.NUMBER]: undefined,\n                [DefaultValuesForTypeKey.ARRAY]: []\n            };\n            return def[type];\n        }\n        // given a flag, enforce a default type.\n        function guessType(key) {\n            let type = DefaultValuesForTypeKey.BOOLEAN;\n            if (checkAllAliases(key, flags.strings))\n                type = DefaultValuesForTypeKey.STRING;\n            else if (checkAllAliases(key, flags.numbers))\n                type = DefaultValuesForTypeKey.NUMBER;\n            else if (checkAllAliases(key, flags.bools))\n                type = DefaultValuesForTypeKey.BOOLEAN;\n            else if (checkAllAliases(key, flags.arrays))\n                type = DefaultValuesForTypeKey.ARRAY;\n            return type;\n        }\n        function isUndefined(num) {\n            return num === undefined;\n        }\n        // check user configuration settings for inconsistencies\n        function checkConfiguration() {\n            // count keys should not be set as array/narg\n            Object.keys(flags.counts).find(key => {\n                if (checkAllAliases(key, flags.arrays)) {\n                    error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key));\n                    return true;\n                }\n                else if (checkAllAliases(key, flags.nargs)) {\n                    error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key));\n                    return true;\n                }\n                return false;\n            });\n        }\n        return {\n            aliases: Object.assign({}, flags.aliases),\n            argv: Object.assign(argvReturn, argv),\n            configuration: configuration,\n            defaulted: Object.assign({}, defaulted),\n            error: error,\n            newAliases: Object.assign({}, newAliases)\n        };\n    }\n}\n// if any aliases reference each other, we should\n// merge them together.\nfunction combineAliases(aliases) {\n    const aliasArrays = [];\n    const combined = Object.create(null);\n    let change = true;\n    // turn alias lookup hash {key: ['alias1', 'alias2']} into\n    // a simple array ['key', 'alias1', 'alias2']\n    Object.keys(aliases).forEach(function (key) {\n        aliasArrays.push([].concat(aliases[key], key));\n    });\n    // combine arrays until zero changes are\n    // made in an iteration.\n    while (change) {\n        change = false;\n        for (let i = 0; i < aliasArrays.length; i++) {\n            for (let ii = i + 1; ii < aliasArrays.length; ii++) {\n                const intersect = aliasArrays[i].filter(function (v) {\n                    return aliasArrays[ii].indexOf(v) !== -1;\n                });\n                if (intersect.length) {\n                    aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);\n                    aliasArrays.splice(ii, 1);\n                    change = true;\n                    break;\n                }\n            }\n        }\n    }\n    // map arrays back to the hash-lookup (de-dupe while\n    // we're at it).\n    aliasArrays.forEach(function (aliasArray) {\n        aliasArray = aliasArray.filter(function (v, i, self) {\n            return self.indexOf(v) === i;\n        });\n        const lastAlias = aliasArray.pop();\n        if (lastAlias !== undefined && typeof lastAlias === 'string') {\n            combined[lastAlias] = aliasArray;\n        }\n    });\n    return combined;\n}\n// this function should only be called when a count is given as an arg\n// it is NOT called to set a default value\n// thus we can start the count at 1 instead of 0\nfunction increment(orig) {\n    return orig !== undefined ? orig + 1 : 1;\n}\n// TODO(bcoe): in the next major version of yargs, switch to\n// Object.create(null) for dot notation:\nfunction sanitizeKey(key) {\n    if (key === '__proto__')\n        return '___proto___';\n    return key;\n}\nfunction stripQuotes(val) {\n    return (typeof val === 'string' &&\n        (val[0] === \"'\" || val[0] === '\"') &&\n        val[val.length - 1] === val[0])\n        ? val.substring(1, val.length - 1)\n        : val;\n}\n", "function getProcessArgvBinIndex() {\n    if (isBundledElectronApp())\n        return 0;\n    return 1;\n}\nfunction isBundledElectronApp() {\n    return isElectronApp() && !process.defaultApp;\n}\nfunction isElectronApp() {\n    return !!process.versions.electron;\n}\nexport function hideBin(argv) {\n    return argv.slice(getProcessArgvBinIndex() + 1);\n}\nexport function getProcessArgvBin() {\n    return process.argv[getProcessArgvBinIndex()];\n}\n", "export class YError extends Error {\n    constructor(msg) {\n        super(msg || 'yargs error');\n        this.name = 'YError';\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, YError);\n        }\n    }\n}\n", "import { readFileSync, statSync, writeFile } from 'fs';\nimport { format } from 'util';\nimport { resolve } from 'path';\nexport default {\n    fs: {\n        readFileSync,\n        writeFile\n    },\n    format,\n    resolve,\n    exists: (file) => {\n        try {\n            return statSync(file).isFile();\n        }\n        catch (err) {\n            return false;\n        }\n    }\n};\n", "let shim;\nclass Y18N {\n    constructor(opts) {\n        // configurable options.\n        opts = opts || {};\n        this.directory = opts.directory || './locales';\n        this.updateFiles = typeof opts.updateFiles === 'boolean' ? opts.updateFiles : true;\n        this.locale = opts.locale || 'en';\n        this.fallbackToLanguage = typeof opts.fallbackToLanguage === 'boolean' ? opts.fallbackToLanguage : true;\n        // internal stuff.\n        this.cache = Object.create(null);\n        this.writeQueue = [];\n    }\n    __(...args) {\n        if (typeof arguments[0] !== 'string') {\n            return this._taggedLiteral(arguments[0], ...arguments);\n        }\n        const str = args.shift();\n        let cb = function () { }; // start with noop.\n        if (typeof args[args.length - 1] === 'function')\n            cb = args.pop();\n        cb = cb || function () { }; // noop.\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        // we've observed a new string, update the language file.\n        if (!this.cache[this.locale][str] && this.updateFiles) {\n            this.cache[this.locale][str] = str;\n            // include the current directory and locale,\n            // since these values could change before the\n            // write is performed.\n            this._enqueueWrite({\n                directory: this.directory,\n                locale: this.locale,\n                cb\n            });\n        }\n        else {\n            cb();\n        }\n        return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args));\n    }\n    __n() {\n        const args = Array.prototype.slice.call(arguments);\n        const singular = args.shift();\n        const plural = args.shift();\n        const quantity = args.shift();\n        let cb = function () { }; // start with noop.\n        if (typeof args[args.length - 1] === 'function')\n            cb = args.pop();\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        let str = quantity === 1 ? singular : plural;\n        if (this.cache[this.locale][singular]) {\n            const entry = this.cache[this.locale][singular];\n            str = entry[quantity === 1 ? 'one' : 'other'];\n        }\n        // we've observed a new string, update the language file.\n        if (!this.cache[this.locale][singular] && this.updateFiles) {\n            this.cache[this.locale][singular] = {\n                one: singular,\n                other: plural\n            };\n            // include the current directory and locale,\n            // since these values could change before the\n            // write is performed.\n            this._enqueueWrite({\n                directory: this.directory,\n                locale: this.locale,\n                cb\n            });\n        }\n        else {\n            cb();\n        }\n        // if a %d placeholder is provided, add quantity\n        // to the arguments expanded by util.format.\n        const values = [str];\n        if (~str.indexOf('%d'))\n            values.push(quantity);\n        return shim.format.apply(shim.format, values.concat(args));\n    }\n    setLocale(locale) {\n        this.locale = locale;\n    }\n    getLocale() {\n        return this.locale;\n    }\n    updateLocale(obj) {\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        for (const key in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                this.cache[this.locale][key] = obj[key];\n            }\n        }\n    }\n    _taggedLiteral(parts, ...args) {\n        let str = '';\n        parts.forEach(function (part, i) {\n            const arg = args[i + 1];\n            str += part;\n            if (typeof arg !== 'undefined') {\n                str += '%s';\n            }\n        });\n        return this.__.apply(this, [str].concat([].slice.call(args, 1)));\n    }\n    _enqueueWrite(work) {\n        this.writeQueue.push(work);\n        if (this.writeQueue.length === 1)\n            this._processWriteQueue();\n    }\n    _processWriteQueue() {\n        const _this = this;\n        const work = this.writeQueue[0];\n        // destructure the enqueued work.\n        const directory = work.directory;\n        const locale = work.locale;\n        const cb = work.cb;\n        const languageFile = this._resolveLocaleFile(directory, locale);\n        const serializedLocale = JSON.stringify(this.cache[locale], null, 2);\n        shim.fs.writeFile(languageFile, serializedLocale, 'utf-8', function (err) {\n            _this.writeQueue.shift();\n            if (_this.writeQueue.length > 0)\n                _this._processWriteQueue();\n            cb(err);\n        });\n    }\n    _readLocaleFile() {\n        let localeLookup = {};\n        const languageFile = this._resolveLocaleFile(this.directory, this.locale);\n        try {\n            // When using a bundler such as webpack, readFileSync may not be defined:\n            if (shim.fs.readFileSync) {\n                localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, 'utf-8'));\n            }\n        }\n        catch (err) {\n            if (err instanceof SyntaxError) {\n                err.message = 'syntax error in ' + languageFile;\n            }\n            if (err.code === 'ENOENT')\n                localeLookup = {};\n            else\n                throw err;\n        }\n        this.cache[this.locale] = localeLookup;\n    }\n    _resolveLocaleFile(directory, locale) {\n        let file = shim.resolve(directory, './', locale + '.json');\n        if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf('_')) {\n            // attempt fallback to language only\n            const languageFile = shim.resolve(directory, './', locale.split('_')[0] + '.json');\n            if (this._fileExistsSync(languageFile))\n                file = languageFile;\n        }\n        return file;\n    }\n    _fileExistsSync(file) {\n        return shim.exists(file);\n    }\n}\nexport function y18n(opts, _shim) {\n    shim = _shim;\n    const y18n = new Y18N(opts);\n    return {\n        __: y18n.__.bind(y18n),\n        __n: y18n.__n.bind(y18n),\n        setLocale: y18n.setLocale.bind(y18n),\n        getLocale: y18n.getLocale.bind(y18n),\n        updateLocale: y18n.updateLocale.bind(y18n),\n        locale: y18n.locale\n    };\n}\n", "import shim from './build/lib/platform-shims/node.js'\nimport { y18n as _y18n } from './build/lib/index.js'\n\nconst y18n = (opts) => {\n  return _y18n(opts, shim)\n}\n\nexport default y18n\n", "export function assertNotStrictEqual(actual, expected, shim, message) {\n    shim.assert.notStrictEqual(actual, expected, message);\n}\nexport function assertSingleKey(actual, shim) {\n    shim.assert.strictEqual(typeof actual, 'string');\n}\nexport function objectKeys(object) {\n    return Object.keys(object);\n}\n", "export function isPromise(maybePromise) {\n    return (!!maybePromise &&\n        !!maybePromise.then &&\n        typeof maybePromise.then === 'function');\n}\n", "export function parseCommand(cmd) {\n    const extraSpacesStrippedCommand = cmd.replace(/\\s{2,}/g, ' ');\n    const splitCommand = extraSpacesStrippedCommand.split(/\\s+(?![^[]*]|[^<]*>)/);\n    const bregex = /\\.*[\\][<>]/g;\n    const firstCommand = splitCommand.shift();\n    if (!firstCommand)\n        throw new Error(`No command found in: ${cmd}`);\n    const parsedCommand = {\n        cmd: firstCommand.replace(bregex, ''),\n        demanded: [],\n        optional: [],\n    };\n    splitCommand.forEach((cmd, i) => {\n        let variadic = false;\n        cmd = cmd.replace(/\\s/g, '');\n        if (/\\.+[\\]>]/.test(cmd) && i === splitCommand.length - 1)\n            variadic = true;\n        if (/^\\[/.test(cmd)) {\n            parsedCommand.optional.push({\n                cmd: cmd.replace(bregex, '').split('|'),\n                variadic,\n            });\n        }\n        else {\n            parsedCommand.demanded.push({\n                cmd: cmd.replace(bregex, '').split('|'),\n                variadic,\n            });\n        }\n    });\n    return parsedCommand;\n}\n", "import { YError } from './yerror.js';\nimport { parseCommand } from './parse-command.js';\nconst positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth'];\nexport function argsert(arg1, arg2, arg3) {\n    function parseArgs() {\n        return typeof arg1 === 'object'\n            ? [{ demanded: [], optional: [] }, arg1, arg2]\n            : [\n                parseCommand(`cmd ${arg1}`),\n                arg2,\n                arg3,\n            ];\n    }\n    try {\n        let position = 0;\n        const [parsed, callerArguments, _length] = parseArgs();\n        const args = [].slice.call(callerArguments);\n        while (args.length && args[args.length - 1] === undefined)\n            args.pop();\n        const length = _length || args.length;\n        if (length < parsed.demanded.length) {\n            throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`);\n        }\n        const totalCommands = parsed.demanded.length + parsed.optional.length;\n        if (length > totalCommands) {\n            throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`);\n        }\n        parsed.demanded.forEach(demanded => {\n            const arg = args.shift();\n            const observedType = guessType(arg);\n            const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*');\n            if (matchingTypes.length === 0)\n                argumentTypeError(observedType, demanded.cmd, position);\n            position += 1;\n        });\n        parsed.optional.forEach(optional => {\n            if (args.length === 0)\n                return;\n            const arg = args.shift();\n            const observedType = guessType(arg);\n            const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*');\n            if (matchingTypes.length === 0)\n                argumentTypeError(observedType, optional.cmd, position);\n            position += 1;\n        });\n    }\n    catch (err) {\n        console.warn(err.stack);\n    }\n}\nfunction guessType(arg) {\n    if (Array.isArray(arg)) {\n        return 'array';\n    }\n    else if (arg === null) {\n        return 'null';\n    }\n    return typeof arg;\n}\nfunction argumentTypeError(observedType, allowedTypes, position) {\n    throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`);\n}\n", "import { argsert } from './argsert.js';\nimport { isPromise } from './utils/is-promise.js';\nexport class GlobalMiddleware {\n    constructor(yargs) {\n        this.globalMiddleware = [];\n        this.frozens = [];\n        this.yargs = yargs;\n    }\n    addMiddleware(callback, applyBeforeValidation, global = true, mutates = false) {\n        argsert(' [boolean] [boolean] [boolean]', [callback, applyBeforeValidation, global], arguments.length);\n        if (Array.isArray(callback)) {\n            for (let i = 0; i < callback.length; i++) {\n                if (typeof callback[i] !== 'function') {\n                    throw Error('middleware must be a function');\n                }\n                const m = callback[i];\n                m.applyBeforeValidation = applyBeforeValidation;\n                m.global = global;\n            }\n            Array.prototype.push.apply(this.globalMiddleware, callback);\n        }\n        else if (typeof callback === 'function') {\n            const m = callback;\n            m.applyBeforeValidation = applyBeforeValidation;\n            m.global = global;\n            m.mutates = mutates;\n            this.globalMiddleware.push(callback);\n        }\n        return this.yargs;\n    }\n    addCoerceMiddleware(callback, option) {\n        const aliases = this.yargs.getAliases();\n        this.globalMiddleware = this.globalMiddleware.filter(m => {\n            const toCheck = [...(aliases[option] || []), option];\n            if (!m.option)\n                return true;\n            else\n                return !toCheck.includes(m.option);\n        });\n        callback.option = option;\n        return this.addMiddleware(callback, true, true, true);\n    }\n    getMiddleware() {\n        return this.globalMiddleware;\n    }\n    freeze() {\n        this.frozens.push([...this.globalMiddleware]);\n    }\n    unfreeze() {\n        const frozen = this.frozens.pop();\n        if (frozen !== undefined)\n            this.globalMiddleware = frozen;\n    }\n    reset() {\n        this.globalMiddleware = this.globalMiddleware.filter(m => m.global);\n    }\n}\nexport function commandMiddlewareFactory(commandMiddleware) {\n    if (!commandMiddleware)\n        return [];\n    return commandMiddleware.map(middleware => {\n        middleware.applyBeforeValidation = false;\n        return middleware;\n    });\n}\nexport function applyMiddleware(argv, yargs, middlewares, beforeValidation) {\n    return middlewares.reduce((acc, middleware) => {\n        if (middleware.applyBeforeValidation !== beforeValidation) {\n            return acc;\n        }\n        if (middleware.mutates) {\n            if (middleware.applied)\n                return acc;\n            middleware.applied = true;\n        }\n        if (isPromise(acc)) {\n            return acc\n                .then(initialObj => Promise.all([initialObj, middleware(initialObj, yargs)]))\n                .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj));\n        }\n        else {\n            const result = middleware(acc, yargs);\n            return isPromise(result)\n                ? result.then(middlewareObj => Object.assign(acc, middlewareObj))\n                : Object.assign(acc, result);\n        }\n    }, argv);\n}\n", "import { isPromise } from './is-promise.js';\nexport function maybeAsyncResult(getResult, resultHandler, errorHandler = (err) => {\n    throw err;\n}) {\n    try {\n        const result = isFunction(getResult) ? getResult() : getResult;\n        return isPromise(result)\n            ? result.then((result) => resultHandler(result))\n            : resultHandler(result);\n    }\n    catch (err) {\n        return errorHandler(err);\n    }\n}\nfunction isFunction(arg) {\n    return typeof arg === 'function';\n}\n", "export default function whichModule(exported) {\n    if (typeof require === 'undefined')\n        return null;\n    for (let i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) {\n        mod = require.cache[files[i]];\n        if (mod.exports === exported)\n            return mod;\n    }\n    return null;\n}\n", "import { assertNotStrictEqual, } from './typings/common-types.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { applyMiddleware, commandMiddlewareFactory, } from './middleware.js';\nimport { parseCommand } from './parse-command.js';\nimport { isYargsInstance, } from './yargs-factory.js';\nimport { maybeAsyncResult } from './utils/maybe-async-result.js';\nimport whichModule from './utils/which-module.js';\nconst DEFAULT_MARKER = /(^\\*)|(^\\$0)/;\nexport class CommandInstance {\n    constructor(usage, validation, globalMiddleware, shim) {\n        this.requireCache = new Set();\n        this.handlers = {};\n        this.aliasMap = {};\n        this.frozens = [];\n        this.shim = shim;\n        this.usage = usage;\n        this.globalMiddleware = globalMiddleware;\n        this.validation = validation;\n    }\n    addDirectory(dir, req, callerFile, opts) {\n        opts = opts || {};\n        if (typeof opts.recurse !== 'boolean')\n            opts.recurse = false;\n        if (!Array.isArray(opts.extensions))\n            opts.extensions = ['js'];\n        const parentVisit = typeof opts.visit === 'function' ? opts.visit : (o) => o;\n        opts.visit = (obj, joined, filename) => {\n            const visited = parentVisit(obj, joined, filename);\n            if (visited) {\n                if (this.requireCache.has(joined))\n                    return visited;\n                else\n                    this.requireCache.add(joined);\n                this.addHandler(visited);\n            }\n            return visited;\n        };\n        this.shim.requireDirectory({ require: req, filename: callerFile }, dir, opts);\n    }\n    addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) {\n        let aliases = [];\n        const middlewares = commandMiddlewareFactory(commandMiddleware);\n        handler = handler || (() => { });\n        if (Array.isArray(cmd)) {\n            if (isCommandAndAliases(cmd)) {\n                [cmd, ...aliases] = cmd;\n            }\n            else {\n                for (const command of cmd) {\n                    this.addHandler(command);\n                }\n            }\n        }\n        else if (isCommandHandlerDefinition(cmd)) {\n            let command = Array.isArray(cmd.command) || typeof cmd.command === 'string'\n                ? cmd.command\n                : this.moduleName(cmd);\n            if (cmd.aliases)\n                command = [].concat(command).concat(cmd.aliases);\n            this.addHandler(command, this.extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated);\n            return;\n        }\n        else if (isCommandBuilderDefinition(builder)) {\n            this.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated);\n            return;\n        }\n        if (typeof cmd === 'string') {\n            const parsedCommand = parseCommand(cmd);\n            aliases = aliases.map(alias => parseCommand(alias).cmd);\n            let isDefault = false;\n            const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => {\n                if (DEFAULT_MARKER.test(c)) {\n                    isDefault = true;\n                    return false;\n                }\n                return true;\n            });\n            if (parsedAliases.length === 0 && isDefault)\n                parsedAliases.push('$0');\n            if (isDefault) {\n                parsedCommand.cmd = parsedAliases[0];\n                aliases = parsedAliases.slice(1);\n                cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd);\n            }\n            aliases.forEach(alias => {\n                this.aliasMap[alias] = parsedCommand.cmd;\n            });\n            if (description !== false) {\n                this.usage.command(cmd, description, isDefault, aliases, deprecated);\n            }\n            this.handlers[parsedCommand.cmd] = {\n                original: cmd,\n                description,\n                handler,\n                builder: builder || {},\n                middlewares,\n                deprecated,\n                demanded: parsedCommand.demanded,\n                optional: parsedCommand.optional,\n            };\n            if (isDefault)\n                this.defaultCommand = this.handlers[parsedCommand.cmd];\n        }\n    }\n    getCommandHandlers() {\n        return this.handlers;\n    }\n    getCommands() {\n        return Object.keys(this.handlers).concat(Object.keys(this.aliasMap));\n    }\n    hasDefaultCommand() {\n        return !!this.defaultCommand;\n    }\n    runCommand(command, yargs, parsed, commandIndex, helpOnly, helpOrVersionSet) {\n        const commandHandler = this.handlers[command] ||\n            this.handlers[this.aliasMap[command]] ||\n            this.defaultCommand;\n        const currentContext = yargs.getInternalMethods().getContext();\n        const parentCommands = currentContext.commands.slice();\n        const isDefaultCommand = !command;\n        if (command) {\n            currentContext.commands.push(command);\n            currentContext.fullCommands.push(commandHandler.original);\n        }\n        const builderResult = this.applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, parsed.aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet);\n        return isPromise(builderResult)\n            ? builderResult.then(result => this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, result.innerArgv, currentContext, helpOnly, result.aliases, yargs))\n            : this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, builderResult.innerArgv, currentContext, helpOnly, builderResult.aliases, yargs);\n    }\n    applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet) {\n        const builder = commandHandler.builder;\n        let innerYargs = yargs;\n        if (isCommandBuilderCallback(builder)) {\n            yargs.getInternalMethods().getUsageInstance().freeze();\n            const builderOutput = builder(yargs.getInternalMethods().reset(aliases), helpOrVersionSet);\n            if (isPromise(builderOutput)) {\n                return builderOutput.then(output => {\n                    innerYargs = isYargsInstance(output) ? output : yargs;\n                    return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly);\n                });\n            }\n        }\n        else if (isCommandBuilderOptionDefinitions(builder)) {\n            yargs.getInternalMethods().getUsageInstance().freeze();\n            innerYargs = yargs.getInternalMethods().reset(aliases);\n            Object.keys(commandHandler.builder).forEach(key => {\n                innerYargs.option(key, builder[key]);\n            });\n        }\n        return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly);\n    }\n    parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly) {\n        if (isDefaultCommand)\n            innerYargs.getInternalMethods().getUsageInstance().unfreeze(true);\n        if (this.shouldUpdateUsage(innerYargs)) {\n            innerYargs\n                .getInternalMethods()\n                .getUsageInstance()\n                .usage(this.usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description);\n        }\n        const innerArgv = innerYargs\n            .getInternalMethods()\n            .runYargsParserAndExecuteCommands(null, undefined, true, commandIndex, helpOnly);\n        return isPromise(innerArgv)\n            ? innerArgv.then(argv => ({\n                aliases: innerYargs.parsed.aliases,\n                innerArgv: argv,\n            }))\n            : {\n                aliases: innerYargs.parsed.aliases,\n                innerArgv: innerArgv,\n            };\n    }\n    shouldUpdateUsage(yargs) {\n        return (!yargs.getInternalMethods().getUsageInstance().getUsageDisabled() &&\n            yargs.getInternalMethods().getUsageInstance().getUsage().length === 0);\n    }\n    usageFromParentCommandsCommandHandler(parentCommands, commandHandler) {\n        const c = DEFAULT_MARKER.test(commandHandler.original)\n            ? commandHandler.original.replace(DEFAULT_MARKER, '').trim()\n            : commandHandler.original;\n        const pc = parentCommands.filter(c => {\n            return !DEFAULT_MARKER.test(c);\n        });\n        pc.push(c);\n        return `$0 ${pc.join(' ')}`;\n    }\n    handleValidationAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, aliases, yargs, middlewares, positionalMap) {\n        if (!yargs.getInternalMethods().getHasOutput()) {\n            const validation = yargs\n                .getInternalMethods()\n                .runValidation(aliases, positionalMap, yargs.parsed.error, isDefaultCommand);\n            innerArgv = maybeAsyncResult(innerArgv, result => {\n                validation(result);\n                return result;\n            });\n        }\n        if (commandHandler.handler && !yargs.getInternalMethods().getHasOutput()) {\n            yargs.getInternalMethods().setHasOutput();\n            const populateDoubleDash = !!yargs.getOptions().configuration['populate--'];\n            yargs\n                .getInternalMethods()\n                .postProcess(innerArgv, populateDoubleDash, false, false);\n            innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false);\n            innerArgv = maybeAsyncResult(innerArgv, result => {\n                const handlerResult = commandHandler.handler(result);\n                return isPromise(handlerResult)\n                    ? handlerResult.then(() => result)\n                    : result;\n            });\n            if (!isDefaultCommand) {\n                yargs.getInternalMethods().getUsageInstance().cacheHelpMessage();\n            }\n            if (isPromise(innerArgv) &&\n                !yargs.getInternalMethods().hasParseCallback()) {\n                innerArgv.catch(error => {\n                    try {\n                        yargs.getInternalMethods().getUsageInstance().fail(null, error);\n                    }\n                    catch (_err) {\n                    }\n                });\n            }\n        }\n        if (!isDefaultCommand) {\n            currentContext.commands.pop();\n            currentContext.fullCommands.pop();\n        }\n        return innerArgv;\n    }\n    applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) {\n        let positionalMap = {};\n        if (helpOnly)\n            return innerArgv;\n        if (!yargs.getInternalMethods().getHasOutput()) {\n            positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs);\n        }\n        const middlewares = this.globalMiddleware\n            .getMiddleware()\n            .slice(0)\n            .concat(commandHandler.middlewares);\n        const maybePromiseArgv = applyMiddleware(innerArgv, yargs, middlewares, true);\n        return isPromise(maybePromiseArgv)\n            ? maybePromiseArgv.then(resolvedInnerArgv => this.handleValidationAndGetResult(isDefaultCommand, commandHandler, resolvedInnerArgv, currentContext, aliases, yargs, middlewares, positionalMap))\n            : this.handleValidationAndGetResult(isDefaultCommand, commandHandler, maybePromiseArgv, currentContext, aliases, yargs, middlewares, positionalMap);\n    }\n    populatePositionals(commandHandler, argv, context, yargs) {\n        argv._ = argv._.slice(context.commands.length);\n        const demanded = commandHandler.demanded.slice(0);\n        const optional = commandHandler.optional.slice(0);\n        const positionalMap = {};\n        this.validation.positionalCount(demanded.length, argv._.length);\n        while (demanded.length) {\n            const demand = demanded.shift();\n            this.populatePositional(demand, argv, positionalMap);\n        }\n        while (optional.length) {\n            const maybe = optional.shift();\n            this.populatePositional(maybe, argv, positionalMap);\n        }\n        argv._ = context.commands.concat(argv._.map(a => '' + a));\n        this.postProcessPositionals(argv, positionalMap, this.cmdToParseOptions(commandHandler.original), yargs);\n        return positionalMap;\n    }\n    populatePositional(positional, argv, positionalMap) {\n        const cmd = positional.cmd[0];\n        if (positional.variadic) {\n            positionalMap[cmd] = argv._.splice(0).map(String);\n        }\n        else {\n            if (argv._.length)\n                positionalMap[cmd] = [String(argv._.shift())];\n        }\n    }\n    cmdToParseOptions(cmdString) {\n        const parseOptions = {\n            array: [],\n            default: {},\n            alias: {},\n            demand: {},\n        };\n        const parsed = parseCommand(cmdString);\n        parsed.demanded.forEach(d => {\n            const [cmd, ...aliases] = d.cmd;\n            if (d.variadic) {\n                parseOptions.array.push(cmd);\n                parseOptions.default[cmd] = [];\n            }\n            parseOptions.alias[cmd] = aliases;\n            parseOptions.demand[cmd] = true;\n        });\n        parsed.optional.forEach(o => {\n            const [cmd, ...aliases] = o.cmd;\n            if (o.variadic) {\n                parseOptions.array.push(cmd);\n                parseOptions.default[cmd] = [];\n            }\n            parseOptions.alias[cmd] = aliases;\n        });\n        return parseOptions;\n    }\n    postProcessPositionals(argv, positionalMap, parseOptions, yargs) {\n        const options = Object.assign({}, yargs.getOptions());\n        options.default = Object.assign(parseOptions.default, options.default);\n        for (const key of Object.keys(parseOptions.alias)) {\n            options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]);\n        }\n        options.array = options.array.concat(parseOptions.array);\n        options.config = {};\n        const unparsed = [];\n        Object.keys(positionalMap).forEach(key => {\n            positionalMap[key].map(value => {\n                if (options.configuration['unknown-options-as-args'])\n                    options.key[key] = true;\n                unparsed.push(`--${key}`);\n                unparsed.push(value);\n            });\n        });\n        if (!unparsed.length)\n            return;\n        const config = Object.assign({}, options.configuration, {\n            'populate--': false,\n        });\n        const parsed = this.shim.Parser.detailed(unparsed, Object.assign({}, options, {\n            configuration: config,\n        }));\n        if (parsed.error) {\n            yargs\n                .getInternalMethods()\n                .getUsageInstance()\n                .fail(parsed.error.message, parsed.error);\n        }\n        else {\n            const positionalKeys = Object.keys(positionalMap);\n            Object.keys(positionalMap).forEach(key => {\n                positionalKeys.push(...parsed.aliases[key]);\n            });\n            Object.keys(parsed.argv).forEach(key => {\n                if (positionalKeys.includes(key)) {\n                    if (!positionalMap[key])\n                        positionalMap[key] = parsed.argv[key];\n                    if (!this.isInConfigs(yargs, key) &&\n                        !this.isDefaulted(yargs, key) &&\n                        Object.prototype.hasOwnProperty.call(argv, key) &&\n                        Object.prototype.hasOwnProperty.call(parsed.argv, key) &&\n                        (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) {\n                        argv[key] = [].concat(argv[key], parsed.argv[key]);\n                    }\n                    else {\n                        argv[key] = parsed.argv[key];\n                    }\n                }\n            });\n        }\n    }\n    isDefaulted(yargs, key) {\n        const { default: defaults } = yargs.getOptions();\n        return (Object.prototype.hasOwnProperty.call(defaults, key) ||\n            Object.prototype.hasOwnProperty.call(defaults, this.shim.Parser.camelCase(key)));\n    }\n    isInConfigs(yargs, key) {\n        const { configObjects } = yargs.getOptions();\n        return (configObjects.some(c => Object.prototype.hasOwnProperty.call(c, key)) ||\n            configObjects.some(c => Object.prototype.hasOwnProperty.call(c, this.shim.Parser.camelCase(key))));\n    }\n    runDefaultBuilderOn(yargs) {\n        if (!this.defaultCommand)\n            return;\n        if (this.shouldUpdateUsage(yargs)) {\n            const commandString = DEFAULT_MARKER.test(this.defaultCommand.original)\n                ? this.defaultCommand.original\n                : this.defaultCommand.original.replace(/^[^[\\]<>]*/, '$0 ');\n            yargs\n                .getInternalMethods()\n                .getUsageInstance()\n                .usage(commandString, this.defaultCommand.description);\n        }\n        const builder = this.defaultCommand.builder;\n        if (isCommandBuilderCallback(builder)) {\n            return builder(yargs, true);\n        }\n        else if (!isCommandBuilderDefinition(builder)) {\n            Object.keys(builder).forEach(key => {\n                yargs.option(key, builder[key]);\n            });\n        }\n        return undefined;\n    }\n    moduleName(obj) {\n        const mod = whichModule(obj);\n        if (!mod)\n            throw new Error(`No command name given for module: ${this.shim.inspect(obj)}`);\n        return this.commandFromFilename(mod.filename);\n    }\n    commandFromFilename(filename) {\n        return this.shim.path.basename(filename, this.shim.path.extname(filename));\n    }\n    extractDesc({ describe, description, desc }) {\n        for (const test of [describe, description, desc]) {\n            if (typeof test === 'string' || test === false)\n                return test;\n            assertNotStrictEqual(test, true, this.shim);\n        }\n        return false;\n    }\n    freeze() {\n        this.frozens.push({\n            handlers: this.handlers,\n            aliasMap: this.aliasMap,\n            defaultCommand: this.defaultCommand,\n        });\n    }\n    unfreeze() {\n        const frozen = this.frozens.pop();\n        assertNotStrictEqual(frozen, undefined, this.shim);\n        ({\n            handlers: this.handlers,\n            aliasMap: this.aliasMap,\n            defaultCommand: this.defaultCommand,\n        } = frozen);\n    }\n    reset() {\n        this.handlers = {};\n        this.aliasMap = {};\n        this.defaultCommand = undefined;\n        this.requireCache = new Set();\n        return this;\n    }\n}\nexport function command(usage, validation, globalMiddleware, shim) {\n    return new CommandInstance(usage, validation, globalMiddleware, shim);\n}\nexport function isCommandBuilderDefinition(builder) {\n    return (typeof builder === 'object' &&\n        !!builder.builder &&\n        typeof builder.handler === 'function');\n}\nfunction isCommandAndAliases(cmd) {\n    return cmd.every(c => typeof c === 'string');\n}\nexport function isCommandBuilderCallback(builder) {\n    return typeof builder === 'function';\n}\nfunction isCommandBuilderOptionDefinitions(builder) {\n    return typeof builder === 'object';\n}\nexport function isCommandHandlerDefinition(cmd) {\n    return typeof cmd === 'object' && !Array.isArray(cmd);\n}\n", "import { objectKeys } from '../typings/common-types.js';\nexport function objFilter(original = {}, filter = () => true) {\n    const obj = {};\n    objectKeys(original).forEach(key => {\n        if (filter(key, original[key])) {\n            obj[key] = original[key];\n        }\n    });\n    return obj;\n}\n", "export default function setBlocking(blocking) {\n    if (typeof process === 'undefined')\n        return;\n    [process.stdout, process.stderr].forEach(_stream => {\n        const stream = _stream;\n        if (stream._handle &&\n            stream.isTTY &&\n            typeof stream._handle.setBlocking === 'function') {\n            stream._handle.setBlocking(blocking);\n        }\n    });\n}\n", "import { objFilter } from './utils/obj-filter.js';\nimport { YError } from './yerror.js';\nimport setBlocking from './utils/set-blocking.js';\nfunction isBoolean(fail) {\n    return typeof fail === 'boolean';\n}\nexport function usage(yargs, shim) {\n    const __ = shim.y18n.__;\n    const self = {};\n    const fails = [];\n    self.failFn = function failFn(f) {\n        fails.push(f);\n    };\n    let failMessage = null;\n    let globalFailMessage = null;\n    let showHelpOnFail = true;\n    self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) {\n        const [enabled, message] = typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2];\n        if (yargs.getInternalMethods().isGlobalContext()) {\n            globalFailMessage = message;\n        }\n        failMessage = message;\n        showHelpOnFail = enabled;\n        return self;\n    };\n    let failureOutput = false;\n    self.fail = function fail(msg, err) {\n        const logger = yargs.getInternalMethods().getLoggerInstance();\n        if (fails.length) {\n            for (let i = fails.length - 1; i >= 0; --i) {\n                const fail = fails[i];\n                if (isBoolean(fail)) {\n                    if (err)\n                        throw err;\n                    else if (msg)\n                        throw Error(msg);\n                }\n                else {\n                    fail(msg, err, self);\n                }\n            }\n        }\n        else {\n            if (yargs.getExitProcess())\n                setBlocking(true);\n            if (!failureOutput) {\n                failureOutput = true;\n                if (showHelpOnFail) {\n                    yargs.showHelp('error');\n                    logger.error();\n                }\n                if (msg || err)\n                    logger.error(msg || err);\n                const globalOrCommandFailMessage = failMessage || globalFailMessage;\n                if (globalOrCommandFailMessage) {\n                    if (msg || err)\n                        logger.error('');\n                    logger.error(globalOrCommandFailMessage);\n                }\n            }\n            err = err || new YError(msg);\n            if (yargs.getExitProcess()) {\n                return yargs.exit(1);\n            }\n            else if (yargs.getInternalMethods().hasParseCallback()) {\n                return yargs.exit(1, err);\n            }\n            else {\n                throw err;\n            }\n        }\n    };\n    let usages = [];\n    let usageDisabled = false;\n    self.usage = (msg, description) => {\n        if (msg === null) {\n            usageDisabled = true;\n            usages = [];\n            return self;\n        }\n        usageDisabled = false;\n        usages.push([msg, description || '']);\n        return self;\n    };\n    self.getUsage = () => {\n        return usages;\n    };\n    self.getUsageDisabled = () => {\n        return usageDisabled;\n    };\n    self.getPositionalGroupName = () => {\n        return __('Positionals:');\n    };\n    let examples = [];\n    self.example = (cmd, description) => {\n        examples.push([cmd, description || '']);\n    };\n    let commands = [];\n    self.command = function command(cmd, description, isDefault, aliases, deprecated = false) {\n        if (isDefault) {\n            commands = commands.map(cmdArray => {\n                cmdArray[2] = false;\n                return cmdArray;\n            });\n        }\n        commands.push([cmd, description || '', isDefault, aliases, deprecated]);\n    };\n    self.getCommands = () => commands;\n    let descriptions = {};\n    self.describe = function describe(keyOrKeys, desc) {\n        if (Array.isArray(keyOrKeys)) {\n            keyOrKeys.forEach(k => {\n                self.describe(k, desc);\n            });\n        }\n        else if (typeof keyOrKeys === 'object') {\n            Object.keys(keyOrKeys).forEach(k => {\n                self.describe(k, keyOrKeys[k]);\n            });\n        }\n        else {\n            descriptions[keyOrKeys] = desc;\n        }\n    };\n    self.getDescriptions = () => descriptions;\n    let epilogs = [];\n    self.epilog = msg => {\n        epilogs.push(msg);\n    };\n    let wrapSet = false;\n    let wrap;\n    self.wrap = cols => {\n        wrapSet = true;\n        wrap = cols;\n    };\n    self.getWrap = () => {\n        if (shim.getEnv('YARGS_DISABLE_WRAP')) {\n            return null;\n        }\n        if (!wrapSet) {\n            wrap = windowWidth();\n            wrapSet = true;\n        }\n        return wrap;\n    };\n    const deferY18nLookupPrefix = '__yargsString__:';\n    self.deferY18nLookup = str => deferY18nLookupPrefix + str;\n    self.help = function help() {\n        if (cachedHelpMessage)\n            return cachedHelpMessage;\n        normalizeAliases();\n        const base$0 = yargs.customScriptName\n            ? yargs.$0\n            : shim.path.basename(yargs.$0);\n        const demandedOptions = yargs.getDemandedOptions();\n        const demandedCommands = yargs.getDemandedCommands();\n        const deprecatedOptions = yargs.getDeprecatedOptions();\n        const groups = yargs.getGroups();\n        const options = yargs.getOptions();\n        let keys = [];\n        keys = keys.concat(Object.keys(descriptions));\n        keys = keys.concat(Object.keys(demandedOptions));\n        keys = keys.concat(Object.keys(demandedCommands));\n        keys = keys.concat(Object.keys(options.default));\n        keys = keys.filter(filterHiddenOptions);\n        keys = Object.keys(keys.reduce((acc, key) => {\n            if (key !== '_')\n                acc[key] = true;\n            return acc;\n        }, {}));\n        const theWrap = self.getWrap();\n        const ui = shim.cliui({\n            width: theWrap,\n            wrap: !!theWrap,\n        });\n        if (!usageDisabled) {\n            if (usages.length) {\n                usages.forEach(usage => {\n                    ui.div({ text: `${usage[0].replace(/\\$0/g, base$0)}` });\n                    if (usage[1]) {\n                        ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] });\n                    }\n                });\n                ui.div();\n            }\n            else if (commands.length) {\n                let u = null;\n                if (demandedCommands._) {\n                    u = `${base$0} <${__('command')}>\\n`;\n                }\n                else {\n                    u = `${base$0} [${__('command')}]\\n`;\n                }\n                ui.div(`${u}`);\n            }\n        }\n        if (commands.length > 1 || (commands.length === 1 && !commands[0][2])) {\n            ui.div(__('Commands:'));\n            const context = yargs.getInternalMethods().getContext();\n            const parentCommands = context.commands.length\n                ? `${context.commands.join(' ')} `\n                : '';\n            if (yargs.getInternalMethods().getParserConfiguration()['sort-commands'] ===\n                true) {\n                commands = commands.sort((a, b) => a[0].localeCompare(b[0]));\n            }\n            const prefix = base$0 ? `${base$0} ` : '';\n            commands.forEach(command => {\n                const commandString = `${prefix}${parentCommands}${command[0].replace(/^\\$0 ?/, '')}`;\n                ui.span({\n                    text: commandString,\n                    padding: [0, 2, 0, 2],\n                    width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4,\n                }, { text: command[1] });\n                const hints = [];\n                if (command[2])\n                    hints.push(`[${__('default')}]`);\n                if (command[3] && command[3].length) {\n                    hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`);\n                }\n                if (command[4]) {\n                    if (typeof command[4] === 'string') {\n                        hints.push(`[${__('deprecated: %s', command[4])}]`);\n                    }\n                    else {\n                        hints.push(`[${__('deprecated')}]`);\n                    }\n                }\n                if (hints.length) {\n                    ui.div({\n                        text: hints.join(' '),\n                        padding: [0, 0, 0, 2],\n                        align: 'right',\n                    });\n                }\n                else {\n                    ui.div();\n                }\n            });\n            ui.div();\n        }\n        const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []);\n        keys = keys.filter(key => !yargs.parsed.newAliases[key] &&\n            aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1));\n        const defaultGroup = __('Options:');\n        if (!groups[defaultGroup])\n            groups[defaultGroup] = [];\n        addUngroupedKeys(keys, options.alias, groups, defaultGroup);\n        const isLongSwitch = (sw) => /^--/.test(getText(sw));\n        const displayedGroups = Object.keys(groups)\n            .filter(groupName => groups[groupName].length > 0)\n            .map(groupName => {\n            const normalizedKeys = groups[groupName]\n                .filter(filterHiddenOptions)\n                .map(key => {\n                if (aliasKeys.includes(key))\n                    return key;\n                for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) {\n                    if ((options.alias[aliasKey] || []).includes(key))\n                        return aliasKey;\n                }\n                return key;\n            });\n            return { groupName, normalizedKeys };\n        })\n            .filter(({ normalizedKeys }) => normalizedKeys.length > 0)\n            .map(({ groupName, normalizedKeys }) => {\n            const switches = normalizedKeys.reduce((acc, key) => {\n                acc[key] = [key]\n                    .concat(options.alias[key] || [])\n                    .map(sw => {\n                    if (groupName === self.getPositionalGroupName())\n                        return sw;\n                    else {\n                        return ((/^[0-9]$/.test(sw)\n                            ? options.boolean.includes(key)\n                                ? '-'\n                                : '--'\n                            : sw.length > 1\n                                ? '--'\n                                : '-') + sw);\n                    }\n                })\n                    .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2)\n                    ? 0\n                    : isLongSwitch(sw1)\n                        ? 1\n                        : -1)\n                    .join(', ');\n                return acc;\n            }, {});\n            return { groupName, normalizedKeys, switches };\n        });\n        const shortSwitchesUsed = displayedGroups\n            .filter(({ groupName }) => groupName !== self.getPositionalGroupName())\n            .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key])));\n        if (shortSwitchesUsed) {\n            displayedGroups\n                .filter(({ groupName }) => groupName !== self.getPositionalGroupName())\n                .forEach(({ normalizedKeys, switches }) => {\n                normalizedKeys.forEach(key => {\n                    if (isLongSwitch(switches[key])) {\n                        switches[key] = addIndentation(switches[key], '-x, '.length);\n                    }\n                });\n            });\n        }\n        displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => {\n            ui.div(groupName);\n            normalizedKeys.forEach(key => {\n                const kswitch = switches[key];\n                let desc = descriptions[key] || '';\n                let type = null;\n                if (desc.includes(deferY18nLookupPrefix))\n                    desc = __(desc.substring(deferY18nLookupPrefix.length));\n                if (options.boolean.includes(key))\n                    type = `[${__('boolean')}]`;\n                if (options.count.includes(key))\n                    type = `[${__('count')}]`;\n                if (options.string.includes(key))\n                    type = `[${__('string')}]`;\n                if (options.normalize.includes(key))\n                    type = `[${__('string')}]`;\n                if (options.array.includes(key))\n                    type = `[${__('array')}]`;\n                if (options.number.includes(key))\n                    type = `[${__('number')}]`;\n                const deprecatedExtra = (deprecated) => typeof deprecated === 'string'\n                    ? `[${__('deprecated: %s', deprecated)}]`\n                    : `[${__('deprecated')}]`;\n                const extra = [\n                    key in deprecatedOptions\n                        ? deprecatedExtra(deprecatedOptions[key])\n                        : null,\n                    type,\n                    key in demandedOptions ? `[${__('required')}]` : null,\n                    options.choices && options.choices[key]\n                        ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]`\n                        : null,\n                    defaultString(options.default[key], options.defaultDescription[key]),\n                ]\n                    .filter(Boolean)\n                    .join(' ');\n                ui.span({\n                    text: getText(kswitch),\n                    padding: [0, 2, 0, 2 + getIndentation(kswitch)],\n                    width: maxWidth(switches, theWrap) + 4,\n                }, desc);\n                const shouldHideOptionExtras = yargs.getInternalMethods().getUsageConfiguration()['hide-types'] ===\n                    true;\n                if (extra && !shouldHideOptionExtras)\n                    ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' });\n                else\n                    ui.div();\n            });\n            ui.div();\n        });\n        if (examples.length) {\n            ui.div(__('Examples:'));\n            examples.forEach(example => {\n                example[0] = example[0].replace(/\\$0/g, base$0);\n            });\n            examples.forEach(example => {\n                if (example[1] === '') {\n                    ui.div({\n                        text: example[0],\n                        padding: [0, 2, 0, 2],\n                    });\n                }\n                else {\n                    ui.div({\n                        text: example[0],\n                        padding: [0, 2, 0, 2],\n                        width: maxWidth(examples, theWrap) + 4,\n                    }, {\n                        text: example[1],\n                    });\n                }\n            });\n            ui.div();\n        }\n        if (epilogs.length > 0) {\n            const e = epilogs\n                .map(epilog => epilog.replace(/\\$0/g, base$0))\n                .join('\\n');\n            ui.div(`${e}\\n`);\n        }\n        return ui.toString().replace(/\\s*$/, '');\n    };\n    function maxWidth(table, theWrap, modifier) {\n        let width = 0;\n        if (!Array.isArray(table)) {\n            table = Object.values(table).map(v => [v]);\n        }\n        table.forEach(v => {\n            width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width);\n        });\n        if (theWrap)\n            width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10));\n        return width;\n    }\n    function normalizeAliases() {\n        const demandedOptions = yargs.getDemandedOptions();\n        const options = yargs.getOptions();\n        (Object.keys(options.alias) || []).forEach(key => {\n            options.alias[key].forEach(alias => {\n                if (descriptions[alias])\n                    self.describe(key, descriptions[alias]);\n                if (alias in demandedOptions)\n                    yargs.demandOption(key, demandedOptions[alias]);\n                if (options.boolean.includes(alias))\n                    yargs.boolean(key);\n                if (options.count.includes(alias))\n                    yargs.count(key);\n                if (options.string.includes(alias))\n                    yargs.string(key);\n                if (options.normalize.includes(alias))\n                    yargs.normalize(key);\n                if (options.array.includes(alias))\n                    yargs.array(key);\n                if (options.number.includes(alias))\n                    yargs.number(key);\n            });\n        });\n    }\n    let cachedHelpMessage;\n    self.cacheHelpMessage = function () {\n        cachedHelpMessage = this.help();\n    };\n    self.clearCachedHelpMessage = function () {\n        cachedHelpMessage = undefined;\n    };\n    self.hasCachedHelpMessage = function () {\n        return !!cachedHelpMessage;\n    };\n    function addUngroupedKeys(keys, aliases, groups, defaultGroup) {\n        let groupedKeys = [];\n        let toCheck = null;\n        Object.keys(groups).forEach(group => {\n            groupedKeys = groupedKeys.concat(groups[group]);\n        });\n        keys.forEach(key => {\n            toCheck = [key].concat(aliases[key]);\n            if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) {\n                groups[defaultGroup].push(key);\n            }\n        });\n        return groupedKeys;\n    }\n    function filterHiddenOptions(key) {\n        return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 ||\n            yargs.parsed.argv[yargs.getOptions().showHiddenOpt]);\n    }\n    self.showHelp = (level) => {\n        const logger = yargs.getInternalMethods().getLoggerInstance();\n        if (!level)\n            level = 'error';\n        const emit = typeof level === 'function' ? level : logger[level];\n        emit(self.help());\n    };\n    self.functionDescription = fn => {\n        const description = fn.name\n            ? shim.Parser.decamelize(fn.name, '-')\n            : __('generated-value');\n        return ['(', description, ')'].join('');\n    };\n    self.stringifiedValues = function stringifiedValues(values, separator) {\n        let string = '';\n        const sep = separator || ', ';\n        const array = [].concat(values);\n        if (!values || !array.length)\n            return string;\n        array.forEach(value => {\n            if (string.length)\n                string += sep;\n            string += JSON.stringify(value);\n        });\n        return string;\n    };\n    function defaultString(value, defaultDescription) {\n        let string = `[${__('default:')} `;\n        if (value === undefined && !defaultDescription)\n            return null;\n        if (defaultDescription) {\n            string += defaultDescription;\n        }\n        else {\n            switch (typeof value) {\n                case 'string':\n                    string += `\"${value}\"`;\n                    break;\n                case 'object':\n                    string += JSON.stringify(value);\n                    break;\n                default:\n                    string += value;\n            }\n        }\n        return `${string}]`;\n    }\n    function windowWidth() {\n        const maxWidth = 80;\n        if (shim.process.stdColumns) {\n            return Math.min(maxWidth, shim.process.stdColumns);\n        }\n        else {\n            return maxWidth;\n        }\n    }\n    let version = null;\n    self.version = ver => {\n        version = ver;\n    };\n    self.showVersion = level => {\n        const logger = yargs.getInternalMethods().getLoggerInstance();\n        if (!level)\n            level = 'error';\n        const emit = typeof level === 'function' ? level : logger[level];\n        emit(version);\n    };\n    self.reset = function reset(localLookup) {\n        failMessage = null;\n        failureOutput = false;\n        usages = [];\n        usageDisabled = false;\n        epilogs = [];\n        examples = [];\n        commands = [];\n        descriptions = objFilter(descriptions, k => !localLookup[k]);\n        return self;\n    };\n    const frozens = [];\n    self.freeze = function freeze() {\n        frozens.push({\n            failMessage,\n            failureOutput,\n            usages,\n            usageDisabled,\n            epilogs,\n            examples,\n            commands,\n            descriptions,\n        });\n    };\n    self.unfreeze = function unfreeze(defaultCommand = false) {\n        const frozen = frozens.pop();\n        if (!frozen)\n            return;\n        if (defaultCommand) {\n            descriptions = { ...frozen.descriptions, ...descriptions };\n            commands = [...frozen.commands, ...commands];\n            usages = [...frozen.usages, ...usages];\n            examples = [...frozen.examples, ...examples];\n            epilogs = [...frozen.epilogs, ...epilogs];\n        }\n        else {\n            ({\n                failMessage,\n                failureOutput,\n                usages,\n                usageDisabled,\n                epilogs,\n                examples,\n                commands,\n                descriptions,\n            } = frozen);\n        }\n    };\n    return self;\n}\nfunction isIndentedText(text) {\n    return typeof text === 'object';\n}\nfunction addIndentation(text, indent) {\n    return isIndentedText(text)\n        ? { text: text.text, indentation: text.indentation + indent }\n        : { text, indentation: indent };\n}\nfunction getIndentation(text) {\n    return isIndentedText(text) ? text.indentation : 0;\n}\nfunction getText(text) {\n    return isIndentedText(text) ? text.text : text;\n}\n", "export const completionShTemplate = `###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc\n#    or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n    local cur_word args type_list\n\n    cur_word=\"\\${COMP_WORDS[COMP_CWORD]}\"\n    args=(\"\\${COMP_WORDS[@]}\")\n\n    # ask yargs to generate completions.\n    type_list=$({{app_path}} --get-yargs-completions \"\\${args[@]}\")\n\n    COMPREPLY=( $(compgen -W \"\\${type_list}\" -- \\${cur_word}) )\n\n    # if no match was found, fall back to filename completion\n    if [ \\${#COMPREPLY[@]} -eq 0 ]; then\n      COMPREPLY=()\n    fi\n\n    return 0\n}\ncomplete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n`;\nexport const completionZshTemplate = `#compdef {{app_name}}\n###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc\n#    or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n  local reply\n  local si=$IFS\n  IFS=$'\\n' reply=($(COMP_CWORD=\"$((CURRENT-1))\" COMP_LINE=\"$BUFFER\" COMP_POINT=\"$CURSOR\" {{app_path}} --get-yargs-completions \"\\${words[@]}\"))\n  IFS=$si\n  _describe 'values' reply\n}\ncompdef _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n`;\n", "import { isCommandBuilderCallback } from './command.js';\nimport { assertNotStrictEqual } from './typings/common-types.js';\nimport * as templates from './completion-templates.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { parseCommand } from './parse-command.js';\nexport class Completion {\n    constructor(yargs, usage, command, shim) {\n        var _a, _b, _c;\n        this.yargs = yargs;\n        this.usage = usage;\n        this.command = command;\n        this.shim = shim;\n        this.completionKey = 'get-yargs-completions';\n        this.aliases = null;\n        this.customCompletionFunction = null;\n        this.indexAfterLastReset = 0;\n        this.zshShell =\n            (_c = (((_a = this.shim.getEnv('SHELL')) === null || _a === void 0 ? void 0 : _a.includes('zsh')) ||\n                ((_b = this.shim.getEnv('ZSH_NAME')) === null || _b === void 0 ? void 0 : _b.includes('zsh')))) !== null && _c !== void 0 ? _c : false;\n    }\n    defaultCompletion(args, argv, current, done) {\n        const handlers = this.command.getCommandHandlers();\n        for (let i = 0, ii = args.length; i < ii; ++i) {\n            if (handlers[args[i]] && handlers[args[i]].builder) {\n                const builder = handlers[args[i]].builder;\n                if (isCommandBuilderCallback(builder)) {\n                    this.indexAfterLastReset = i + 1;\n                    const y = this.yargs.getInternalMethods().reset();\n                    builder(y, true);\n                    return y.argv;\n                }\n            }\n        }\n        const completions = [];\n        this.commandCompletions(completions, args, current);\n        this.optionCompletions(completions, args, argv, current);\n        this.choicesFromOptionsCompletions(completions, args, argv, current);\n        this.choicesFromPositionalsCompletions(completions, args, argv, current);\n        done(null, completions);\n    }\n    commandCompletions(completions, args, current) {\n        const parentCommands = this.yargs\n            .getInternalMethods()\n            .getContext().commands;\n        if (!current.match(/^-/) &&\n            parentCommands[parentCommands.length - 1] !== current &&\n            !this.previousArgHasChoices(args)) {\n            this.usage.getCommands().forEach(usageCommand => {\n                const commandName = parseCommand(usageCommand[0]).cmd;\n                if (args.indexOf(commandName) === -1) {\n                    if (!this.zshShell) {\n                        completions.push(commandName);\n                    }\n                    else {\n                        const desc = usageCommand[1] || '';\n                        completions.push(commandName.replace(/:/g, '\\\\:') + ':' + desc);\n                    }\n                }\n            });\n        }\n    }\n    optionCompletions(completions, args, argv, current) {\n        if ((current.match(/^-/) || (current === '' && completions.length === 0)) &&\n            !this.previousArgHasChoices(args)) {\n            const options = this.yargs.getOptions();\n            const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || [];\n            Object.keys(options.key).forEach(key => {\n                const negable = !!options.configuration['boolean-negation'] &&\n                    options.boolean.includes(key);\n                const isPositionalKey = positionalKeys.includes(key);\n                if (!isPositionalKey &&\n                    !options.hiddenOptions.includes(key) &&\n                    !this.argsContainKey(args, key, negable)) {\n                    this.completeOptionKey(key, completions, current, negable && !!options.default[key]);\n                }\n            });\n        }\n    }\n    choicesFromOptionsCompletions(completions, args, argv, current) {\n        if (this.previousArgHasChoices(args)) {\n            const choices = this.getPreviousArgChoices(args);\n            if (choices && choices.length > 0) {\n                completions.push(...choices.map(c => c.replace(/:/g, '\\\\:')));\n            }\n        }\n    }\n    choicesFromPositionalsCompletions(completions, args, argv, current) {\n        if (current === '' &&\n            completions.length > 0 &&\n            this.previousArgHasChoices(args)) {\n            return;\n        }\n        const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || [];\n        const offset = Math.max(this.indexAfterLastReset, this.yargs.getInternalMethods().getContext().commands.length +\n            1);\n        const positionalKey = positionalKeys[argv._.length - offset - 1];\n        if (!positionalKey) {\n            return;\n        }\n        const choices = this.yargs.getOptions().choices[positionalKey] || [];\n        for (const choice of choices) {\n            if (choice.startsWith(current)) {\n                completions.push(choice.replace(/:/g, '\\\\:'));\n            }\n        }\n    }\n    getPreviousArgChoices(args) {\n        if (args.length < 1)\n            return;\n        let previousArg = args[args.length - 1];\n        let filter = '';\n        if (!previousArg.startsWith('-') && args.length > 1) {\n            filter = previousArg;\n            previousArg = args[args.length - 2];\n        }\n        if (!previousArg.startsWith('-'))\n            return;\n        const previousArgKey = previousArg.replace(/^-+/, '');\n        const options = this.yargs.getOptions();\n        const possibleAliases = [\n            previousArgKey,\n            ...(this.yargs.getAliases()[previousArgKey] || []),\n        ];\n        let choices;\n        for (const possibleAlias of possibleAliases) {\n            if (Object.prototype.hasOwnProperty.call(options.key, possibleAlias) &&\n                Array.isArray(options.choices[possibleAlias])) {\n                choices = options.choices[possibleAlias];\n                break;\n            }\n        }\n        if (choices) {\n            return choices.filter(choice => !filter || choice.startsWith(filter));\n        }\n    }\n    previousArgHasChoices(args) {\n        const choices = this.getPreviousArgChoices(args);\n        return choices !== undefined && choices.length > 0;\n    }\n    argsContainKey(args, key, negable) {\n        const argsContains = (s) => args.indexOf((/^[^0-9]$/.test(s) ? '-' : '--') + s) !== -1;\n        if (argsContains(key))\n            return true;\n        if (negable && argsContains(`no-${key}`))\n            return true;\n        if (this.aliases) {\n            for (const alias of this.aliases[key]) {\n                if (argsContains(alias))\n                    return true;\n            }\n        }\n        return false;\n    }\n    completeOptionKey(key, completions, current, negable) {\n        var _a, _b, _c, _d;\n        let keyWithDesc = key;\n        if (this.zshShell) {\n            const descs = this.usage.getDescriptions();\n            const aliasKey = (_b = (_a = this === null || this === void 0 ? void 0 : this.aliases) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.find(alias => {\n                const desc = descs[alias];\n                return typeof desc === 'string' && desc.length > 0;\n            });\n            const descFromAlias = aliasKey ? descs[aliasKey] : undefined;\n            const desc = (_d = (_c = descs[key]) !== null && _c !== void 0 ? _c : descFromAlias) !== null && _d !== void 0 ? _d : '';\n            keyWithDesc = `${key.replace(/:/g, '\\\\:')}:${desc\n                .replace('__yargsString__:', '')\n                .replace(/(\\r\\n|\\n|\\r)/gm, ' ')}`;\n        }\n        const startsByTwoDashes = (s) => /^--/.test(s);\n        const isShortOption = (s) => /^[^0-9]$/.test(s);\n        const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--';\n        completions.push(dashes + keyWithDesc);\n        if (negable) {\n            completions.push(dashes + 'no-' + keyWithDesc);\n        }\n    }\n    customCompletion(args, argv, current, done) {\n        assertNotStrictEqual(this.customCompletionFunction, null, this.shim);\n        if (isSyncCompletionFunction(this.customCompletionFunction)) {\n            const result = this.customCompletionFunction(current, argv);\n            if (isPromise(result)) {\n                return result\n                    .then(list => {\n                    this.shim.process.nextTick(() => {\n                        done(null, list);\n                    });\n                })\n                    .catch(err => {\n                    this.shim.process.nextTick(() => {\n                        done(err, undefined);\n                    });\n                });\n            }\n            return done(null, result);\n        }\n        else if (isFallbackCompletionFunction(this.customCompletionFunction)) {\n            return this.customCompletionFunction(current, argv, (onCompleted = done) => this.defaultCompletion(args, argv, current, onCompleted), completions => {\n                done(null, completions);\n            });\n        }\n        else {\n            return this.customCompletionFunction(current, argv, completions => {\n                done(null, completions);\n            });\n        }\n    }\n    getCompletion(args, done) {\n        const current = args.length ? args[args.length - 1] : '';\n        const argv = this.yargs.parse(args, true);\n        const completionFunction = this.customCompletionFunction\n            ? (argv) => this.customCompletion(args, argv, current, done)\n            : (argv) => this.defaultCompletion(args, argv, current, done);\n        return isPromise(argv)\n            ? argv.then(completionFunction)\n            : completionFunction(argv);\n    }\n    generateCompletionScript($0, cmd) {\n        let script = this.zshShell\n            ? templates.completionZshTemplate\n            : templates.completionShTemplate;\n        const name = this.shim.path.basename($0);\n        if ($0.match(/\\.js$/))\n            $0 = `./${$0}`;\n        script = script.replace(/{{app_name}}/g, name);\n        script = script.replace(/{{completion_command}}/g, cmd);\n        return script.replace(/{{app_path}}/g, $0);\n    }\n    registerFunction(fn) {\n        this.customCompletionFunction = fn;\n    }\n    setParsed(parsed) {\n        this.aliases = parsed.aliases;\n    }\n}\nexport function completion(yargs, usage, command, shim) {\n    return new Completion(yargs, usage, command, shim);\n}\nfunction isSyncCompletionFunction(completionFunction) {\n    return completionFunction.length < 3;\n}\nfunction isFallbackCompletionFunction(completionFunction) {\n    return completionFunction.length > 3;\n}\n", "export function levenshtein(a, b) {\n    if (a.length === 0)\n        return b.length;\n    if (b.length === 0)\n        return a.length;\n    const matrix = [];\n    let i;\n    for (i = 0; i <= b.length; i++) {\n        matrix[i] = [i];\n    }\n    let j;\n    for (j = 0; j <= a.length; j++) {\n        matrix[0][j] = j;\n    }\n    for (i = 1; i <= b.length; i++) {\n        for (j = 1; j <= a.length; j++) {\n            if (b.charAt(i - 1) === a.charAt(j - 1)) {\n                matrix[i][j] = matrix[i - 1][j - 1];\n            }\n            else {\n                if (i > 1 &&\n                    j > 1 &&\n                    b.charAt(i - 2) === a.charAt(j - 1) &&\n                    b.charAt(i - 1) === a.charAt(j - 2)) {\n                    matrix[i][j] = matrix[i - 2][j - 2] + 1;\n                }\n                else {\n                    matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1));\n                }\n            }\n        }\n    }\n    return matrix[b.length][a.length];\n}\n", "import { argsert } from './argsert.js';\nimport { assertNotStrictEqual, } from './typings/common-types.js';\nimport { levenshtein as distance } from './utils/levenshtein.js';\nimport { objFilter } from './utils/obj-filter.js';\nconst specialKeys = ['$0', '--', '_'];\nexport function validation(yargs, usage, shim) {\n    const __ = shim.y18n.__;\n    const __n = shim.y18n.__n;\n    const self = {};\n    self.nonOptionCount = function nonOptionCount(argv) {\n        const demandedCommands = yargs.getDemandedCommands();\n        const positionalCount = argv._.length + (argv['--'] ? argv['--'].length : 0);\n        const _s = positionalCount - yargs.getInternalMethods().getContext().commands.length;\n        if (demandedCommands._ &&\n            (_s < demandedCommands._.min || _s > demandedCommands._.max)) {\n            if (_s < demandedCommands._.min) {\n                if (demandedCommands._.minMsg !== undefined) {\n                    usage.fail(demandedCommands._.minMsg\n                        ? demandedCommands._.minMsg\n                            .replace(/\\$0/g, _s.toString())\n                            .replace(/\\$1/, demandedCommands._.min.toString())\n                        : null);\n                }\n                else {\n                    usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', _s, _s.toString(), demandedCommands._.min.toString()));\n                }\n            }\n            else if (_s > demandedCommands._.max) {\n                if (demandedCommands._.maxMsg !== undefined) {\n                    usage.fail(demandedCommands._.maxMsg\n                        ? demandedCommands._.maxMsg\n                            .replace(/\\$0/g, _s.toString())\n                            .replace(/\\$1/, demandedCommands._.max.toString())\n                        : null);\n                }\n                else {\n                    usage.fail(__n('Too many non-option arguments: got %s, maximum of %s', 'Too many non-option arguments: got %s, maximum of %s', _s, _s.toString(), demandedCommands._.max.toString()));\n                }\n            }\n        }\n    };\n    self.positionalCount = function positionalCount(required, observed) {\n        if (observed < required) {\n            usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', observed, observed + '', required + ''));\n        }\n    };\n    self.requiredArguments = function requiredArguments(argv, demandedOptions) {\n        let missing = null;\n        for (const key of Object.keys(demandedOptions)) {\n            if (!Object.prototype.hasOwnProperty.call(argv, key) ||\n                typeof argv[key] === 'undefined') {\n                missing = missing || {};\n                missing[key] = demandedOptions[key];\n            }\n        }\n        if (missing) {\n            const customMsgs = [];\n            for (const key of Object.keys(missing)) {\n                const msg = missing[key];\n                if (msg && customMsgs.indexOf(msg) < 0) {\n                    customMsgs.push(msg);\n                }\n            }\n            const customMsg = customMsgs.length ? `\\n${customMsgs.join('\\n')}` : '';\n            usage.fail(__n('Missing required argument: %s', 'Missing required arguments: %s', Object.keys(missing).length, Object.keys(missing).join(', ') + customMsg));\n        }\n    };\n    self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) {\n        var _a;\n        const commandKeys = yargs\n            .getInternalMethods()\n            .getCommandInstance()\n            .getCommands();\n        const unknown = [];\n        const currentContext = yargs.getInternalMethods().getContext();\n        Object.keys(argv).forEach(key => {\n            if (!specialKeys.includes(key) &&\n                !Object.prototype.hasOwnProperty.call(positionalMap, key) &&\n                !Object.prototype.hasOwnProperty.call(yargs.getInternalMethods().getParseContext(), key) &&\n                !self.isValidAndSomeAliasIsNotNew(key, aliases)) {\n                unknown.push(key);\n            }\n        });\n        if (checkPositionals &&\n            (currentContext.commands.length > 0 ||\n                commandKeys.length > 0 ||\n                isDefaultCommand)) {\n            argv._.slice(currentContext.commands.length).forEach(key => {\n                if (!commandKeys.includes('' + key)) {\n                    unknown.push('' + key);\n                }\n            });\n        }\n        if (checkPositionals) {\n            const demandedCommands = yargs.getDemandedCommands();\n            const maxNonOptDemanded = ((_a = demandedCommands._) === null || _a === void 0 ? void 0 : _a.max) || 0;\n            const expected = currentContext.commands.length + maxNonOptDemanded;\n            if (expected < argv._.length) {\n                argv._.slice(expected).forEach(key => {\n                    key = String(key);\n                    if (!currentContext.commands.includes(key) &&\n                        !unknown.includes(key)) {\n                        unknown.push(key);\n                    }\n                });\n            }\n        }\n        if (unknown.length) {\n            usage.fail(__n('Unknown argument: %s', 'Unknown arguments: %s', unknown.length, unknown.map(s => (s.trim() ? s : `\"${s}\"`)).join(', ')));\n        }\n    };\n    self.unknownCommands = function unknownCommands(argv) {\n        const commandKeys = yargs\n            .getInternalMethods()\n            .getCommandInstance()\n            .getCommands();\n        const unknown = [];\n        const currentContext = yargs.getInternalMethods().getContext();\n        if (currentContext.commands.length > 0 || commandKeys.length > 0) {\n            argv._.slice(currentContext.commands.length).forEach(key => {\n                if (!commandKeys.includes('' + key)) {\n                    unknown.push('' + key);\n                }\n            });\n        }\n        if (unknown.length > 0) {\n            usage.fail(__n('Unknown command: %s', 'Unknown commands: %s', unknown.length, unknown.join(', ')));\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) {\n        if (!Object.prototype.hasOwnProperty.call(aliases, key)) {\n            return false;\n        }\n        const newAliases = yargs.parsed.newAliases;\n        return [key, ...aliases[key]].some(a => !Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]);\n    };\n    self.limitedChoices = function limitedChoices(argv) {\n        const options = yargs.getOptions();\n        const invalid = {};\n        if (!Object.keys(options.choices).length)\n            return;\n        Object.keys(argv).forEach(key => {\n            if (specialKeys.indexOf(key) === -1 &&\n                Object.prototype.hasOwnProperty.call(options.choices, key)) {\n                [].concat(argv[key]).forEach(value => {\n                    if (options.choices[key].indexOf(value) === -1 &&\n                        value !== undefined) {\n                        invalid[key] = (invalid[key] || []).concat(value);\n                    }\n                });\n            }\n        });\n        const invalidKeys = Object.keys(invalid);\n        if (!invalidKeys.length)\n            return;\n        let msg = __('Invalid values:');\n        invalidKeys.forEach(key => {\n            msg += `\\n  ${__('Argument: %s, Given: %s, Choices: %s', key, usage.stringifiedValues(invalid[key]), usage.stringifiedValues(options.choices[key]))}`;\n        });\n        usage.fail(msg);\n    };\n    let implied = {};\n    self.implies = function implies(key, value) {\n        argsert(' [array|number|string]', [key, value], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                self.implies(k, key[k]);\n            });\n        }\n        else {\n            yargs.global(key);\n            if (!implied[key]) {\n                implied[key] = [];\n            }\n            if (Array.isArray(value)) {\n                value.forEach(i => self.implies(key, i));\n            }\n            else {\n                assertNotStrictEqual(value, undefined, shim);\n                implied[key].push(value);\n            }\n        }\n    };\n    self.getImplied = function getImplied() {\n        return implied;\n    };\n    function keyExists(argv, val) {\n        const num = Number(val);\n        val = isNaN(num) ? val : num;\n        if (typeof val === 'number') {\n            val = argv._.length >= val;\n        }\n        else if (val.match(/^--no-.+/)) {\n            val = val.match(/^--no-(.+)/)[1];\n            val = !Object.prototype.hasOwnProperty.call(argv, val);\n        }\n        else {\n            val = Object.prototype.hasOwnProperty.call(argv, val);\n        }\n        return val;\n    }\n    self.implications = function implications(argv) {\n        const implyFail = [];\n        Object.keys(implied).forEach(key => {\n            const origKey = key;\n            (implied[key] || []).forEach(value => {\n                let key = origKey;\n                const origValue = value;\n                key = keyExists(argv, key);\n                value = keyExists(argv, value);\n                if (key && !value) {\n                    implyFail.push(` ${origKey} -> ${origValue}`);\n                }\n            });\n        });\n        if (implyFail.length) {\n            let msg = `${__('Implications failed:')}\\n`;\n            implyFail.forEach(value => {\n                msg += value;\n            });\n            usage.fail(msg);\n        }\n    };\n    let conflicting = {};\n    self.conflicts = function conflicts(key, value) {\n        argsert(' [array|string]', [key, value], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                self.conflicts(k, key[k]);\n            });\n        }\n        else {\n            yargs.global(key);\n            if (!conflicting[key]) {\n                conflicting[key] = [];\n            }\n            if (Array.isArray(value)) {\n                value.forEach(i => self.conflicts(key, i));\n            }\n            else {\n                conflicting[key].push(value);\n            }\n        }\n    };\n    self.getConflicting = () => conflicting;\n    self.conflicting = function conflictingFn(argv) {\n        Object.keys(argv).forEach(key => {\n            if (conflicting[key]) {\n                conflicting[key].forEach(value => {\n                    if (value && argv[key] !== undefined && argv[value] !== undefined) {\n                        usage.fail(__('Arguments %s and %s are mutually exclusive', key, value));\n                    }\n                });\n            }\n        });\n        if (yargs.getInternalMethods().getParserConfiguration()['strip-dashed']) {\n            Object.keys(conflicting).forEach(key => {\n                conflicting[key].forEach(value => {\n                    if (value &&\n                        argv[shim.Parser.camelCase(key)] !== undefined &&\n                        argv[shim.Parser.camelCase(value)] !== undefined) {\n                        usage.fail(__('Arguments %s and %s are mutually exclusive', key, value));\n                    }\n                });\n            });\n        }\n    };\n    self.recommendCommands = function recommendCommands(cmd, potentialCommands) {\n        const threshold = 3;\n        potentialCommands = potentialCommands.sort((a, b) => b.length - a.length);\n        let recommended = null;\n        let bestDistance = Infinity;\n        for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) {\n            const d = distance(cmd, candidate);\n            if (d <= threshold && d < bestDistance) {\n                bestDistance = d;\n                recommended = candidate;\n            }\n        }\n        if (recommended)\n            usage.fail(__('Did you mean %s?', recommended));\n    };\n    self.reset = function reset(localLookup) {\n        implied = objFilter(implied, k => !localLookup[k]);\n        conflicting = objFilter(conflicting, k => !localLookup[k]);\n        return self;\n    };\n    const frozens = [];\n    self.freeze = function freeze() {\n        frozens.push({\n            implied,\n            conflicting,\n        });\n    };\n    self.unfreeze = function unfreeze() {\n        const frozen = frozens.pop();\n        assertNotStrictEqual(frozen, undefined, shim);\n        ({ implied, conflicting } = frozen);\n    };\n    return self;\n}\n", "import { YError } from '../yerror.js';\nlet previouslyVisitedConfigs = [];\nlet shim;\nexport function applyExtends(config, cwd, mergeExtends, _shim) {\n    shim = _shim;\n    let defaultConfig = {};\n    if (Object.prototype.hasOwnProperty.call(config, 'extends')) {\n        if (typeof config.extends !== 'string')\n            return defaultConfig;\n        const isPath = /\\.json|\\..*rc$/.test(config.extends);\n        let pathToDefault = null;\n        if (!isPath) {\n            try {\n                pathToDefault = require.resolve(config.extends);\n            }\n            catch (_err) {\n                return config;\n            }\n        }\n        else {\n            pathToDefault = getPathToDefaultConfig(cwd, config.extends);\n        }\n        checkForCircularExtends(pathToDefault);\n        previouslyVisitedConfigs.push(pathToDefault);\n        defaultConfig = isPath\n            ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8'))\n            : require(config.extends);\n        delete config.extends;\n        defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim);\n    }\n    previouslyVisitedConfigs = [];\n    return mergeExtends\n        ? mergeDeep(defaultConfig, config)\n        : Object.assign({}, defaultConfig, config);\n}\nfunction checkForCircularExtends(cfgPath) {\n    if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) {\n        throw new YError(`Circular extended configurations: '${cfgPath}'.`);\n    }\n}\nfunction getPathToDefaultConfig(cwd, pathToExtend) {\n    return shim.path.resolve(cwd, pathToExtend);\n}\nfunction mergeDeep(config1, config2) {\n    const target = {};\n    function isObject(obj) {\n        return obj && typeof obj === 'object' && !Array.isArray(obj);\n    }\n    Object.assign(target, config1);\n    for (const key of Object.keys(config2)) {\n        if (isObject(config2[key]) && isObject(target[key])) {\n            target[key] = mergeDeep(config1[key], config2[key]);\n        }\n        else {\n            target[key] = config2[key];\n        }\n    }\n    return target;\n}\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _YargsInstance_command, _YargsInstance_cwd, _YargsInstance_context, _YargsInstance_completion, _YargsInstance_completionCommand, _YargsInstance_defaultShowHiddenOpt, _YargsInstance_exitError, _YargsInstance_detectLocale, _YargsInstance_emittedWarnings, _YargsInstance_exitProcess, _YargsInstance_frozens, _YargsInstance_globalMiddleware, _YargsInstance_groups, _YargsInstance_hasOutput, _YargsInstance_helpOpt, _YargsInstance_isGlobalContext, _YargsInstance_logger, _YargsInstance_output, _YargsInstance_options, _YargsInstance_parentRequire, _YargsInstance_parserConfig, _YargsInstance_parseFn, _YargsInstance_parseContext, _YargsInstance_pkgs, _YargsInstance_preservedGroups, _YargsInstance_processArgs, _YargsInstance_recommendCommands, _YargsInstance_shim, _YargsInstance_strict, _YargsInstance_strictCommands, _YargsInstance_strictOptions, _YargsInstance_usage, _YargsInstance_usageConfig, _YargsInstance_versionOpt, _YargsInstance_validation;\nimport { command as Command, } from './command.js';\nimport { assertNotStrictEqual, assertSingleKey, objectKeys, } from './typings/common-types.js';\nimport { YError } from './yerror.js';\nimport { usage as Usage } from './usage.js';\nimport { argsert } from './argsert.js';\nimport { completion as Completion, } from './completion.js';\nimport { validation as Validation, } from './validation.js';\nimport { objFilter } from './utils/obj-filter.js';\nimport { applyExtends } from './utils/apply-extends.js';\nimport { applyMiddleware, GlobalMiddleware, } from './middleware.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { maybeAsyncResult } from './utils/maybe-async-result.js';\nimport setBlocking from './utils/set-blocking.js';\nexport function YargsFactory(_shim) {\n    return (processArgs = [], cwd = _shim.process.cwd(), parentRequire) => {\n        const yargs = new YargsInstance(processArgs, cwd, parentRequire, _shim);\n        Object.defineProperty(yargs, 'argv', {\n            get: () => {\n                return yargs.parse();\n            },\n            enumerable: true,\n        });\n        yargs.help();\n        yargs.version();\n        return yargs;\n    };\n}\nconst kCopyDoubleDash = Symbol('copyDoubleDash');\nconst kCreateLogger = Symbol('copyDoubleDash');\nconst kDeleteFromParserHintObject = Symbol('deleteFromParserHintObject');\nconst kEmitWarning = Symbol('emitWarning');\nconst kFreeze = Symbol('freeze');\nconst kGetDollarZero = Symbol('getDollarZero');\nconst kGetParserConfiguration = Symbol('getParserConfiguration');\nconst kGetUsageConfiguration = Symbol('getUsageConfiguration');\nconst kGuessLocale = Symbol('guessLocale');\nconst kGuessVersion = Symbol('guessVersion');\nconst kParsePositionalNumbers = Symbol('parsePositionalNumbers');\nconst kPkgUp = Symbol('pkgUp');\nconst kPopulateParserHintArray = Symbol('populateParserHintArray');\nconst kPopulateParserHintSingleValueDictionary = Symbol('populateParserHintSingleValueDictionary');\nconst kPopulateParserHintArrayDictionary = Symbol('populateParserHintArrayDictionary');\nconst kPopulateParserHintDictionary = Symbol('populateParserHintDictionary');\nconst kSanitizeKey = Symbol('sanitizeKey');\nconst kSetKey = Symbol('setKey');\nconst kUnfreeze = Symbol('unfreeze');\nconst kValidateAsync = Symbol('validateAsync');\nconst kGetCommandInstance = Symbol('getCommandInstance');\nconst kGetContext = Symbol('getContext');\nconst kGetHasOutput = Symbol('getHasOutput');\nconst kGetLoggerInstance = Symbol('getLoggerInstance');\nconst kGetParseContext = Symbol('getParseContext');\nconst kGetUsageInstance = Symbol('getUsageInstance');\nconst kGetValidationInstance = Symbol('getValidationInstance');\nconst kHasParseCallback = Symbol('hasParseCallback');\nconst kIsGlobalContext = Symbol('isGlobalContext');\nconst kPostProcess = Symbol('postProcess');\nconst kRebase = Symbol('rebase');\nconst kReset = Symbol('reset');\nconst kRunYargsParserAndExecuteCommands = Symbol('runYargsParserAndExecuteCommands');\nconst kRunValidation = Symbol('runValidation');\nconst kSetHasOutput = Symbol('setHasOutput');\nconst kTrackManuallySetKeys = Symbol('kTrackManuallySetKeys');\nexport class YargsInstance {\n    constructor(processArgs = [], cwd, parentRequire, shim) {\n        this.customScriptName = false;\n        this.parsed = false;\n        _YargsInstance_command.set(this, void 0);\n        _YargsInstance_cwd.set(this, void 0);\n        _YargsInstance_context.set(this, { commands: [], fullCommands: [] });\n        _YargsInstance_completion.set(this, null);\n        _YargsInstance_completionCommand.set(this, null);\n        _YargsInstance_defaultShowHiddenOpt.set(this, 'show-hidden');\n        _YargsInstance_exitError.set(this, null);\n        _YargsInstance_detectLocale.set(this, true);\n        _YargsInstance_emittedWarnings.set(this, {});\n        _YargsInstance_exitProcess.set(this, true);\n        _YargsInstance_frozens.set(this, []);\n        _YargsInstance_globalMiddleware.set(this, void 0);\n        _YargsInstance_groups.set(this, {});\n        _YargsInstance_hasOutput.set(this, false);\n        _YargsInstance_helpOpt.set(this, null);\n        _YargsInstance_isGlobalContext.set(this, true);\n        _YargsInstance_logger.set(this, void 0);\n        _YargsInstance_output.set(this, '');\n        _YargsInstance_options.set(this, void 0);\n        _YargsInstance_parentRequire.set(this, void 0);\n        _YargsInstance_parserConfig.set(this, {});\n        _YargsInstance_parseFn.set(this, null);\n        _YargsInstance_parseContext.set(this, null);\n        _YargsInstance_pkgs.set(this, {});\n        _YargsInstance_preservedGroups.set(this, {});\n        _YargsInstance_processArgs.set(this, void 0);\n        _YargsInstance_recommendCommands.set(this, false);\n        _YargsInstance_shim.set(this, void 0);\n        _YargsInstance_strict.set(this, false);\n        _YargsInstance_strictCommands.set(this, false);\n        _YargsInstance_strictOptions.set(this, false);\n        _YargsInstance_usage.set(this, void 0);\n        _YargsInstance_usageConfig.set(this, {});\n        _YargsInstance_versionOpt.set(this, null);\n        _YargsInstance_validation.set(this, void 0);\n        __classPrivateFieldSet(this, _YargsInstance_shim, shim, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_processArgs, processArgs, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_cwd, cwd, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_parentRequire, parentRequire, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_globalMiddleware, new GlobalMiddleware(this), \"f\");\n        this.$0 = this[kGetDollarZero]();\n        this[kReset]();\n        __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, \"f\"), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, \"f\"), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, \"f\"), \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").showHiddenOpt = __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_logger, this[kCreateLogger](), \"f\");\n    }\n    addHelpOpt(opt, msg) {\n        const defaultHelpOpt = 'help';\n        argsert('[string|boolean] [string]', [opt, msg], arguments.length);\n        if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")) {\n            this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"));\n            __classPrivateFieldSet(this, _YargsInstance_helpOpt, null, \"f\");\n        }\n        if (opt === false && msg === undefined)\n            return this;\n        __classPrivateFieldSet(this, _YargsInstance_helpOpt, typeof opt === 'string' ? opt : defaultHelpOpt, \"f\");\n        this.boolean(__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"));\n        this.describe(__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"), msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show help'));\n        return this;\n    }\n    help(opt, msg) {\n        return this.addHelpOpt(opt, msg);\n    }\n    addShowHiddenOpt(opt, msg) {\n        argsert('[string|boolean] [string]', [opt, msg], arguments.length);\n        if (opt === false && msg === undefined)\n            return this;\n        const showHiddenOpt = typeof opt === 'string' ? opt : __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, \"f\");\n        this.boolean(showHiddenOpt);\n        this.describe(showHiddenOpt, msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show hidden options'));\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").showHiddenOpt = showHiddenOpt;\n        return this;\n    }\n    showHidden(opt, msg) {\n        return this.addShowHiddenOpt(opt, msg);\n    }\n    alias(key, value) {\n        argsert(' [string|array]', [key, value], arguments.length);\n        this[kPopulateParserHintArrayDictionary](this.alias.bind(this), 'alias', key, value);\n        return this;\n    }\n    array(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('array', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    boolean(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('boolean', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    check(f, global) {\n        argsert(' [boolean]', [f, global], arguments.length);\n        this.middleware((argv, _yargs) => {\n            return maybeAsyncResult(() => {\n                return f(argv, _yargs.getOptions());\n            }, (result) => {\n                if (!result) {\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.__('Argument check failed: %s', f.toString()));\n                }\n                else if (typeof result === 'string' || result instanceof Error) {\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(result.toString(), result);\n                }\n                return argv;\n            }, (err) => {\n                __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(err.message ? err.message : err.toString(), err);\n                return argv;\n            });\n        }, false, global);\n        return this;\n    }\n    choices(key, value) {\n        argsert(' [string|array]', [key, value], arguments.length);\n        this[kPopulateParserHintArrayDictionary](this.choices.bind(this), 'choices', key, value);\n        return this;\n    }\n    coerce(keys, value) {\n        argsert(' [function]', [keys, value], arguments.length);\n        if (Array.isArray(keys)) {\n            if (!value) {\n                throw new YError('coerce callback must be provided');\n            }\n            for (const key of keys) {\n                this.coerce(key, value);\n            }\n            return this;\n        }\n        else if (typeof keys === 'object') {\n            for (const key of Object.keys(keys)) {\n                this.coerce(key, keys[key]);\n            }\n            return this;\n        }\n        if (!value) {\n            throw new YError('coerce callback must be provided');\n        }\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[keys] = true;\n        __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").addCoerceMiddleware((argv, yargs) => {\n            let aliases;\n            const shouldCoerce = Object.prototype.hasOwnProperty.call(argv, keys);\n            if (!shouldCoerce) {\n                return argv;\n            }\n            return maybeAsyncResult(() => {\n                aliases = yargs.getAliases();\n                return value(argv[keys]);\n            }, (result) => {\n                argv[keys] = result;\n                const stripAliased = yargs\n                    .getInternalMethods()\n                    .getParserConfiguration()['strip-aliased'];\n                if (aliases[keys] && stripAliased !== true) {\n                    for (const alias of aliases[keys]) {\n                        argv[alias] = result;\n                    }\n                }\n                return argv;\n            }, (err) => {\n                throw new YError(err.message);\n            });\n        }, keys);\n        return this;\n    }\n    conflicts(key1, key2) {\n        argsert(' [string|array]', [key1, key2], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").conflicts(key1, key2);\n        return this;\n    }\n    config(key = 'config', msg, parseFn) {\n        argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length);\n        if (typeof key === 'object' && !Array.isArray(key)) {\n            key = applyExtends(key, __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || []).concat(key);\n            return this;\n        }\n        if (typeof msg === 'function') {\n            parseFn = msg;\n            msg = undefined;\n        }\n        this.describe(key, msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Path to JSON config file'));\n        (Array.isArray(key) ? key : [key]).forEach(k => {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").config[k] = parseFn || true;\n        });\n        return this;\n    }\n    completion(cmd, desc, fn) {\n        argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length);\n        if (typeof desc === 'function') {\n            fn = desc;\n            desc = undefined;\n        }\n        __classPrivateFieldSet(this, _YargsInstance_completionCommand, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") || 'completion', \"f\");\n        if (!desc && desc !== false) {\n            desc = 'generate completion script';\n        }\n        this.command(__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\"), desc);\n        if (fn)\n            __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").registerFunction(fn);\n        return this;\n    }\n    command(cmd, description, builder, handler, middlewares, deprecated) {\n        argsert(' [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_command, \"f\").addHandler(cmd, description, builder, handler, middlewares, deprecated);\n        return this;\n    }\n    commands(cmd, description, builder, handler, middlewares, deprecated) {\n        return this.command(cmd, description, builder, handler, middlewares, deprecated);\n    }\n    commandDir(dir, opts) {\n        argsert(' [object]', [dir, opts], arguments.length);\n        const req = __classPrivateFieldGet(this, _YargsInstance_parentRequire, \"f\") || __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").require;\n        __classPrivateFieldGet(this, _YargsInstance_command, \"f\").addDirectory(dir, req, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getCallerFile(), opts);\n        return this;\n    }\n    count(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('count', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    default(key, value, defaultDescription) {\n        argsert(' [*] [string]', [key, value, defaultDescription], arguments.length);\n        if (defaultDescription) {\n            assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] = defaultDescription;\n        }\n        if (typeof value === 'function') {\n            assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            if (!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key])\n                __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] =\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").functionDescription(value);\n            value = value.call();\n        }\n        this[kPopulateParserHintSingleValueDictionary](this.default.bind(this), 'default', key, value);\n        return this;\n    }\n    defaults(key, value, defaultDescription) {\n        return this.default(key, value, defaultDescription);\n    }\n    demandCommand(min = 1, max, minMsg, maxMsg) {\n        argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length);\n        if (typeof max !== 'number') {\n            minMsg = max;\n            max = Infinity;\n        }\n        this.global('_', false);\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedCommands._ = {\n            min,\n            max,\n            minMsg,\n            maxMsg,\n        };\n        return this;\n    }\n    demand(keys, max, msg) {\n        if (Array.isArray(max)) {\n            max.forEach(key => {\n                assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n                this.demandOption(key, msg);\n            });\n            max = Infinity;\n        }\n        else if (typeof max !== 'number') {\n            msg = max;\n            max = Infinity;\n        }\n        if (typeof keys === 'number') {\n            assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            this.demandCommand(keys, max, msg, msg);\n        }\n        else if (Array.isArray(keys)) {\n            keys.forEach(key => {\n                assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n                this.demandOption(key, msg);\n            });\n        }\n        else {\n            if (typeof msg === 'string') {\n                this.demandOption(keys, msg);\n            }\n            else if (msg === true || typeof msg === 'undefined') {\n                this.demandOption(keys);\n            }\n        }\n        return this;\n    }\n    demandOption(keys, msg) {\n        argsert(' [string]', [keys, msg], arguments.length);\n        this[kPopulateParserHintSingleValueDictionary](this.demandOption.bind(this), 'demandedOptions', keys, msg);\n        return this;\n    }\n    deprecateOption(option, message) {\n        argsert(' [string|boolean]', [option, message], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").deprecatedOptions[option] = message;\n        return this;\n    }\n    describe(keys, description) {\n        argsert(' [string]', [keys, description], arguments.length);\n        this[kSetKey](keys, true);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").describe(keys, description);\n        return this;\n    }\n    detectLocale(detect) {\n        argsert('', [detect], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_detectLocale, detect, \"f\");\n        return this;\n    }\n    env(prefix) {\n        argsert('[string|boolean]', [prefix], arguments.length);\n        if (prefix === false)\n            delete __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix;\n        else\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix = prefix || '';\n        return this;\n    }\n    epilogue(msg) {\n        argsert('', [msg], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").epilog(msg);\n        return this;\n    }\n    epilog(msg) {\n        return this.epilogue(msg);\n    }\n    example(cmd, description) {\n        argsert(' [string]', [cmd, description], arguments.length);\n        if (Array.isArray(cmd)) {\n            cmd.forEach(exampleParams => this.example(...exampleParams));\n        }\n        else {\n            __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").example(cmd, description);\n        }\n        return this;\n    }\n    exit(code, err) {\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_exitError, err, \"f\");\n        if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.exit(code);\n    }\n    exitProcess(enabled = true) {\n        argsert('[boolean]', [enabled], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_exitProcess, enabled, \"f\");\n        return this;\n    }\n    fail(f) {\n        argsert('', [f], arguments.length);\n        if (typeof f === 'boolean' && f !== false) {\n            throw new YError(\"Invalid first argument. Expected function or boolean 'false'\");\n        }\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").failFn(f);\n        return this;\n    }\n    getAliases() {\n        return this.parsed ? this.parsed.aliases : {};\n    }\n    async getCompletion(args, done) {\n        argsert(' [function]', [args, done], arguments.length);\n        if (!done) {\n            return new Promise((resolve, reject) => {\n                __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(args, (err, completions) => {\n                    if (err)\n                        reject(err);\n                    else\n                        resolve(completions);\n                });\n            });\n        }\n        else {\n            return __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(args, done);\n        }\n    }\n    getDemandedOptions() {\n        argsert([], 0);\n        return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedOptions;\n    }\n    getDemandedCommands() {\n        argsert([], 0);\n        return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedCommands;\n    }\n    getDeprecatedOptions() {\n        argsert([], 0);\n        return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").deprecatedOptions;\n    }\n    getDetectLocale() {\n        return __classPrivateFieldGet(this, _YargsInstance_detectLocale, \"f\");\n    }\n    getExitProcess() {\n        return __classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\");\n    }\n    getGroups() {\n        return Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_groups, \"f\"), __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\"));\n    }\n    getHelp() {\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n        if (!__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").hasCachedHelpMessage()) {\n            if (!this.parsed) {\n                const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\"), undefined, undefined, 0, true);\n                if (isPromise(parse)) {\n                    return parse.then(() => {\n                        return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help();\n                    });\n                }\n            }\n            const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runDefaultBuilderOn(this);\n            if (isPromise(builderResponse)) {\n                return builderResponse.then(() => {\n                    return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help();\n                });\n            }\n        }\n        return Promise.resolve(__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help());\n    }\n    getOptions() {\n        return __classPrivateFieldGet(this, _YargsInstance_options, \"f\");\n    }\n    getStrict() {\n        return __classPrivateFieldGet(this, _YargsInstance_strict, \"f\");\n    }\n    getStrictCommands() {\n        return __classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\");\n    }\n    getStrictOptions() {\n        return __classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\");\n    }\n    global(globals, global) {\n        argsert(' [boolean]', [globals, global], arguments.length);\n        globals = [].concat(globals);\n        if (global !== false) {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.filter(l => globals.indexOf(l) === -1);\n        }\n        else {\n            globals.forEach(g => {\n                if (!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.includes(g))\n                    __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.push(g);\n            });\n        }\n        return this;\n    }\n    group(opts, groupName) {\n        argsert(' ', [opts, groupName], arguments.length);\n        const existing = __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName] || __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName];\n        if (__classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName]) {\n            delete __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName];\n        }\n        const seen = {};\n        __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName] = (existing || []).concat(opts).filter(key => {\n            if (seen[key])\n                return false;\n            return (seen[key] = true);\n        });\n        return this;\n    }\n    hide(key) {\n        argsert('', [key], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").hiddenOptions.push(key);\n        return this;\n    }\n    implies(key, value) {\n        argsert(' [number|string|array]', [key, value], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").implies(key, value);\n        return this;\n    }\n    locale(locale) {\n        argsert('[string]', [locale], arguments.length);\n        if (locale === undefined) {\n            this[kGuessLocale]();\n            return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.getLocale();\n        }\n        __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.setLocale(locale);\n        return this;\n    }\n    middleware(callback, applyBeforeValidation, global) {\n        return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").addMiddleware(callback, !!applyBeforeValidation, global);\n    }\n    nargs(key, value) {\n        argsert(' [number]', [key, value], arguments.length);\n        this[kPopulateParserHintSingleValueDictionary](this.nargs.bind(this), 'narg', key, value);\n        return this;\n    }\n    normalize(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('normalize', keys);\n        return this;\n    }\n    number(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('number', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    option(key, opt) {\n        argsert(' [object]', [key, opt], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                this.options(k, key[k]);\n            });\n        }\n        else {\n            if (typeof opt !== 'object') {\n                opt = {};\n            }\n            this[kTrackManuallySetKeys](key);\n            if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\") && (key === 'version' || (opt === null || opt === void 0 ? void 0 : opt.alias) === 'version')) {\n                this[kEmitWarning]([\n                    '\"version\" is a reserved word.',\n                    'Please do one of the following:',\n                    '- Disable version with `yargs.version(false)` if using \"version\" as an option',\n                    '- Use the built-in `yargs.version` method instead (if applicable)',\n                    '- Use a different option key',\n                    'https://yargs.js.org/docs/#api-reference-version',\n                ].join('\\n'), undefined, 'versionWarning');\n            }\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[key] = true;\n            if (opt.alias)\n                this.alias(key, opt.alias);\n            const deprecate = opt.deprecate || opt.deprecated;\n            if (deprecate) {\n                this.deprecateOption(key, deprecate);\n            }\n            const demand = opt.demand || opt.required || opt.require;\n            if (demand) {\n                this.demand(key, demand);\n            }\n            if (opt.demandOption) {\n                this.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined);\n            }\n            if (opt.conflicts) {\n                this.conflicts(key, opt.conflicts);\n            }\n            if ('default' in opt) {\n                this.default(key, opt.default);\n            }\n            if (opt.implies !== undefined) {\n                this.implies(key, opt.implies);\n            }\n            if (opt.nargs !== undefined) {\n                this.nargs(key, opt.nargs);\n            }\n            if (opt.config) {\n                this.config(key, opt.configParser);\n            }\n            if (opt.normalize) {\n                this.normalize(key);\n            }\n            if (opt.choices) {\n                this.choices(key, opt.choices);\n            }\n            if (opt.coerce) {\n                this.coerce(key, opt.coerce);\n            }\n            if (opt.group) {\n                this.group(key, opt.group);\n            }\n            if (opt.boolean || opt.type === 'boolean') {\n                this.boolean(key);\n                if (opt.alias)\n                    this.boolean(opt.alias);\n            }\n            if (opt.array || opt.type === 'array') {\n                this.array(key);\n                if (opt.alias)\n                    this.array(opt.alias);\n            }\n            if (opt.number || opt.type === 'number') {\n                this.number(key);\n                if (opt.alias)\n                    this.number(opt.alias);\n            }\n            if (opt.string || opt.type === 'string') {\n                this.string(key);\n                if (opt.alias)\n                    this.string(opt.alias);\n            }\n            if (opt.count || opt.type === 'count') {\n                this.count(key);\n            }\n            if (typeof opt.global === 'boolean') {\n                this.global(key, opt.global);\n            }\n            if (opt.defaultDescription) {\n                __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] = opt.defaultDescription;\n            }\n            if (opt.skipValidation) {\n                this.skipValidation(key);\n            }\n            const desc = opt.describe || opt.description || opt.desc;\n            const descriptions = __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getDescriptions();\n            if (!Object.prototype.hasOwnProperty.call(descriptions, key) ||\n                typeof desc === 'string') {\n                this.describe(key, desc);\n            }\n            if (opt.hidden) {\n                this.hide(key);\n            }\n            if (opt.requiresArg) {\n                this.requiresArg(key);\n            }\n        }\n        return this;\n    }\n    options(key, opt) {\n        return this.option(key, opt);\n    }\n    parse(args, shortCircuit, _parseFn) {\n        argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length);\n        this[kFreeze]();\n        if (typeof args === 'undefined') {\n            args = __classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\");\n        }\n        if (typeof shortCircuit === 'object') {\n            __classPrivateFieldSet(this, _YargsInstance_parseContext, shortCircuit, \"f\");\n            shortCircuit = _parseFn;\n        }\n        if (typeof shortCircuit === 'function') {\n            __classPrivateFieldSet(this, _YargsInstance_parseFn, shortCircuit, \"f\");\n            shortCircuit = false;\n        }\n        if (!shortCircuit)\n            __classPrivateFieldSet(this, _YargsInstance_processArgs, args, \"f\");\n        if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n            __classPrivateFieldSet(this, _YargsInstance_exitProcess, false, \"f\");\n        const parsed = this[kRunYargsParserAndExecuteCommands](args, !!shortCircuit);\n        const tmpParsed = this.parsed;\n        __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").setParsed(this.parsed);\n        if (isPromise(parsed)) {\n            return parsed\n                .then(argv => {\n                if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n                    __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"), argv, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n                return argv;\n            })\n                .catch(err => {\n                if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\")) {\n                    __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\")(err, this.parsed.argv, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n                }\n                throw err;\n            })\n                .finally(() => {\n                this[kUnfreeze]();\n                this.parsed = tmpParsed;\n            });\n        }\n        else {\n            if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n                __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"), parsed, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n            this[kUnfreeze]();\n            this.parsed = tmpParsed;\n        }\n        return parsed;\n    }\n    parseAsync(args, shortCircuit, _parseFn) {\n        const maybePromise = this.parse(args, shortCircuit, _parseFn);\n        return !isPromise(maybePromise)\n            ? Promise.resolve(maybePromise)\n            : maybePromise;\n    }\n    parseSync(args, shortCircuit, _parseFn) {\n        const maybePromise = this.parse(args, shortCircuit, _parseFn);\n        if (isPromise(maybePromise)) {\n            throw new YError('.parseSync() must not be used with asynchronous builders, handlers, or middleware');\n        }\n        return maybePromise;\n    }\n    parserConfiguration(config) {\n        argsert('', [config], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_parserConfig, config, \"f\");\n        return this;\n    }\n    pkgConf(key, rootPath) {\n        argsert(' [string]', [key, rootPath], arguments.length);\n        let conf = null;\n        const obj = this[kPkgUp](rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"));\n        if (obj[key] && typeof obj[key] === 'object') {\n            conf = applyExtends(obj[key], rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || []).concat(conf);\n        }\n        return this;\n    }\n    positional(key, opts) {\n        argsert(' ', [key, opts], arguments.length);\n        const supportedOpts = [\n            'default',\n            'defaultDescription',\n            'implies',\n            'normalize',\n            'choices',\n            'conflicts',\n            'coerce',\n            'type',\n            'describe',\n            'desc',\n            'description',\n            'alias',\n        ];\n        opts = objFilter(opts, (k, v) => {\n            if (k === 'type' && !['string', 'number', 'boolean'].includes(v))\n                return false;\n            return supportedOpts.includes(k);\n        });\n        const fullCommand = __classPrivateFieldGet(this, _YargsInstance_context, \"f\").fullCommands[__classPrivateFieldGet(this, _YargsInstance_context, \"f\").fullCommands.length - 1];\n        const parseOptions = fullCommand\n            ? __classPrivateFieldGet(this, _YargsInstance_command, \"f\").cmdToParseOptions(fullCommand)\n            : {\n                array: [],\n                alias: {},\n                default: {},\n                demand: {},\n            };\n        objectKeys(parseOptions).forEach(pk => {\n            const parseOption = parseOptions[pk];\n            if (Array.isArray(parseOption)) {\n                if (parseOption.indexOf(key) !== -1)\n                    opts[pk] = true;\n            }\n            else {\n                if (parseOption[key] && !(pk in opts))\n                    opts[pk] = parseOption[key];\n            }\n        });\n        this.group(key, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getPositionalGroupName());\n        return this.option(key, opts);\n    }\n    recommendCommands(recommend = true) {\n        argsert('[boolean]', [recommend], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_recommendCommands, recommend, \"f\");\n        return this;\n    }\n    required(keys, max, msg) {\n        return this.demand(keys, max, msg);\n    }\n    require(keys, max, msg) {\n        return this.demand(keys, max, msg);\n    }\n    requiresArg(keys) {\n        argsert(' [number]', [keys], arguments.length);\n        if (typeof keys === 'string' && __classPrivateFieldGet(this, _YargsInstance_options, \"f\").narg[keys]) {\n            return this;\n        }\n        else {\n            this[kPopulateParserHintSingleValueDictionary](this.requiresArg.bind(this), 'narg', keys, NaN);\n        }\n        return this;\n    }\n    showCompletionScript($0, cmd) {\n        argsert('[string] [string]', [$0, cmd], arguments.length);\n        $0 = $0 || this.$0;\n        __classPrivateFieldGet(this, _YargsInstance_logger, \"f\").log(__classPrivateFieldGet(this, _YargsInstance_completion, \"f\").generateCompletionScript($0, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") || 'completion'));\n        return this;\n    }\n    showHelp(level) {\n        argsert('[string|function]', [level], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n        if (!__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").hasCachedHelpMessage()) {\n            if (!this.parsed) {\n                const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\"), undefined, undefined, 0, true);\n                if (isPromise(parse)) {\n                    parse.then(() => {\n                        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n                    });\n                    return this;\n                }\n            }\n            const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runDefaultBuilderOn(this);\n            if (isPromise(builderResponse)) {\n                builderResponse.then(() => {\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n                });\n                return this;\n            }\n        }\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n        return this;\n    }\n    scriptName(scriptName) {\n        this.customScriptName = true;\n        this.$0 = scriptName;\n        return this;\n    }\n    showHelpOnFail(enabled, message) {\n        argsert('[boolean|string] [string]', [enabled, message], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelpOnFail(enabled, message);\n        return this;\n    }\n    showVersion(level) {\n        argsert('[string|function]', [level], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showVersion(level);\n        return this;\n    }\n    skipValidation(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('skipValidation', keys);\n        return this;\n    }\n    strict(enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_strict, enabled !== false, \"f\");\n        return this;\n    }\n    strictCommands(enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_strictCommands, enabled !== false, \"f\");\n        return this;\n    }\n    strictOptions(enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_strictOptions, enabled !== false, \"f\");\n        return this;\n    }\n    string(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('string', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    terminalWidth() {\n        argsert([], 0);\n        return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.stdColumns;\n    }\n    updateLocale(obj) {\n        return this.updateStrings(obj);\n    }\n    updateStrings(obj) {\n        argsert('', [obj], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.updateLocale(obj);\n        return this;\n    }\n    usage(msg, description, builder, handler) {\n        argsert(' [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length);\n        if (description !== undefined) {\n            assertNotStrictEqual(msg, null, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            if ((msg || '').match(/^\\$0( |$)/)) {\n                return this.command(msg, description, builder, handler);\n            }\n            else {\n                throw new YError('.usage() description must start with $0 if being used as alias for .command()');\n            }\n        }\n        else {\n            __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").usage(msg);\n            return this;\n        }\n    }\n    usageConfiguration(config) {\n        argsert('', [config], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_usageConfig, config, \"f\");\n        return this;\n    }\n    version(opt, msg, ver) {\n        const defaultVersionOpt = 'version';\n        argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length);\n        if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\")) {\n            this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"));\n            __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").version(undefined);\n            __classPrivateFieldSet(this, _YargsInstance_versionOpt, null, \"f\");\n        }\n        if (arguments.length === 0) {\n            ver = this[kGuessVersion]();\n            opt = defaultVersionOpt;\n        }\n        else if (arguments.length === 1) {\n            if (opt === false) {\n                return this;\n            }\n            ver = opt;\n            opt = defaultVersionOpt;\n        }\n        else if (arguments.length === 2) {\n            ver = msg;\n            msg = undefined;\n        }\n        __classPrivateFieldSet(this, _YargsInstance_versionOpt, typeof opt === 'string' ? opt : defaultVersionOpt, \"f\");\n        msg = msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show version number');\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").version(ver || undefined);\n        this.boolean(__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"));\n        this.describe(__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"), msg);\n        return this;\n    }\n    wrap(cols) {\n        argsert('', [cols], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").wrap(cols);\n        return this;\n    }\n    [(_YargsInstance_command = new WeakMap(), _YargsInstance_cwd = new WeakMap(), _YargsInstance_context = new WeakMap(), _YargsInstance_completion = new WeakMap(), _YargsInstance_completionCommand = new WeakMap(), _YargsInstance_defaultShowHiddenOpt = new WeakMap(), _YargsInstance_exitError = new WeakMap(), _YargsInstance_detectLocale = new WeakMap(), _YargsInstance_emittedWarnings = new WeakMap(), _YargsInstance_exitProcess = new WeakMap(), _YargsInstance_frozens = new WeakMap(), _YargsInstance_globalMiddleware = new WeakMap(), _YargsInstance_groups = new WeakMap(), _YargsInstance_hasOutput = new WeakMap(), _YargsInstance_helpOpt = new WeakMap(), _YargsInstance_isGlobalContext = new WeakMap(), _YargsInstance_logger = new WeakMap(), _YargsInstance_output = new WeakMap(), _YargsInstance_options = new WeakMap(), _YargsInstance_parentRequire = new WeakMap(), _YargsInstance_parserConfig = new WeakMap(), _YargsInstance_parseFn = new WeakMap(), _YargsInstance_parseContext = new WeakMap(), _YargsInstance_pkgs = new WeakMap(), _YargsInstance_preservedGroups = new WeakMap(), _YargsInstance_processArgs = new WeakMap(), _YargsInstance_recommendCommands = new WeakMap(), _YargsInstance_shim = new WeakMap(), _YargsInstance_strict = new WeakMap(), _YargsInstance_strictCommands = new WeakMap(), _YargsInstance_strictOptions = new WeakMap(), _YargsInstance_usage = new WeakMap(), _YargsInstance_usageConfig = new WeakMap(), _YargsInstance_versionOpt = new WeakMap(), _YargsInstance_validation = new WeakMap(), kCopyDoubleDash)](argv) {\n        if (!argv._ || !argv['--'])\n            return argv;\n        argv._.push.apply(argv._, argv['--']);\n        try {\n            delete argv['--'];\n        }\n        catch (_err) { }\n        return argv;\n    }\n    [kCreateLogger]() {\n        return {\n            log: (...args) => {\n                if (!this[kHasParseCallback]())\n                    console.log(...args);\n                __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n                if (__classPrivateFieldGet(this, _YargsInstance_output, \"f\").length)\n                    __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + '\\n', \"f\");\n                __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + args.join(' '), \"f\");\n            },\n            error: (...args) => {\n                if (!this[kHasParseCallback]())\n                    console.error(...args);\n                __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n                if (__classPrivateFieldGet(this, _YargsInstance_output, \"f\").length)\n                    __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + '\\n', \"f\");\n                __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + args.join(' '), \"f\");\n            },\n        };\n    }\n    [kDeleteFromParserHintObject](optionKey) {\n        objectKeys(__classPrivateFieldGet(this, _YargsInstance_options, \"f\")).forEach((hintKey) => {\n            if (((key) => key === 'configObjects')(hintKey))\n                return;\n            const hint = __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[hintKey];\n            if (Array.isArray(hint)) {\n                if (hint.includes(optionKey))\n                    hint.splice(hint.indexOf(optionKey), 1);\n            }\n            else if (typeof hint === 'object') {\n                delete hint[optionKey];\n            }\n        });\n        delete __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getDescriptions()[optionKey];\n    }\n    [kEmitWarning](warning, type, deduplicationId) {\n        if (!__classPrivateFieldGet(this, _YargsInstance_emittedWarnings, \"f\")[deduplicationId]) {\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.emitWarning(warning, type);\n            __classPrivateFieldGet(this, _YargsInstance_emittedWarnings, \"f\")[deduplicationId] = true;\n        }\n    }\n    [kFreeze]() {\n        __classPrivateFieldGet(this, _YargsInstance_frozens, \"f\").push({\n            options: __classPrivateFieldGet(this, _YargsInstance_options, \"f\"),\n            configObjects: __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects.slice(0),\n            exitProcess: __classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"),\n            groups: __classPrivateFieldGet(this, _YargsInstance_groups, \"f\"),\n            strict: __classPrivateFieldGet(this, _YargsInstance_strict, \"f\"),\n            strictCommands: __classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\"),\n            strictOptions: __classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\"),\n            completionCommand: __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\"),\n            output: __classPrivateFieldGet(this, _YargsInstance_output, \"f\"),\n            exitError: __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"),\n            hasOutput: __classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\"),\n            parsed: this.parsed,\n            parseFn: __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"),\n            parseContext: __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\"),\n        });\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").freeze();\n        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").freeze();\n        __classPrivateFieldGet(this, _YargsInstance_command, \"f\").freeze();\n        __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").freeze();\n    }\n    [kGetDollarZero]() {\n        let $0 = '';\n        let default$0;\n        if (/\\b(node|iojs|electron)(\\.exe)?$/.test(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv()[0])) {\n            default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv().slice(1, 2);\n        }\n        else {\n            default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv().slice(0, 1);\n        }\n        $0 = default$0\n            .map(x => {\n            const b = this[kRebase](__classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), x);\n            return x.match(/^(\\/|([a-zA-Z]:)?\\\\)/) && b.length < x.length ? b : x;\n        })\n            .join(' ')\n            .trim();\n        if (__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('_') &&\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getProcessArgvBin() === __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('_')) {\n            $0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")\n                .getEnv('_')\n                .replace(`${__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.dirname(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.execPath())}/`, '');\n        }\n        return $0;\n    }\n    [kGetParserConfiguration]() {\n        return __classPrivateFieldGet(this, _YargsInstance_parserConfig, \"f\");\n    }\n    [kGetUsageConfiguration]() {\n        return __classPrivateFieldGet(this, _YargsInstance_usageConfig, \"f\");\n    }\n    [kGuessLocale]() {\n        if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, \"f\"))\n            return;\n        const locale = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LC_ALL') ||\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LC_MESSAGES') ||\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LANG') ||\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LANGUAGE') ||\n            'en_US';\n        this.locale(locale.replace(/[.:].*/, ''));\n    }\n    [kGuessVersion]() {\n        const obj = this[kPkgUp]();\n        return obj.version || 'unknown';\n    }\n    [kParsePositionalNumbers](argv) {\n        const args = argv['--'] ? argv['--'] : argv._;\n        for (let i = 0, arg; (arg = args[i]) !== undefined; i++) {\n            if (__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").Parser.looksLikeNumber(arg) &&\n                Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) {\n                args[i] = Number(arg);\n            }\n        }\n        return argv;\n    }\n    [kPkgUp](rootPath) {\n        const npath = rootPath || '*';\n        if (__classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath])\n            return __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath];\n        let obj = {};\n        try {\n            let startDir = rootPath || __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").mainFilename;\n            if (!rootPath && __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.extname(startDir)) {\n                startDir = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.dirname(startDir);\n            }\n            const pkgJsonPath = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").findUp(startDir, (dir, names) => {\n                if (names.includes('package.json')) {\n                    return 'package.json';\n                }\n                else {\n                    return undefined;\n                }\n            });\n            assertNotStrictEqual(pkgJsonPath, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            obj = JSON.parse(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").readFileSync(pkgJsonPath, 'utf8'));\n        }\n        catch (_noop) { }\n        __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath] = obj || {};\n        return __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath];\n    }\n    [kPopulateParserHintArray](type, keys) {\n        keys = [].concat(keys);\n        keys.forEach(key => {\n            key = this[kSanitizeKey](key);\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type].push(key);\n        });\n    }\n    [kPopulateParserHintSingleValueDictionary](builder, type, key, value) {\n        this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] = value;\n        });\n    }\n    [kPopulateParserHintArrayDictionary](builder, type, key, value) {\n        this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] || []).concat(value);\n        });\n    }\n    [kPopulateParserHintDictionary](builder, type, key, value, singleKeyHandler) {\n        if (Array.isArray(key)) {\n            key.forEach(k => {\n                builder(k, value);\n            });\n        }\n        else if (((key) => typeof key === 'object')(key)) {\n            for (const k of objectKeys(key)) {\n                builder(k, key[k]);\n            }\n        }\n        else {\n            singleKeyHandler(type, this[kSanitizeKey](key), value);\n        }\n    }\n    [kSanitizeKey](key) {\n        if (key === '__proto__')\n            return '___proto___';\n        return key;\n    }\n    [kSetKey](key, set) {\n        this[kPopulateParserHintSingleValueDictionary](this[kSetKey].bind(this), 'key', key, set);\n        return this;\n    }\n    [kUnfreeze]() {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n        const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, \"f\").pop();\n        assertNotStrictEqual(frozen, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n        let configObjects;\n        (_a = this, _b = this, _c = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, {\n            options: ({ set value(_o) { __classPrivateFieldSet(_a, _YargsInstance_options, _o, \"f\"); } }).value,\n            configObjects,\n            exitProcess: ({ set value(_o) { __classPrivateFieldSet(_b, _YargsInstance_exitProcess, _o, \"f\"); } }).value,\n            groups: ({ set value(_o) { __classPrivateFieldSet(_c, _YargsInstance_groups, _o, \"f\"); } }).value,\n            output: ({ set value(_o) { __classPrivateFieldSet(_d, _YargsInstance_output, _o, \"f\"); } }).value,\n            exitError: ({ set value(_o) { __classPrivateFieldSet(_e, _YargsInstance_exitError, _o, \"f\"); } }).value,\n            hasOutput: ({ set value(_o) { __classPrivateFieldSet(_f, _YargsInstance_hasOutput, _o, \"f\"); } }).value,\n            parsed: this.parsed,\n            strict: ({ set value(_o) { __classPrivateFieldSet(_g, _YargsInstance_strict, _o, \"f\"); } }).value,\n            strictCommands: ({ set value(_o) { __classPrivateFieldSet(_h, _YargsInstance_strictCommands, _o, \"f\"); } }).value,\n            strictOptions: ({ set value(_o) { __classPrivateFieldSet(_j, _YargsInstance_strictOptions, _o, \"f\"); } }).value,\n            completionCommand: ({ set value(_o) { __classPrivateFieldSet(_k, _YargsInstance_completionCommand, _o, \"f\"); } }).value,\n            parseFn: ({ set value(_o) { __classPrivateFieldSet(_l, _YargsInstance_parseFn, _o, \"f\"); } }).value,\n            parseContext: ({ set value(_o) { __classPrivateFieldSet(_m, _YargsInstance_parseContext, _o, \"f\"); } }).value,\n        } = frozen);\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = configObjects;\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").unfreeze();\n        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unfreeze();\n        __classPrivateFieldGet(this, _YargsInstance_command, \"f\").unfreeze();\n        __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").unfreeze();\n    }\n    [kValidateAsync](validation, argv) {\n        return maybeAsyncResult(argv, result => {\n            validation(result);\n            return result;\n        });\n    }\n    getInternalMethods() {\n        return {\n            getCommandInstance: this[kGetCommandInstance].bind(this),\n            getContext: this[kGetContext].bind(this),\n            getHasOutput: this[kGetHasOutput].bind(this),\n            getLoggerInstance: this[kGetLoggerInstance].bind(this),\n            getParseContext: this[kGetParseContext].bind(this),\n            getParserConfiguration: this[kGetParserConfiguration].bind(this),\n            getUsageConfiguration: this[kGetUsageConfiguration].bind(this),\n            getUsageInstance: this[kGetUsageInstance].bind(this),\n            getValidationInstance: this[kGetValidationInstance].bind(this),\n            hasParseCallback: this[kHasParseCallback].bind(this),\n            isGlobalContext: this[kIsGlobalContext].bind(this),\n            postProcess: this[kPostProcess].bind(this),\n            reset: this[kReset].bind(this),\n            runValidation: this[kRunValidation].bind(this),\n            runYargsParserAndExecuteCommands: this[kRunYargsParserAndExecuteCommands].bind(this),\n            setHasOutput: this[kSetHasOutput].bind(this),\n        };\n    }\n    [kGetCommandInstance]() {\n        return __classPrivateFieldGet(this, _YargsInstance_command, \"f\");\n    }\n    [kGetContext]() {\n        return __classPrivateFieldGet(this, _YargsInstance_context, \"f\");\n    }\n    [kGetHasOutput]() {\n        return __classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\");\n    }\n    [kGetLoggerInstance]() {\n        return __classPrivateFieldGet(this, _YargsInstance_logger, \"f\");\n    }\n    [kGetParseContext]() {\n        return __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\") || {};\n    }\n    [kGetUsageInstance]() {\n        return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\");\n    }\n    [kGetValidationInstance]() {\n        return __classPrivateFieldGet(this, _YargsInstance_validation, \"f\");\n    }\n    [kHasParseCallback]() {\n        return !!__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\");\n    }\n    [kIsGlobalContext]() {\n        return __classPrivateFieldGet(this, _YargsInstance_isGlobalContext, \"f\");\n    }\n    [kPostProcess](argv, populateDoubleDash, calledFromCommand, runGlobalMiddleware) {\n        if (calledFromCommand)\n            return argv;\n        if (isPromise(argv))\n            return argv;\n        if (!populateDoubleDash) {\n            argv = this[kCopyDoubleDash](argv);\n        }\n        const parsePositionalNumbers = this[kGetParserConfiguration]()['parse-positional-numbers'] ||\n            this[kGetParserConfiguration]()['parse-positional-numbers'] === undefined;\n        if (parsePositionalNumbers) {\n            argv = this[kParsePositionalNumbers](argv);\n        }\n        if (runGlobalMiddleware) {\n            argv = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), false);\n        }\n        return argv;\n    }\n    [kReset](aliases = {}) {\n        __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, \"f\") || {}, \"f\");\n        const tmpOptions = {};\n        tmpOptions.local = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local || [];\n        tmpOptions.configObjects = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || [];\n        const localLookup = {};\n        tmpOptions.local.forEach(l => {\n            localLookup[l] = true;\n            (aliases[l] || []).forEach(a => {\n                localLookup[a] = true;\n            });\n        });\n        Object.assign(__classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\"), Object.keys(__classPrivateFieldGet(this, _YargsInstance_groups, \"f\")).reduce((acc, groupName) => {\n            const keys = __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName].filter(key => !(key in localLookup));\n            if (keys.length > 0) {\n                acc[groupName] = keys;\n            }\n            return acc;\n        }, {}));\n        __classPrivateFieldSet(this, _YargsInstance_groups, {}, \"f\");\n        const arrayOptions = [\n            'array',\n            'boolean',\n            'string',\n            'skipValidation',\n            'count',\n            'normalize',\n            'number',\n            'hiddenOptions',\n        ];\n        const objectOptions = [\n            'narg',\n            'key',\n            'alias',\n            'default',\n            'defaultDescription',\n            'config',\n            'choices',\n            'demandedOptions',\n            'demandedCommands',\n            'deprecatedOptions',\n        ];\n        arrayOptions.forEach(k => {\n            tmpOptions[k] = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[k] || []).filter((k) => !localLookup[k]);\n        });\n        objectOptions.forEach((k) => {\n            tmpOptions[k] = objFilter(__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[k], k => !localLookup[k]);\n        });\n        tmpOptions.envPrefix = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix;\n        __classPrivateFieldSet(this, _YargsInstance_options, tmpOptions, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\")\n            ? __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").reset(localLookup)\n            : Usage(this, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, \"f\")\n            ? __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").reset(localLookup)\n            : Validation(this, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, \"f\")\n            ? __classPrivateFieldGet(this, _YargsInstance_command, \"f\").reset()\n            : Command(__classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_validation, \"f\"), __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n        if (!__classPrivateFieldGet(this, _YargsInstance_completion, \"f\"))\n            __classPrivateFieldSet(this, _YargsInstance_completion, Completion(this, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_command, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").reset();\n        __classPrivateFieldSet(this, _YargsInstance_completionCommand, null, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_output, '', \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_exitError, null, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, false, \"f\");\n        this.parsed = false;\n        return this;\n    }\n    [kRebase](base, dir) {\n        return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.relative(base, dir);\n    }\n    [kRunYargsParserAndExecuteCommands](args, shortCircuit, calledFromCommand, commandIndex = 0, helpOnly = false) {\n        let skipValidation = !!calledFromCommand || helpOnly;\n        args = args || __classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").__ = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.__;\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration = this[kGetParserConfiguration]();\n        const populateDoubleDash = !!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration['populate--'];\n        const config = Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration, {\n            'populate--': true,\n        });\n        const parsed = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").Parser.detailed(args, Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, \"f\"), {\n            configuration: { 'parse-positional-numbers': false, ...config },\n        }));\n        const argv = Object.assign(parsed.argv, __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\"));\n        let argvPromise = undefined;\n        const aliases = parsed.aliases;\n        let helpOptSet = false;\n        let versionOptSet = false;\n        Object.keys(argv).forEach(key => {\n            if (key === __classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\") && argv[key]) {\n                helpOptSet = true;\n            }\n            else if (key === __classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\") && argv[key]) {\n                versionOptSet = true;\n            }\n        });\n        argv.$0 = this.$0;\n        this.parsed = parsed;\n        if (commandIndex === 0) {\n            __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").clearCachedHelpMessage();\n        }\n        try {\n            this[kGuessLocale]();\n            if (shortCircuit) {\n                return this[kPostProcess](argv, populateDoubleDash, !!calledFromCommand, false);\n            }\n            if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")) {\n                const helpCmds = [__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")]\n                    .concat(aliases[__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")] || [])\n                    .filter(k => k.length > 1);\n                if (helpCmds.includes('' + argv._[argv._.length - 1])) {\n                    argv._.pop();\n                    helpOptSet = true;\n                }\n            }\n            __classPrivateFieldSet(this, _YargsInstance_isGlobalContext, false, \"f\");\n            const handlerKeys = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").getCommands();\n            const requestCompletions = __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").completionKey in argv;\n            const skipRecommendation = helpOptSet || requestCompletions || helpOnly;\n            if (argv._.length) {\n                if (handlerKeys.length) {\n                    let firstUnknownCommand;\n                    for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) {\n                        cmd = String(argv._[i]);\n                        if (handlerKeys.includes(cmd) && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) {\n                            const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runCommand(cmd, this, parsed, i + 1, helpOnly, helpOptSet || versionOptSet || helpOnly);\n                            return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false);\n                        }\n                        else if (!firstUnknownCommand &&\n                            cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) {\n                            firstUnknownCommand = cmd;\n                            break;\n                        }\n                    }\n                    if (!__classPrivateFieldGet(this, _YargsInstance_command, \"f\").hasDefaultCommand() &&\n                        __classPrivateFieldGet(this, _YargsInstance_recommendCommands, \"f\") &&\n                        firstUnknownCommand &&\n                        !skipRecommendation) {\n                        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").recommendCommands(firstUnknownCommand, handlerKeys);\n                    }\n                }\n                if (__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") &&\n                    argv._.includes(__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) &&\n                    !requestCompletions) {\n                    if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n                        setBlocking(true);\n                    this.showCompletionScript();\n                    this.exit(0);\n                }\n            }\n            if (__classPrivateFieldGet(this, _YargsInstance_command, \"f\").hasDefaultCommand() && !skipRecommendation) {\n                const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runCommand(null, this, parsed, 0, helpOnly, helpOptSet || versionOptSet || helpOnly);\n                return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false);\n            }\n            if (requestCompletions) {\n                if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n                    setBlocking(true);\n                args = [].concat(args);\n                const completionArgs = args.slice(args.indexOf(`--${__classPrivateFieldGet(this, _YargsInstance_completion, \"f\").completionKey}`) + 1);\n                __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(completionArgs, (err, completions) => {\n                    if (err)\n                        throw new YError(err.message);\n                    (completions || []).forEach(completion => {\n                        __classPrivateFieldGet(this, _YargsInstance_logger, \"f\").log(completion);\n                    });\n                    this.exit(0);\n                });\n                return this[kPostProcess](argv, !populateDoubleDash, !!calledFromCommand, false);\n            }\n            if (!__classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\")) {\n                if (helpOptSet) {\n                    if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n                        setBlocking(true);\n                    skipValidation = true;\n                    this.showHelp('log');\n                    this.exit(0);\n                }\n                else if (versionOptSet) {\n                    if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n                        setBlocking(true);\n                    skipValidation = true;\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showVersion('log');\n                    this.exit(0);\n                }\n            }\n            if (!skipValidation && __classPrivateFieldGet(this, _YargsInstance_options, \"f\").skipValidation.length > 0) {\n                skipValidation = Object.keys(argv).some(key => __classPrivateFieldGet(this, _YargsInstance_options, \"f\").skipValidation.indexOf(key) >= 0 && argv[key] === true);\n            }\n            if (!skipValidation) {\n                if (parsed.error)\n                    throw new YError(parsed.error.message);\n                if (!requestCompletions) {\n                    const validation = this[kRunValidation](aliases, {}, parsed.error);\n                    if (!calledFromCommand) {\n                        argvPromise = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), true);\n                    }\n                    argvPromise = this[kValidateAsync](validation, argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv);\n                    if (isPromise(argvPromise) && !calledFromCommand) {\n                        argvPromise = argvPromise.then(() => {\n                            return applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), false);\n                        });\n                    }\n                }\n            }\n        }\n        catch (err) {\n            if (err instanceof YError)\n                __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(err.message, err);\n            else\n                throw err;\n        }\n        return this[kPostProcess](argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv, populateDoubleDash, !!calledFromCommand, true);\n    }\n    [kRunValidation](aliases, positionalMap, parseErrors, isDefaultCommand) {\n        const demandedOptions = { ...this.getDemandedOptions() };\n        return (argv) => {\n            if (parseErrors)\n                throw new YError(parseErrors.message);\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").nonOptionCount(argv);\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").requiredArguments(argv, demandedOptions);\n            let failedStrictCommands = false;\n            if (__classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\")) {\n                failedStrictCommands = __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownCommands(argv);\n            }\n            if (__classPrivateFieldGet(this, _YargsInstance_strict, \"f\") && !failedStrictCommands) {\n                __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownArguments(argv, aliases, positionalMap, !!isDefaultCommand);\n            }\n            else if (__classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\")) {\n                __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownArguments(argv, aliases, {}, false, false);\n            }\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").limitedChoices(argv);\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").implications(argv);\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").conflicting(argv);\n        };\n    }\n    [kSetHasOutput]() {\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n    }\n    [kTrackManuallySetKeys](keys) {\n        if (typeof keys === 'string') {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[keys] = true;\n        }\n        else {\n            for (const k of keys) {\n                __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[k] = true;\n            }\n        }\n    }\n}\nexport function isYargsInstance(y) {\n    return !!y && typeof y.getInternalMethods === 'function';\n}\n", "'use strict';\n\n// Bootstraps yargs for ESM:\nimport esmPlatformShim from './lib/platform-shims/esm.mjs';\nimport {YargsFactory} from './build/lib/yargs-factory.js';\n\nconst Yargs = YargsFactory(esmPlatformShim);\nexport default Yargs;\n", "import yargs, {Arguments, Argv} from 'yargs';\n\n// A function to be called when the command completes.\ntype CompletedFn = (err: Error | null) => Promise | void;\n\n/** List of functions to be called upon command completion. */\nconst completedFunctions: CompletedFn[] = [];\n\n/** Register a function to be called when the command completes. */\nexport function registerCompletedFunction(fn: CompletedFn) {\n  completedFunctions.push(fn);\n}\n\n/**\n * Run the yargs process, as configured by the supplied function, calling a set of completion\n * functions after the command completes.\n */\nexport async function runParserWithCompletedFunctions(applyConfiguration: (argv: Argv) => Argv) {\n  let err: Error | null = null;\n  try {\n    await applyConfiguration(yargs(process.argv.slice(2)))\n      .exitProcess(false)\n      .parse();\n  } catch (e) {\n    err = e as Error;\n    if ([undefined, 0].includes(process.exitCode)) {\n      process.exitCode = 1;\n    }\n  } finally {\n    for (const completedFunc of completedFunctions) {\n      await completedFunc(err);\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {info} from 'console';\nimport {Argv} from 'yargs';\nimport {assertValidCaretakerConfig, assertValidGithubConfig, getConfig} from '../utils/config.js';\nimport {CheckModule} from './check/cli.js';\nimport {HandoffModule} from './handoff/cli.js';\n\n/** Build the parser for the caretaker commands. */\nexport function buildCaretakerParser(argv: Argv) {\n  return argv.middleware(caretakerCommandCanRun, false).command(CheckModule).command(HandoffModule);\n}\n\nfunction caretakerCommandCanRun() {\n  try {\n    getConfig([assertValidCaretakerConfig, assertValidGithubConfig]);\n  } catch {\n    info('The `caretaker` command is not enabled in this repository.');\n    info(`   To enable it, provide a caretaker config in the repository's .ng-dev/ directory`);\n    process.exit(1);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Log} from '../logging.js';\n\nimport {Argv} from 'yargs';\nimport {AuthenticatedGitClient} from './authenticated-git-client.js';\nimport {GITHUB_TOKEN_GENERATE_URL} from './github-urls.js';\n\n/** Sets up the `github-token` command option for the given Yargs instance. */\nexport function addGithubTokenOption(argv: Argv) {\n  return (\n    argv\n      // 'github-token' is casted to 'githubToken' to properly set up typings to reflect the key in\n      // the Argv object being camelCase rather than kebab case due to the `camel-case-expansion`\n      // config: https://github.com/yargs/yargs-parser#camel-case-expansion\n      .option('github-token' as 'githubToken', {\n        type: 'string',\n        default: '',\n        defaultDescription: '',\n        description: 'Github token. If not set, token is retrieved from the environment variables.',\n        // We use the coerce function as a way of allowing the user to provide the value, otherwise\n        // looking for it in the environment.\n        coerce: configureGitClientWithTokenOrFromEnvironment,\n      })\n  );\n}\n\n/**\n * If the github token is able to be determined, either by being provided as a parameter or being\n * present in the environment, it is used to set the configuration for the AuthenticatedGitClient.\n * Otherwise, an error is thrown.\n *\n * We explicitly return void for this function to allow this function to be used as a `coerce`\n * function for yargs. This allows for the option, `github-token` to be available for users without\n * including it in the generated types for the `Argv` object on a command, helping us to enforce\n * that the token should only be accessed from the AuthenticatedGitClient itself.\n */\nexport function configureGitClientWithTokenOrFromEnvironment(token: string | undefined): void {\n  const githubToken = token || (process.env.GITHUB_TOKEN ?? process.env.TOKEN);\n  if (!githubToken) {\n    Log.error('No Github token set. Please set the `GITHUB_TOKEN` environment variable.');\n    Log.error('Alternatively, pass the `--github-token` command line flag.');\n    Log.warn(`You can generate a token here: ${GITHUB_TOKEN_GENERATE_URL}`);\n    throw Error('Unable to determine the Github token.');\n  }\n\n  AuthenticatedGitClient.configure(githubToken);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGithubClient} from './github.js';\nimport {RestEndpointMethodTypes} from '@octokit/rest';\n\n// TODO: sort out implementing caching if we decide to use this somewhere else\nasync function isGooglerOrgMember(\n  client: AuthenticatedGithubClient,\n  username: string,\n): Promise {\n  try {\n    const response = await client.orgs.checkMembershipForUser({org: 'googlers', username});\n    if ((response.status as number) === 204) {\n      return true;\n    }\n  } catch {}\n  return false;\n}\n\n/** Shared base object for a derived Check or Status result. */\ninterface CheckOrStatusResult {\n  type: string;\n  name: string;\n  result: string;\n  url: string;\n}\n\n/** A derived Check result */\ninterface CheckResult extends CheckOrStatusResult {\n  type: 'check';\n  check: RestEndpointMethodTypes['checks']['listForRef']['response']['data']['check_runs'][number];\n}\n\n/** A derived Status result */\ninterface StatusResult extends CheckOrStatusResult {\n  type: 'status';\n  description: string;\n  status: RestEndpointMethodTypes['repos']['getCombinedStatusForRef']['response']['data']['statuses'][number];\n}\n\n/** The overall results of a combined Checks and Statuses check. */\nexport interface CombinedChecksAndStatusesResult {\n  result: 'pending' | 'passing' | 'failing' | null;\n  results: (CheckResult | StatusResult)[];\n}\n\n/**\n * Retrieve a combined listing of the results for a refs statuses and checks.\n */\nasync function getCombinedChecksAndStatusesForRef(\n  github: AuthenticatedGithubClient,\n  params: RestEndpointMethodTypes['checks']['listForRef']['parameters'] &\n    RestEndpointMethodTypes['repos']['getCombinedStatusForRef']['parameters'],\n): Promise {\n  const {data: checkResults} = await github.checks.listForRef(params);\n  const {data: statusResults} = await github.repos.getCombinedStatusForRef(params);\n\n  const results = [\n    ...checkResults.check_runs.map(\n      (result): CheckResult => ({\n        type: 'check',\n        name: result.name,\n        result: result.status === 'completed' ? result.conclusion! : result.status,\n        url: result.details_url ?? '',\n        check: result,\n      }),\n    ),\n    ...statusResults.statuses.map(\n      (result): StatusResult => ({\n        type: 'status',\n        name: result.context,\n        result: result.state,\n        description: result.description ?? '',\n        url: result.target_url ?? '',\n        status: result,\n      }),\n    ),\n  ];\n\n  // TODO: Refactor away from a reducer.\n  return {\n    result: results.reduce(\n      (currentResult, {result}) => {\n        if (currentResult === 'pending' || ['queued', 'in_progress', 'pending'].includes(result)) {\n          return 'pending';\n        }\n\n        if (\n          currentResult === 'failing' ||\n          ['failure', 'error', 'timed_out', 'cancelled'].includes(result)\n        ) {\n          return 'failing';\n        }\n\n        return 'passing';\n      },\n      null as 'pending' | 'failing' | 'passing' | null,\n    ),\n    results,\n  };\n}\n\nexport default {\n  getCombinedChecksAndStatusesForRef,\n  isGooglerOrgMember,\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GithubConfig, CaretakerConfig} from '../../utils/config.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\n\n/** The BaseModule to extend modules for caretaker checks from. */\nexport abstract class BaseModule {\n  /** The data for the module. */\n  readonly data = this.retrieveData();\n\n  constructor(\n    protected git: AuthenticatedGitClient,\n    protected config: {caretaker: CaretakerConfig; github: GithubConfig},\n  ) {}\n\n  /** Asynchronously retrieve data for the module. */\n  protected abstract retrieveData(): Promise;\n\n  /** Print the information discovered for the module to the terminal. */\n  abstract printToTerminal(): Promise;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  ActiveReleaseTrains,\n  getNextBranchName,\n  ReleaseRepoWithApi,\n  ReleaseTrain,\n} from '../../release/versioning/index.js';\nimport githubMacros from '../../utils/git/github-macros.js';\n\nimport {bold, green, Log, red, yellow} from '../../utils/logging.js';\nimport {BaseModule} from './base.js';\n\n/** The result of checking a branch on CI. */\ntype CiBranchStatus = 'pending' | 'passing' | 'failing' | null;\n\n/** A list of results for checking CI branches. */\ntype CiData = {\n  active: boolean;\n  name: string;\n  label: string;\n  status: CiBranchStatus;\n}[];\n\nexport class CiModule extends BaseModule {\n  override async retrieveData() {\n    const nextBranchName = getNextBranchName(this.config.github);\n    const repo: ReleaseRepoWithApi = {\n      api: this.git.github,\n      ...this.git.remoteConfig,\n      nextBranchName,\n    };\n    const {latest, next, releaseCandidate, exceptionalMinor} =\n      await ActiveReleaseTrains.fetch(repo);\n    const ciResultPromises = Object.entries({releaseCandidate, exceptionalMinor, latest, next}).map(\n      async ([trainName, train]: [string, ReleaseTrain | null]) => {\n        if (train === null) {\n          return {\n            active: false,\n            name: trainName,\n            label: '',\n            status: null,\n          };\n        }\n\n        const status = (\n          await githubMacros.getCombinedChecksAndStatusesForRef(this.git.github, {\n            ...this.git.remoteParams,\n            ref: train.branchName,\n          })\n        ).result;\n\n        return {\n          active: true,\n          name: train.branchName,\n          label: `${trainName} (${train.branchName})`,\n          status,\n        };\n      },\n    );\n\n    return await Promise.all(ciResultPromises);\n  }\n\n  override async printToTerminal() {\n    const data = await this.data;\n    const minLabelLength = Math.max(...data.map((result) => result.label.length));\n    Log.info.group(bold(`CI`));\n    data.forEach((result) => {\n      if (result.active === false) {\n        Log.debug(`No active release train for ${result.name}`);\n        return;\n      }\n      const label = result.label.padEnd(minLabelLength);\n      if (result.status === null) {\n        Log.info(`${result.name} branch was not found on CI`);\n      } else if (result.status === 'passing') {\n        Log.info(`${label} ${green('✔')}`);\n      } else if (result.status === 'pending') {\n        Log.info(`${label} ${yellow('⏺')}`);\n      } else {\n        Log.info(`${label} ${red('✘')}`);\n      }\n    });\n    Log.info.groupEnd();\n    Log.info();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport path from 'path';\nimport {Log} from './logging.js';\nimport {CaretakerConfig, GithubConfig} from './config.js';\nimport {SyncFileMatchFn, getGoogleSyncConfig} from './g3-sync-config.js';\nimport {AuthenticatedGitClient} from './git/authenticated-git-client.js';\n\n/** Information expressing the difference between the main and g3 branches */\nexport interface G3StatsData {\n  insertions: number;\n  deletions: number;\n  files: number;\n  separateFiles: number;\n  commits: number;\n}\n\nexport class G3Stats {\n  static async retrieveDiffStats(\n    git: AuthenticatedGitClient,\n    config: {caretaker: CaretakerConfig; github: GithubConfig},\n  ): Promise {\n    const syncMatchFns = await this.getG3SyncFileMatchFns(git, config);\n    const latestSha = this.getLatestShas(git);\n\n    if (\n      syncMatchFns === null ||\n      syncMatchFns.ngMatchFn === null ||\n      syncMatchFns.separateMatchFn === null ||\n      latestSha === null\n    ) {\n      return;\n    }\n\n    return this.getDiffStats(git, latestSha.g3, latestSha.main, syncMatchFns);\n  }\n\n  /**\n   * Get git diff stats between main and g3, for all files and filtered to only g3 affecting\n   * files.\n   */\n  static getDiffStats(\n    git: AuthenticatedGitClient,\n    g3Ref: string,\n    mainRef: string,\n    syncMatchFns: {ngMatchFn: SyncFileMatchFn; separateMatchFn: SyncFileMatchFn},\n  ): G3StatsData {\n    /** The diff stats to be returned. */\n    const stats = {\n      insertions: 0,\n      deletions: 0,\n      files: 0,\n      separateFiles: 0,\n      commits: 0,\n    };\n\n    // Determine the number of commits between main and g3 refs. */\n    stats.commits = parseInt(git.run(['rev-list', '--count', `${g3Ref}..${mainRef}`]).stdout, 10);\n\n    // Get the numstat information between main and g3\n    const numStatDiff = git\n      .run(['diff', `${g3Ref}...${mainRef}`, '--numstat'])\n      .stdout // Remove the extra space after git's output.\n      .trim();\n\n    // If there is no diff, we can return early.\n    if (numStatDiff === '') {\n      return stats;\n    }\n\n    // Split each line of git output into array\n    numStatDiff\n      .split('\\n')\n      // Split each line from the git output into components parts: insertions,\n      // deletions and file name respectively\n      .map((line) => line.trim().split('\\t'))\n      // Parse number value from the insertions and deletions values\n      // Example raw line input:\n      //   10\\t5\\tsrc/file/name.ts\n      .map((line) => [Number(line[0]), Number(line[1]), line[2]] as [number, number, string])\n      // Add each line's value to the diff stats, and conditionally to the g3\n      // stats as well if the file name is included in the files synced to g3.\n      .forEach(([insertions, deletions, fileName]) => {\n        if (syncMatchFns.ngMatchFn(fileName)) {\n          stats.insertions += insertions;\n          stats.deletions += deletions;\n          stats.files += 1;\n        } else if (syncMatchFns.separateMatchFn(fileName)) {\n          stats.insertions += insertions;\n          stats.deletions += deletions;\n          stats.separateFiles += 1;\n        }\n      });\n\n    return stats;\n  }\n\n  /** Fetch and retrieve the latest sha for a specific branch. */\n  static getShaForBranchLatest(git: AuthenticatedGitClient, branch: string) {\n    // With the --exit-code flag, if no match is found an exit code of 2 is returned by the command.\n    if (git.runGraceful(['ls-remote', '--exit-code', git.getRepoGitUrl(), branch]).status === 2) {\n      Log.debug(`No '${branch}' branch exists on upstream, skipping.`);\n      return null;\n    }\n\n    // Retrieve the latest ref for the branch and return its sha.\n    git.runGraceful(['fetch', '-q', git.getRepoGitUrl(), branch]);\n    return git.runGraceful(['rev-parse', 'FETCH_HEAD']).stdout.trim();\n  }\n\n  static async getG3SyncFileMatchFns(\n    git: AuthenticatedGitClient,\n    configs: {caretaker: CaretakerConfig; github: GithubConfig},\n  ): Promise {\n    debugger;\n    if (configs.caretaker.g3SyncConfigPath === undefined) {\n      Log.debug('No Google Sync configuration specified.');\n      return null;\n    }\n\n    const configPath = path.join(git.baseDir, configs.caretaker.g3SyncConfigPath);\n    const {ngMatchFn, separateMatchFn, config} = await getGoogleSyncConfig(configPath);\n    if (config.syncedFilePatterns.length === 0) {\n      Log.warn('Google Sync configuration does not specify any files being synced.');\n    }\n    return {ngMatchFn, separateMatchFn};\n  }\n\n  static getLatestShas(git: AuthenticatedGitClient) {\n    /** The latest sha for the g3 branch. */\n    const g3 = this.getShaForBranchLatest(git, 'g3');\n    /** The latest sha for the main branch. */\n    const main = this.getShaForBranchLatest(git, git.mainBranchName);\n\n    if (g3 === null || main === null) {\n      Log.debug(`Either the g3 or ${git.mainBranchName} was unable to be retrieved`);\n      return null;\n    }\n\n    return {g3, main};\n  }\n}\n", "import expand from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  nobrace?: boolean\n  nocomment?: boolean\n  nonegate?: boolean\n  debug?: boolean\n  noglobstar?: boolean\n  noext?: boolean\n  nonull?: boolean\n  windowsPathsNoEscape?: boolean\n  allowWindowsEscape?: boolean\n  partial?: boolean\n  dot?: boolean\n  nocase?: boolean\n  nocaseMagicOnly?: boolean\n  magicalBraces?: boolean\n  matchBase?: boolean\n  flipNegate?: boolean\n  preserveMultipleSlashes?: boolean\n  optimizationLevel?: number\n  platform?: Platform\n  windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n      process.platform\n    : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {}\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n      orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined\n        ? options.windowsNoMagicRoot\n        : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn all ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n      const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // dont' need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n          ? starDotExtTestDot\n          : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n          ? qmarksTestDot\n          : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n      ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n            ? GLOBSTAR\n            : p._src\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        return pp.filter(p => p !== GLOBSTAR).join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n  pattern: any\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n  '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n  '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n  '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n  '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n  '[:cntrl:]': ['\\\\p{Cc}', true],\n  '[:digit:]': ['\\\\p{Nd}', true],\n  '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n  '[:lower:]': ['\\\\p{Ll}', true],\n  '[:print:]': ['\\\\p{C}', true],\n  '[:punct:]': ['\\\\p{P}', true],\n  '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n  '[:upper:]': ['\\\\p{Lu}', true],\n  '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n  '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length\n      ? '(' + sranges + '|' + snegs + ')'\n      : ranges.length\n      ? sranges\n      : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  return windowsPathsNoEscape\n    ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n    : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n", "// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {}\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null\n        ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n        : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty = this.isStart() && this.isEnd()\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string'\n              ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n              : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot\n        ? ''\n        : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!'\n          ? // !() must match something,but !(x) can match ''\n            '))' +\n            (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n            star +\n            ')'\n          : this.type === '@'\n          ? ')'\n          : this.type === '?'\n          ? ')?'\n          : this.type === '+' && bodyDotAllowed\n          ? ')'\n          : this.type === '*' && bodyDotAllowed\n          ? `)?`\n          : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '*') {\n        if (noEmpty && glob === '*') re += starNoEmpty\n        else re += star\n        hasMagic = true\n        continue\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  return windowsPathsNoEscape\n    ? s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Minimatch} from 'minimatch';\nimport fs from 'fs';\nimport * as jsonc from '../../tools/esm-interop/jsonc-parser.js';\n\n/** Configuration describing how files are synced into Google. */\nexport interface GoogleSyncConfig {\n  /**\n   * Patterns matching files which are synced into Google. Patterns\n   * should be relative to the project directory.\n   */\n  syncedFilePatterns: string[];\n  /**\n   * Patterns matching files which are never synced into Google. Patterns\n   * should be relative to the project directory.\n   */\n  alwaysExternalFilePatterns: string[];\n  /**\n   * Patterns matching files which need to be synced separately.\n   * Patterns should be relative to the project directory.\n   */\n  separateFilePatterns: string[];\n}\n\n/** Describes a function for testing if a file is synced. */\nexport type SyncFileMatchFn = (projectRelativePath: string) => boolean;\n\n/** Error class used when the Google Sync configuration is invalid. */\nexport class InvalidGoogleSyncConfigError extends Error {}\n\n/** Transforms the given sync configuration into a file match function. */\nexport function transformConfigIntoMatcher(config: GoogleSyncConfig): {\n  ngSyncMatchFn: SyncFileMatchFn;\n  separateSyncMatchFn: SyncFileMatchFn;\n} {\n  const syncedFilePatterns = config.syncedFilePatterns.map((p) => new Minimatch(p));\n  const alwaysExternalFilePatterns = config.alwaysExternalFilePatterns.map((p) => new Minimatch(p));\n  const separateFilePatterns = config.separateFilePatterns.map((p) => new Minimatch(p));\n\n  // match everything that needs to be synced except external and separate sync files\n  const ngSyncMatchFn = (projectRelativePath: string) =>\n    syncedFilePatterns.some((p) => p.match(projectRelativePath)) &&\n    alwaysExternalFilePatterns.every((p) => !p.match(projectRelativePath)) &&\n    separateFilePatterns.every((p) => !p.match(projectRelativePath));\n\n  // match only files that need to be synced separately\n  const separateSyncMatchFn = (projectRelativePath: string) =>\n    separateFilePatterns.some((p) => p.match(projectRelativePath)) &&\n    alwaysExternalFilePatterns.every((p) => !p.match(projectRelativePath));\n\n  return {ngSyncMatchFn, separateSyncMatchFn};\n}\n\n/**\n * Reads the configuration file from the given path.\n *\n * @throws {InvalidGoogleSyncConfigError} If the configuration is invalid.\n */\nexport async function getGoogleSyncConfig(absolutePath: string): Promise<{\n  ngMatchFn: SyncFileMatchFn;\n  separateMatchFn: SyncFileMatchFn;\n  config: GoogleSyncConfig;\n}> {\n  const content = await fs.promises.readFile(absolutePath, 'utf8');\n  const errors: jsonc.ParseError[] = [];\n  const config = jsonc.parse(content, errors) as GoogleSyncConfig;\n  if (errors.length !== 0) {\n    throw new InvalidGoogleSyncConfigError(\n      `Google Sync Configuration is invalid: ` +\n        errors.map((e) => jsonc.printParseErrorCode(e.error)).join('\\n'),\n    );\n  }\n  const matchFns = transformConfigIntoMatcher(config);\n  return {\n    config,\n    ngMatchFn: matchFns.ngSyncMatchFn,\n    separateMatchFn: matchFns.separateSyncMatchFn,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {bold, green, Log} from '../../utils/logging.js';\nimport {G3StatsData, G3Stats} from '../../utils/g3.js';\n\nimport {BaseModule} from './base.js';\n\nexport class G3Module extends BaseModule {\n  override async retrieveData() {\n    return await G3Stats.retrieveDiffStats(this.git, this.config);\n  }\n\n  override async printToTerminal() {\n    const stats = await this.data;\n    if (!stats) {\n      return;\n    }\n    Log.info.group(bold('g3 branch check'));\n    if (stats.files === 0 && stats.separateFiles === 0) {\n      Log.info(`${stats.commits} commits between g3 and ${this.git.mainBranchName}`);\n      Log.info(` ${green('✔')} No sync is needed at this time`);\n    } else if (stats.separateFiles > 0) {\n      Log.info(\n        `${stats.separateFiles} primitives files changed, ${stats.files} Angular files changed, ` +\n          `${stats.insertions} insertions(+), ${stats.deletions} deletions(-) from ` +\n          `${stats.commits} commits will be included in the next sync\\n` +\n          `Note: Shared primivites code has been merged. Only more Shared Primitives code can be ` +\n          `merged until the next sync is landed`,\n      );\n    } else {\n      Log.info(\n        `${stats.files} files changed, ${stats.insertions} insertions(+), ${stats.deletions} ` +\n          `deletions(-) from ${stats.commits} commits will be included in the next sync`,\n      );\n    }\n    Log.info.groupEnd();\n    Log.info();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {alias, onUnion, params, types} from 'typed-graphqlify';\n\nimport {bold, Log} from '../../utils/logging.js';\nimport {CaretakerConfig} from '../../utils/config.js';\nimport {BaseModule} from './base.js';\n\n/** A list of generated results for a github query. */\ntype GithubQueryResults = {\n  queryName: string;\n  count: number;\n  queryUrl: string;\n  matchedUrls: string[];\n}[];\n\n/** The fragment for a result from Github's api for a Github query. */\nconst GithubQueryResultFragment = {\n  issueCount: types.number,\n  nodes: [\n    {\n      ...onUnion({\n        PullRequest: {\n          url: types.string,\n        },\n        Issue: {\n          url: types.string,\n        },\n      }),\n    },\n  ],\n};\n\n/** An object containing results of multiple queries.  */\ntype GithubQueryResult = {\n  [key: string]: typeof GithubQueryResultFragment;\n};\n\n/**\n * Cap the returned issues in the queries to an arbitrary 20. At that point, caretaker has a lot\n * of work to do and showing more than that isn't really useful.\n */\nconst MAX_RETURNED_ISSUES = 20;\n\nexport class GithubQueriesModule extends BaseModule {\n  override async retrieveData() {\n    // Non-null assertion is used here as the check for undefined immediately follows to confirm the\n    // assertion.  Typescript's type filtering does not seem to work as needed to understand\n    // whether githubQueries is undefined or not.\n    let queries = this.config.caretaker?.githubQueries!;\n    if (queries === undefined || queries.length === 0) {\n      Log.debug('No github queries defined in the configuration, skipping');\n      return;\n    }\n\n    /** The results of the generated github query. */\n    const queryResult = await this.git.github.graphql(this.buildGraphqlQuery(queries));\n    const results = Object.values(queryResult);\n\n    const {owner, name: repo} = this.git.remoteConfig;\n\n    return results.map((result, i) => {\n      const query = queries[i];\n      const queryURLParam = encodeURIComponent(query.query);\n\n      return {\n        queryName: query.name,\n        count: result.issueCount,\n        queryUrl: `https://github.com/${owner}/${repo}/issues?q=${queryURLParam}`,\n        matchedUrls: result.nodes.map((node) => node.url),\n      };\n    });\n  }\n\n  /** Build a Graphql query statement for the provided queries. */\n  private buildGraphqlQuery(queries: NonNullable) {\n    /** The query object for graphql. */\n    const graphqlQuery: GithubQueryResult = {};\n    const {owner, name: repo} = this.git.remoteConfig;\n    /** The Github search filter for the configured repository. */\n    const repoFilter = `repo:${owner}/${repo}`;\n\n    queries.forEach(({name, query}) => {\n      /** The name of the query, with spaces removed to match Graphql requirements. */\n      const queryKey = alias(name.replace(/ /g, ''), 'search');\n      graphqlQuery[queryKey] = params(\n        {\n          type: 'ISSUE',\n          first: MAX_RETURNED_ISSUES,\n          query: `\"${repoFilter} ${query.replace(/\\\"/g, '\\\\\"')}\"`,\n        },\n        {...GithubQueryResultFragment},\n      );\n    });\n\n    return graphqlQuery;\n  }\n\n  override async printToTerminal() {\n    const queryResults = await this.data;\n    if (!queryResults) {\n      return;\n    }\n    Log.info.group(bold('Github Tasks'));\n    const minQueryNameLength = Math.max(...queryResults.map((result) => result.queryName.length));\n    for (const queryResult of queryResults) {\n      Log.info(`${queryResult.queryName.padEnd(minQueryNameLength)}  ${queryResult.count}`);\n\n      if (queryResult.count > 0) {\n        Log.info.group(queryResult.queryUrl);\n        queryResult.matchedUrls.forEach((url) => Log.info(`- ${url}`));\n        if (queryResult.count > MAX_RETURNED_ISSUES) {\n          Log.info(`... ${queryResult.count - MAX_RETURNED_ISSUES} additional matches`);\n        }\n        Log.info.groupEnd();\n      }\n    }\n    Log.info.groupEnd();\n    Log.info();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {bold, green, Log, red} from '../../utils/logging.js';\nimport {BaseModule} from './base.js';\n\ninterface ServiceConfig {\n  name: string;\n  url: string;\n  prettyUrl: string;\n}\n\n/**\n * Status HTTP responses which are commonly used by services like GitHub.\n * See for example: https://www.githubstatus.com/api.\n */\ninterface StatusHttpResponse {\n  page: {\n    updated_at: string;\n  };\n  status: {\n    description: string;\n    indicator: 'none' | 'minor' | 'major' | 'critical';\n  };\n}\n\n/** The results of checking the status of a service */\ninterface StatusCheckResult {\n  name: string;\n  status: 'passing' | 'failing';\n  description: string;\n  lastUpdated: Date;\n  statusUrl: string;\n}\n\n/** List of services Angular relies on. */\nexport const services: ServiceConfig[] = [\n  {\n    prettyUrl: 'https://status.saucelabs.com',\n    url: 'https://status.saucelabs.com/api/v2/status.json',\n    name: 'Saucelabs',\n  },\n  {\n    prettyUrl: 'https://status.npmjs.org/',\n    url: 'https://status.npmjs.org/api/v2/status.json',\n    name: 'Npm',\n  },\n  {\n    prettyUrl: 'https://www.githubstatus.com',\n    url: 'https://www.githubstatus.com/api/v2/status.json',\n    name: 'Github',\n  },\n];\n\nexport class ServicesModule extends BaseModule {\n  override async retrieveData() {\n    return Promise.all(services.map((service) => this.getStatusFromStandardApi(service)));\n  }\n\n  override async printToTerminal() {\n    const statuses = await this.data;\n    const serviceNameMinLength = Math.max(...statuses.map((service) => service.name.length));\n    Log.info.group(bold('Service Statuses'));\n    for (const status of statuses) {\n      const name = status.name.padEnd(serviceNameMinLength);\n      if (status.status === 'passing') {\n        Log.info(`${name} ${green('✔')}`);\n      } else {\n        Log.info.group(`${name} ${red('✘')} (Updated: ${status.lastUpdated.toLocaleString()})`);\n        Log.info(`  Details: ${status.description}`);\n        Log.info(`  Status URL: ${status.statusUrl}`);\n        Log.info.groupEnd();\n      }\n    }\n    Log.info.groupEnd();\n    Log.info();\n  }\n\n  /** Retrieve the status information for a service which uses a standard API response. */\n  async getStatusFromStandardApi(service: ServiceConfig): Promise {\n    try {\n      const result = (await fetch(service.url).then((r) => r.json())) as StatusHttpResponse;\n      const status = result.status.indicator === 'none' ? 'passing' : 'failing';\n      return {\n        name: service.name,\n        statusUrl: service.prettyUrl,\n        status,\n        description: result.status.description,\n        lastUpdated: new Date(result.page.updated_at),\n      };\n    } catch {\n      return {\n        name: service.name,\n        statusUrl: service.prettyUrl,\n        status: 'failing',\n        description: `Unable to retrieve status from ${service.name}`,\n        lastUpdated: new Date(),\n      };\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {assertValidGithubConfig, getConfig} from '../../utils/config.js';\nimport {assertValidCaretakerConfig} from '../../utils/config.js';\n\nimport {CiModule} from './ci.js';\nimport {G3Module} from './g3.js';\nimport {GithubQueriesModule} from './github.js';\nimport {ServicesModule} from './services.js';\n\n/** List of modules checked for the caretaker check command. */\nconst moduleList = [GithubQueriesModule, ServicesModule, CiModule, G3Module];\n\n/** Check the status of services which Angular caretakers need to monitor. */\nexport async function checkServiceStatuses() {\n  /** The configuration for the caretaker commands. */\n  const config = await getConfig();\n  assertValidCaretakerConfig(config);\n  assertValidGithubConfig(config);\n\n  /** An authenticated git client instance. */\n  const git = await AuthenticatedGitClient.get();\n\n  /** List of instances of Caretaker Check modules */\n  const caretakerCheckModules = moduleList.map((module) => new module(git, config));\n\n  // Module's `data` is casted as Promise because the data types of the `module`'s `data`\n  // promises do not match typings, however our usage here is only to determine when the promise\n  // resolves.\n  await Promise.all(caretakerCheckModules.map((module) => module.data as Promise));\n\n  for (const module of caretakerCheckModules) {\n    await module.printToTerminal();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, CommandModule} from 'yargs';\n\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n\nimport {checkServiceStatuses} from './check.js';\n\nexport interface CaretakerCheckOptions {}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return addGithubTokenOption(argv);\n}\n\n/** Handles the command. */\nasync function handler() {\n  await checkServiceStatuses();\n}\n\n/** yargs command module for checking status information for the repository  */\nexport const CheckModule: CommandModule<{}, CaretakerCheckOptions> = {\n  handler,\n  builder,\n  command: 'check',\n  describe: 'Check the status of information the caretaker manages for the repository',\n};\n", "export const isUpKey = (key) => \n// The up key\nkey.name === 'up' ||\n    // Vim keybinding\n    key.name === 'k' ||\n    // Emacs keybinding\n    (key.ctrl && key.name === 'p');\nexport const isDownKey = (key) => \n// The down key\nkey.name === 'down' ||\n    // Vim keybinding\n    key.name === 'j' ||\n    // Emacs keybinding\n    (key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isNumberKey = (key) => '123456789'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\n", "export class AbortPromptError extends Error {\n    name = 'AbortPromptError';\n    message = 'Prompt was aborted';\n    constructor(options) {\n        super();\n        this.cause = options?.cause;\n    }\n}\nexport class CancelPromptError extends Error {\n    name = 'CancelPromptError';\n    message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n    name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n    name = 'HookError';\n}\nexport class ValidationError extends Error {\n    name = 'ValidationError';\n}\n", "import { AsyncResource } from 'node:async_hooks';\nimport { useState } from './use-state.js';\nimport { useEffect } from './use-effect.js';\nimport { makeTheme } from './make-theme.js';\nexport function usePrefix({ status = 'idle', theme, }) {\n    const [showLoader, setShowLoader] = useState(false);\n    const [tick, setTick] = useState(0);\n    const { prefix, spinner } = makeTheme(theme);\n    useEffect(() => {\n        if (status === 'loading') {\n            let tickInterval;\n            let inc = -1;\n            // Delay displaying spinner by 300ms, to avoid flickering\n            const delayTimeout = setTimeout(AsyncResource.bind(() => {\n                setShowLoader(true);\n                tickInterval = setInterval(AsyncResource.bind(() => {\n                    inc = inc + 1;\n                    setTick(inc % spinner.frames.length);\n                }), spinner.interval);\n            }), 300);\n            return () => {\n                clearTimeout(delayTimeout);\n                clearInterval(tickInterval);\n            };\n        }\n        else {\n            setShowLoader(false);\n        }\n    }, [status]);\n    if (showLoader) {\n        return spinner.frames[tick];\n    }\n    // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n    const iconName = status === 'loading' ? 'idle' : status;\n    return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n", "/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from './errors.js';\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n    const store = {\n        rl,\n        hooks: [],\n        hooksCleanup: [],\n        hooksEffect: [],\n        index: 0,\n        handleChange() { },\n    };\n    return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n    const store = createStore(rl);\n    return hookStorage.run(store, () => {\n        function cycle(render) {\n            store.handleChange = () => {\n                store.index = 0;\n                render();\n            };\n            store.handleChange();\n        }\n        return cb(cycle);\n    });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n    const store = hookStorage.getStore();\n    if (!store) {\n        throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n    }\n    return store;\n}\nexport function readline() {\n    return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n    const wrapped = (...args) => {\n        const store = getStore();\n        let shouldUpdate = false;\n        const oldHandleChange = store.handleChange;\n        store.handleChange = () => {\n            shouldUpdate = true;\n        };\n        const returnValue = fn(...args);\n        if (shouldUpdate) {\n            oldHandleChange();\n        }\n        store.handleChange = oldHandleChange;\n        return returnValue;\n    };\n    return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n    const store = getStore();\n    const { index } = store;\n    const pointer = {\n        get() {\n            return store.hooks[index];\n        },\n        set(value) {\n            store.hooks[index] = value;\n        },\n        initialized: index in store.hooks,\n    };\n    const returnValue = cb(pointer);\n    store.index++;\n    return returnValue;\n}\nexport function handleChange() {\n    getStore().handleChange();\n}\nexport const effectScheduler = {\n    queue(cb) {\n        const store = getStore();\n        const { index } = store;\n        store.hooksEffect.push(() => {\n            store.hooksCleanup[index]?.();\n            const cleanFn = cb(readline());\n            if (cleanFn != null && typeof cleanFn !== 'function') {\n                throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n            }\n            store.hooksCleanup[index] = cleanFn;\n        });\n    },\n    run() {\n        const store = getStore();\n        withUpdates(() => {\n            store.hooksEffect.forEach((effect) => {\n                effect();\n            });\n            // Warning: Clean the hooks before exiting the `withUpdates` block.\n            // Failure to do so means an updates would hit the same effects again.\n            store.hooksEffect.length = 0;\n        })();\n    },\n    clearAll() {\n        const store = getStore();\n        store.hooksCleanup.forEach((cleanFn) => {\n            cleanFn?.();\n        });\n        store.hooksEffect.length = 0;\n        store.hooksCleanup.length = 0;\n    },\n};\n", "import { withPointer, handleChange } from './hook-engine.js';\nexport function useState(defaultValue) {\n    return withPointer((pointer) => {\n        const setFn = (newValue) => {\n            // Noop if the value is still the same.\n            if (pointer.get() !== newValue) {\n                pointer.set(newValue);\n                // Trigger re-render\n                handleChange();\n            }\n        };\n        if (pointer.initialized) {\n            return [pointer.get(), setFn];\n        }\n        const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n        pointer.set(value);\n        return [value, setFn];\n    });\n}\n", "import { withPointer, effectScheduler } from './hook-engine.js';\nexport function useEffect(cb, depArray) {\n    withPointer((pointer) => {\n        const oldDeps = pointer.get();\n        const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n        if (hasChanged) {\n            effectScheduler.queue(cb);\n        }\n        pointer.set(depArray);\n    });\n}\n", "import colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n    prefix: {\n        idle: colors.blue('?'),\n        // TODO: use figure\n        done: colors.green(figures.tick),\n    },\n    spinner: {\n        interval: 80,\n        frames: ['\u280B', '\u2819', '\u2839', '\u2838', '\u283C', '\u2834', '\u2826', '\u2827', '\u2807', '\u280F'].map((frame) => colors.yellow(frame)),\n    },\n    style: {\n        answer: colors.cyan,\n        message: colors.bold,\n        error: (text) => colors.red(`> ${text}`),\n        defaultAnswer: (text) => colors.dim(`(${text})`),\n        help: colors.dim,\n        highlight: colors.cyan,\n        key: (text) => colors.cyan(colors.bold(`<${text}>`)),\n    },\n};\n", "// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n    if (process.platform !== 'win32') {\n        return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n    }\n    return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n        Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n        process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n        process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n        process.env['TERM_PROGRAM'] === 'vscode' ||\n        process.env['TERM'] === 'xterm-256color' ||\n        process.env['TERM'] === 'alacritty' ||\n        process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n    circleQuestionMark: '(?)',\n    questionMarkPrefix: '(?)',\n    square: '\u2588',\n    squareDarkShade: '\u2593',\n    squareMediumShade: '\u2592',\n    squareLightShade: '\u2591',\n    squareTop: '\u2580',\n    squareBottom: '\u2584',\n    squareLeft: '\u258C',\n    squareRight: '\u2590',\n    squareCenter: '\u25A0',\n    bullet: '\u25CF',\n    dot: '\u2024',\n    ellipsis: '\u2026',\n    pointerSmall: '\u203A',\n    triangleUp: '\u25B2',\n    triangleUpSmall: '\u25B4',\n    triangleDown: '\u25BC',\n    triangleDownSmall: '\u25BE',\n    triangleLeftSmall: '\u25C2',\n    triangleRightSmall: '\u25B8',\n    home: '\u2302',\n    heart: '\u2665',\n    musicNote: '\u266A',\n    musicNoteBeamed: '\u266B',\n    arrowUp: '\u2191',\n    arrowDown: '\u2193',\n    arrowLeft: '\u2190',\n    arrowRight: '\u2192',\n    arrowLeftRight: '\u2194',\n    arrowUpDown: '\u2195',\n    almostEqual: '\u2248',\n    notEqual: '\u2260',\n    lessOrEqual: '\u2264',\n    greaterOrEqual: '\u2265',\n    identical: '\u2261',\n    infinity: '\u221E',\n    subscriptZero: '\u2080',\n    subscriptOne: '\u2081',\n    subscriptTwo: '\u2082',\n    subscriptThree: '\u2083',\n    subscriptFour: '\u2084',\n    subscriptFive: '\u2085',\n    subscriptSix: '\u2086',\n    subscriptSeven: '\u2087',\n    subscriptEight: '\u2088',\n    subscriptNine: '\u2089',\n    oneHalf: '\u00BD',\n    oneThird: '\u2153',\n    oneQuarter: '\u00BC',\n    oneFifth: '\u2155',\n    oneSixth: '\u2159',\n    oneEighth: '\u215B',\n    twoThirds: '\u2154',\n    twoFifths: '\u2156',\n    threeQuarters: '\u00BE',\n    threeFifths: '\u2157',\n    threeEighths: '\u215C',\n    fourFifths: '\u2158',\n    fiveSixths: '\u215A',\n    fiveEighths: '\u215D',\n    sevenEighths: '\u215E',\n    line: '\u2500',\n    lineBold: '\u2501',\n    lineDouble: '\u2550',\n    lineDashed0: '\u2504',\n    lineDashed1: '\u2505',\n    lineDashed2: '\u2508',\n    lineDashed3: '\u2509',\n    lineDashed4: '\u254C',\n    lineDashed5: '\u254D',\n    lineDashed6: '\u2574',\n    lineDashed7: '\u2576',\n    lineDashed8: '\u2578',\n    lineDashed9: '\u257A',\n    lineDashed10: '\u257C',\n    lineDashed11: '\u257E',\n    lineDashed12: '\u2212',\n    lineDashed13: '\u2013',\n    lineDashed14: '\u2010',\n    lineDashed15: '\u2043',\n    lineVertical: '\u2502',\n    lineVerticalBold: '\u2503',\n    lineVerticalDouble: '\u2551',\n    lineVerticalDashed0: '\u2506',\n    lineVerticalDashed1: '\u2507',\n    lineVerticalDashed2: '\u250A',\n    lineVerticalDashed3: '\u250B',\n    lineVerticalDashed4: '\u254E',\n    lineVerticalDashed5: '\u254F',\n    lineVerticalDashed6: '\u2575',\n    lineVerticalDashed7: '\u2577',\n    lineVerticalDashed8: '\u2579',\n    lineVerticalDashed9: '\u257B',\n    lineVerticalDashed10: '\u257D',\n    lineVerticalDashed11: '\u257F',\n    lineDownLeft: '\u2510',\n    lineDownLeftArc: '\u256E',\n    lineDownBoldLeftBold: '\u2513',\n    lineDownBoldLeft: '\u2512',\n    lineDownLeftBold: '\u2511',\n    lineDownDoubleLeftDouble: '\u2557',\n    lineDownDoubleLeft: '\u2556',\n    lineDownLeftDouble: '\u2555',\n    lineDownRight: '\u250C',\n    lineDownRightArc: '\u256D',\n    lineDownBoldRightBold: '\u250F',\n    lineDownBoldRight: '\u250E',\n    lineDownRightBold: '\u250D',\n    lineDownDoubleRightDouble: '\u2554',\n    lineDownDoubleRight: '\u2553',\n    lineDownRightDouble: '\u2552',\n    lineUpLeft: '\u2518',\n    lineUpLeftArc: '\u256F',\n    lineUpBoldLeftBold: '\u251B',\n    lineUpBoldLeft: '\u251A',\n    lineUpLeftBold: '\u2519',\n    lineUpDoubleLeftDouble: '\u255D',\n    lineUpDoubleLeft: '\u255C',\n    lineUpLeftDouble: '\u255B',\n    lineUpRight: '\u2514',\n    lineUpRightArc: '\u2570',\n    lineUpBoldRightBold: '\u2517',\n    lineUpBoldRight: '\u2516',\n    lineUpRightBold: '\u2515',\n    lineUpDoubleRightDouble: '\u255A',\n    lineUpDoubleRight: '\u2559',\n    lineUpRightDouble: '\u2558',\n    lineUpDownLeft: '\u2524',\n    lineUpBoldDownBoldLeftBold: '\u252B',\n    lineUpBoldDownBoldLeft: '\u2528',\n    lineUpDownLeftBold: '\u2525',\n    lineUpBoldDownLeftBold: '\u2529',\n    lineUpDownBoldLeftBold: '\u252A',\n    lineUpDownBoldLeft: '\u2527',\n    lineUpBoldDownLeft: '\u2526',\n    lineUpDoubleDownDoubleLeftDouble: '\u2563',\n    lineUpDoubleDownDoubleLeft: '\u2562',\n    lineUpDownLeftDouble: '\u2561',\n    lineUpDownRight: '\u251C',\n    lineUpBoldDownBoldRightBold: '\u2523',\n    lineUpBoldDownBoldRight: '\u2520',\n    lineUpDownRightBold: '\u251D',\n    lineUpBoldDownRightBold: '\u2521',\n    lineUpDownBoldRightBold: '\u2522',\n    lineUpDownBoldRight: '\u251F',\n    lineUpBoldDownRight: '\u251E',\n    lineUpDoubleDownDoubleRightDouble: '\u2560',\n    lineUpDoubleDownDoubleRight: '\u255F',\n    lineUpDownRightDouble: '\u255E',\n    lineDownLeftRight: '\u252C',\n    lineDownBoldLeftBoldRightBold: '\u2533',\n    lineDownLeftBoldRightBold: '\u252F',\n    lineDownBoldLeftRight: '\u2530',\n    lineDownBoldLeftBoldRight: '\u2531',\n    lineDownBoldLeftRightBold: '\u2532',\n    lineDownLeftRightBold: '\u252E',\n    lineDownLeftBoldRight: '\u252D',\n    lineDownDoubleLeftDoubleRightDouble: '\u2566',\n    lineDownDoubleLeftRight: '\u2565',\n    lineDownLeftDoubleRightDouble: '\u2564',\n    lineUpLeftRight: '\u2534',\n    lineUpBoldLeftBoldRightBold: '\u253B',\n    lineUpLeftBoldRightBold: '\u2537',\n    lineUpBoldLeftRight: '\u2538',\n    lineUpBoldLeftBoldRight: '\u2539',\n    lineUpBoldLeftRightBold: '\u253A',\n    lineUpLeftRightBold: '\u2536',\n    lineUpLeftBoldRight: '\u2535',\n    lineUpDoubleLeftDoubleRightDouble: '\u2569',\n    lineUpDoubleLeftRight: '\u2568',\n    lineUpLeftDoubleRightDouble: '\u2567',\n    lineUpDownLeftRight: '\u253C',\n    lineUpBoldDownBoldLeftBoldRightBold: '\u254B',\n    lineUpDownBoldLeftBoldRightBold: '\u2548',\n    lineUpBoldDownLeftBoldRightBold: '\u2547',\n    lineUpBoldDownBoldLeftRightBold: '\u254A',\n    lineUpBoldDownBoldLeftBoldRight: '\u2549',\n    lineUpBoldDownLeftRight: '\u2540',\n    lineUpDownBoldLeftRight: '\u2541',\n    lineUpDownLeftBoldRight: '\u253D',\n    lineUpDownLeftRightBold: '\u253E',\n    lineUpBoldDownBoldLeftRight: '\u2542',\n    lineUpDownLeftBoldRightBold: '\u253F',\n    lineUpBoldDownLeftBoldRight: '\u2543',\n    lineUpBoldDownLeftRightBold: '\u2544',\n    lineUpDownBoldLeftBoldRight: '\u2545',\n    lineUpDownBoldLeftRightBold: '\u2546',\n    lineUpDoubleDownDoubleLeftDoubleRightDouble: '\u256C',\n    lineUpDoubleDownDoubleLeftRight: '\u256B',\n    lineUpDownLeftDoubleRightDouble: '\u256A',\n    lineCross: '\u2573',\n    lineBackslash: '\u2572',\n    lineSlash: '\u2571',\n};\nconst specialMainSymbols = {\n    tick: '\u2714',\n    info: '\u2139',\n    warning: '\u26A0',\n    cross: '\u2718',\n    squareSmall: '\u25FB',\n    squareSmallFilled: '\u25FC',\n    circle: '\u25EF',\n    circleFilled: '\u25C9',\n    circleDotted: '\u25CC',\n    circleDouble: '\u25CE',\n    circleCircle: '\u24DE',\n    circleCross: '\u24E7',\n    circlePipe: '\u24BE',\n    radioOn: '\u25C9',\n    radioOff: '\u25EF',\n    checkboxOn: '\u2612',\n    checkboxOff: '\u2610',\n    checkboxCircleOn: '\u24E7',\n    checkboxCircleOff: '\u24BE',\n    pointer: '\u276F',\n    triangleUpOutline: '\u25B3',\n    triangleLeft: '\u25C0',\n    triangleRight: '\u25B6',\n    lozenge: '\u25C6',\n    lozengeOutline: '\u25C7',\n    hamburger: '\u2630',\n    smiley: '\u32E1',\n    mustache: '\u0DF4',\n    star: '\u2605',\n    play: '\u25B6',\n    nodejs: '\u2B22',\n    oneSeventh: '\u2150',\n    oneNinth: '\u2151',\n    oneTenth: '\u2152',\n};\nconst specialFallbackSymbols = {\n    tick: '\u221A',\n    info: 'i',\n    warning: '\u203C',\n    cross: '\u00D7',\n    squareSmall: '\u25A1',\n    squareSmallFilled: '\u25A0',\n    circle: '( )',\n    circleFilled: '(*)',\n    circleDotted: '( )',\n    circleDouble: '( )',\n    circleCircle: '(\u25CB)',\n    circleCross: '(\u00D7)',\n    circlePipe: '(\u2502)',\n    radioOn: '(*)',\n    radioOff: '( )',\n    checkboxOn: '[\u00D7]',\n    checkboxOff: '[ ]',\n    checkboxCircleOn: '(\u00D7)',\n    checkboxCircleOff: '( )',\n    pointer: '>',\n    triangleUpOutline: '\u2206',\n    triangleLeft: '\u25C4',\n    triangleRight: '\u25BA',\n    lozenge: '\u2666',\n    lozengeOutline: '\u25CA',\n    hamburger: '\u2261',\n    smiley: '\u263A',\n    mustache: '\u250C\u2500\u2510',\n    star: '\u2736',\n    play: '\u25BA',\n    nodejs: '\u2666',\n    oneSeventh: '1/7',\n    oneNinth: '1/9',\n    oneTenth: '1/10',\n};\nexport const mainSymbols = { ...common, ...specialMainSymbols };\nexport const fallbackSymbols = {\n    ...common,\n    ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain ? mainSymbols : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n    if (useFallback) {\n        for (const [key, mainSymbol] of replacements) {\n            const fallbackSymbol = fallbackSymbols[key];\n            if (!fallbackSymbol) {\n                throw new Error(`Unable to find fallback for ${key}`);\n            }\n            string = string.replaceAll(mainSymbol, fallbackSymbol);\n        }\n    }\n    return string;\n};\n", "import { defaultTheme } from './theme.js';\nfunction isPlainObject(value) {\n    if (typeof value !== 'object' || value === null)\n        return false;\n    let proto = value;\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n    const output = {};\n    for (const obj of objects) {\n        for (const [key, value] of Object.entries(obj)) {\n            const prevValue = output[key];\n            output[key] =\n                isPlainObject(prevValue) && isPlainObject(value)\n                    ? deepMerge(prevValue, value)\n                    : value;\n        }\n    }\n    return output;\n}\nexport function makeTheme(...themes) {\n    const themesToMerge = [\n        defaultTheme,\n        ...themes.filter((theme) => theme != null),\n    ];\n    return deepMerge(...themesToMerge);\n}\n", "import { withPointer } from './hook-engine.js';\nexport function useMemo(fn, dependencies) {\n    return withPointer((pointer) => {\n        const prev = pointer.get();\n        if (!prev ||\n            prev.dependencies.length !== dependencies.length ||\n            prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n            const value = fn();\n            pointer.set({ value, dependencies });\n            return value;\n        }\n        return prev.value;\n    });\n}\n", "import { useState } from './use-state.js';\nexport function useRef(val) {\n    return useState({ current: val })[0];\n}\n", "import { useRef } from './use-ref.js';\nimport { useEffect } from './use-effect.js';\nimport { withUpdates } from './hook-engine.js';\nexport function useKeypress(userHandler) {\n    const signal = useRef(userHandler);\n    signal.current = userHandler;\n    useEffect((rl) => {\n        let ignore = false;\n        const handler = withUpdates((_input, event) => {\n            if (ignore)\n                return;\n            void signal.current(event, rl);\n        });\n        rl.input.on('keypress', handler);\n        return () => {\n            ignore = true;\n            rl.input.removeListener('keypress', handler);\n        };\n    }, []);\n}\n", "import cliWidth from 'cli-width';\nimport wrapAnsi from 'wrap-ansi';\nimport { readline } from './hook-engine.js';\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n    return content\n        .split('\\n')\n        .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n        .split('\\n')\n        .map((str) => str.trimEnd()))\n        .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n    return cliWidth({ defaultWidth: 80, output: readline().output });\n}\n", "import { breakLines } from '../utils.js';\nfunction split(content, width) {\n    return breakLines(content, width).split('\\n');\n}\n/**\n * Rotates an array of items by an integer number of positions.\n * @param {number} count The number of positions to rotate by\n * @param {T[]} items The items to rotate\n */\nfunction rotate(count, items) {\n    const max = items.length;\n    const offset = ((count % max) + max) % max;\n    return [...items.slice(offset), ...items.slice(0, offset)];\n}\n/**\n * Renders a page of items as lines that fit within the given width ensuring\n * that the number of lines is not greater than the page size, and the active\n * item renders at the provided position, while prioritizing that as many lines\n * of the active item get rendered as possible.\n */\nexport function lines({ items, width, renderItem, active, position: requested, pageSize, }) {\n    const layouts = items.map((item, index) => ({\n        item,\n        index,\n        isActive: index === active,\n    }));\n    const layoutsInPage = rotate(active - requested, layouts).slice(0, pageSize);\n    const renderItemAt = (index) => layoutsInPage[index] == null ? [] : split(renderItem(layoutsInPage[index]), width);\n    // Create a blank array of lines for the page\n    const pageBuffer = Array.from({ length: pageSize });\n    // Render the active item to decide the position\n    const activeItem = renderItemAt(requested).slice(0, pageSize);\n    const position = requested + activeItem.length <= pageSize ? requested : pageSize - activeItem.length;\n    // Add the lines of the active item into the page\n    pageBuffer.splice(position, activeItem.length, ...activeItem);\n    // Fill the page under the active item\n    let bufferPointer = position + activeItem.length;\n    let layoutPointer = requested + 1;\n    while (bufferPointer < pageSize && layoutPointer < layoutsInPage.length) {\n        for (const line of renderItemAt(layoutPointer)) {\n            pageBuffer[bufferPointer++] = line;\n            if (bufferPointer >= pageSize)\n                break;\n        }\n        layoutPointer++;\n    }\n    // Fill the page over the active item\n    bufferPointer = position - 1;\n    layoutPointer = requested - 1;\n    while (bufferPointer >= 0 && layoutPointer >= 0) {\n        for (const line of renderItemAt(layoutPointer).reverse()) {\n            pageBuffer[bufferPointer--] = line;\n            if (bufferPointer < 0)\n                break;\n        }\n        layoutPointer--;\n    }\n    return pageBuffer.filter((line) => typeof line === 'string');\n}\n", "/**\n * Creates the next position for the active item considering a finite list of\n * items to be rendered on a page.\n */\nexport function finite({ active, pageSize, total, }) {\n    const middle = Math.floor(pageSize / 2);\n    if (total <= pageSize || active < middle)\n        return active;\n    if (active >= total - middle)\n        return active + pageSize - total;\n    return middle;\n}\n/**\n * Creates the next position for the active item considering an infinitely\n * looping list of items to be rendered on the page.\n */\nexport function infinite({ active, lastActive, total, pageSize, pointer, }) {\n    if (total <= pageSize)\n        return active;\n    // Move the position only when the user moves down, and when the\n    // navigation fits within a single page\n    if (lastActive < active && active - lastActive < pageSize) {\n        // Limit it to the middle of the list\n        return Math.min(Math.floor(pageSize / 2), pointer + active - lastActive);\n    }\n    return pointer;\n}\n", "import { useRef } from '../use-ref.js';\nimport { readlineWidth } from '../utils.js';\nimport { lines } from './lines.js';\nimport { finite, infinite } from './position.js';\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n    const state = useRef({ position: 0, lastActive: 0 });\n    const position = loop\n        ? infinite({\n            active,\n            lastActive: state.current.lastActive,\n            total: items.length,\n            pageSize,\n            pointer: state.current.position,\n        })\n        : finite({\n            active,\n            total: items.length,\n            pageSize,\n        });\n    state.current.position = position;\n    state.current.lastActive = active;\n    return lines({\n        items,\n        width: readlineWidth(),\n        renderItem,\n        active,\n        position,\n        pageSize,\n    }).join('\\n');\n}\n", "import * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from './screen-manager.js';\nimport { PromisePolyfill } from './promise-polyfill.js';\nimport { withHooks, effectScheduler } from './hook-engine.js';\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from './errors.js';\nfunction getCallSites() {\n    const _prepareStackTrace = Error.prepareStackTrace;\n    try {\n        let result = [];\n        Error.prepareStackTrace = (_, callSites) => {\n            const callSitesWithoutCurrent = callSites.slice(1);\n            result = callSitesWithoutCurrent;\n            return callSitesWithoutCurrent;\n        };\n        // eslint-disable-next-line @typescript-eslint/no-unused-expressions, unicorn/error-message\n        new Error().stack;\n        return result;\n    }\n    finally {\n        Error.prepareStackTrace = _prepareStackTrace;\n    }\n}\nexport function createPrompt(view) {\n    const callSites = getCallSites();\n    const callerFilename = callSites[1]?.getFileName?.();\n    const prompt = (config, context = {}) => {\n        // Default `input` to stdin\n        const { input = process.stdin, signal } = context;\n        const cleanups = new Set();\n        // Add mute capabilities to the output\n        const output = new MuteStream();\n        output.pipe(context.output ?? process.stdout);\n        const rl = readline.createInterface({\n            terminal: true,\n            input,\n            output,\n        });\n        const screen = new ScreenManager(rl);\n        const { promise, resolve, reject } = PromisePolyfill.withResolver();\n        const cancel = () => reject(new CancelPromptError());\n        if (signal) {\n            const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n            if (signal.aborted) {\n                abort();\n                return Object.assign(promise, { cancel });\n            }\n            signal.addEventListener('abort', abort);\n            cleanups.add(() => signal.removeEventListener('abort', abort));\n        }\n        cleanups.add(onSignalExit((code, signal) => {\n            reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n        }));\n        // Re-renders only happen when the state change; but the readline cursor could change position\n        // and that also requires a re-render (and a manual one because we mute the streams).\n        // We set the listener after the initial workLoop to avoid a double render if render triggered\n        // by a state change sets the cursor to the right position.\n        const checkCursorPos = () => screen.checkCursorPos();\n        rl.input.on('keypress', checkCursorPos);\n        cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n        return withHooks(rl, (cycle) => {\n            // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n            // triggers after the process is done (which happens after timeouts are done triggering.)\n            // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n            const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n            rl.on('close', hooksCleanup);\n            cleanups.add(() => rl.removeListener('close', hooksCleanup));\n            cycle(() => {\n                try {\n                    const nextView = view(config, (value) => {\n                        setImmediate(() => resolve(value));\n                    });\n                    // Typescript won't allow this, but not all users rely on typescript.\n                    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n                    if (nextView === undefined) {\n                        throw new Error(`Prompt functions must return a string.\\n    at ${callerFilename}`);\n                    }\n                    const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n                    screen.render(content, bottomContent);\n                    effectScheduler.run();\n                }\n                catch (error) {\n                    reject(error);\n                }\n            });\n            return Object.assign(promise\n                .then((answer) => {\n                effectScheduler.clearAll();\n                return answer;\n            }, (error) => {\n                effectScheduler.clearAll();\n                throw error;\n            })\n                // Wait for the promise to settle, then cleanup.\n                .finally(() => {\n                cleanups.forEach((cleanup) => cleanup());\n                screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n                output.end();\n            })\n                // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n                .then(() => promise), { cancel });\n        });\n    };\n    return prompt;\n}\n", "/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems.  Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL.  It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n  signals.push(\n    'SIGALRM',\n    'SIGABRT',\n    'SIGVTALRM',\n    'SIGXCPU',\n    'SIGXFSZ',\n    'SIGUSR2',\n    'SIGTRAP',\n    'SIGSYS',\n    'SIGQUIT',\n    'SIGIOT'\n    // should detect profiler and enable/disable accordingly.\n    // see #21\n    // 'SIGPROF'\n  )\n}\n\nif (process.platform === 'linux') {\n  signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n", "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n  reallyExit: (code?: number | undefined | null) => any\n  emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n  !!process &&\n  typeof process === 'object' &&\n  typeof process.removeListener === 'function' &&\n  typeof process.emit === 'function' &&\n  typeof process.reallyExit === 'function' &&\n  typeof process.listeners === 'function' &&\n  typeof process.kill === 'function' &&\n  typeof process.pid === 'number' &&\n  typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n  code: number | null | undefined,\n  signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n  emitted: Emitted = {\n    afterExit: false,\n    exit: false,\n  }\n\n  listeners: Listeners = {\n    afterExit: [],\n    exit: [],\n  }\n\n  count: number = 0\n  id: number = Math.random()\n\n  constructor() {\n    if (global[kExitEmitter]) {\n      return global[kExitEmitter]\n    }\n    ObjectDefineProperty(global, kExitEmitter, {\n      value: this,\n      writable: false,\n      enumerable: false,\n      configurable: false,\n    })\n  }\n\n  on(ev: ExitEvent, fn: Handler) {\n    this.listeners[ev].push(fn)\n  }\n\n  removeListener(ev: ExitEvent, fn: Handler) {\n    const list = this.listeners[ev]\n    const i = list.indexOf(fn)\n    /* c8 ignore start */\n    if (i === -1) {\n      return\n    }\n    /* c8 ignore stop */\n    if (i === 0 && list.length === 1) {\n      list.length = 0\n    } else {\n      list.splice(i, 1)\n    }\n  }\n\n  emit(\n    ev: ExitEvent,\n    code: number | null | undefined,\n    signal: NodeJS.Signals | null\n  ): boolean {\n    if (this.emitted[ev]) {\n      return false\n    }\n    this.emitted[ev] = true\n    let ret: boolean = false\n    for (const fn of this.listeners[ev]) {\n      ret = fn(code, signal) === true || ret\n    }\n    if (ev === 'exit') {\n      ret = this.emit('afterExit', code, signal) || ret\n    }\n    return ret\n  }\n}\n\nabstract class SignalExitBase {\n  abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n  abstract load(): void\n  abstract unload(): void\n}\n\nconst signalExitWrap = (handler: T) => {\n  return {\n    onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n      return handler.onExit(cb, opts)\n    },\n    load() {\n      return handler.load()\n    },\n    unload() {\n      return handler.unload()\n    },\n  }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n  onExit() {\n    return () => {}\n  }\n  load() {}\n  unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n  // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n  // so use a supported signal instead\n  /* c8 ignore start */\n  #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n  /* c8 ignore stop */\n  #emitter = new Emitter()\n  #process: ProcessRE\n  #originalProcessEmit: ProcessRE['emit']\n  #originalProcessReallyExit: ProcessRE['reallyExit']\n\n  #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n  #loaded: boolean = false\n\n  constructor(process: ProcessRE) {\n    super()\n    this.#process = process\n    // { : , ... }\n    this.#sigListeners = {}\n    for (const sig of signals) {\n      this.#sigListeners[sig] = () => {\n        // If there are no other listeners, an exit is coming!\n        // Simplest way: remove us and then re-send the signal.\n        // We know that this will kill the process, so we can\n        // safely emit now.\n        const listeners = this.#process.listeners(sig)\n        let { count } = this.#emitter\n        // This is a workaround for the fact that signal-exit v3 and signal\n        // exit v4 are not aware of each other, and each will attempt to let\n        // the other handle it, so neither of them do. To correct this, we\n        // detect if we're the only handler *except* for previous versions\n        // of signal-exit, and increment by the count of listeners it has\n        // created.\n        /* c8 ignore start */\n        const p = process as unknown as {\n          __signal_exit_emitter__?: { count: number }\n        }\n        if (\n          typeof p.__signal_exit_emitter__ === 'object' &&\n          typeof p.__signal_exit_emitter__.count === 'number'\n        ) {\n          count += p.__signal_exit_emitter__.count\n        }\n        /* c8 ignore stop */\n        if (listeners.length === count) {\n          this.unload()\n          const ret = this.#emitter.emit('exit', null, sig)\n          /* c8 ignore start */\n          const s = sig === 'SIGHUP' ? this.#hupSig : sig\n          if (!ret) process.kill(process.pid, s)\n          /* c8 ignore stop */\n        }\n      }\n    }\n\n    this.#originalProcessReallyExit = process.reallyExit\n    this.#originalProcessEmit = process.emit\n  }\n\n  onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n    /* c8 ignore start */\n    if (!processOk(this.#process)) {\n      return () => {}\n    }\n    /* c8 ignore stop */\n\n    if (this.#loaded === false) {\n      this.load()\n    }\n\n    const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n    this.#emitter.on(ev, cb)\n    return () => {\n      this.#emitter.removeListener(ev, cb)\n      if (\n        this.#emitter.listeners['exit'].length === 0 &&\n        this.#emitter.listeners['afterExit'].length === 0\n      ) {\n        this.unload()\n      }\n    }\n  }\n\n  load() {\n    if (this.#loaded) {\n      return\n    }\n    this.#loaded = true\n\n    // This is the number of onSignalExit's that are in play.\n    // It's important so that we can count the correct number of\n    // listeners on signals, and don't wait for the other one to\n    // handle it instead of us.\n    this.#emitter.count += 1\n\n    for (const sig of signals) {\n      try {\n        const fn = this.#sigListeners[sig]\n        if (fn) this.#process.on(sig, fn)\n      } catch (_) {}\n    }\n\n    this.#process.emit = (ev: string, ...a: any[]) => {\n      return this.#processEmit(ev, ...a)\n    }\n    this.#process.reallyExit = (code?: number | null | undefined) => {\n      return this.#processReallyExit(code)\n    }\n  }\n\n  unload() {\n    if (!this.#loaded) {\n      return\n    }\n    this.#loaded = false\n\n    signals.forEach(sig => {\n      const listener = this.#sigListeners[sig]\n      /* c8 ignore start */\n      if (!listener) {\n        throw new Error('Listener not defined for signal: ' + sig)\n      }\n      /* c8 ignore stop */\n      try {\n        this.#process.removeListener(sig, listener)\n        /* c8 ignore start */\n      } catch (_) {}\n      /* c8 ignore stop */\n    })\n    this.#process.emit = this.#originalProcessEmit\n    this.#process.reallyExit = this.#originalProcessReallyExit\n    this.#emitter.count -= 1\n  }\n\n  #processReallyExit(code?: number | null | undefined) {\n    /* c8 ignore start */\n    if (!processOk(this.#process)) {\n      return 0\n    }\n    this.#process.exitCode = code || 0\n    /* c8 ignore stop */\n\n    this.#emitter.emit('exit', this.#process.exitCode, null)\n    return this.#originalProcessReallyExit.call(\n      this.#process,\n      this.#process.exitCode\n    )\n  }\n\n  #processEmit(ev: string, ...args: any[]): any {\n    const og = this.#originalProcessEmit\n    if (ev === 'exit' && processOk(this.#process)) {\n      if (typeof args[0] === 'number') {\n        this.#process.exitCode = args[0]\n        /* c8 ignore start */\n      }\n      /* c8 ignore start */\n      const ret = og.call(this.#process, ev, ...args)\n      /* c8 ignore start */\n      this.#emitter.emit('exit', this.#process.exitCode, null)\n      /* c8 ignore stop */\n      return ret\n    } else {\n      return og.call(this.#process, ev, ...args)\n    }\n  }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n  /**\n   * Called when the process is exiting, whether via signal, explicit\n   * exit, or running out of stuff to do.\n   *\n   * If the global process object is not suitable for instrumentation,\n   * then this will be a no-op.\n   *\n   * Returns a function that may be used to unload signal-exit.\n   */\n  onExit,\n\n  /**\n   * Load the listeners.  Likely you never need to call this, unless\n   * doing a rather deep integration with signal-exit functionality.\n   * Mostly exposed for the benefit of testing.\n   *\n   * @internal\n   */\n  load,\n\n  /**\n   * Unload the listeners.  Likely you never need to call this, unless\n   * doing a rather deep integration with signal-exit functionality.\n   * Mostly exposed for the benefit of testing.\n   *\n   * @internal\n   */\n  unload,\n} = signalExitWrap(\n  processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n", "import stripAnsi from 'strip-ansi';\nimport ansiEscapes from 'ansi-escapes';\nimport { breakLines, readlineWidth } from './utils.js';\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nfunction cursorDown(n) {\n    return n > 0 ? ansiEscapes.cursorDown(n) : '';\n}\nexport default class ScreenManager {\n    rl;\n    // These variables are keeping information to allow correct prompt re-rendering\n    height = 0;\n    extraLinesUnderPrompt = 0;\n    cursorPos;\n    constructor(rl) {\n        this.rl = rl;\n        this.rl = rl;\n        this.cursorPos = rl.getCursorPos();\n    }\n    write(content) {\n        this.rl.output.unmute();\n        this.rl.output.write(content);\n        this.rl.output.mute();\n    }\n    render(content, bottomContent = '') {\n        // Write message to screen and setPrompt to control backspace\n        const promptLine = lastLine(content);\n        const rawPromptLine = stripAnsi(promptLine);\n        // Remove the rl.line from our prompt. We can't rely on the content of\n        // rl.line (mainly because of the password prompt), so just rely on it's\n        // length.\n        let prompt = rawPromptLine;\n        if (this.rl.line.length > 0) {\n            prompt = prompt.slice(0, -this.rl.line.length);\n        }\n        this.rl.setPrompt(prompt);\n        // SetPrompt will change cursor position, now we can get correct value\n        this.cursorPos = this.rl.getCursorPos();\n        const width = readlineWidth();\n        content = breakLines(content, width);\n        bottomContent = breakLines(bottomContent, width);\n        // Manually insert an extra line if we're at the end of the line.\n        // This prevent the cursor from appearing at the beginning of the\n        // current line.\n        if (rawPromptLine.length % width === 0) {\n            content += '\\n';\n        }\n        let output = content + (bottomContent ? '\\n' + bottomContent : '');\n        /**\n         * Re-adjust the cursor at the correct position.\n         */\n        // We need to consider parts of the prompt under the cursor as part of the bottom\n        // content in order to correctly cleanup and re-render.\n        const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n        const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n        // Return cursor to the input position (on top of the bottomContent)\n        if (bottomContentHeight > 0)\n            output += ansiEscapes.cursorUp(bottomContentHeight);\n        // Return cursor to the initial left offset.\n        output += ansiEscapes.cursorTo(this.cursorPos.cols);\n        /**\n         * Render and store state for future re-rendering\n         */\n        this.write(cursorDown(this.extraLinesUnderPrompt) +\n            ansiEscapes.eraseLines(this.height) +\n            output);\n        this.extraLinesUnderPrompt = bottomContentHeight;\n        this.height = height(output);\n    }\n    checkCursorPos() {\n        const cursorPos = this.rl.getCursorPos();\n        if (cursorPos.cols !== this.cursorPos.cols) {\n            this.write(ansiEscapes.cursorTo(cursorPos.cols));\n            this.cursorPos = cursorPos;\n        }\n    }\n    done({ clearContent }) {\n        this.rl.setPrompt('');\n        let output = cursorDown(this.extraLinesUnderPrompt);\n        output += clearContent ? ansiEscapes.eraseLines(this.height) : '\\n';\n        output += ansiEscapes.cursorShow;\n        this.write(output);\n        this.rl.close();\n    }\n}\n", "// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n    // Available starting from Node 22\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n    static withResolver() {\n        let resolve;\n        let reject;\n        const promise = new Promise((res, rej) => {\n            resolve = res;\n            reject = rej;\n        });\n        return { promise, resolve: resolve, reject: reject };\n    }\n}\n", "import colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n    separator = colors.dim(Array.from({ length: 15 }).join(figures.line));\n    type = 'separator';\n    constructor(separator) {\n        if (separator) {\n            this.separator = separator;\n        }\n    }\n    static isSeparator(choice) {\n        return Boolean(choice &&\n            typeof choice === 'object' &&\n            'type' in choice &&\n            choice.type === 'separator');\n    }\n}\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, makeTheme, isUpKey, isDownKey, isSpaceKey, isNumberKey, isEnterKey, ValidationError, Separator, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nimport ansiEscapes from 'ansi-escapes';\nconst checkboxTheme = {\n    icon: {\n        checked: colors.green(figures.circleFilled),\n        unchecked: figures.circle,\n        cursor: figures.pointer,\n    },\n    style: {\n        disabledChoice: (text) => colors.dim(`- ${text}`),\n        renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(', '),\n        description: (text) => colors.cyan(text),\n    },\n    helpMode: 'auto',\n};\nfunction isSelectable(item) {\n    return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isChecked(item) {\n    return isSelectable(item) && Boolean(item.checked);\n}\nfunction toggle(item) {\n    return isSelectable(item) ? { ...item, checked: !item.checked } : item;\n}\nfunction check(checked) {\n    return function (item) {\n        return isSelectable(item) ? { ...item, checked } : item;\n    };\n}\nfunction normalizeChoices(choices) {\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice))\n            return choice;\n        if (typeof choice === 'string') {\n            return {\n                value: choice,\n                name: choice,\n                short: choice,\n                disabled: false,\n                checked: false,\n            };\n        }\n        const name = choice.name ?? String(choice.value);\n        return {\n            value: choice.value,\n            name,\n            short: choice.short ?? name,\n            description: choice.description,\n            disabled: choice.disabled ?? false,\n            checked: choice.checked ?? false,\n        };\n    });\n}\nexport default createPrompt((config, done) => {\n    const { instructions, pageSize = 7, loop = true, required, validate = () => true, } = config;\n    const theme = makeTheme(checkboxTheme, config.theme);\n    const firstRender = useRef(true);\n    const [status, setStatus] = useState('idle');\n    const prefix = usePrefix({ status, theme });\n    const [items, setItems] = useState(normalizeChoices(config.choices));\n    const bounds = useMemo(() => {\n        const first = items.findIndex(isSelectable);\n        const last = items.findLastIndex(isSelectable);\n        if (first === -1) {\n            throw new ValidationError('[checkbox prompt] No selectable choices. All choices are disabled.');\n        }\n        return { first, last };\n    }, [items]);\n    const [active, setActive] = useState(bounds.first);\n    const [showHelpTip, setShowHelpTip] = useState(true);\n    const [errorMsg, setError] = useState();\n    useKeypress(async (key) => {\n        if (isEnterKey(key)) {\n            const selection = items.filter(isChecked);\n            const isValid = await validate([...selection]);\n            if (required && !items.some(isChecked)) {\n                setError('At least one choice must be selected');\n            }\n            else if (isValid === true) {\n                setStatus('done');\n                done(selection.map((choice) => choice.value));\n            }\n            else {\n                setError(isValid || 'You must select a valid value');\n            }\n        }\n        else if (isUpKey(key) || isDownKey(key)) {\n            if (loop ||\n                (isUpKey(key) && active !== bounds.first) ||\n                (isDownKey(key) && active !== bounds.last)) {\n                const offset = isUpKey(key) ? -1 : 1;\n                let next = active;\n                do {\n                    next = (next + offset + items.length) % items.length;\n                } while (!isSelectable(items[next]));\n                setActive(next);\n            }\n        }\n        else if (isSpaceKey(key)) {\n            setError(undefined);\n            setShowHelpTip(false);\n            setItems(items.map((choice, i) => (i === active ? toggle(choice) : choice)));\n        }\n        else if (key.name === 'a') {\n            const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked);\n            setItems(items.map(check(selectAll)));\n        }\n        else if (key.name === 'i') {\n            setItems(items.map(toggle));\n        }\n        else if (isNumberKey(key)) {\n            // Adjust index to start at 1\n            const position = Number(key.name) - 1;\n            const item = items[position];\n            if (item != null && isSelectable(item)) {\n                setActive(position);\n                setItems(items.map((choice, i) => (i === position ? toggle(choice) : choice)));\n            }\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let description;\n    const page = usePagination({\n        items,\n        active,\n        renderItem({ item, isActive }) {\n            if (Separator.isSeparator(item)) {\n                return ` ${item.separator}`;\n            }\n            if (item.disabled) {\n                const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n                return theme.style.disabledChoice(`${item.name} ${disabledLabel}`);\n            }\n            if (isActive) {\n                description = item.description;\n            }\n            const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked;\n            const color = isActive ? theme.style.highlight : (x) => x;\n            const cursor = isActive ? theme.icon.cursor : ' ';\n            return color(`${cursor}${checkbox} ${item.name}`);\n        },\n        pageSize,\n        loop,\n    });\n    if (status === 'done') {\n        const selection = items.filter(isChecked);\n        const answer = theme.style.answer(theme.style.renderSelectedChoices(selection, items));\n        return `${prefix} ${message} ${answer}`;\n    }\n    let helpTipTop = '';\n    let helpTipBottom = '';\n    if (theme.helpMode === 'always' ||\n        (theme.helpMode === 'auto' &&\n            showHelpTip &&\n            (instructions === undefined || instructions))) {\n        if (typeof instructions === 'string') {\n            helpTipTop = instructions;\n        }\n        else {\n            const keys = [\n                `${theme.style.key('space')} to select`,\n                `${theme.style.key('a')} to toggle all`,\n                `${theme.style.key('i')} to invert selection`,\n                `and ${theme.style.key('enter')} to proceed`,\n            ];\n            helpTipTop = ` (Press ${keys.join(', ')})`;\n        }\n        if (items.length > pageSize &&\n            (theme.helpMode === 'always' ||\n                // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n                (theme.helpMode === 'auto' && firstRender.current))) {\n            helpTipBottom = `\\n${theme.style.help('(Use arrow keys to reveal more choices)')}`;\n            firstRender.current = false;\n        }\n    }\n    const choiceDescription = description\n        ? `\\n${theme.style.description(description)}`\n        : ``;\n    let error = '';\n    if (errorMsg) {\n        error = `\\n${theme.style.error(errorMsg)}`;\n    }\n    return `${prefix} ${message}${helpTipTop}\\n${page}${helpTipBottom}${choiceDescription}${error}${ansiEscapes.cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n", "import { AsyncResource } from 'node:async_hooks';\nimport { editAsync } from 'external-editor';\nimport { createPrompt, useEffect, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core';\nconst editorTheme = {\n    validationFailureMode: 'keep',\n};\nexport default createPrompt((config, done) => {\n    const { waitForUseInput = true, file: { postfix = config.postfix ?? '.txt', ...fileProps } = {}, validate = () => true, } = config;\n    const theme = makeTheme(editorTheme, config.theme);\n    const [status, setStatus] = useState('idle');\n    const [value = '', setValue] = useState(config.default);\n    const [errorMsg, setError] = useState();\n    const prefix = usePrefix({ status, theme });\n    function startEditor(rl) {\n        rl.pause();\n        // Note: The bind call isn't strictly required. But we need it for our mocks to work as expected.\n        const editCallback = AsyncResource.bind(async (error, answer) => {\n            rl.resume();\n            if (error) {\n                setError(error.toString());\n            }\n            else {\n                setStatus('loading');\n                const isValid = await validate(answer);\n                if (isValid === true) {\n                    setError(undefined);\n                    setStatus('done');\n                    done(answer);\n                }\n                else {\n                    if (theme.validationFailureMode === 'clear') {\n                        setValue(config.default);\n                    }\n                    else {\n                        setValue(answer);\n                    }\n                    setError(isValid || 'You must provide a valid value');\n                    setStatus('idle');\n                }\n            }\n        });\n        editAsync(value, (error, answer) => void editCallback(error, answer), {\n            postfix,\n            ...fileProps,\n        });\n    }\n    useEffect((rl) => {\n        if (!waitForUseInput) {\n            startEditor(rl);\n        }\n    }, []);\n    useKeypress((key, rl) => {\n        // Ignore keypress while our prompt is doing other processing.\n        if (status !== 'idle') {\n            return;\n        }\n        if (isEnterKey(key)) {\n            startEditor(rl);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let helpTip = '';\n    if (status === 'loading') {\n        helpTip = theme.style.help('Received');\n    }\n    else if (status === 'idle') {\n        const enterKey = theme.style.key('enter');\n        helpTip = theme.style.help(`Press ${enterKey} to launch your preferred editor.`);\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [[prefix, message, helpTip].filter(Boolean).join(' '), error];\n});\n", "import { createPrompt, useState, useKeypress, isEnterKey, usePrefix, makeTheme, } from '@inquirer/core';\nfunction getBooleanValue(value, defaultValue) {\n    let answer = defaultValue !== false;\n    if (/^(y|yes)/i.test(value))\n        answer = true;\n    else if (/^(n|no)/i.test(value))\n        answer = false;\n    return answer;\n}\nfunction boolToString(value) {\n    return value ? 'Yes' : 'No';\n}\nexport default createPrompt((config, done) => {\n    const { transformer = boolToString } = config;\n    const [status, setStatus] = useState('idle');\n    const [value, setValue] = useState('');\n    const theme = makeTheme(config.theme);\n    const prefix = usePrefix({ status, theme });\n    useKeypress((key, rl) => {\n        if (isEnterKey(key)) {\n            const answer = getBooleanValue(value, config.default);\n            setValue(transformer(answer));\n            setStatus('done');\n            done(answer);\n        }\n        else if (key.name === 'tab') {\n            const answer = boolToString(!getBooleanValue(value, config.default));\n            rl.clearLine(0); // Remove the tab character.\n            rl.write(answer);\n            setValue(answer);\n        }\n        else {\n            setValue(rl.line);\n        }\n    });\n    let formattedValue = value;\n    let defaultValue = '';\n    if (status === 'done') {\n        formattedValue = theme.style.answer(value);\n    }\n    else {\n        defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`;\n    }\n    const message = theme.style.message(config.message, status);\n    return `${prefix} ${message}${defaultValue} ${formattedValue}`;\n});\n", "import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, isBackspaceKey, makeTheme, } from '@inquirer/core';\nconst inputTheme = {\n    validationFailureMode: 'keep',\n};\nexport default createPrompt((config, done) => {\n    const { required, validate = () => true } = config;\n    const theme = makeTheme(inputTheme, config.theme);\n    const [status, setStatus] = useState('idle');\n    const [defaultValue = '', setDefaultValue] = useState(config.default);\n    const [errorMsg, setError] = useState();\n    const [value, setValue] = useState('');\n    const prefix = usePrefix({ status, theme });\n    useKeypress(async (key, rl) => {\n        // Ignore keypress while our prompt is doing other processing.\n        if (status !== 'idle') {\n            return;\n        }\n        if (isEnterKey(key)) {\n            const answer = value || defaultValue;\n            setStatus('loading');\n            const isValid = required && !answer ? 'You must provide a value' : await validate(answer);\n            if (isValid === true) {\n                setValue(answer);\n                setStatus('done');\n                done(answer);\n            }\n            else {\n                if (theme.validationFailureMode === 'clear') {\n                    setValue('');\n                }\n                else {\n                    // Reset the readline line value to the previous value. On line event, the value\n                    // get cleared, forcing the user to re-enter the value instead of fixing it.\n                    rl.write(value);\n                }\n                setError(isValid || 'You must provide a valid value');\n                setStatus('idle');\n            }\n        }\n        else if (isBackspaceKey(key) && !value) {\n            setDefaultValue(undefined);\n        }\n        else if (key.name === 'tab' && !value) {\n            setDefaultValue(undefined);\n            rl.clearLine(0); // Remove the tab character.\n            rl.write(defaultValue);\n            setValue(defaultValue);\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let formattedValue = value;\n    if (typeof config.transformer === 'function') {\n        formattedValue = config.transformer(value, { isFinal: status === 'done' });\n    }\n    else if (status === 'done') {\n        formattedValue = theme.style.answer(value);\n    }\n    let defaultStr;\n    if (defaultValue && status !== 'done' && !value) {\n        defaultStr = theme.style.defaultAnswer(defaultValue);\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [\n        [prefix, message, defaultStr, formattedValue]\n            .filter((v) => v !== undefined)\n            .join(' '),\n        error,\n    ];\n});\n", "import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, isBackspaceKey, makeTheme, } from '@inquirer/core';\nfunction isStepOf(value, step, min) {\n    const valuePow = value * Math.pow(10, 6);\n    const stepPow = step * Math.pow(10, 6);\n    const minPow = min * Math.pow(10, 6);\n    return (valuePow - (Number.isFinite(min) ? minPow : 0)) % stepPow === 0;\n}\nfunction validateNumber(value, { min, max, step, }) {\n    if (value == null || Number.isNaN(value)) {\n        return false;\n    }\n    else if (value < min || value > max) {\n        return `Value must be between ${min} and ${max}`;\n    }\n    else if (step !== 'any' && !isStepOf(value, step, min)) {\n        return `Value must be a multiple of ${step}${Number.isFinite(min) ? ` starting from ${min}` : ''}`;\n    }\n    return true;\n}\nexport default createPrompt((config, done) => {\n    const { validate = () => true, min = -Infinity, max = Infinity, step = 1, required = false, } = config;\n    const theme = makeTheme(config.theme);\n    const [status, setStatus] = useState('idle');\n    const [value, setValue] = useState(''); // store the input value as string and convert to number on \"Enter\"\n    // Ignore default if not valid.\n    const validDefault = validateNumber(config.default, { min, max, step }) === true\n        ? config.default?.toString()\n        : undefined;\n    const [defaultValue = '', setDefaultValue] = useState(validDefault);\n    const [errorMsg, setError] = useState();\n    const prefix = usePrefix({ status, theme });\n    useKeypress(async (key, rl) => {\n        // Ignore keypress while our prompt is doing other processing.\n        if (status !== 'idle') {\n            return;\n        }\n        if (isEnterKey(key)) {\n            const input = value || defaultValue;\n            const answer = input === '' ? undefined : Number(input);\n            setStatus('loading');\n            let isValid = true;\n            if (required || answer != null) {\n                isValid = validateNumber(answer, { min, max, step });\n            }\n            if (isValid === true) {\n                isValid = await validate(answer);\n            }\n            if (isValid === true) {\n                setValue(String(answer ?? ''));\n                setStatus('done');\n                done(answer);\n            }\n            else {\n                // Reset the readline line value to the previous value. On line event, the value\n                // get cleared, forcing the user to re-enter the value instead of fixing it.\n                rl.write(value);\n                setError(isValid || 'You must provide a valid numeric value');\n                setStatus('idle');\n            }\n        }\n        else if (isBackspaceKey(key) && !value) {\n            setDefaultValue(undefined);\n        }\n        else if (key.name === 'tab' && !value) {\n            setDefaultValue(undefined);\n            rl.clearLine(0); // Remove the tab character.\n            rl.write(defaultValue);\n            setValue(defaultValue);\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let formattedValue = value;\n    if (status === 'done') {\n        formattedValue = theme.style.answer(value);\n    }\n    let defaultStr;\n    if (defaultValue && status !== 'done' && !value) {\n        defaultStr = theme.style.defaultAnswer(defaultValue);\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [\n        [prefix, message, defaultStr, formattedValue]\n            .filter((v) => v !== undefined)\n            .join(' '),\n        error,\n    ];\n});\n", "import { createPrompt, useMemo, useState, useKeypress, usePrefix, isEnterKey, makeTheme, Separator, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nfunction normalizeChoices(choices) {\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice)) {\n            return choice;\n        }\n        const name = 'name' in choice ? choice.name : String(choice.value);\n        const value = 'value' in choice ? choice.value : name;\n        return {\n            value: value,\n            name,\n            key: choice.key.toLowerCase(),\n        };\n    });\n}\nconst helpChoice = {\n    key: 'h',\n    name: 'Help, list all options',\n    value: undefined,\n};\nexport default createPrompt((config, done) => {\n    const { default: defaultKey = 'h' } = config;\n    const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n    const [status, setStatus] = useState('idle');\n    const [value, setValue] = useState('');\n    const [expanded, setExpanded] = useState(config.expanded ?? false);\n    const [errorMsg, setError] = useState();\n    const theme = makeTheme(config.theme);\n    const prefix = usePrefix({ theme, status });\n    useKeypress((event, rl) => {\n        if (isEnterKey(event)) {\n            const answer = (value || defaultKey).toLowerCase();\n            if (answer === 'h' && !expanded) {\n                setExpanded(true);\n            }\n            else {\n                const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === answer);\n                if (selectedChoice) {\n                    setStatus('done');\n                    // Set the value as we might've selected the default one.\n                    setValue(answer);\n                    done(selectedChoice.value);\n                }\n                else if (value === '') {\n                    setError('Please input a value');\n                }\n                else {\n                    setError(`\"${colors.red(value)}\" isn't an available option`);\n                }\n            }\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    if (status === 'done') {\n        // If the prompt is done, it's safe to assume there is a selected value.\n        const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase());\n        return `${prefix} ${message} ${theme.style.answer(selectedChoice.name)}`;\n    }\n    const allChoices = expanded ? choices : [...choices, helpChoice];\n    // Collapsed display style\n    let longChoices = '';\n    let shortChoices = allChoices\n        .map((choice) => {\n        if (Separator.isSeparator(choice))\n            return '';\n        if (choice.key === defaultKey) {\n            return choice.key.toUpperCase();\n        }\n        return choice.key;\n    })\n        .join('');\n    shortChoices = ` ${theme.style.defaultAnswer(shortChoices)}`;\n    // Expanded display style\n    if (expanded) {\n        shortChoices = '';\n        longChoices = allChoices\n            .map((choice) => {\n            if (Separator.isSeparator(choice)) {\n                return ` ${choice.separator}`;\n            }\n            const line = `  ${choice.key}) ${choice.name}`;\n            if (choice.key === value.toLowerCase()) {\n                return theme.style.highlight(line);\n            }\n            return line;\n        })\n            .join('\\n');\n    }\n    let helpTip = '';\n    const currentOption = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase());\n    if (currentOption) {\n        helpTip = `${colors.cyan('>>')} ${currentOption.name}`;\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [\n        `${prefix} ${message}${shortChoices} ${value}`,\n        [longChoices, helpTip, error].filter(Boolean).join('\\n'),\n    ];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useMemo, useState, useKeypress, usePrefix, isEnterKey, Separator, makeTheme, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nconst numberRegex = /\\d+/;\nfunction isSelectableChoice(choice) {\n    return choice != null && !Separator.isSeparator(choice);\n}\nfunction normalizeChoices(choices) {\n    let index = 0;\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice))\n            return choice;\n        index += 1;\n        if (typeof choice === 'string') {\n            return {\n                value: choice,\n                name: choice,\n                short: choice,\n                key: String(index),\n            };\n        }\n        const name = choice.name ?? String(choice.value);\n        return {\n            value: choice.value,\n            name,\n            short: choice.short ?? name,\n            key: choice.key ?? String(index),\n        };\n    });\n}\nexport default createPrompt((config, done) => {\n    const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n    const [status, setStatus] = useState('idle');\n    const [value, setValue] = useState('');\n    const [errorMsg, setError] = useState();\n    const theme = makeTheme(config.theme);\n    const prefix = usePrefix({ status, theme });\n    useKeypress((key, rl) => {\n        if (isEnterKey(key)) {\n            let selectedChoice;\n            if (numberRegex.test(value)) {\n                const answer = Number.parseInt(value, 10) - 1;\n                selectedChoice = choices.filter(isSelectableChoice)[answer];\n            }\n            else {\n                selectedChoice = choices.find((choice) => isSelectableChoice(choice) && choice.key === value);\n            }\n            if (isSelectableChoice(selectedChoice)) {\n                setValue(selectedChoice.short);\n                setStatus('done');\n                done(selectedChoice.value);\n            }\n            else if (value === '') {\n                setError('Please input a value');\n            }\n            else {\n                setError(`\"${colors.red(value)}\" isn't an available option`);\n            }\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    if (status === 'done') {\n        return `${prefix} ${message} ${theme.style.answer(value)}`;\n    }\n    const choicesStr = choices\n        .map((choice) => {\n        if (Separator.isSeparator(choice)) {\n            return ` ${choice.separator}`;\n        }\n        const line = `  ${choice.key}) ${choice.name}`;\n        if (choice.key === value.toLowerCase()) {\n            return theme.style.highlight(line);\n        }\n        return line;\n    })\n        .join('\\n');\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [\n        `${prefix} ${message} ${value}`,\n        [choicesStr, error].filter(Boolean).join('\\n'),\n    ];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core';\nimport ansiEscapes from 'ansi-escapes';\nexport default createPrompt((config, done) => {\n    const { validate = () => true } = config;\n    const theme = makeTheme(config.theme);\n    const [status, setStatus] = useState('idle');\n    const [errorMsg, setError] = useState();\n    const [value, setValue] = useState('');\n    const prefix = usePrefix({ status, theme });\n    useKeypress(async (key, rl) => {\n        // Ignore keypress while our prompt is doing other processing.\n        if (status !== 'idle') {\n            return;\n        }\n        if (isEnterKey(key)) {\n            const answer = value;\n            setStatus('loading');\n            const isValid = await validate(answer);\n            if (isValid === true) {\n                setValue(answer);\n                setStatus('done');\n                done(answer);\n            }\n            else {\n                // Reset the readline line value to the previous value. On line event, the value\n                // get cleared, forcing the user to re-enter the value instead of fixing it.\n                rl.write(value);\n                setError(isValid || 'You must provide a valid value');\n                setStatus('idle');\n            }\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let formattedValue = '';\n    let helpTip;\n    if (config.mask) {\n        const maskChar = typeof config.mask === 'string' ? config.mask : '*';\n        formattedValue = maskChar.repeat(value.length);\n    }\n    else if (status !== 'done') {\n        helpTip = `${theme.style.help('[input is masked]')}${ansiEscapes.cursorHide}`;\n    }\n    if (status === 'done') {\n        formattedValue = theme.style.answer(formattedValue);\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [[prefix, message, config.mask ? formattedValue : helpTip].join(' '), error];\n});\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useEffect, useMemo, isEnterKey, Separator, makeTheme, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nconst searchTheme = {\n    icon: { cursor: figures.pointer },\n    style: {\n        disabled: (text) => colors.dim(`- ${text}`),\n        searchTerm: (text) => colors.cyan(text),\n        description: (text) => colors.cyan(text),\n    },\n    helpMode: 'auto',\n};\nfunction isSelectable(item) {\n    return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice))\n            return choice;\n        if (typeof choice === 'string') {\n            return {\n                value: choice,\n                name: choice,\n                short: choice,\n                disabled: false,\n            };\n        }\n        const name = choice.name ?? String(choice.value);\n        return {\n            value: choice.value,\n            name,\n            description: choice.description,\n            short: choice.short ?? name,\n            disabled: choice.disabled ?? false,\n        };\n    });\n}\nexport default createPrompt((config, done) => {\n    const { pageSize = 7, validate = () => true } = config;\n    const theme = makeTheme(searchTheme, config.theme);\n    const firstRender = useRef(true);\n    const [status, setStatus] = useState('loading');\n    const [searchTerm, setSearchTerm] = useState('');\n    const [searchResults, setSearchResults] = useState([]);\n    const [searchError, setSearchError] = useState();\n    const prefix = usePrefix({ status, theme });\n    const bounds = useMemo(() => {\n        const first = searchResults.findIndex(isSelectable);\n        const last = searchResults.findLastIndex(isSelectable);\n        return { first, last };\n    }, [searchResults]);\n    const [active = bounds.first, setActive] = useState();\n    useEffect(() => {\n        const controller = new AbortController();\n        setStatus('loading');\n        setSearchError(undefined);\n        const fetchResults = async () => {\n            try {\n                const results = await config.source(searchTerm || undefined, {\n                    signal: controller.signal,\n                });\n                if (!controller.signal.aborted) {\n                    // Reset the pointer\n                    setActive(undefined);\n                    setSearchError(undefined);\n                    setSearchResults(normalizeChoices(results));\n                    setStatus('idle');\n                }\n            }\n            catch (error) {\n                if (!controller.signal.aborted && error instanceof Error) {\n                    setSearchError(error.message);\n                }\n            }\n        };\n        void fetchResults();\n        return () => {\n            controller.abort();\n        };\n    }, [searchTerm]);\n    // Safe to assume the cursor position never points to a Separator.\n    const selectedChoice = searchResults[active];\n    useKeypress(async (key, rl) => {\n        if (isEnterKey(key)) {\n            if (selectedChoice) {\n                setStatus('loading');\n                const isValid = await validate(selectedChoice.value);\n                setStatus('idle');\n                if (isValid === true) {\n                    setStatus('done');\n                    done(selectedChoice.value);\n                }\n                else if (selectedChoice.name === searchTerm) {\n                    setSearchError(isValid || 'You must provide a valid value');\n                }\n                else {\n                    // Reset line with new search term\n                    rl.write(selectedChoice.name);\n                    setSearchTerm(selectedChoice.name);\n                }\n            }\n            else {\n                // Reset the readline line value to the previous value. On line event, the value\n                // get cleared, forcing the user to re-enter the value instead of fixing it.\n                rl.write(searchTerm);\n            }\n        }\n        else if (key.name === 'tab' && selectedChoice) {\n            rl.clearLine(0); // Remove the tab character.\n            rl.write(selectedChoice.name);\n            setSearchTerm(selectedChoice.name);\n        }\n        else if (status !== 'loading' && (key.name === 'up' || key.name === 'down')) {\n            rl.clearLine(0);\n            if ((key.name === 'up' && active !== bounds.first) ||\n                (key.name === 'down' && active !== bounds.last)) {\n                const offset = key.name === 'up' ? -1 : 1;\n                let next = active;\n                do {\n                    next = (next + offset + searchResults.length) % searchResults.length;\n                } while (!isSelectable(searchResults[next]));\n                setActive(next);\n            }\n        }\n        else {\n            setSearchTerm(rl.line);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    if (active > 0) {\n        firstRender.current = false;\n    }\n    let helpTip = '';\n    if (searchResults.length > 1 &&\n        (theme.helpMode === 'always' || (theme.helpMode === 'auto' && firstRender.current))) {\n        helpTip =\n            searchResults.length > pageSize\n                ? `\\n${theme.style.help('(Use arrow keys to reveal more choices)')}`\n                : `\\n${theme.style.help('(Use arrow keys)')}`;\n    }\n    // TODO: What to do if no results are found? Should we display a message?\n    const page = usePagination({\n        items: searchResults,\n        active,\n        renderItem({ item, isActive }) {\n            if (Separator.isSeparator(item)) {\n                return ` ${item.separator}`;\n            }\n            if (item.disabled) {\n                const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n                return theme.style.disabled(`${item.name} ${disabledLabel}`);\n            }\n            const color = isActive ? theme.style.highlight : (x) => x;\n            const cursor = isActive ? theme.icon.cursor : ` `;\n            return color(`${cursor} ${item.name}`);\n        },\n        pageSize,\n        loop: false,\n    });\n    let error;\n    if (searchError) {\n        error = theme.style.error(searchError);\n    }\n    else if (searchResults.length === 0 && searchTerm !== '' && status === 'idle') {\n        error = theme.style.error('No results found');\n    }\n    let searchStr;\n    if (status === 'done' && selectedChoice) {\n        const answer = selectedChoice.short;\n        return `${prefix} ${message} ${theme.style.answer(answer)}`;\n    }\n    else {\n        searchStr = theme.style.searchTerm(searchTerm);\n    }\n    const choiceDescription = selectedChoice?.description\n        ? `\\n${theme.style.description(selectedChoice.description)}`\n        : ``;\n    return [\n        [prefix, message, searchStr].filter(Boolean).join(' '),\n        `${error ?? page}${helpTip}${choiceDescription}`,\n    ];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nimport ansiEscapes from 'ansi-escapes';\nconst selectTheme = {\n    icon: { cursor: figures.pointer },\n    style: {\n        disabled: (text) => colors.dim(`- ${text}`),\n        description: (text) => colors.cyan(text),\n    },\n    helpMode: 'auto',\n};\nfunction isSelectable(item) {\n    return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice))\n            return choice;\n        if (typeof choice === 'string') {\n            return {\n                value: choice,\n                name: choice,\n                short: choice,\n                disabled: false,\n            };\n        }\n        const name = choice.name ?? String(choice.value);\n        return {\n            value: choice.value,\n            name,\n            description: choice.description,\n            short: choice.short ?? name,\n            disabled: choice.disabled ?? false,\n        };\n    });\n}\nexport default createPrompt((config, done) => {\n    const { loop = true, pageSize = 7 } = config;\n    const firstRender = useRef(true);\n    const theme = makeTheme(selectTheme, config.theme);\n    const [status, setStatus] = useState('idle');\n    const prefix = usePrefix({ status, theme });\n    const searchTimeoutRef = useRef();\n    const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n    const bounds = useMemo(() => {\n        const first = items.findIndex(isSelectable);\n        const last = items.findLastIndex(isSelectable);\n        if (first === -1) {\n            throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n        }\n        return { first, last };\n    }, [items]);\n    const defaultItemIndex = useMemo(() => {\n        if (!('default' in config))\n            return -1;\n        return items.findIndex((item) => isSelectable(item) && item.value === config.default);\n    }, [config.default, items]);\n    const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);\n    // Safe to assume the cursor position always point to a Choice.\n    const selectedChoice = items[active];\n    useKeypress((key, rl) => {\n        clearTimeout(searchTimeoutRef.current);\n        if (isEnterKey(key)) {\n            setStatus('done');\n            done(selectedChoice.value);\n        }\n        else if (isUpKey(key) || isDownKey(key)) {\n            rl.clearLine(0);\n            if (loop ||\n                (isUpKey(key) && active !== bounds.first) ||\n                (isDownKey(key) && active !== bounds.last)) {\n                const offset = isUpKey(key) ? -1 : 1;\n                let next = active;\n                do {\n                    next = (next + offset + items.length) % items.length;\n                } while (!isSelectable(items[next]));\n                setActive(next);\n            }\n        }\n        else if (isNumberKey(key)) {\n            rl.clearLine(0);\n            const position = Number(key.name) - 1;\n            const item = items[position];\n            if (item != null && isSelectable(item)) {\n                setActive(position);\n            }\n        }\n        else if (isBackspaceKey(key)) {\n            rl.clearLine(0);\n        }\n        else {\n            // Default to search\n            const searchTerm = rl.line.toLowerCase();\n            const matchIndex = items.findIndex((item) => {\n                if (Separator.isSeparator(item) || !isSelectable(item))\n                    return false;\n                return item.name.toLowerCase().startsWith(searchTerm);\n            });\n            if (matchIndex !== -1) {\n                setActive(matchIndex);\n            }\n            searchTimeoutRef.current = setTimeout(() => {\n                rl.clearLine(0);\n            }, 700);\n        }\n    });\n    useEffect(() => () => {\n        clearTimeout(searchTimeoutRef.current);\n    }, []);\n    const message = theme.style.message(config.message, status);\n    let helpTipTop = '';\n    let helpTipBottom = '';\n    if (theme.helpMode === 'always' ||\n        (theme.helpMode === 'auto' && firstRender.current)) {\n        firstRender.current = false;\n        if (items.length > pageSize) {\n            helpTipBottom = `\\n${theme.style.help('(Use arrow keys to reveal more choices)')}`;\n        }\n        else {\n            helpTipTop = theme.style.help('(Use arrow keys)');\n        }\n    }\n    const page = usePagination({\n        items,\n        active,\n        renderItem({ item, isActive }) {\n            if (Separator.isSeparator(item)) {\n                return ` ${item.separator}`;\n            }\n            if (item.disabled) {\n                const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n                return theme.style.disabled(`${item.name} ${disabledLabel}`);\n            }\n            const color = isActive ? theme.style.highlight : (x) => x;\n            const cursor = isActive ? theme.icon.cursor : ` `;\n            return color(`${cursor} ${item.name}`);\n        },\n        pageSize,\n        loop,\n    });\n    if (status === 'done') {\n        return `${prefix} ${message} ${theme.style.answer(selectedChoice.short)}`;\n    }\n    const choiceDescription = selectedChoice.description\n        ? `\\n${theme.style.description(selectedChoice.description)}`\n        : ``;\n    return `${[prefix, message, helpTipTop].filter(Boolean).join(' ')}\\n${page}${helpTipBottom}${choiceDescription}${ansiEscapes.cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {confirm, input, checkbox, select, editor} from '@inquirer/prompts';\n\n/**\n * A set of prompts from inquirer to be used throughout our tooling.  We access them via static metonds on this\n * class to allow easier mocking management in test environments.\n */\nexport class Prompt {\n  static confirm: typeof confirm = (\n    // These are extractions of the PromptConfig from the inquirer types.\n    _config: Parameters[0],\n    _context: Parameters[1],\n  ) => {\n    /** Config to use when creating a confirm prompt, changes the default to `false` instead of `true`. */\n    const config = {\n      default: false,\n      ..._config,\n    };\n    return confirm(config, _context);\n  };\n  static input: typeof input = input;\n  static checkbox: typeof checkbox = checkbox;\n  static select: typeof select = select;\n  static editor: typeof editor = editor;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Prompt} from '../../utils/prompt.js';\nimport {getConfig, assertValidCaretakerConfig} from '../../utils/config.js';\n\nimport {green, Log} from '../../utils/logging.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\n\n/** Update the Github caretaker group, using a prompt to obtain the new caretaker group members.  */\nexport async function updateCaretakerTeamViaPrompt() {\n  /** Caretaker specific configuration. */\n  const config = await getConfig([assertValidCaretakerConfig]);\n  const {caretakerGroup} = config.caretaker;\n\n  if (caretakerGroup === undefined) {\n    throw Error('`caretakerGroup` is not defined in the `caretaker` config');\n  }\n\n  /** The list of current members in the group. */\n  const current = new Set(await getGroupMembers(caretakerGroup));\n  /** The list of members able to be added to the group as defined by a separate roster group. */\n  const roster = (await getGroupMembers(`${caretakerGroup}-roster`)).map((member) => ({\n    value: member,\n    checked: current.has(member),\n  }));\n\n  /** The list of users selected to be members of the caretaker group. */\n  const selected = await Prompt.checkbox({\n    choices: roster,\n    message: 'Select 2 caretakers for the upcoming rotation:',\n    validate: (value) => {\n      if (value.length !== 2) {\n        return 'Please select exactly 2 caretakers for the upcoming rotation.';\n      }\n      return true;\n    },\n  });\n\n  /** Whether the user positively confirmed the selected made. */\n  const confirmation = await Prompt.confirm({\n    default: true,\n    message: 'Are you sure?',\n  });\n\n  if (confirmation === false) {\n    Log.warn('  ⚠  Skipping caretaker group update.');\n    return;\n  }\n\n  if (JSON.stringify(selected) === JSON.stringify(current)) {\n    Log.info(green('  ✔  Caretaker group already up to date.'));\n    return;\n  }\n\n  try {\n    await setCaretakerGroup(caretakerGroup, selected);\n  } catch {\n    Log.error('  ✘  Failed to update caretaker group.');\n    return;\n  }\n  Log.info(green('  ✔  Successfully updated caretaker group'));\n}\n\n/** Retrieve the current list of members for the provided group. */\nasync function getGroupMembers(group: string) {\n  /** The authenticated GitClient instance. */\n  const git = await AuthenticatedGitClient.get();\n\n  return (\n    await git.github.teams.listMembersInOrg({\n      org: git.remoteConfig.owner,\n      team_slug: group,\n    })\n  ).data\n    .filter((_) => !!_)\n    .map((member) => member!.login);\n}\n\nasync function setCaretakerGroup(group: string, members: string[]) {\n  /** The authenticated GitClient instance. */\n  const git = await AuthenticatedGitClient.get();\n  /** The full name of the group /. */\n  const fullSlug = `${git.remoteConfig.owner}/${group}`;\n  /** The list of current members of the group. */\n  const current = await getGroupMembers(group);\n  /** The list of users to be removed from the group. */\n  const removed = current.filter((login) => !members.includes(login));\n  /** Add a user to the group. */\n  const add = async (username: string) => {\n    Log.debug(`Adding ${username} to ${fullSlug}.`);\n    await git.github.teams.addOrUpdateMembershipForUserInOrg({\n      org: git.remoteConfig.owner,\n      team_slug: group,\n      username,\n      role: 'maintainer',\n    });\n  };\n  /** Remove a user from the group. */\n  const remove = async (username: string) => {\n    Log.debug(`Removing ${username} from ${fullSlug}.`);\n    await git.github.teams.removeMembershipForUserInOrg({\n      org: git.remoteConfig.owner,\n      team_slug: group,\n      username,\n    });\n  };\n\n  Log.debug.group(`Caretaker Group: ${fullSlug}`);\n  Log.debug(`Current Membership: ${current.join(', ')}`);\n  Log.debug(`New Membership:     ${members.join(', ')}`);\n  Log.debug(`Removed:            ${removed.join(', ')}`);\n  Log.debug.groupEnd();\n\n  // Add members before removing to prevent the account performing the action from removing their\n  // permissions to change the group membership early.\n  await Promise.all(members.map(add));\n  await Promise.all(removed.map(remove));\n\n  Log.debug(green(`Successfully updated ${fullSlug}`));\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, CommandModule} from 'yargs';\n\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n\nimport {updateCaretakerTeamViaPrompt} from './update-github-team.js';\n\nexport interface CaretakerHandoffOptions {}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return addGithubTokenOption(argv);\n}\n\n/** Handles the command. */\nasync function handler() {\n  await updateCaretakerTeamViaPrompt();\n}\n\n/** yargs command module for assisting in handing off caretaker.  */\nexport const HandoffModule: CommandModule<{}, CaretakerHandoffOptions> = {\n  handler,\n  builder,\n  command: 'handoff',\n  describe: 'Run a handoff assistant to aide in moving to the next caretaker',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {writeFileSync} from 'fs';\n\nimport {Log} from '../../utils/logging.js';\n\nimport {loadCommitMessageDraft} from './commit-message-draft.js';\nimport {CommitMsgSource} from './commit-message-source.js';\n\n/**\n * Restore the commit message draft to the git to be used as the default commit message.\n *\n * The source provided may be one of the sources described in\n *   https://git-scm.com/docs/githooks#_prepare_commit_msg\n */\nexport function restoreCommitMessage(filePath: string, source?: CommitMsgSource) {\n  if (!!source) {\n    if (source === 'message') {\n      Log.debug('A commit message was already provided via the command with a -m or -F flag');\n    }\n    if (source === 'template') {\n      Log.debug('A commit message was already provided via the -t flag or config.template setting');\n    }\n    if (source === 'squash') {\n      Log.debug('A commit message was already provided as a merge action or via .git/MERGE_MSG');\n    }\n    if (source === 'commit') {\n      Log.debug(\n        'A commit message was already provided through a revision specified via --fixup, -c,',\n      );\n      Log.debug('-C or --amend flag');\n    }\n    process.exit(0);\n  }\n  /** A draft of a commit message. */\n  const commitMessage = loadCommitMessageDraft(filePath);\n\n  // If the commit message draft has content, restore it into the provided filepath.\n  if (commitMessage) {\n    writeFileSync(filePath, commitMessage);\n  }\n  // Exit the process\n  process.exit(0);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {existsSync, readFileSync, unlinkSync, writeFileSync} from 'fs';\n\n/** Load the commit message draft from the file system if it exists. */\nexport function loadCommitMessageDraft(basePath: string) {\n  const commitMessageDraftPath = `${basePath}.ngDevSave`;\n  if (existsSync(commitMessageDraftPath)) {\n    return readFileSync(commitMessageDraftPath).toString();\n  }\n  return '';\n}\n\n/** Remove the commit message draft from the file system. */\nexport function deleteCommitMessageDraft(basePath: string) {\n  const commitMessageDraftPath = `${basePath}.ngDevSave`;\n  if (existsSync(commitMessageDraftPath)) {\n    unlinkSync(commitMessageDraftPath);\n  }\n}\n\n/** Save the commit message draft to the file system for later retrieval. */\nexport function saveCommitMessageDraft(basePath: string, commitMessage: string) {\n  writeFileSync(`${basePath}.ngDevSave`, commitMessage);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {CommitMsgSource} from './commit-message-source.js';\n\nimport {restoreCommitMessage} from './restore-commit-message.js';\n\nexport interface RestoreCommitMessageOptions {\n  file?: string;\n  source?: string;\n  fileEnvVariable?: string;\n}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return argv\n    .option('file-env-variable' as 'fileEnvVariable', {\n      type: 'string',\n      description:\n        'The key for the environment variable which holds the arguments for the\\n' +\n        'prepare-commit-msg hook as described here:\\n' +\n        'https://git-scm.com/docs/githooks#_prepare_commit_msg',\n    })\n    .positional('file', {type: 'string'})\n    .positional('source', {type: 'string'});\n}\n\n/** Handles the command. */\nasync function handler({fileEnvVariable, file, source}: Arguments) {\n  // File and source are provided as command line parameters\n  if (file !== undefined) {\n    restoreCommitMessage(file, source as CommitMsgSource);\n    return;\n  }\n\n  // File and source are provided as values held in an environment variable.\n  if (fileEnvVariable !== undefined) {\n    const [fileFromEnv, sourceFromEnv] = (process.env[fileEnvVariable!] || '').split(' ');\n    if (!fileFromEnv) {\n      throw new Error(`Provided environment variable \"${fileEnvVariable}\" was not found.`);\n    }\n    restoreCommitMessage(fileFromEnv, sourceFromEnv as CommitMsgSource);\n    return;\n  }\n\n  throw new Error(\n    'No file path and commit message source provide. Provide values via positional command ' +\n      'arguments, or via the --file-env-variable flag',\n  );\n}\n\n/** yargs command module describing the command. */\nexport const RestoreCommitMessageModule: CommandModule<{}, RestoreCommitMessageOptions> = {\n  handler,\n  builder,\n  command: 'restore-commit-message-draft [file] [source]',\n  // Description: Restore a commit message draft if one has been saved from a failed commit attempt.\n  // No describe is defiend to hide the command from the --help.\n  describe: false,\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {readFileSync} from 'fs';\nimport {resolve} from 'path';\n\nimport {green, Log, yellow} from '../../utils/logging.js';\nimport {GitClient} from '../../utils/git/git-client.js';\n\nimport {\n  deleteCommitMessageDraft,\n  saveCommitMessageDraft,\n} from '../restore-commit-message/commit-message-draft.js';\nimport {printValidationErrors, validateCommitMessage} from '../validate.js';\n\n/** Validate commit message at the provided file path. */\nexport async function validateFile(filePath: string, isErrorMode: boolean) {\n  const git = await GitClient.get();\n  const commitMessage = readFileSync(resolve(git.baseDir, filePath), 'utf8');\n  const {valid, errors} = await validateCommitMessage(commitMessage);\n  if (valid) {\n    Log.info(`${green('✔')}  Valid commit message`);\n    deleteCommitMessageDraft(filePath);\n    process.exitCode = 0;\n    return;\n  }\n\n  /** Function used to print to the console log. */\n  let printFn = isErrorMode ? Log.error : Log.log;\n\n  printFn(isErrorMode ? '✘ Invalid commit message.' : yellow('! Invalid commit message.'));\n  printValidationErrors(errors, printFn);\n  if (isErrorMode) {\n    printFn('Aborting commit attempt due to invalid commit message.');\n    printFn('Commit message aborted as failure rather than warning due to local configuration.');\n  } else {\n    printFn(yellow('Before this commit can be merged into the upstream repository, it must be'));\n    printFn(yellow('amended to follow commit message guidelines.'));\n  }\n\n  // On all invalid commit messages, the commit message should be saved as a draft to be\n  // restored on the next commit attempt.\n  saveCommitMessageDraft(filePath, commitMessage);\n  // Set the correct exit code based on if invalid commit message is an error.\n  process.exitCode = isErrorMode ? 1 : 0;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Commit as ParsedCommit, Options, sync as parse} from 'conventional-commits-parser';\n\n/** A parsed commit, containing the information needed to validate the commit. */\nexport interface Commit {\n  /** The full raw text of the commit. */\n  fullText: string;\n  /** The header line of the commit, will be used in the changelog entries. */\n  header: string;\n  /** The full body of the commit, not including the footer. */\n  body: string;\n  /** The footer of the commit, containing issue references and note sections. */\n  footer: string;\n  /** A list of the references to other issues made throughout the commit message. */\n  references: ParsedCommit.Reference[];\n  /** The type of the commit message. */\n  type: string;\n  /** The scope of the commit message. */\n  scope: string;\n  /** The subject of the commit message. */\n  subject: string;\n  /** A list of breaking change notes in the commit message. */\n  breakingChanges: ParsedCommit.Note[];\n  /** A list of deprecation notes in the commit message. */\n  deprecations: ParsedCommit.Note[];\n  /** Whether the commit is a fixup commit. */\n  isFixup: boolean;\n  /** Whether the commit is a squash commit. */\n  isSquash: boolean;\n  /** Whether the commit is a revert commit. */\n  isRevert: boolean;\n}\n\n/** A parsed commit which originated from a Git Log entry */\nexport interface CommitFromGitLog extends Commit {\n  author: string;\n  hash: string;\n  shortHash: string;\n}\n\n/**\n * A list of tuples expressing the fields to extract from each commit log entry. The tuple contains\n * two values, the first is the key for the property and the second is the template shortcut for the\n * git log command.\n */\nconst commitFields = {\n  hash: '%H',\n  shortHash: '%h',\n  author: '%aN',\n};\n/** The additional fields to be included in commit log entries for parsing. */\nexport type CommitFields = typeof commitFields;\n/** The commit fields described as git log format entries for parsing. */\nexport const commitFieldsAsFormat = (fields: CommitFields) => {\n  return Object.entries(fields)\n    .map(([key, value]) => `%n-${key}-%n${value}`)\n    .join('');\n};\n/**\n * The git log format template to create git log entries for parsing.\n *\n * The conventional commits parser expects to parse the standard git log raw body (%B) into its\n * component parts. Additionally it will parse additional fields with keys defined by\n * `-{key name}-` separated by new lines.\n * */\nexport const gitLogFormatForParsing = `%B${commitFieldsAsFormat(commitFields)}`;\n/** Markers used to denote the start of a note section in a commit. */\nenum NoteSections {\n  BREAKING_CHANGE = 'BREAKING CHANGE',\n  DEPRECATED = 'DEPRECATED',\n}\n/** Regex determining if a commit is a fixup. */\nconst FIXUP_PREFIX_RE = /^fixup! /i;\n/** Regex determining if a commit is a squash. */\nconst SQUASH_PREFIX_RE = /^squash! /i;\n/** Regex determining if a commit is a revert. */\nconst REVERT_PREFIX_RE = /^revert:? /i;\n/**\n * Regex pattern for parsing the header line of a commit.\n *\n * Several groups are being matched to be used in the parsed commit object, being mapped to the\n * `headerCorrespondence` object.\n *\n * The pattern can be broken down into component parts:\n * - `(\\w+)` - a capturing group discovering the type of the commit.\n * - `(?:\\(([^)]+)\\))?` - an optional capturing group to capture the scope of the commit.\n * - `(.*)` - a capturing group discovering the subject of the commit.\n */\nconst headerPattern = /^(\\w+)(?:\\(([^)]+)\\))?: (.*)$/;\n/**\n * The property names used for the values extracted from the header via the\n * `headerPattern` regex.\n */\nconst headerCorrespondence = ['type', 'scope', 'subject'];\n/**\n * Configuration options for the commit parser.\n *\n * NOTE: An extended type from `Options` must be used because the current\n * @types/conventional-commits-parser version does not include the `notesPattern` field.\n */\nconst parseOptions: Options & {notesPattern: (keywords: string) => RegExp} = {\n  commentChar: '#',\n  headerPattern,\n  headerCorrespondence,\n  noteKeywords: [NoteSections.BREAKING_CHANGE, NoteSections.DEPRECATED],\n  notesPattern: (keywords: string) => new RegExp(`^\\\\s*(${keywords}): ?(.*)`),\n};\n\n/** Parse a commit message into its composite parts. */\nexport const parseCommitMessage: (fullText: string) => Commit = parseInternal;\n\n/** Parse a commit message from a git log entry into its composite parts. */\nexport const parseCommitFromGitLog: (fullText: Buffer) => CommitFromGitLog = parseInternal;\n\n/** Parse a full commit message into its composite parts. */\nfunction parseInternal(fullText: string): Commit;\nfunction parseInternal(fullText: Buffer): CommitFromGitLog;\nfunction parseInternal(fullText: string | Buffer): CommitFromGitLog | Commit {\n  // Ensure the fullText symbol is a `string`, even if a Buffer was provided.\n  fullText = fullText.toString();\n  /** The commit message text with the fixup and squash markers stripped out. */\n  const strippedCommitMsg = fullText\n    .replace(FIXUP_PREFIX_RE, '')\n    .replace(SQUASH_PREFIX_RE, '')\n    .replace(REVERT_PREFIX_RE, '');\n  /** The initially parsed commit. */\n  const commit = parse(strippedCommitMsg, parseOptions);\n  /** A list of breaking change notes from the commit. */\n  const breakingChanges: ParsedCommit.Note[] = [];\n  /** A list of deprecation notes from the commit. */\n  const deprecations: ParsedCommit.Note[] = [];\n\n  // Extract the commit message notes by marked types into their respective lists.\n  commit.notes.forEach((note: ParsedCommit.Note) => {\n    if (note.title === NoteSections.BREAKING_CHANGE) {\n      breakingChanges.push(note);\n    } else if (note.title === NoteSections.DEPRECATED) {\n      deprecations.push(note);\n    }\n  });\n\n  return {\n    fullText,\n    breakingChanges,\n    deprecations,\n    body: commit.body || '',\n    footer: commit.footer || '',\n    header: commit.header || '',\n    references: commit.references,\n    scope: commit.scope || '',\n    subject: commit.subject || '',\n    type: commit.type || '',\n    isFixup: FIXUP_PREFIX_RE.test(fullText),\n    isSquash: SQUASH_PREFIX_RE.test(fullText),\n    isRevert: REVERT_PREFIX_RE.test(fullText),\n    author: commit.author || undefined,\n    hash: commit.hash || undefined,\n    shortHash: commit.shortHash || undefined,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {getConfig} from '../utils/config.js';\nimport {Log} from '../utils/logging.js';\n\nimport {assertValidCommitMessageConfig, COMMIT_TYPES, ScopeRequirement} from './config.js';\nimport {Commit, parseCommitMessage} from './parse.js';\n\n/** Options for commit message validation. */\nexport interface ValidateCommitMessageOptions {\n  disallowSquash?: boolean;\n  nonFixupCommitHeaders?: string[];\n}\n\n/** The result of a commit message validation check. */\nexport interface ValidateCommitMessageResult {\n  valid: boolean;\n  errors: string[];\n  commit: Commit;\n}\n\n/** Regex matching a URL for an entire commit body line. */\nconst COMMIT_BODY_URL_LINE_RE = /^https?:\\/\\/.*$/;\n\n/**\n * Regular expression matching potential misuse of the `BREAKING CHANGE:` marker in a\n * commit message. Commit messages containing one of the following snippets will fail:\n *\n *   - `BREAKING CHANGE ` | Here we assume the colon is missing by accident.\n *   - `BREAKING-CHANGE: ` | The wrong keyword is used here.\n *   - `BREAKING CHANGES: ` | The wrong keyword is used here.\n *   - `BREAKING-CHANGES: ` | The wrong keyword is used here.\n */\nconst INCORRECT_BREAKING_CHANGE_BODY_RE =\n  /^(BREAKING CHANGE[^:]|BREAKING-CHANGE|BREAKING[ -]CHANGES)/m;\n\n/**\n * Regular expression matching potential misuse of the `DEPRECATED:` marker in a commit\n * message. Commit messages containing one of the following snippets will fail:\n *\n *   - `DEPRECATED ` | Here we assume the colon is missing by accident.\n *   - `DEPRECATIONS: ` | The wrong keyword is used here.\n *   - `DEPRECATION: ` | The wrong keyword is used here.\n *   - `DEPRECATE: ` | The wrong keyword is used here.\n *   - `DEPRECATES: ` | The wrong keyword is used here.\n */\nconst INCORRECT_DEPRECATION_BODY_RE = /^(DEPRECATED[^:]|DEPRECATIONS?|DEPRECATE:|DEPRECATES)/m;\n\n/** Validate a commit message against using the local repo's config. */\nexport async function validateCommitMessage(\n  commitMsg: string | Commit,\n  options: ValidateCommitMessageOptions = {},\n): Promise {\n  const _config = await getConfig();\n  assertValidCommitMessageConfig(_config);\n  const config = _config.commitMessage;\n  const commit = typeof commitMsg === 'string' ? parseCommitMessage(commitMsg) : commitMsg;\n  const errors: string[] = [];\n\n  /** Perform the validation checks against the parsed commit. */\n  function validateCommitAndCollectErrors() {\n    ////////////////////////////////////\n    // Checking revert, squash, fixup //\n    ////////////////////////////////////\n\n    // All revert commits are considered valid.\n    if (commit.isRevert) {\n      return true;\n    }\n\n    // All squashes are considered valid, as the commit will be squashed into another in\n    // the git history anyway, unless the options provided to not allow squash commits.\n    if (commit.isSquash) {\n      if (options.disallowSquash) {\n        errors.push('The commit must be manually squashed into the target commit');\n        return false;\n      }\n      return true;\n    }\n\n    // Fixups commits are considered valid, unless nonFixupCommitHeaders are provided to check\n    // against. If `nonFixupCommitHeaders` is not empty, we check whether there is a corresponding\n    // non-fixup commit (i.e. a commit whose header is identical to this commit's header after\n    // stripping the `fixup! ` prefix), otherwise we assume this verification will happen in another\n    // check.\n    if (commit.isFixup) {\n      if (config.disallowFixup) {\n        errors.push(\n          'The commit must be manually fixed-up into the target commit as fixup commits are disallowed',\n        );\n\n        return false;\n      }\n\n      if (options.nonFixupCommitHeaders && !options.nonFixupCommitHeaders.includes(commit.header)) {\n        errors.push(\n          'Unable to find match for fixup commit among prior commits: ' +\n            (options.nonFixupCommitHeaders.map((x) => `\\n      ${x}`).join('') || '-'),\n        );\n        return false;\n      }\n\n      return true;\n    }\n\n    ////////////////////////////\n    // Checking commit header //\n    ////////////////////////////\n    if (commit.header.length > config.maxLineLength) {\n      errors.push(`The commit message header is longer than ${config.maxLineLength} characters`);\n      return false;\n    }\n\n    if (!commit.type) {\n      errors.push(`The commit message header does not match the expected format.`);\n      return false;\n    }\n\n    if (COMMIT_TYPES[commit.type] === undefined) {\n      errors.push(\n        `'${commit.type}' is not an allowed type.\\n => TYPES: ${Object.keys(COMMIT_TYPES).join(\n          ', ',\n        )}`,\n      );\n      return false;\n    }\n\n    /** The scope requirement level for the provided type of the commit message. */\n    const scopeRequirementForType = COMMIT_TYPES[commit.type].scope;\n\n    if (scopeRequirementForType === ScopeRequirement.Forbidden && commit.scope) {\n      errors.push(\n        `Scopes are forbidden for commits with type '${commit.type}', but a scope of '${commit.scope}' was provided.`,\n      );\n      return false;\n    }\n\n    if (scopeRequirementForType === ScopeRequirement.Required && !commit.scope) {\n      errors.push(\n        `Scopes are required for commits with type '${commit.type}', but no scope was provided.`,\n      );\n      return false;\n    }\n\n    if (commit.scope && !config.scopes.includes(commit.scope)) {\n      errors.push(\n        `'${commit.scope}' is not an allowed scope.\\n => SCOPES: ${config.scopes.join(', ')}`,\n      );\n      return false;\n    }\n\n    // Commits with the type of `release` do not require a commit body.\n    if (commit.type === 'release') {\n      return true;\n    }\n\n    //////////////////////////\n    // Checking commit body //\n    //////////////////////////\n\n    // Due to an issue in which conventional-commits-parser considers all parts of a commit after\n    // a `#` reference to be the footer, we check the length of all of the commit content after the\n    // header. In the future, we expect to be able to check only the body once the parser properly\n    // handles this case.\n    const allNonHeaderContent = `${commit.body.trim()}\\n${commit.footer.trim()}`;\n\n    if (\n      !config.minBodyLengthTypeExcludes?.includes(commit.type) &&\n      allNonHeaderContent.length < config.minBodyLength\n    ) {\n      errors.push(\n        `The commit message body does not meet the minimum length of ${config.minBodyLength} characters`,\n      );\n      return false;\n    }\n\n    const bodyByLine = commit.body.split('\\n');\n    const lineExceedsMaxLength = bodyByLine.some((line: string) => {\n      // Check if any line exceeds the max line length limit. The limit is ignored for\n      // lines that just contain an URL (as these usually cannot be wrapped or shortened).\n      return line.length > config.maxLineLength && !COMMIT_BODY_URL_LINE_RE.test(line);\n    });\n\n    if (lineExceedsMaxLength) {\n      errors.push(\n        `The commit message body contains lines greater than ${config.maxLineLength} characters.`,\n      );\n      return false;\n    }\n\n    // Breaking change\n    // Check if the commit message contains a valid break change description.\n    // https://github.com/angular/angular/blob/88fbc066775ab1a2f6a8c75f933375b46d8fa9a4/CONTRIBUTING.md#commit-message-footer\n    if (INCORRECT_BREAKING_CHANGE_BODY_RE.test(commit.fullText)) {\n      errors.push(`The commit message body contains an invalid breaking change note.`);\n      return false;\n    }\n\n    if (INCORRECT_DEPRECATION_BODY_RE.test(commit.fullText)) {\n      errors.push(`The commit message body contains an invalid deprecation note.`);\n      return false;\n    }\n\n    return true;\n  }\n\n  return {valid: validateCommitAndCollectErrors(), errors, commit};\n}\n\n/** Print the error messages from the commit message validation to the console. */\nexport function printValidationErrors(errors: string[], print = Log.error) {\n  print.group(`Error${errors.length === 1 ? '' : 's'}:`);\n  errors.forEach((line) => print(line));\n  print.groupEnd();\n  print();\n  print('The expected format for a commit is: ');\n  print('(): ');\n  print();\n  print('');\n  print();\n  print(`BREAKING CHANGE: `);\n  print();\n  print(``);\n  print();\n  print();\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {getUserConfig} from '../../utils/config.js';\n\nimport {validateFile} from './validate-file.js';\n\nexport interface ValidateFileOptions {\n  file?: string;\n  fileEnvVariable?: string;\n  error: boolean | null;\n}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return argv\n    .option('file', {\n      type: 'string',\n      conflicts: ['file-env-variable'],\n      description: 'The path of the commit message file.',\n    })\n    .option('file-env-variable' as 'fileEnvVariable', {\n      type: 'string',\n      conflicts: ['file'],\n      description: 'The key of the environment variable for the path of the commit message file.',\n      coerce: (arg: string | undefined) => {\n        if (arg === undefined) {\n          return arg;\n        }\n        const file = process.env[arg];\n        if (!file) {\n          throw new Error(`Provided environment variable \"${arg}\" was not found.`);\n        }\n        return file;\n      },\n    })\n    .option('error', {\n      type: 'boolean',\n      description:\n        'Whether invalid commit messages should be treated as failures rather than a warning',\n      default: null,\n      defaultDescription: '`True` on CI or can be enabled through ng-dev user-config.',\n    });\n}\n\n/** Handles the command. */\nasync function handler({error, file, fileEnvVariable}: Arguments) {\n  const isErrorMode = error === null ? await getIsErrorModeDefault() : error;\n  const filePath = file || fileEnvVariable || '.git/COMMIT_EDITMSG';\n\n  await validateFile(filePath, isErrorMode);\n}\n\nasync function getIsErrorModeDefault(): Promise {\n  return !!process.env['CI'] || !!(await getUserConfig()).commitMessage?.errorOnInvalidMessage;\n}\n\n/** yargs command module describing the command. */\nexport const ValidateFileModule: CommandModule<{}, ValidateFileOptions> = {\n  handler,\n  builder,\n  command: 'pre-commit-validate',\n  describe: 'Validate the most recent commit message',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport gitCommits from 'git-raw-commits';\n\nimport {CommitFromGitLog, gitLogFormatForParsing, parseCommitFromGitLog} from './parse.js';\n\n/**\n * Find all commits within the given range and return an object describing those.\n */\nexport function getCommitsInRange(from: string, to: string = 'HEAD'): Promise {\n  return new Promise((resolve, reject) => {\n    /** List of parsed commit objects. */\n    const commits: CommitFromGitLog[] = [];\n    /** Stream of raw git commit strings in the range provided. */\n    const commitStream = gitCommits({from, to, format: gitLogFormatForParsing});\n\n    // Accumulate the parsed commits for each commit from the Readable stream into an array, then\n    // resolve the promise with the array when the Readable stream ends.\n    commitStream.on('data', (commit: Buffer) => commits.push(parseCommitFromGitLog(commit)));\n    commitStream.on('error', (err: Error) => reject(err));\n    commitStream.on('end', () => resolve(commits));\n  });\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {green, Log} from '../../utils/logging.js';\nimport {Commit} from '../parse.js';\nimport {getCommitsInRange} from '../utils.js';\nimport {\n  printValidationErrors,\n  validateCommitMessage,\n  ValidateCommitMessageOptions,\n} from '../validate.js';\n\n// Whether the provided commit is a fixup commit.\nconst isNonFixup = (commit: Commit) => !commit.isFixup;\n\n// Extracts commit header (first line of commit message).\nconst extractCommitHeader = (commit: Commit) => commit.header;\n\n/** Validate all commits in a provided git commit range. */\nexport async function validateCommitRange(from: string, to: string): Promise {\n  /** A list of tuples of the commit header string and a list of error messages for the commit. */\n  const errors: [commitHeader: string, errors: string[]][] = [];\n\n  /** A list of parsed commit messages from the range. */\n  const commits = await getCommitsInRange(from, to);\n  Log.info(`Examining ${commits.length} commit(s) in the provided range: ${from}..${to}`);\n\n  /**\n   * Whether all commits in the range are valid, commits are allowed to be fixup commits for other\n   * commits in the provided commit range.\n   */\n  let allCommitsInRangeValid = true;\n\n  for (let i = 0; i < commits.length; i++) {\n    const commit = commits[i];\n    const options: ValidateCommitMessageOptions = {\n      disallowSquash: true,\n      nonFixupCommitHeaders: isNonFixup(commit)\n        ? undefined\n        : commits\n            .slice(i + 1)\n            .filter(isNonFixup)\n            .map(extractCommitHeader),\n    };\n\n    const {valid, errors: localErrors} = await validateCommitMessage(commit, options);\n    if (localErrors.length) {\n      errors.push([commit.header, localErrors]);\n    }\n\n    allCommitsInRangeValid = allCommitsInRangeValid && valid;\n  }\n\n  if (allCommitsInRangeValid) {\n    Log.info(green('✔  All commit messages in range valid.'));\n  } else {\n    Log.error('✘  Invalid commit message');\n    errors.forEach(([header, validationErrors]) => {\n      Log.error.group(header);\n      printValidationErrors(validationErrors);\n      Log.error.groupEnd();\n    });\n    // Exit with a non-zero exit code if invalid commit messages have\n    // been discovered.\n    process.exit(1);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {Log} from '../../utils/logging.js';\n\nimport {validateCommitRange} from './validate-range.js';\n\nexport interface ValidateRangeOptions {\n  startingRef: string;\n  endingRef: string;\n}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return argv\n    .positional('startingRef', {\n      description: 'The first ref in the range to select',\n      type: 'string',\n      demandOption: true,\n    })\n    .positional('endingRef', {\n      description: 'The last ref in the range to select',\n      type: 'string',\n      default: 'HEAD',\n    });\n}\n\n/** Handles the command. */\nasync function handler({startingRef, endingRef}: Arguments) {\n  // If on CI, and no pull request number is provided, assume the branch\n  // being run on is an upstream branch.\n  if (process.env['CI'] && process.env['CI_PULL_REQUEST'] === 'false') {\n    Log.info(`Since valid commit messages are enforced by PR linting on CI, we do not`);\n    Log.info(`need to validate commit messages on CI runs on upstream branches.`);\n    Log.info();\n    Log.info(`Skipping check of provided commit range`);\n    return;\n  }\n  await validateCommitRange(startingRef, endingRef);\n}\n\n/** yargs command module describing the command. */\nexport const ValidateRangeModule: CommandModule<{}, ValidateRangeOptions> = {\n  handler,\n  builder,\n  command: 'validate-range  [ending-ref]',\n  describe: 'Validate a range of commit messages',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\n\nimport {RestoreCommitMessageModule} from './restore-commit-message/cli.js';\nimport {ValidateFileModule} from './validate-file/cli.js';\nimport {ValidateRangeModule} from './validate-range/cli.js';\n\n/** Build the parser for the commit-message commands. */\nexport function buildCommitMessageParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .command(RestoreCommitMessageModule)\n    .command(ValidateFileModule)\n    .command(ValidateRangeModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Bar} from 'cli-progress';\nimport multimatch from 'multimatch';\nimport {cpus} from 'os';\n\nimport {ChildProcess, SpawnResult} from '../utils/child-process.js';\nimport {Log} from '../utils/logging.js';\n\nimport {Formatter, FormatterAction, getActiveFormatters} from './formatters/index.js';\n\n// Some environments, like CircleCI which use Docker report a number of CPUs by the host and not the count of available.\n// This causes the task to be killed when formatting a large number of files due lack of resources.\n// https://github.com/nodejs/node/issues/28762\nconst AVAILABLE_THREADS = Math.max(Math.min(cpus().length, 8) - 1, 1);\n\n/** Interface describing a failure occurred during formatting of a file. */\nexport interface FormatFailure {\n  /** Path to the file that failed. */\n  filePath: string;\n  /** Error message reported by the formatter. */\n  message: string;\n}\n\n/**\n * Run the provided commands in parallel for each provided file.\n *\n * Running the formatter is split across (number of available cpu threads - 1) processess.\n * The task is done in multiple processess to speed up the overall time of the task, as running\n * across entire repositories takes a large amount of time.\n * As a data point for illustration, using 8 process rather than 1 cut the execution\n * time from 276 seconds to 39 seconds for the same 2700 files.\n *\n * A promise is returned, completed when the command has completed running for each file.\n * The promise resolves with a list of failures, or `false` if no formatters have matched.\n */\nexport function runFormatterInParallel(allFiles: string[], action: FormatterAction) {\n  return new Promise(async (resolve) => {\n    const formatters = await getActiveFormatters();\n    const failures: FormatFailure[] = [];\n    const pendingCommands: {formatter: Formatter; file: string}[] = [];\n\n    for (const formatter of formatters) {\n      pendingCommands.push(\n        ...multimatch\n          .call(undefined, allFiles, formatter.getFileMatcher(), {dot: true})\n          .map((file) => ({formatter, file})),\n      );\n    }\n\n    // If no commands are generated, resolve the promise as `false` as no files\n    // were run against the any formatters.\n    if (pendingCommands.length === 0) {\n      return resolve(false);\n    }\n\n    switch (action) {\n      case 'format':\n        Log.info(`Formatting ${pendingCommands.length} file(s)`);\n        break;\n      case 'check':\n        Log.info(`Checking format of ${pendingCommands.length} file(s)`);\n        break;\n      default:\n        throw Error(`Invalid format action \"${action}\": allowed actions are \"format\" and \"check\"`);\n    }\n\n    // The progress bar instance to use for progress tracking.\n    const progressBar = new Bar({\n      format: `[{bar}] ETA: {eta}s | {value}/{total} files`,\n      clearOnComplete: true,\n    });\n    // A local copy of the files to run the command on.\n    // An array to represent the current usage state of each of the threads for parallelization.\n    const threads = new Array(AVAILABLE_THREADS).fill(false);\n\n    // Recursively run the command on the next available file from the list using the provided\n    // thread.\n    function runCommandInThread(thread: number) {\n      const nextCommand = pendingCommands.pop();\n      // If no file was pulled from the array, return as there are no more files to run against.\n      if (nextCommand === undefined) {\n        threads[thread] = false;\n        return;\n      }\n\n      // Get the file and formatter for the next command.\n      const {file, formatter} = nextCommand;\n\n      const [spawnCmd, ...spawnArgs] = [...formatter.commandFor(action).split(' '), file];\n\n      ChildProcess.spawn(spawnCmd, spawnArgs, {\n        suppressErrorOnFailingExitCode: true,\n        mode: 'silent',\n      }).then(({stdout, stderr, status}: SpawnResult) => {\n        // Run the provided callback function.\n        const failed = formatter.callbackFor(action)(file, status, stdout, stderr);\n        if (failed) {\n          failures.push({filePath: file, message: stderr});\n        }\n        // Note in the progress bar another file being completed.\n        progressBar.increment(1);\n        // If more files exist in the list, run again to work on the next file,\n        // using the same slot.\n        if (pendingCommands.length) {\n          return runCommandInThread(thread);\n        }\n        // If not more files are available, mark the thread as unused.\n        threads[thread] = false;\n        // If all of the threads are false, as they are unused, mark the progress bar\n        // completed and resolve the promise.\n        if (threads.every((active) => !active)) {\n          progressBar.stop();\n          resolve(failures);\n        }\n      });\n      // Mark the thread as in use as the command execution has been started.\n      threads[thread] = true;\n    }\n\n    // Start the progress bar\n    progressBar.start(pendingCommands.length, 0);\n    // Start running the command on files from the least in each available thread.\n    threads.forEach((_, idx) => runCommandInThread(idx));\n  });\n}\n", "import expand from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  nobrace?: boolean\n  nocomment?: boolean\n  nonegate?: boolean\n  debug?: boolean\n  noglobstar?: boolean\n  noext?: boolean\n  nonull?: boolean\n  windowsPathsNoEscape?: boolean\n  allowWindowsEscape?: boolean\n  partial?: boolean\n  dot?: boolean\n  nocase?: boolean\n  nocaseMagicOnly?: boolean\n  magicalBraces?: boolean\n  matchBase?: boolean\n  flipNegate?: boolean\n  preserveMultipleSlashes?: boolean\n  optimizationLevel?: number\n  platform?: Platform\n  windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n      process.platform\n    : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {}\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n      orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined\n        ? options.windowsNoMagicRoot\n        : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn all ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n      const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // dont' need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n          ? starDotExtTestDot\n          : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n          ? qmarksTestDot\n          : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n      ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n            ? GLOBSTAR\n            : p._src\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        return pp.filter(p => p !== GLOBSTAR).join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n  pattern: any\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n  '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n  '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n  '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n  '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n  '[:cntrl:]': ['\\\\p{Cc}', true],\n  '[:digit:]': ['\\\\p{Nd}', true],\n  '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n  '[:lower:]': ['\\\\p{Ll}', true],\n  '[:print:]': ['\\\\p{C}', true],\n  '[:punct:]': ['\\\\p{P}', true],\n  '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n  '[:upper:]': ['\\\\p{Lu}', true],\n  '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n  '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length\n      ? '(' + sranges + '|' + snegs + ')'\n      : ranges.length\n      ? sranges\n      : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  return windowsPathsNoEscape\n    ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n    : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n", "// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {}\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null\n        ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n        : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty = this.isStart() && this.isEnd()\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string'\n              ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n              : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot\n        ? ''\n        : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!'\n          ? // !() must match something,but !(x) can match ''\n            '))' +\n            (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n            star +\n            ')'\n          : this.type === '@'\n          ? ')'\n          : this.type === '?'\n          ? ')?'\n          : this.type === '+' && bodyDotAllowed\n          ? ')'\n          : this.type === '*' && bodyDotAllowed\n          ? `)?`\n          : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '*') {\n        if (noEmpty && glob === '*') re += starNoEmpty\n        else re += star\n        hasMagic = true\n        continue\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  return windowsPathsNoEscape\n    ? s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "const arrayUnion = (...arguments_) => [...new Set(arguments_.flat())];\n\nexport default arrayUnion;\n", "export default function arrayDiffer(array, ...values) {\n\tconst rest = new Set([...values].flat());\n\treturn array.filter(element => !rest.has(element));\n}\n", "import {minimatch} from 'minimatch';\nimport arrayUnion from 'array-union';\nimport arrayDiffer from 'array-differ';\n\nexport default function multimatch(list, patterns, options = {}) {\n\tlist = [list].flat();\n\tpatterns = [patterns].flat();\n\n\tif (list.length === 0 || patterns.length === 0) {\n\t\treturn [];\n\t}\n\n\tlet result = [];\n\tfor (const item of list) {\n\t\tfor (let pattern of patterns) {\n\t\t\tlet process = arrayUnion;\n\n\t\t\tif (pattern[0] === '!') {\n\t\t\t\tpattern = pattern.slice(1);\n\t\t\t\tprocess = arrayDiffer;\n\t\t\t}\n\n\t\t\tresult = process(result, minimatch.match([item], pattern, options));\n\t\t}\n\t}\n\n\treturn result;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {join} from 'path';\n\nimport {Log} from '../../utils/logging.js';\n\nimport {Formatter} from './base-formatter.js';\n\n/**\n * Formatter for running buildifier against bazel related files.\n */\nexport class Buildifier extends Formatter {\n  override name = 'buildifier';\n\n  override binaryFilePath = join(this.git.baseDir, 'node_modules/.bin/buildifier');\n\n  override defaultFileMatcher = ['**/*.bzl', '**/BUILD.bazel', '**/WORKSPACE', '**/BUILD'];\n\n  override actions = {\n    check: {\n      commandFlags: `${BAZEL_WARNING_FLAG} --lint=warn --mode=check --format=json`,\n      callback: (_: string, code: number | NodeJS.Signals, stdout: string) => {\n        // For cases where `stdout` is empty, we instead use an empty object to still allow parsing.\n        stdout = stdout || '{}';\n        return code !== 0 || !(JSON.parse(stdout) as {success: boolean}).success;\n      },\n    },\n    format: {\n      commandFlags: `${BAZEL_WARNING_FLAG} --lint=fix --mode=fix`,\n      callback: (file: string, code: number | NodeJS.Signals, _: string, stderr: string) => {\n        if (code !== 0) {\n          Log.error(`Error running buildifier on: ${file}`);\n          Log.error(stderr);\n          Log.error();\n          return true;\n        }\n        return false;\n      },\n    },\n  };\n}\n\n// The warning flag for buildifier copied from angular/angular's usage.\nconst BAZEL_WARNING_FLAG =\n  `--warnings=attr-cfg,attr-license,attr-non-empty,attr-output-default,` +\n  `attr-single-file,ctx-args,depset-iteration,depset-union,dict-concatenation,` +\n  `duplicated-name,filetype,git-repository,http-archive,integer-division,load,` +\n  `native-build,native-package,output-group,package-name,package-on-top,positional-args,` +\n  `redefined-variable,repository-name,string-iteration,unused-variable`;\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {FormatConfig} from '../config.js';\n\n// A callback to determine if the formatter run found a failure in formatting.\nexport type CallbackFunc = (\n  file: string,\n  code: number | NodeJS.Signals,\n  stdout: string,\n  stderr: string,\n) => boolean;\n\n// The actions a formatter can take.\nexport type FormatterAction = 'check' | 'format';\n\n// The metadata needed for running one of the `FormatterAction`s on a file.\ninterface FormatterActionMetadata {\n  commandFlags: string;\n  callback: CallbackFunc;\n}\n\n/**\n * The base class for formatters to run against provided files.\n */\nexport abstract class Formatter {\n  /**\n   * The name of the formatter, this is used for identification in logging and for enabling and\n   * configuring the formatter in the config.\n   */\n  abstract name: string;\n\n  /** The full path file location of the formatter binary. */\n  abstract binaryFilePath: string;\n\n  /** Metadata for each `FormatterAction` available to the formatter. */\n  abstract actions: {\n    // An action performing a check of format without making any changes.\n    check: FormatterActionMetadata;\n    // An action to format files in place.\n    format: FormatterActionMetadata;\n  };\n\n  /** The default matchers for the formatter for filtering files to be formatted. */\n  abstract defaultFileMatcher: string[];\n\n  constructor(\n    protected git: GitClient,\n    protected config: FormatConfig,\n  ) {}\n\n  /**\n   * Retrieve the command to execute the provided action, including both the binary\n   * and command line flags.\n   */\n  commandFor(action: FormatterAction) {\n    switch (action) {\n      case 'check':\n        return `${this.binaryFilePath} ${this.actions.check.commandFlags}`;\n      case 'format':\n        return `${this.binaryFilePath} ${this.actions.format.commandFlags}`;\n      default:\n        throw Error('Unknown action type');\n    }\n  }\n\n  /**\n   * Retrieve the callback for the provided action to determine if an action\n   * failed in formatting.\n   */\n  callbackFor(action: FormatterAction) {\n    switch (action) {\n      case 'check':\n        return this.actions.check.callback;\n      case 'format':\n        return this.actions.format.callback;\n      default:\n        throw Error('Unknown action type');\n    }\n  }\n\n  /** Whether the formatter is enabled in the provided config. */\n  isEnabled() {\n    return !!this.config[this.name];\n  }\n\n  /** Retrieve the active file matcher for the formatter. */\n  getFileMatcher() {\n    return this.getFileMatcherFromConfig() || this.defaultFileMatcher;\n  }\n\n  /**\n   * Retrieves the file matcher from the config provided to the constructor if provided.\n   */\n  private getFileMatcherFromConfig(): string[] | undefined {\n    const formatterConfig = this.config[this.name];\n    if (typeof formatterConfig === 'boolean') {\n      return undefined;\n    }\n    return formatterConfig.matchers;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {join} from 'path';\n\nimport {ChildProcess} from '../../utils/child-process.js';\nimport {Log} from '../../utils/logging.js';\n\nimport {Formatter} from './base-formatter.js';\n\n/**\n * Formatter for running prettier against Typescript and Javascript files.\n */\nexport class Prettier extends Formatter {\n  override name = 'prettier';\n\n  override binaryFilePath = join(this.git.baseDir, 'node_modules/.bin/prettier');\n\n  override defaultFileMatcher = [\n    '**/*.{js,cjs,mjs}',\n    '**/*.{ts,cts,mts}',\n    '**/*.json',\n    '**/*.{yml,yaml}',\n  ];\n\n  /**\n   * The configuration path of the prettier config, obtained during construction to prevent needing\n   * to discover it repeatedly for each execution.\n   */\n  private configPath = this.config['prettier']\n    ? ChildProcess.spawnSync(this.binaryFilePath, [\n        '--find-config-path',\n        join(process.cwd(), 'dummy.js'),\n      ]).stdout.trim()\n    : '';\n\n  override actions = {\n    check: {\n      commandFlags: `--config ${this.configPath} --check`,\n      callback: (_: string, code: number | NodeJS.Signals, stdout: string) => {\n        return code !== 0;\n      },\n    },\n    format: {\n      commandFlags: `--config ${this.configPath} --write`,\n      callback: (file: string, code: number | NodeJS.Signals, _: string, stderr: string) => {\n        if (code !== 0) {\n          Log.error(`Error running prettier on: ${file}`);\n          Log.error(stderr);\n          Log.error();\n          return true;\n        }\n        return false;\n      },\n    },\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {getConfig} from '../../utils/config.js';\nimport {assertValidFormatConfig} from '../config.js';\n\nimport {Buildifier} from './buildifier.js';\nimport {Prettier} from './prettier.js';\n\n/**\n * Get all defined formatters which are active based on the current loaded config.\n */\nexport async function getActiveFormatters() {\n  const config = await getConfig();\n  assertValidFormatConfig(config);\n  const gitClient = await GitClient.get();\n\n  return [new Prettier(gitClient, config.format), new Buildifier(gitClient, config.format)].filter(\n    (formatter) => formatter.isEnabled(),\n  );\n}\n\n// Rexport symbols used for types elsewhere.\nexport {Formatter, type FormatterAction} from './base-formatter.js';\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {green, Log} from '../utils/logging.js';\nimport {Prompt} from '../utils/prompt.js';\n\nimport {runFormatterInParallel} from './run-commands-parallel.js';\n\n/**\n * Format provided files in place.\n *\n * @returns a status code indicating whether the formatting run was successful.\n */\nexport async function formatFiles(files: string[]): Promise<1 | 0> {\n  // Whether any files failed to format.\n  let failures = await runFormatterInParallel(files, 'format');\n\n  if (failures === false) {\n    Log.info('No files matched for formatting.');\n    return 0;\n  }\n\n  // The process should exit as a failure if any of the files failed to format.\n  if (failures.length !== 0) {\n    Log.error(`The following files could not be formatted:`);\n    failures.forEach(({filePath, message}) => {\n      Log.info(`  • ${filePath}: ${message}`);\n    });\n    Log.error(`Formatting failed, see errors above for more information.`);\n    return 1;\n  }\n  Log.info(green(`✔  Formatting complete.`));\n  return 0;\n}\n\n/**\n * Check provided files for formatting correctness.\n *\n * @returns a status code indicating whether the format check run was successful.\n */\nexport async function checkFiles(files: string[]) {\n  // Files which are currently not formatted correctly.\n  const failures = await runFormatterInParallel(files, 'check');\n\n  if (failures === false) {\n    Log.info('No files matched for formatting check.');\n    return 0;\n  }\n\n  if (failures.length) {\n    // Provide output expressing which files are failing formatting.\n    Log.warn.group('\\nThe following files are out of format:');\n    for (const {filePath} of failures) {\n      Log.warn(`  • ${filePath}`);\n    }\n    Log.warn.groupEnd();\n    Log.warn();\n\n    // If the command is run in a non-CI environment, prompt to format the files immediately.\n    let runFormatter = false;\n    if (!process.env['CI']) {\n      runFormatter = await Prompt.confirm({message: 'Format the files now?', default: true});\n    }\n\n    if (runFormatter) {\n      // Format the failing files as requested.\n      return (await formatFiles(failures.map((f) => f.filePath))) || 0;\n    } else {\n      // Inform user how to format files in the future.\n      Log.info();\n      Log.info(`To format the failing file run the following command:`);\n      Log.info(`  yarn ng-dev format files ${failures.map((f) => f.filePath).join(' ')}`);\n      return 1;\n    }\n  } else {\n    Log.info(green('✔  All files correctly formatted.'));\n    return 0;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {GitClient} from '../utils/git/git-client.js';\nimport {checkFiles, formatFiles} from './format.js';\n\n/** Command line options. */\nexport interface Options {\n  check: boolean;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv.option('check', {\n    type: 'boolean',\n    default: process.env['CI'] ? true : false,\n    description: 'Run the formatter to check formatting rather than updating code format',\n  });\n}\n\n/** Yargs command handler for the command. */\nasync function handler({check}: Arguments) {\n  const git = await GitClient.get();\n  const executionCmd = check ? checkFiles : formatFiles;\n  const allFiles = git.allFiles();\n  process.exitCode = await executionCmd(allFiles);\n}\n\n/** CLI command module. */\nexport const AllFilesModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'all',\n  describe: 'Run the formatter on all files in the repository',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {GitClient} from '../utils/git/git-client.js';\nimport {checkFiles, formatFiles} from './format.js';\n\n/** Command line options. */\nexport interface Options {\n  shaOrRef?: string;\n  check: boolean;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv\n    .option('check', {\n      type: 'boolean',\n      default: process.env['CI'] ? true : false,\n      description: 'Run the formatter to check formatting rather than updating code format',\n    })\n    .positional('shaOrRef', {type: 'string'});\n}\n\n/** Yargs command handler for the command. */\nasync function handler({shaOrRef, check}: Arguments) {\n  const git = await GitClient.get();\n  const sha = shaOrRef || git.mainBranchName;\n  const executionCmd = check ? checkFiles : formatFiles;\n  const allChangedFilesSince = git.allChangesFilesSince(sha);\n  process.exitCode = await executionCmd(allChangedFilesSince);\n}\n\n/** CLI command module. */\nexport const ChangedModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'changed [shaOrRef]',\n  describe: 'Run the formatter on files changed since the provided sha/ref',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {checkFiles, formatFiles} from './format.js';\nimport glob from 'fast-glob';\n\n/** Command line options. */\nexport interface Options {\n  files: string[];\n  check: boolean;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv\n    .option('check', {\n      type: 'boolean',\n      default: process.env['CI'] ? true : false,\n      description: 'Run the formatter to check formatting rather than updating code format',\n    })\n    .positional('files', {array: true, type: 'string', demandOption: true});\n}\n\n/** Yargs command handler for the command. */\nasync function handler({files, check}: Arguments) {\n  const expandedFiles = glob.sync(\n    files.map((file) => file.replace(/\\/...$/, '/**/*')),\n    {onlyFiles: true},\n  );\n  const executionCmd = check ? checkFiles : formatFiles;\n  process.exitCode = await executionCmd(expandedFiles);\n}\n\n/** CLI command module. */\nexport const FilesModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'files ',\n  describe: 'Run the formatter on provided files',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {GitClient} from '../utils/git/git-client.js';\nimport {checkFiles, formatFiles} from './format.js';\n\n/** Command line options. */\nexport interface Options {\n  check: boolean;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv.option('check', {\n    type: 'boolean',\n    default: process.env['CI'] ? true : false,\n    description: 'Run the formatter to check formatting rather than updating code format',\n  });\n}\n\n/** Yargs command handler for the command. */\nasync function handler({check}: Arguments) {\n  const git = await GitClient.get();\n  const executionCmd = check ? checkFiles : formatFiles;\n  const allStagedFiles = git.allStagedFiles();\n  process.exitCode = await executionCmd(allStagedFiles);\n  if (!check && process.exitCode === 0) {\n    git.runGraceful(['add', ...allStagedFiles]);\n  }\n}\n\n/** CLI command module. */\nexport const StagedModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'staged',\n  describe: 'Run the formatter on all staged files',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\nimport {registerCompletedFunction} from '../utils/yargs.js';\nimport {AllFilesModule} from './all.js';\nimport {ChangedModule} from './changed.js';\nimport {FilesModule} from './files.js';\nimport {StagedModule} from './staged.js';\n\n/** Build the parser for the format commands. */\nexport function buildFormatParser(localYargs: Argv) {\n  return localYargs\n    .command(AllFilesModule)\n    .command(StagedModule)\n    .command(ChangedModule)\n    .command(FilesModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {lstatSync} from 'fs';\nimport {resolve} from 'path';\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {BuildWorker} from '../../release/build/index.js';\nimport {ChildProcess} from '../../utils/child-process.js';\nimport {Log, green} from '../../utils/logging.js';\nimport {getConfig} from '../../utils/config.js';\nimport {assertValidReleaseConfig} from '../../release/config/index.js';\n\n/** Command line options. */\nexport interface BuildAndLinkOptions {\n  projectRoot: string;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv.positional('projectRoot', {\n    type: 'string',\n    normalize: true,\n    coerce: (path: string) => resolve(path),\n    demandOption: true,\n  });\n}\n\n/** Yargs command handler for the command. */\nasync function handler({projectRoot}: Arguments) {\n  try {\n    if (!lstatSync(projectRoot).isDirectory()) {\n      Log.error(`  ✘   The 'projectRoot' must be a directory: ${projectRoot}`);\n      process.exit(1);\n    }\n  } catch {\n    Log.error(`  ✘   Could not find the 'projectRoot' provided: ${projectRoot}`);\n    process.exit(1);\n  }\n\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n\n  const builtPackages = await BuildWorker.invokeBuild();\n\n  if (builtPackages === null) {\n    Log.error(`  ✘   Could not build release output. Please check output above.`);\n    process.exit(1);\n  }\n  Log.info(green(` ✓  Built release output.`));\n\n  for (const {outputPath, name} of builtPackages) {\n    await ChildProcess.spawn('yarn', ['link', '--cwd', outputPath]);\n    await ChildProcess.spawn('yarn', ['link', '--cwd', projectRoot, name]);\n  }\n\n  Log.info(green(` ✓  Linked release packages in provided project.`));\n}\n\n/** CLI command module. */\nexport const BuildAndLinkCommandModule: CommandModule<{}, BuildAndLinkOptions> = {\n  builder,\n  handler,\n  command: 'build-and-link ',\n  describe:\n    'Builds the release output, registers the outputs as linked, and links via yarn to the provided project',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {dirname, join} from 'path';\nimport {fileURLToPath} from 'url';\nimport {fork} from 'child_process';\nimport {BuiltPackage} from '../config/index.js';\n\nexport abstract class BuildWorker {\n  /**\n   * Builds the release output without polluting the process stdout. Build scripts commonly\n   * print messages to stderr or stdout. This is fine in most cases, but sometimes other tooling\n   * reserves stdout for data transfer (e.g. when `ng release build --json` is invoked). To not\n   * pollute the stdout in such cases, we launch a child process for building the release packages\n   * and redirect all stdout output to the stderr channel (which can be read in the terminal).\n   */\n  static async invokeBuild(): Promise {\n    return new Promise((resolve) => {\n      const buildProcess = fork(getBuildWorkerScriptPath(), {\n        // The stdio option is set to redirect any \"stdout\" output directly to the \"stderr\" file\n        // descriptor. An additional \"ipc\" file descriptor is created to support communication with\n        // the build process. https://nodejs.org/api/child_process.html#child_process_options_stdio.\n        stdio: ['inherit', 2, 2, 'ipc'],\n      });\n      let builtPackages: BuiltPackage[] | null = null;\n\n      // The child process will pass the `buildPackages()` output through the\n      // IPC channel. We keep track of it so that we can use it as resolve value.\n      buildProcess.on(\n        'message',\n        (buildResponse: BuiltPackage[]) => (builtPackages = buildResponse),\n      );\n\n      // On child process exit, resolve the promise with the received output.\n      buildProcess.on('exit', () => resolve(builtPackages));\n    });\n  }\n}\n\n/** Gets the absolute file path to the build worker script. */\nfunction getBuildWorkerScriptPath(): string {\n  // This file is getting bundled and ends up in `/bundles/`. We also\n  // bundle the build worker script as another entry-point and can reference\n  // it relatively as the path is preserved inside `bundles/`.\n  // *Note*: Relying on package resolution is problematic within ESM and with `local-dev.sh`\n  const bundlesDir = dirname(fileURLToPath(import.meta.url));\n  return join(bundlesDir, './release/build/build-worker.mjs');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {readdirSync, unlinkSync} from 'fs';\nimport {join} from 'path';\nimport {Argv, CommandModule} from 'yargs';\nimport {ChildProcess} from '../../utils/child-process.js';\n\nimport {Log} from '../../utils/logging.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\nimport {getYarnPathFromNpmGlobalBinaries} from '../../utils/resolve-yarn-bin.js';\nimport {getRepositoryGitUrl} from '../../utils/git/github-urls.js';\n\nasync function builder(argv: Argv) {\n  return addGithubTokenOption(argv);\n}\n\n/** Environment object enabling the usage of yarn-path to determine the new version. */\nconst useYarnPathEnv = {\n  ...process.env,\n  YARN_IGNORE_PATH: '0',\n};\n\n/** Environment object to prevent running husky workflow. */\nconst skipHuskyEnv = {\n  ...process.env,\n  HUSKY: '0',\n};\n\nasync function handler() {\n  /**\n   * Process command that refers to the global Yarn installation.\n   *\n   * Note that we intend to use the global Yarn command here as this allows us to let Yarn\n   * respect the `.yarnrc` file, allowing us to check if the update has completed properly.\n   * Just using `yarn` does not necessarily resolve to the global Yarn version as Yarn-initiated\n   * sub-processes will have a modified `process.env.PATH` that directly points to the Yarn\n   * version that spawned the sub-process.\n   */\n  const yarnGlobalBin = (await getYarnPathFromNpmGlobalBinaries()) ?? 'yarn';\n  /** Instance of the local git client. */\n  const git = await AuthenticatedGitClient.get();\n  /** The main branch name of the repository. */\n  const mainBranchName = git.mainBranchName;\n  /** The original branch or ref before the command was invoked. */\n  const originalBranchOrRef = git.getCurrentBranchOrRevision();\n\n  if (git.hasUncommittedChanges()) {\n    Log.error('Found changes in the local repository. Make sure there are no uncommitted files.');\n    process.exitCode = 1;\n    return;\n  }\n\n  /** A spinner instance. */\n  const spinner = new Spinner('');\n  try {\n    spinner.update(`Fetching the latest primary branch from upstream: \"${mainBranchName}\"`);\n    git.run(['fetch', '-q', git.getRepoGitUrl(), mainBranchName]);\n    git.checkout('FETCH_HEAD', false);\n\n    spinner.update('Removing previous yarn version.');\n    const yarnReleasesDir = join(git.baseDir, '.yarn/releases');\n    readdirSync(yarnReleasesDir).forEach((file) => unlinkSync(join(yarnReleasesDir, file)));\n\n    spinner.update('Updating yarn version.');\n    ChildProcess.spawnSync(yarnGlobalBin, ['policies', 'set-version', 'latest']);\n\n    spinner.update('Confirming the version of yarn was updated.');\n\n    const newYarnVersion = ChildProcess.spawnSync(yarnGlobalBin, ['-v'], {\n      env: useYarnPathEnv,\n    }).stdout.trim();\n\n    if (git.run(['status', '--porcelain']).stdout.length === 0) {\n      spinner.complete();\n      Log.error('Yarn already up to date');\n      process.exitCode = 0;\n      return;\n    }\n    /** The title for the PR. */\n    const title = `build: update to yarn v${newYarnVersion}`;\n    /** The body for the PR. */\n    const body = `Update to the latest version of yarn, ${newYarnVersion}.`;\n    /** The commit message for the change. */\n    const commitMessage = `${title}\\n\\n${body}`;\n    /** The name of the branch to use on remote. */\n    const branchName = `yarn-update-v${newYarnVersion}`;\n    /** The fork of the user */\n    const userFork = await git.getForkOfAuthenticatedUser();\n    /** The name of the owner for remote branch on Github. */\n    const {owner: localOwner} = userFork;\n\n    spinner.update('Staging yarn vendoring files and creating commit');\n    git.run(['add', '.yarn/releases/**', '.yarnrc']);\n    git.run(['commit', '-q', '--no-verify', '-m', commitMessage], {env: skipHuskyEnv});\n\n    spinner.update('Pushing commit changes to github.');\n    git.run([\n      'push',\n      '-q',\n      getRepositoryGitUrl(userFork, git.githubToken),\n      '--force-with-lease',\n      `HEAD:refs/heads/${branchName}`,\n    ]);\n\n    spinner.update('Creating a PR for the changes.');\n    const {number} = (\n      await git.github.pulls.create({\n        ...git.remoteParams,\n        title,\n        body,\n        base: mainBranchName,\n        head: `${localOwner}:${branchName}`,\n      })\n    ).data;\n\n    spinner.complete();\n    Log.info(`Created PR #${number} to update to yarn v${newYarnVersion}`);\n  } catch (e) {\n    spinner.complete();\n    Log.error('Aborted yarn update do to errors:');\n    Log.error(e);\n    process.exitCode = 1;\n    git.checkout(originalBranchOrRef, true);\n  } finally {\n    git.checkout(originalBranchOrRef, true);\n  }\n}\n\n/** CLI command module. */\nexport const UpdateYarnCommandModule: CommandModule = {\n  builder,\n  handler,\n  command: 'update-yarn',\n  describe: 'Automatically update the vendored yarn version in the repository and create a PR',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {cursorTo, clearLine} from 'readline';\nimport {green, red} from './logging.js';\n\n/** Whether execution is in a CI environment. */\nconst IS_CI = process.env['CI'];\n/** ANSI escape code to hide cursor in terminal. */\nconst hideCursor = '\\x1b[?25l';\n/** ANSI escape code to show cursor in terminal. */\nconst showCursor = '\\x1b[?25h';\n\nexport class Spinner {\n  /** Whether the spinner is marked as completed. */\n  private completed = false;\n  /** The id of the interval being used to trigger frame printing. */\n  private intervalId = setInterval(() => this.printFrame(), IS_CI ? 2500 : 125);\n  /** The characters to iterate through to create the appearance of spinning in the spinner. */\n  private spinnerCharacters = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n  /** The index of the spinner character used in the frame. */\n  private currentSpinnerCharacterIndex = 0;\n  /** The current text of the spinner. */\n  private _text: string = '';\n  private set text(text: string | undefined) {\n    this._text = text || this._text;\n    this.printFrame(this.getNextSpinnerCharacter(), text);\n  }\n  private get text(): string {\n    return this._text;\n  }\n\n  constructor();\n  constructor(text: string);\n  constructor(text?: string) {\n    this.hideCursor();\n    this.text = text;\n  }\n\n  /** Updates the spinner text with the provided text. */\n  update(text: string) {\n    this.text = text;\n  }\n\n  /** Completes the spinner marking it as successful with a `✓`. */\n  success(text: string): void {\n    this._complete(green('✓'), text);\n  }\n\n  /** Completes the spinner marking it as failing with an `✘`. */\n  failure(text: string): void {\n    this._complete(red('✘'), text);\n  }\n\n  /** Completes the spinner. */\n  complete() {\n    this._complete('', this.text);\n  }\n\n  /**\n   * Internal implementation for completing the spinner, marking it as completed, and printing the\n   * final frame.\n   */\n  private _complete(prefix: string, text: string) {\n    if (this.completed) {\n      return;\n    }\n    clearInterval(this.intervalId);\n    this.printFrame(prefix, text);\n    process.stdout.write('\\n');\n    this.showCursor();\n    this.completed = true;\n  }\n\n  /** Get the next spinner character. */\n  private getNextSpinnerCharacter() {\n    this.currentSpinnerCharacterIndex =\n      (this.currentSpinnerCharacterIndex + 1) % this.spinnerCharacters.length;\n    return this.spinnerCharacters[this.currentSpinnerCharacterIndex];\n  }\n\n  /**\n   * Print the next frame either in CI mode or local terminal mode based on whether the script is run in a\n   * CI environment.\n   */\n  private printFrame(prefix = this.getNextSpinnerCharacter(), text?: string): void {\n    if (IS_CI) {\n      this.printNextCIFrame(text);\n    } else {\n      this.printNextLocalFrame(prefix, text);\n    }\n  }\n\n  /** Print the current text for the spinner to the terminal.  */\n  private printNextLocalFrame(prefix: string, text?: string) {\n    cursorTo(process.stdout, 0);\n    process.stdout.write(` ${prefix} ${text || this.text}`);\n    // Clear to the right of the cursor location in case the new frame is shorter than the previous.\n    clearLine(process.stdout, 1);\n  }\n\n  /** Print the next expected piece for the spinner to stdout for CI usage.  */\n  private printNextCIFrame(text?: string) {\n    if (text) {\n      process.stdout.write(`\\n${text}.`);\n      return;\n    }\n    process.stdout.write('.');\n  }\n\n  /** Hide the cursor in the terminal, only executed in local environments. */\n  private hideCursor() {\n    if (!IS_CI) {\n      process.stdout.write(hideCursor);\n    }\n  }\n\n  /** Resume showing the cursor in the terminal, only executed in local environments. */\n  private showCursor() {\n    if (!IS_CI) {\n      process.stdout.write(showCursor);\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport which from 'which';\n\nimport {isNodeJSWrappedError} from './nodejs-errors.js';\nimport lockfile from '@yarnpkg/lockfile';\nimport {parse as parseYaml} from 'yaml';\nimport {ChildProcess} from './child-process.js';\nimport {Log} from './logging.js';\n\n/** Type describing a Yarn configuration and its potential properties. */\nexport interface YarnConfiguration {\n  'yarnPath': string | undefined;\n  'yarn-path': string | undefined;\n}\n\n/** Type describing a configuration with its corresponding parsing mechanism. */\nexport type ConfigWithParser = {fileName: string; parse: (c: string) => YarnConfiguration};\n\n/** Interface describing a command that will invoke Yarn. */\nexport interface YarnCommandInfo {\n  binary: string;\n  args: string[];\n  legacy?: boolean;\n}\n\n/** List of Yarn configuration files and their parsing mechanisms. */\nexport const yarnConfigFiles: ConfigWithParser[] = [\n  {fileName: '.yarnrc', parse: (c) => lockfile.parse(c).object},\n  {fileName: '.yarnrc.yml', parse: (c) => parseYaml(c)},\n];\n\n/**\n * Resolves Yarn for the given project directory.\n *\n * This function exists so that Yarn can be invoked from within Yarn-initiated processes.\n * Yarn uses some magical logic where it creates a temporary directory to make Yarn resolvable.\n * This temporary directory is then wired up in `process.env.PATH` and can break for example\n * when a command switches branches, causing the originally invoked Yarn checked-in file to\n * become unavailable.\n */\nexport async function resolveYarnScriptForProject(projectDir: string): Promise {\n  let info: YarnCommandInfo | undefined;\n\n  const yarnPathFromConfig = await getYarnPathFromConfigurationIfPresent(projectDir);\n  if (yarnPathFromConfig !== null) {\n    info = {binary: 'node', args: [yarnPathFromConfig]};\n  }\n\n  if (!info) {\n    const yarnPathFromNpmBin = await getYarnPathFromNpmGlobalBinaries();\n    if (yarnPathFromNpmBin !== null) {\n      info = {binary: yarnPathFromNpmBin, args: []};\n    }\n  }\n\n  info ??= {binary: 'yarn', args: []};\n\n  const yarnVersion = await getYarnVersion(info);\n  if (yarnVersion && Number(yarnVersion.split('.')[0]) < 2) {\n    info.args.push('--silent');\n    info.legacy = true;\n  }\n\n  return info;\n}\n\n/** Gets the path to the Yarn binary from the NPM global binary directory. */\nexport async function getYarnPathFromNpmGlobalBinaries(): Promise {\n  const npmGlobalBinPath = await getNpmGlobalBinPath();\n  if (npmGlobalBinPath === null) {\n    return null;\n  }\n  try {\n    return await which('yarn', {path: npmGlobalBinPath});\n  } catch (e) {\n    Log.debug('Could not find Yarn within NPM global binary directory. Error:', e);\n    return null;\n  }\n}\n\n/** Gets the path to the system-wide global NPM binary directory. */\nasync function getNpmGlobalBinPath(): Promise {\n  try {\n    return (await ChildProcess.spawn('npm', ['bin', '--global'], {mode: 'silent'})).stdout.trim();\n  } catch (e) {\n    Log.debug('Could not determine NPM global binary directory. Error:', e);\n    return null;\n  }\n}\n\n/** Gets the Yarn path from the Yarn configuration if present. */\nasync function getYarnPathFromConfigurationIfPresent(projectDir: string): Promise {\n  const yarnRc = await findAndParseYarnConfiguration(projectDir);\n  if (yarnRc === null) {\n    return null;\n  }\n\n  const yarnPath = yarnRc['yarn-path'] ?? yarnRc['yarnPath'];\n  if (yarnPath === undefined) {\n    return null;\n  }\n\n  return path.resolve(projectDir, yarnPath);\n}\n\nasync function getYarnVersion(info: YarnCommandInfo): Promise {\n  try {\n    return (\n      await ChildProcess.spawn(info.binary, [...info.args, '--version'], {mode: 'silent'})\n    ).stdout.trim();\n  } catch (e) {\n    Log.debug('Could not determine Yarn version. Error:', e);\n    return null;\n  }\n}\n\n/** Finds and parses the Yarn configuration file for the given project. */\nasync function findAndParseYarnConfiguration(\n  projectDir: string,\n): Promise {\n  const files = await Promise.all(\n    yarnConfigFiles.map(async (entry) => ({\n      entry,\n      content: await readFileGracefully(path.join(projectDir, entry.fileName)),\n    })),\n  );\n  const config = files.find((entry) => entry.content !== null);\n  if (config === undefined) {\n    return null;\n  }\n\n  try {\n    return config.entry.parse(config.content!);\n  } catch (e) {\n    Log.debug(`Could not parse determined Yarn configuration file (${config.entry.fileName}).`);\n    Log.debug(`Error:`, e);\n    return null;\n  }\n}\n\n/**\n * Reads the specified file gracefully.\n * @returns The file contents. Null if the file does not exist.\n */\nasync function readFileGracefully(filePath: string): Promise {\n  try {\n    return await fs.promises.readFile(filePath, 'utf8');\n  } catch (error) {\n    if (isNodeJSWrappedError(error, Error) && error.code === 'ENOENT') {\n      return null;\n    }\n    throw error;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Type narrowing function that becomes true if the given error is of type `T`.\n * The narrowed type will include the NodeJS `ErrnoException` properties.\n */\nexport function isNodeJSWrappedError Error>(\n  value: Error | unknown,\n  errorType: T,\n): value is InstanceType & NodeJS.ErrnoException {\n  return value instanceof errorType;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {join} from 'path';\nimport {determineRepoBaseDirFromCwd} from './repo-directory.js';\n\nlet BAZEL_BIN: undefined | string = undefined;\n\nexport function getBazelBin() {\n  if (BAZEL_BIN === undefined) {\n    BAZEL_BIN = process.env.BAZEL || join(determineRepoBaseDirFromCwd(), 'node_modules/.bin/bazel');\n  }\n\n  return BAZEL_BIN;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChildProcess} from '../../utils/child-process.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {getBazelBin} from '../../utils/bazel-bin.js';\nimport {green, Log} from '../../utils/logging.js';\n\nexport async function updateGeneratedFileTargets(): Promise {\n  const spinner = new Spinner('Querying for all generated file targets');\n\n  // Query for all of the generated file targets\n  const result = await ChildProcess.spawn(\n    getBazelBin(),\n    [\n      'query',\n      `\"kind(nodejs_binary, //...) intersect attr(name, '.update$', //...)\"`,\n      '--output',\n      'label',\n    ],\n    {mode: 'silent'},\n  );\n\n  if (result.status !== 0) {\n    spinner.complete();\n    throw Error(`Unexpected error: ${result.stderr}`);\n  }\n\n  const targets = result.stdout.trim().split(/\\r?\\n/);\n\n  Log.debug.group('Discovered Targets');\n  targets.forEach((target) => Log.debug(target));\n  Log.debug.groupEnd();\n\n  spinner.update(`Found ${targets.length} generated file targets to update`);\n\n  // Build all of the generated file targets in parallel.\n  await ChildProcess.spawn(getBazelBin(), ['build', targets.join(' ')], {mode: 'silent'});\n\n  // Individually run the generated file update targets.\n  for (let idx = 0; idx < targets.length; idx++) {\n    const target = targets[idx];\n    spinner.update(`${idx + 1} of ${targets.length} updates completed`);\n    const updateResult = await ChildProcess.spawn(getBazelBin(), ['run', target], {mode: 'silent'});\n    if (updateResult.status !== 0) {\n      spinner.complete();\n      throw Error(`Unexpected error while updating: ${target}.`);\n    }\n  }\n\n  spinner.complete();\n  Log.info(` ${green('✔')}  Updated all generated files (${targets.length} targets)`);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, CommandModule} from 'yargs';\nimport {updateGeneratedFileTargets} from './update-generated-files.js';\n\nasync function builder(argv: Argv) {\n  return argv;\n}\nasync function handler() {\n  await updateGeneratedFileTargets();\n}\n\n/** CLI command module. */\nexport const GeneratedFilesModule: CommandModule = {\n  builder,\n  handler,\n  command: 'update-generated-files',\n  describe: 'Automatically discover all bazel generated file targets and update them.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\n\nimport {BuildAndLinkCommandModule} from './build-and-link/cli.js';\nimport {UpdateYarnCommandModule} from './update-yarn/cli.js';\nimport {GeneratedFilesModule} from './generated-files/cli.js';\n\n/** Build the parser for the misc commands. */\nexport function buildMiscParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .command(BuildAndLinkCommandModule)\n    .command(UpdateYarnCommandModule)\n    .command(GeneratedFilesModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {readFileSync} from 'fs';\nimport {resolve} from 'path';\nimport {parse as parseYaml} from 'yaml';\n\nimport {Log, green} from '../utils/logging.js';\nimport {GitClient} from '../utils/git/git-client.js';\n\nexport async function verify() {\n  const git = await GitClient.get();\n  /** Full path to NgBot config file */\n  const NGBOT_CONFIG_YAML_PATH = resolve(git.baseDir, '.github/angular-robot.yml');\n\n  /** The NgBot config file */\n  const ngBotYaml = readFileSync(NGBOT_CONFIG_YAML_PATH, 'utf8');\n\n  try {\n    // Try parsing the config file to verify that the syntax is correct.\n    parseYaml(ngBotYaml);\n    Log.info(green('✔  Valid NgBot YAML config'));\n  } catch (e) {\n    Log.error(`! Invalid NgBot YAML config`);\n    Log.error(e);\n    process.exitCode = 1;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\nimport {verify} from './verify.js';\n\n/** Build the parser for the NgBot commands. */\nexport function buildNgbotParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .command('verify', 'Verify the NgBot config', {}, () => verify());\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseConfig} from '../../../release/config/index.js';\nimport {\n  computeLtsEndDateOfMajor,\n  fetchProjectNpmPackageInfo,\n  getLtsNpmDistTagOfMajor,\n  getVersionInfoForBranch,\n  ReleaseRepoWithApi,\n} from '../../../release/versioning/index.js';\n\nimport {Log, red, yellow} from '../../../utils/logging.js';\nimport {InvalidTargetBranchError} from './target-label.js';\nimport {defaultLocale} from '../../../utils/locale.js';\nimport {Prompt} from '../../../utils/prompt.js';\n\n/**\n * Asserts that the given branch corresponds to an active LTS version-branch that can receive\n * backport fixes. Throws an error if LTS expired or an invalid branch is selected.\n *\n * @param repo Repository containing the given branch. Used for Github API queries.\n * @param releaseConfig Configuration for releases. Used to query NPM about past publishes.\n * @param branchName Branch that is checked to be an active LTS version-branch.\n * */\nexport async function assertActiveLtsBranch(\n  repo: ReleaseRepoWithApi,\n  releaseConfig: ReleaseConfig,\n  branchName: string,\n) {\n  const {version} = await getVersionInfoForBranch(repo, branchName);\n  const {'dist-tags': distTags, time} = await fetchProjectNpmPackageInfo(releaseConfig);\n\n  // LTS versions should be tagged in NPM in the following format: `v{major}-lts`.\n  const ltsNpmTag = getLtsNpmDistTagOfMajor(version.major);\n  const ltsVersion = semver.parse(distTags[ltsNpmTag]);\n\n  // Ensure that there is an LTS version tagged for the given version-branch major. e.g.\n  // if the version branch is `9.2.x` then we want to make sure that there is an LTS\n  // version tagged in NPM for `v9`, following the `v{major}-lts` tag convention.\n  if (ltsVersion === null) {\n    throw new InvalidTargetBranchError(`No LTS version tagged for v${version.major} in NPM.`);\n  }\n\n  // Ensure that the correct branch is used for the LTS version. We do not want to merge\n  // changes to older minor version branches that do not reflect the current LTS version.\n  if (branchName !== `${ltsVersion.major}.${ltsVersion.minor}.x`) {\n    throw new InvalidTargetBranchError(\n      `Not using last-minor branch for v${version.major} LTS version. PR ` +\n        `should be updated to target: ${ltsVersion.major}.${ltsVersion.minor}.x`,\n    );\n  }\n\n  const today = new Date();\n  const majorReleaseDate = new Date(time[`${version.major}.0.0`]);\n  const ltsEndDate = computeLtsEndDateOfMajor(majorReleaseDate);\n\n  // Check if LTS has already expired for the targeted major version. If so, we do not\n  // allow the merge as per our LTS guarantees. Can be forcibly overridden if desired.\n  // See: https://angular.io/guide/releases#support-policy-and-schedule.\n  if (today > ltsEndDate) {\n    const ltsEndDateText = ltsEndDate.toLocaleDateString(defaultLocale);\n    Log.warn(red(`Long-term support ended for v${version.major} on ${ltsEndDateText}.`));\n    Log.warn(\n      yellow(\n        `Merging of pull requests for this major is generally not ` +\n          `desired, but can be forcibly ignored.`,\n      ),\n    );\n    if (await Prompt.confirm({message: 'Do you want to forcibly proceed with merging?'})) {\n      return;\n    }\n    throw new InvalidTargetBranchError(\n      `Long-term supported ended for v${version.major} on ${ltsEndDateText}. ` +\n        `Pull request cannot be merged into the ${branchName} branch.`,\n    );\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Default locale used in the tool for string comparisons and locale-specific output. */\nexport const defaultLocale = 'en-US';\n\n/**\n * Compares a given string to another one, returning a number indicating\n * whether `a` should be positioned before `b` or the other way around.\n */\nexport function compareString(a: string, b: string): number {\n  return a.localeCompare(b, defaultLocale);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertValidReleaseConfig, ReleaseConfig} from '../../../release/config/index.js';\nimport {\n  ActiveReleaseTrains,\n  getNextBranchName,\n  isVersionBranch,\n  ReleaseRepoWithApi,\n} from '../../../release/versioning/index.js';\nimport {\n  assertValidGithubConfig,\n  ConfigValidationError,\n  GithubConfig,\n  NgDevConfig,\n} from '../../../utils/config.js';\nimport {\n  InvalidTargetBranchError,\n  InvalidTargetLabelError,\n  TargetLabelConfig,\n} from './target-label.js';\n\nimport {assertActiveLtsBranch} from './lts-branch.js';\nimport {GithubClient} from '../../../utils/git/github.js';\nimport {Log} from '../../../utils/logging.js';\nimport {assertValidPullRequestConfig, PullRequestConfig} from '../../config/index.js';\nimport {targetLabels} from '../labels/target.js';\n\n/**\n * Gets a list of target labels and their configs. The merge tooling will\n * respect match to the appropriate label config and leverage it for determining\n * into which branches a pull request should merge into.\n *\n * The target label configs are implemented according to the design document which\n * specifies versioning, branching and releasing for the Angular organization:\n * https://docs.google.com/document/d/197kVillDwx-RZtSVOBtPb4BBIAw0E9RT3q3v6DZkykU\n *\n * @param api Instance of a Github client. Used to query for the release train branches.\n * @param config Configuration for the Github remote and release packages. Used to fetch\n *   NPM version data when LTS version branches are validated.\n */\nexport async function getTargetLabelConfigsForActiveReleaseTrains(\n  {latest, releaseCandidate, next, exceptionalMinor}: ActiveReleaseTrains,\n  api: GithubClient,\n  config: NgDevConfig<{\n    github: GithubConfig;\n    pullRequest: PullRequestConfig;\n    release?: ReleaseConfig;\n  }>,\n): Promise {\n  assertValidGithubConfig(config);\n  assertValidPullRequestConfig(config);\n\n  const nextBranchName = getNextBranchName(config.github);\n  const repo: ReleaseRepoWithApi = {\n    owner: config.github.owner,\n    name: config.github.name,\n    nextBranchName,\n    api,\n  };\n\n  const labelConfigs: TargetLabelConfig[] = [\n    {\n      label: targetLabels.TARGET_MAJOR,\n      branches: () => {\n        // If `next` is currently not designated to be a major version, we do not\n        // allow merging of PRs with `target: major`.\n        if (!next.isMajor) {\n          throw new InvalidTargetLabelError(\n            `Unable to merge pull request. The \"${nextBranchName}\" branch will be released as ` +\n              'a minor version.',\n          );\n        }\n        return [nextBranchName];\n      },\n    },\n    {\n      label: targetLabels.TARGET_MINOR,\n      branches: (githubTargetBranch) => {\n        // If there is an exceptional minor in-progress, and a PR specifically sets\n        // its destination to it, along with `target: minor`, then we merge into it.\n        // This allows for an exceptional minor train to receive e.g. features.\n        // See: http://go/angular-exceptional-minor\n        if (githubTargetBranch === exceptionalMinor?.branchName) {\n          return [exceptionalMinor.branchName];\n        }\n\n        return [nextBranchName];\n      },\n    },\n    {\n      label: targetLabels.TARGET_PATCH,\n      branches: (githubTargetBranch) => {\n        // If a PR is targeting the latest active version-branch through the Github UI,\n        // and is also labeled with `target: patch`, then we merge it directly into the\n        // branch without doing any cherry-picking. This is useful if a PR could not be\n        // applied cleanly, and a separate PR for the patch branch has been created.\n        if (githubTargetBranch === latest.branchName) {\n          return [latest.branchName];\n        }\n        // Otherwise, patch changes are always merged into the next and patch branch.\n        const branches = [nextBranchName, latest.branchName];\n        // Additionally, if there is a release-candidate/feature-freeze release-train\n        // currently active, also merge the PR into that version-branch.\n        if (releaseCandidate !== null) {\n          branches.push(releaseCandidate.branchName);\n        }\n        // If there is an exceptional minor, patch changes should always go into it.\n        // It would be a potential loss of fixes/patches if suddenly the exceptional\n        // minor becomes the new patch- but misses some commits.\n        // More details here: http://go/angular-exceptional-minor.\n        if (exceptionalMinor !== null) {\n          branches.push(exceptionalMinor.branchName);\n        }\n        return branches;\n      },\n    },\n    {\n      label: targetLabels.TARGET_RC,\n      branches: (githubTargetBranch) => {\n        // The `target: rc` label cannot be applied if there is no active feature-freeze\n        // or release-candidate release train.\n        if (releaseCandidate === null) {\n          throw new InvalidTargetLabelError(\n            `No active feature-freeze/release-candidate branch. ` +\n              `Unable to merge pull request using \"target: rc\" label.`,\n          );\n        }\n        // If the PR is targeting the active release-candidate/feature-freeze version branch\n        // directly through the Github UI and has the `target: rc` label applied, merge it\n        // only into the release candidate branch. This is useful if a PR did not apply cleanly\n        // into the release-candidate/feature-freeze branch, and a separate PR has been created.\n        if (githubTargetBranch === releaseCandidate.branchName) {\n          return [releaseCandidate.branchName];\n        }\n        // Otherwise, merge into the next and active release-candidate/feature-freeze branch.\n        return [nextBranchName, releaseCandidate.branchName];\n      },\n    },\n    {\n      label: targetLabels.TARGET_FEATURE,\n      branches: (githubTargetBranch) => {\n        if (isVersionBranch(githubTargetBranch) || githubTargetBranch === nextBranchName) {\n          throw new InvalidTargetBranchError(\n            '\"target: feature\" pull requests cannot target a releasable branch',\n          );\n        }\n        return [githubTargetBranch];\n      },\n    },\n  ];\n\n  // LTS branches can only be determined if the release configuration is defined, and must be added\n  // after asserting the configuration contains a release config.\n  try {\n    assertValidReleaseConfig(config);\n    labelConfigs.push({\n      // LTS changes are rare enough that we won't worry about cherry-picking changes into all\n      // active LTS branches for PRs created against any other branch. Instead, PR authors need\n      // to manually create separate PRs for desired LTS branches. Additionally, active LT branches\n      // commonly diverge quickly. This makes cherry-picking not an option for LTS changes.\n      label: targetLabels.TARGET_LTS,\n      branches: async (githubTargetBranch) => {\n        if (!isVersionBranch(githubTargetBranch)) {\n          throw new InvalidTargetBranchError(\n            `PR cannot be merged as it does not target a long-term support ` +\n              `branch: \"${githubTargetBranch}\"`,\n          );\n        }\n        if (githubTargetBranch === latest.branchName) {\n          throw new InvalidTargetBranchError(\n            `PR cannot be merged with \"target: lts\" into patch branch. ` +\n              `Consider changing the label to \"target: patch\" if this is intentional.`,\n          );\n        }\n        if (releaseCandidate !== null && githubTargetBranch === releaseCandidate.branchName) {\n          throw new InvalidTargetBranchError(\n            `PR cannot be merged with \"target: lts\" into feature-freeze/release-candidate ` +\n              `branch. Consider changing the label to \"target: rc\" if this is intentional.`,\n          );\n        }\n        // Assert that the selected branch is an active LTS branch.\n        assertValidReleaseConfig(config);\n        await assertActiveLtsBranch(repo, config.release, githubTargetBranch);\n        return [githubTargetBranch];\n      },\n    });\n  } catch (err) {\n    if (err instanceof ConfigValidationError) {\n      Log.debug('LTS target label not included in target labels as no valid release');\n      Log.debug('configuration was found to allow the LTS branches to be determined.');\n    } else {\n      throw err;\n    }\n  }\n\n  return labelConfigs;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestConfig} from '../../config/index.js';\nimport {getTargetLabelConfigsForActiveReleaseTrains} from './labels.js';\nimport {GithubConfig, NgDevConfig} from '../../../utils/config.js';\nimport {GithubClient} from '../../../utils/git/github.js';\nimport {ActiveReleaseTrains} from '../../../release/versioning/index.js';\nimport {TargetLabel} from '../labels/target.js';\n\n/** Type describing the determined target of a pull request. */\nexport interface PullRequestTarget {\n  /** Branches which the pull request targets. */\n  branches: string[];\n  /** Target label applied to the pull request. */\n  label: TargetLabel;\n}\n\n/**\n * Configuration for a target label. The config is responsible for\n * mapping a label to its branches.\n */\nexport interface TargetLabelConfig {\n  /** Target label for which the config applies to. */\n  label: TargetLabel;\n  /**\n   * List of branches a pull request with this target label should be merged into.\n   * Can also be wrapped in a function that accepts the target branch specified in the\n   * Github Web UI. This is useful for supporting labels like `target: development-branch`.\n   *\n   * @throws {InvalidTargetLabelError} Invalid label has been applied to pull request.\n   * @throws {InvalidTargetBranchError} Invalid Github target branch has been selected.\n   */\n  branches: (githubTargetBranch: string) => string[] | Promise;\n}\n\n/**\n * Unique error that will be thrown if an invalid branch is targeted.\n */\nexport class InvalidTargetBranchError {\n  constructor(public failureMessage: string) {}\n}\n\n/**\n * Unique error that will be thrown if an invalid label has been\n * applied to a pull request.\n */\nexport class InvalidTargetLabelError {\n  constructor(public failureMessage: string) {}\n}\n\n/**\n * Gets the matching target label config based on pull request labels.\n *\n * @throws {InvalidTargetLabelError} An invalid target label error is thrown\n *   if no single valid target label is applied.\n */\nexport async function getMatchingTargetLabelConfigForPullRequest(\n  labelsOnPullRequest: string[],\n  labelConfigs: TargetLabelConfig[],\n): Promise {\n  const matches: TargetLabelConfig[] = [];\n\n  for (const prLabelName of labelsOnPullRequest) {\n    const match = labelConfigs.find(({label}) => label.name === prLabelName);\n    if (match !== undefined) {\n      matches.push(match);\n    }\n  }\n  if (matches.length === 1) {\n    return matches[0];\n  }\n  if (matches.length === 0) {\n    throw new InvalidTargetLabelError(\n      'Unable to determine target for the PR as it has no target label.',\n    );\n  }\n  throw new InvalidTargetLabelError(\n    'Unable to determine target for the PR as it has multiple target labels.',\n  );\n}\n\n/**\n * Gets the target branches and label of the given pull request.\n *\n * @throws {InvalidTargetLabelError} An invalid target label error is thrown\n *   if no single valid target label is applied.\n */\nexport async function getTargetBranchesAndLabelForPullRequest(\n  activeReleaseTrains: ActiveReleaseTrains,\n  github: GithubClient,\n  config: NgDevConfig<{pullRequest: PullRequestConfig; github: GithubConfig}>,\n  labelsOnPullRequest: string[],\n  githubTargetBranch: string,\n): Promise {\n  const labelConfigs = await getTargetLabelConfigsForActiveReleaseTrains(\n    activeReleaseTrains,\n    github,\n    config,\n  );\n  const matchingConfig = await getMatchingTargetLabelConfigForPullRequest(\n    labelsOnPullRequest,\n    labelConfigs,\n  );\n\n  return {\n    branches: await getBranchesForTargetLabel(matchingConfig, githubTargetBranch),\n    label: matchingConfig.label,\n  };\n}\n\n/**\n * Gets the branches for the specified target label config.\n *\n * @throws {InvalidTargetLabelError} Invalid label has been applied to pull request.\n * @throws {InvalidTargetBranchError} Invalid Github target branch has been selected.\n */\nexport async function getBranchesForTargetLabel(\n  labelConfig: TargetLabelConfig,\n  githubTargetBranch: string,\n): Promise {\n  return typeof labelConfig.branches === 'function'\n    ? await labelConfig.branches(githubTargetBranch)\n    : await labelConfig.branches;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertValidGithubConfig, getConfig, GithubConfig, NgDevConfig} from '../../utils/config.js';\nimport {Log} from '../../utils/logging.js';\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {assertValidPullRequestConfig, PullRequestConfig} from '../config/index.js';\nimport {getTargetBranchesAndLabelForPullRequest} from '../common/targeting/target-label.js';\nimport {ActiveReleaseTrains} from '../../release/versioning/active-release-trains.js';\nimport {getNextBranchName} from '../../release/versioning/version-branches.js';\n\nasync function getTargetBranchesForPr(\n  prNumber: number,\n  config: NgDevConfig<{github: GithubConfig; pullRequest: PullRequestConfig}>,\n) {\n  /** Repo owner and name for the github repository. */\n  const {owner, name: repo} = config.github;\n  /** The singleton instance of the GitClient. */\n  const git = await GitClient.get();\n\n  /** The current state of the pull request from Github. */\n  const prData = (await git.github.pulls.get({owner, repo, pull_number: prNumber})).data;\n  /** The list of labels on the PR as strings. */\n  const labels = prData.labels.map((l) => l.name);\n  /** The branch targeted via the Github UI. */\n  const githubTargetBranch = prData.base.ref;\n\n  const activeReleaseTrains = await ActiveReleaseTrains.fetch({\n    name: repo,\n    owner: owner,\n    nextBranchName: getNextBranchName(config.github),\n    api: git.github,\n  });\n\n  // Note: We do not pass a list of commits here because we did not fetch this information\n  // and the commits are only used for validation (which we can skip here).\n  return getTargetBranchesAndLabelForPullRequest(\n    activeReleaseTrains,\n    git.github,\n    config,\n    labels,\n    githubTargetBranch,\n  );\n}\n\nexport async function printTargetBranchesForPr(prNumber: number) {\n  const config = await getConfig();\n  assertValidGithubConfig(config);\n  assertValidPullRequestConfig(config);\n\n  if (config.pullRequest.__noTargetLabeling) {\n    Log.info(`This repository does not use target labeling (special flag enabled).`);\n    Log.info(`PR #${prNumber} will merge into: ${config.github.mainBranchName}`);\n    return;\n  }\n\n  const target = await getTargetBranchesForPr(prNumber, config);\n  Log.info(`PR has the following target label: ${target.label.name}`);\n  Log.info.group(`PR #${prNumber} will merge into:`);\n  target.branches.forEach((name) => Log.info(`- ${name}`));\n  Log.info.groupEnd();\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {printTargetBranchesForPr} from './check-target-branches.js';\n\nexport interface CheckTargetBranchesOptions {\n  pr: number;\n}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return argv.positional('pr', {\n    description: 'The pull request number',\n    type: 'number',\n    demandOption: true,\n  });\n}\n\n/** Handles the command. */\nasync function handler({pr}: Arguments) {\n  await printTargetBranchesForPr(pr);\n}\n\n/** yargs command module describing the command.  */\nexport const CheckTargetBranchesModule: CommandModule<{}, CheckTargetBranchesOptions> = {\n  handler,\n  builder,\n  command: 'check-target-branches ',\n  describe: 'Check a PR to determine what branches it is currently targeting',\n};\n", "import {GithubConfig, NgDevConfig} from '../../utils/config.js';\nimport {dirname, join} from 'path';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {Log, bold, green} from '../../utils/logging.js';\nimport {checkOutPullRequestLocally} from '../common/checkout-pr.js';\nimport {fileURLToPath} from 'url';\nimport {ActiveReleaseTrains} from '../../release/versioning/active-release-trains.js';\nimport {getNextBranchName} from '../../release/versioning/version-branches.js';\nimport {addTokenToGitHttpsUrl} from '../../utils/git/github-urls.js';\nimport {Prompt} from '../../utils/prompt.js';\n\n/** List of accounts that are supported for takeover. */\nconst takeoverAccounts = ['angular-robot'];\n\nexport interface CheckoutPullRequestParams {\n  pr: number;\n  takeover?: boolean;\n  target?: string;\n}\n\nexport async function checkoutPullRequest(\n  params: CheckoutPullRequestParams,\n  config: NgDevConfig<{github: GithubConfig}>,\n): Promise {\n  const {pr, takeover, target} = params;\n  /** An authenticated git client. */\n  const git = await AuthenticatedGitClient.get();\n\n  if (takeover && target) {\n    Log.error(` ✘ You cannot specify both takeover and target branch at the same time`);\n    return;\n  }\n\n  // Make sure the local repository is clean.\n  if (git.hasUncommittedChanges()) {\n    Log.error(\n      ` ✘ Local working repository not clean. Please make sure there are no uncommitted changes`,\n    );\n    return;\n  }\n\n  const {resetGitState, pullRequest, pushToUpstreamCommand} = await checkOutPullRequestLocally(pr, {\n    allowIfMaintainerCannotModify: true,\n  });\n\n  if (!target) {\n    const branchName = `pr-takeover-${pr}`;\n    // if maintainer can modify is false or if takeover is provided do takeover\n\n    if (pullRequest.maintainerCanModify === false || takeover) {\n      if (takeover !== true) {\n        Log.info('The author of this pull request does not allow maintainers to modify the pull');\n        Log.info(\n          'request. Since you will not be able to push changes to the original pull request',\n        );\n        Log.info('you will instead need to perform a \"takeover.\" In a takeover the original pull');\n        Log.info('request will be checked out, the commits are modified to close the original on');\n        Log.info('merge of the newly created branch.\\n');\n\n        if (\n          !(await Prompt.confirm({\n            message: `Would you like to create a takeover pull request?`,\n            default: true,\n          }))\n        ) {\n          Log.info('Aborting takeover..');\n          await resetGitState();\n          return;\n        }\n      }\n\n      if (git.runGraceful(['rev-parse', '-q', '--verify', branchName]).status === 0) {\n        Log.error(` ✘ Expected branch name \\`${branchName}\\` already exists locally`);\n        return;\n      }\n\n      // Confirm that the takeover request is being done on a valid pull request.\n      if (!takeoverAccounts.includes(pullRequest.author.login)) {\n        Log.warn(\n          ` ⚠ ${bold(pullRequest.author.login)} is not an account fully supported for takeover.`,\n        );\n        Log.warn(`   Supported accounts: ${bold(takeoverAccounts.join(', '))}`);\n        if (\n          await Prompt.confirm({\n            message: `Continue with pull request takeover anyway?`,\n            default: true,\n          })\n        ) {\n          Log.debug('Continuing per user confirmation in prompt');\n        } else {\n          Log.info('Aborting takeover..');\n          await resetGitState();\n          return;\n        }\n      }\n\n      Log.info(`Setting local branch name based on the pull request`);\n      git.run(['checkout', '-q', '-b', branchName]);\n\n      Log.info('Updating commit messages to close previous pull request');\n      git.run([\n        'filter-branch',\n        '-f',\n        '--msg-filter',\n        `${getCommitMessageFilterScriptPath()} ${pr}`,\n        `${pullRequest.baseRefOid}..HEAD`,\n      ]);\n\n      Log.info(` ${green('✔')} Checked out pull request #${pr} into branch: ${branchName}`);\n      return;\n    }\n\n    Log.info(`Checked out the remote branch for pull request #${pr}\\n`);\n    Log.info('To push the checked out branch back to its PR, run the following command:');\n    Log.info(`  $ ${pushToUpstreamCommand}`);\n  } else {\n    const branchName = `pr-${target.toLowerCase().replaceAll(/[\\W_]/gm, '-')}-${pr}`;\n    const {owner, name: repo} = config.github;\n    const activeReleaseTrains = await ActiveReleaseTrains.fetch({\n      name: repo,\n      owner: owner,\n      nextBranchName: getNextBranchName(config.github),\n      api: git.github,\n    });\n\n    let targetBranch = target;\n    let targetName = target;\n\n    if (\n      target === 'patch' ||\n      target === 'latest' ||\n      activeReleaseTrains.latest.branchName === target\n    ) {\n      targetName = 'patch';\n      targetBranch = activeReleaseTrains.latest.branchName;\n    } else if (\n      target === 'main' ||\n      target === 'next' ||\n      target === 'minor' ||\n      activeReleaseTrains.next.branchName === target\n    ) {\n      targetName = 'main';\n      targetBranch = activeReleaseTrains.next.branchName;\n    } else if (\n      activeReleaseTrains.releaseCandidate &&\n      (target === 'rc' || activeReleaseTrains.releaseCandidate.branchName === target)\n    ) {\n      targetName = 'rc';\n      targetBranch = activeReleaseTrains.releaseCandidate.branchName;\n    }\n    Log.info(`Targeting '${targetBranch}' branch\\n`);\n\n    const baseRefUrl = addTokenToGitHttpsUrl(pullRequest.baseRef.repository.url, git.githubToken);\n\n    git.run(['checkout', '-q', targetBranch]);\n    git.run(['fetch', '-q', baseRefUrl, targetBranch, '--deepen=500']);\n    git.run(['checkout', '-b', branchName]);\n\n    Log.info(`Running cherry-pick\\n`);\n\n    try {\n      const revisionRange = `${pullRequest.baseRefOid}..${pullRequest.headRefOid}`;\n      git.run(['cherry-pick', revisionRange]);\n      Log.info(`Cherry-pick is complete. You can now push to create a new pull request.`);\n    } catch {\n      Log.info(\n        `Cherry-pick resulted in conflicts. Please resolve them manually and push to create your patch PR`,\n      );\n      return;\n    }\n\n    return;\n  }\n}\n\n/** Gets the absolute file path to the commit-message filter script. */\nfunction getCommitMessageFilterScriptPath(): string {\n  // This file is getting bundled and ends up in `/bundles/`. We also\n  // bundle the commit-message-filter script as another entry-point and can reference\n  // it relatively as the path is preserved inside `bundles/`.\n  // *Note*: Relying on package resolution is problematic within ESM and with `local-dev.sh`\n  const bundlesDir = dirname(fileURLToPath(import.meta.url));\n  return join(bundlesDir, './pr/checkout/commit-message-filter.mjs');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {types as graphqlTypes} from 'typed-graphqlify';\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {addTokenToGitHttpsUrl} from '../../utils/git/github-urls.js';\nimport {getPr} from '../../utils/github.js';\n\n/* Graphql schema for the response body for a pending PR. */\nconst PR_SCHEMA = {\n  author: {\n    login: graphqlTypes.string,\n  },\n  state: graphqlTypes.string,\n  maintainerCanModify: graphqlTypes.boolean,\n  viewerDidAuthor: graphqlTypes.boolean,\n  headRefOid: graphqlTypes.string,\n  headRef: {\n    name: graphqlTypes.string,\n    repository: {\n      url: graphqlTypes.string,\n      nameWithOwner: graphqlTypes.string,\n    },\n  },\n  baseRefOid: graphqlTypes.string,\n  baseRef: {\n    name: graphqlTypes.string,\n    repository: {\n      url: graphqlTypes.string,\n      nameWithOwner: graphqlTypes.string,\n    },\n  },\n};\n\n/** Error being thrown if there are unexpected local changes in the project repo. */\nexport class UnexpectedLocalChangesError extends Error {}\n/** Error being thrown if a requested pull request could not be found upstream. */\nexport class PullRequestNotFoundError extends Error {}\n/** Error being thrown if the pull request does not allow for maintainer modifications. */\nexport class MaintainerModifyAccessError extends Error {}\n\n/** Options for checking out a PR */\nexport interface PullRequestCheckoutOptions {\n  /** Whether the PR should be checked out if the maintainer cannot modify. */\n  allowIfMaintainerCannotModify?: boolean;\n}\n\n/**\n * Rebase the provided PR onto its merge target branch, and push up the resulting\n * commit to the PRs repository.\n *\n * @throws {UnexpectedLocalChangesError} If the pull request cannot be checked out\n *   due to uncommitted local changes.\n * @throws {PullRequestNotFoundError} If the pull request cannot be checked out\n *   because it is unavailable on Github.\n * @throws {MaintainerModifyAccessError} If the pull request does not allow maintainers\n *   to modify a pull request. Skipped if `allowIfMaintainerCannotModify` is set.\n */\nexport async function checkOutPullRequestLocally(\n  prNumber: number,\n  opts: PullRequestCheckoutOptions = {},\n) {\n  /** The singleton instance of the authenticated git client. */\n  const git = await AuthenticatedGitClient.get();\n\n  // In order to preserve local changes, checkouts cannot occur if local changes are present in the\n  // git environment. Checked before retrieving the PR to fail fast.\n  if (git.hasUncommittedChanges()) {\n    throw new UnexpectedLocalChangesError('Unable to checkout PR due to uncommitted changes.');\n  }\n\n  /**\n   * The branch or revision originally checked out before this method performed\n   * any Git operations that may change the working branch.\n   */\n  const previousBranchOrRevision = git.getCurrentBranchOrRevision();\n  /** The PR information from Github. */\n  const pr = await getPr(PR_SCHEMA, prNumber, git);\n\n  if (pr === null) {\n    throw new PullRequestNotFoundError(`Pull request #${prNumber} could not be found.`);\n  }\n\n  /** The branch name of the PR from the repository the PR came from. */\n  const headRefName = pr.headRef.name;\n  /** The full ref for the repository and branch the PR came from. */\n  const fullHeadRef = `${pr.headRef.repository.nameWithOwner}:${headRefName}`;\n  /** The full URL path of the repository the PR came from with github token as authentication. */\n  const headRefUrl = addTokenToGitHttpsUrl(pr.headRef.repository.url, git.githubToken);\n  // Note: Since we use a detached head for rebasing the PR and therefore do not have\n  // remote-tracking branches configured, we need to set our expected ref and SHA. This\n  // allows us to use `--force-with-lease` for the detached head while ensuring that we\n  // never accidentally override upstream changes that have been pushed in the meanwhile.\n  // See:\n  // https://git-scm.com/docs/git-push#Documentation/git-push.txt---force-with-leaseltrefnamegtltexpectgt\n  /** Flag for a force push with lease back to upstream. */\n  const forceWithLeaseFlag = `--force-with-lease=${headRefName}:${pr.headRefOid}`;\n\n  // If the PR does not allow maintainers to modify it, exit as the rebased PR cannot\n  // be pushed up.\n  if (!pr.maintainerCanModify && !pr.viewerDidAuthor && !opts.allowIfMaintainerCannotModify) {\n    throw new MaintainerModifyAccessError('PR is not set to allow maintainers to modify the PR');\n  }\n\n  try {\n    // Fetch the branch at the commit of the PR, and check it out in a detached state.\n    git.run(['fetch', '-q', headRefUrl, headRefName]);\n    git.run(['checkout', '--detach', 'FETCH_HEAD']);\n  } catch (e) {\n    git.checkout(previousBranchOrRevision, true);\n    throw e;\n  }\n\n  return {\n    /**\n     * Pushes the current local branch to the PR on the upstream repository.\n     *\n     * @returns true If the command did not fail causing a GitCommandError to be thrown.\n     * @throws {GitCommandError} Thrown when the push back to upstream fails.\n     */\n    pushToUpstream: (): true => {\n      git.run(['push', headRefUrl, `HEAD:${headRefName}`, forceWithLeaseFlag]);\n      return true;\n    },\n    /** Restores the state of the local repository to before the PR checkout occured. */\n    resetGitState: (): boolean => {\n      return git.checkout(previousBranchOrRevision, true);\n    },\n    pushToUpstreamCommand: `git push ${pr.headRef.repository.url} HEAD:${headRefName} ${forceWithLeaseFlag}`,\n    resetGitStateCommand: `git rebase --abort && git reset --hard && git checkout ${previousBranchOrRevision}`,\n    pullRequest: pr,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {params, types} from 'typed-graphqlify';\nimport {AuthenticatedGitClient} from './git/authenticated-git-client.js';\nimport {GraphqlResponseError} from '@octokit/graphql';\n\n/**\n * Gets the given pull request from Github using the GraphQL API endpoint.\n */\nexport async function getPr(\n  prSchema: PrSchema,\n  prNumber: number,\n  git: AuthenticatedGitClient,\n): Promise {\n  /** The owner and name of the repository */\n  const {owner, name} = git.remoteConfig;\n  /** The Graphql query object to get a the PR */\n  const PR_QUERY = params(\n    {\n      $number: 'Int!', // The PR number\n      $owner: 'String!', // The organization to query for\n      $name: 'String!', // The organization to query for\n    },\n    {\n      repository: params(\n        {owner: '$owner', name: '$name'},\n        {\n          pullRequest: params({number: '$number'}, prSchema),\n        },\n      ),\n    },\n  );\n\n  try {\n    const result = await git.github.graphql(PR_QUERY, {number: prNumber, owner, name});\n    return result.repository.pullRequest;\n  } catch (e) {\n    // If we know the error is just about the pull request not being found, we explicitly\n    // return `null`. This allows convenient and graceful handling if a PR does not exist.\n    if (e instanceof GraphqlResponseError && e.errors?.every((e) => e.type === 'NOT_FOUND')) {\n      return null;\n    }\n    throw e;\n  }\n}\n\n/** Get all pending PRs from github  */\nexport async function getPendingPrs(prSchema: PrSchema, git: AuthenticatedGitClient) {\n  /** The owner and name of the repository */\n  const {owner, name} = git.remoteConfig;\n  /** The Graphql query object to get a page of pending PRs */\n  const PRS_QUERY = params(\n    {\n      $first: 'Int', // How many entries to get with each request\n      $after: 'String', // The cursor to start the page at\n      $owner: 'String!', // The organization to query for\n      $name: 'String!', // The repository to query for\n    },\n    {\n      repository: params(\n        {owner: '$owner', name: '$name'},\n        {\n          pullRequests: params(\n            {\n              first: '$first',\n              after: '$after',\n              states: `OPEN`,\n            },\n            {\n              nodes: [prSchema],\n              pageInfo: {\n                hasNextPage: types.boolean,\n                endCursor: types.string,\n              },\n            },\n          ),\n        },\n      ),\n    },\n  );\n  /** The current cursor */\n  let cursor: string | undefined;\n  /** If an additional page of members is expected */\n  let hasNextPage = true;\n  /** Array of pending PRs */\n  const prs: Array = [];\n\n  // For each page of the response, get the page and add it to the list of PRs\n  while (hasNextPage) {\n    const paramsValue = {\n      after: cursor || null,\n      first: 100,\n      owner,\n      name,\n    };\n    const results = (await git.github.graphql(PRS_QUERY, paramsValue)) as typeof PRS_QUERY;\n    prs.push(...results.repository.pullRequests.nodes);\n    hasNextPage = results.repository.pullRequests.pageInfo.hasNextPage;\n    cursor = results.repository.pullRequests.pageInfo.endCursor;\n  }\n  return prs;\n}\n\n/** Get all files in a PR from github  */\nexport async function getPrFiles(\n  fileSchema: PrFileSchema,\n  prNumber: number,\n  git: AuthenticatedGitClient,\n) {\n  /** The owner and name of the repository */\n  const {owner, name} = git.remoteConfig;\n  /** The Graphql query object to get a page of pending PRs */\n  const PRS_QUERY = params(\n    {\n      $first: 'Int', // How many entries to get with each request\n      $after: 'String', // The cursor to start the page at\n      $owner: 'String!', // The organization to query for\n      $name: 'String!', // The repository to query for\n    },\n    {\n      repository: params(\n        {owner: '$owner', name: '$name'},\n        {\n          pullRequest: params(\n            {\n              number: prNumber,\n            },\n            {\n              files: params(\n                {\n                  first: '$first',\n                  after: '$after',\n                },\n                {\n                  nodes: [fileSchema],\n                  pageInfo: {\n                    hasNextPage: types.boolean,\n                    endCursor: types.string,\n                  },\n                },\n              ),\n            },\n          ),\n        },\n      ),\n    },\n  );\n  /** The current cursor */\n  let cursor: string | undefined;\n  /** If an additional page of members is expected */\n  let hasNextPage = true;\n  /** Array of pending PRs */\n  const files: Array = [];\n\n  // For each page of the response, get the page and add it to the list of PRs\n  while (hasNextPage) {\n    const paramsValue = {\n      after: cursor || null,\n      first: 100,\n      owner,\n      name,\n    };\n    const results = await git.github.graphql(PRS_QUERY, paramsValue);\n    files.push(...results.repository.pullRequest.files.nodes);\n    hasNextPage = results.repository.pullRequest.files.pageInfo.hasNextPage;\n    cursor = results.repository.pullRequest.files.pageInfo.endCursor;\n  }\n  return files;\n}\n\n/** Get all files in a PR from github  */\nexport async function getPrComments(\n  commentsSchema: PrCommentsSchema,\n  prNumber: number,\n  git: AuthenticatedGitClient,\n) {\n  /** The owner and name of the repository */\n  const {owner, name} = git.remoteConfig;\n  /** The Graphql query object to get a page of pending PRs */\n  const PRS_QUERY = params(\n    {\n      $first: 'Int', // How many entries to get with each request\n      $after: 'String', // The cursor to start the page at\n      $owner: 'String!', // The organization to query for\n      $name: 'String!', // The repository to query for\n    },\n    {\n      repository: params(\n        {owner: '$owner', name: '$name'},\n        {\n          pullRequest: params(\n            {\n              number: prNumber,\n            },\n            {\n              comments: params(\n                {\n                  first: '$first',\n                  after: '$after',\n                },\n                {\n                  nodes: [commentsSchema],\n                  pageInfo: {\n                    hasNextPage: types.boolean,\n                    endCursor: types.string,\n                  },\n                },\n              ),\n            },\n          ),\n        },\n      ),\n    },\n  );\n  /** The current cursor */\n  let cursor: string | undefined;\n  /** If an additional page of members is expected */\n  let hasNextPage = true;\n  /** Array of pending PRs */\n  const comments: Array = [];\n\n  // For each page of the response, get the page and add it to the list of PRs\n  while (hasNextPage) {\n    const paramsValue = {\n      after: cursor || null,\n      first: 100,\n      owner,\n      name,\n    };\n    const results = await git.github.graphql(PRS_QUERY, paramsValue);\n    comments.push(...results.repository.pullRequest.comments.nodes);\n    hasNextPage = results.repository.pullRequest.comments.pageInfo.hasNextPage;\n    cursor = results.repository.pullRequest.comments.pageInfo.endCursor;\n  }\n  return comments;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {assertValidGithubConfig, getConfig, GithubConfig, NgDevConfig} from '../../utils/config.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\nimport {checkoutPullRequest, CheckoutPullRequestParams} from './checkout.js';\n\n/** Builds the checkout pull request command. */\nfunction builder(yargs: Argv) {\n  return addGithubTokenOption(yargs)\n    .positional('pr', {\n      type: 'number',\n      demandOption: true,\n      describe: 'The pull request number for the pull request to checkout',\n    })\n    .option('takeover', {\n      type: 'boolean',\n      demandOption: false,\n      describe: 'Check out the pull request to perform a takeover',\n    })\n    .option('target', {\n      type: 'string',\n      demandOption: false,\n      describe: 'Check out the pull request targeting the specified base branch',\n    });\n}\n\n/** Handles the checkout pull request command. */\nasync function handler({pr, takeover, target}: Arguments) {\n  const config = await getConfig();\n  assertValidGithubConfig(config);\n\n  await checkoutPullRequest({pr, takeover, target}, config);\n}\n\n/** yargs command module for checking out a PR  */\nexport const CheckoutCommandModule: CommandModule<{}, CheckoutPullRequestParams> = {\n  handler,\n  builder,\n  command: 'checkout ',\n  describe: 'Checkout a PR from the upstream repo',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Bar} from 'cli-progress';\n\nimport {Log} from '../../utils/logging.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {GitCommandError} from '../../utils/git/git-client.js';\nimport {\n  fetchPendingPullRequestsFromGithub,\n  PullRequestFromGithub,\n} from '../common/fetch-pull-request.js';\n\n/** Name of a temporary local branch that is used for checking conflicts. **/\nconst tempWorkingBranch = '__NgDevRepoBaseAfterChange__';\n\n/** Checks if the provided PR will cause new conflicts in other pending PRs. */\nexport async function discoverNewConflictsForPr(newPrNumber: number, updatedAfter: number) {\n  /** The singleton instance of the authenticated git client. */\n  const git = await AuthenticatedGitClient.get();\n\n  // If there are any local changes in the current repository state, the\n  // check cannot run as it needs to move between branches.\n  if (git.hasUncommittedChanges()) {\n    Log.error('Cannot run with local changes. Please make sure there are no local changes.');\n    process.exit(1);\n  }\n\n  /** The active github branch or revision before we performed any Git commands. */\n  const previousBranchOrRevision = git.getCurrentBranchOrRevision();\n  /* Progress bar to indicate progress. */\n  const progressBar = new Bar({format: `[{bar}] ETA: {eta}s | {value}/{total}`});\n  /* PRs which were found to be conflicting. */\n  const conflicts: Array = [];\n\n  Log.info(`Requesting pending PRs from Github`);\n  /** List of PRs from github currently known as mergable. */\n  const allPendingPRs = await fetchPendingPullRequestsFromGithub(git);\n\n  if (allPendingPRs === null) {\n    Log.error('Unable to find any pending PRs in the repository');\n    process.exit(1);\n  }\n\n  /** The PR which is being checked against. */\n  const requestedPr = allPendingPRs.find((pr) => pr.number === newPrNumber);\n  if (requestedPr === undefined) {\n    Log.error(\n      `The request PR, #${newPrNumber} was not found as a pending PR on github, please confirm`,\n    );\n    Log.error(`the PR number is correct and is an open PR`);\n    process.exit(1);\n  }\n\n  const pendingPrs = allPendingPRs.filter((pr) => {\n    return (\n      // PRs being merged into the same target branch as the requested PR\n      pr.baseRef.name === requestedPr.baseRef.name &&\n      // PRs which either have not been processed or are determined as mergable by Github\n      pr.mergeable !== 'CONFLICTING' &&\n      // PRs updated after the provided date\n      new Date(pr.updatedAt).getTime() >= updatedAfter\n    );\n  });\n  Log.info(`Retrieved ${allPendingPRs.length} total pending PRs`);\n  Log.info(`Checking ${pendingPrs.length} PRs for conflicts after a merge of #${newPrNumber}`);\n\n  // Fetch and checkout the PR being checked.\n  git.run(['fetch', '-q', requestedPr.headRef.repository.url, requestedPr.headRef.name]);\n  git.run(['checkout', '-q', '-B', tempWorkingBranch, 'FETCH_HEAD']);\n\n  // Rebase the PR against the PRs target branch.\n  git.run(['fetch', '-q', requestedPr.baseRef.repository.url, requestedPr.baseRef.name]);\n  try {\n    git.run(['rebase', 'FETCH_HEAD'], {stdio: 'ignore'});\n  } catch (err) {\n    if (err instanceof GitCommandError) {\n      Log.error('The requested PR currently has conflicts');\n      git.checkout(previousBranchOrRevision, true);\n      process.exit(1);\n    }\n    throw err;\n  }\n\n  // Start the progress bar\n  progressBar.start(pendingPrs.length, 0);\n\n  // Check each PR to determine if it can merge cleanly into the repo after the target PR.\n  for (const pr of pendingPrs) {\n    // Fetch and checkout the next PR\n    git.run(['fetch', '-q', pr.headRef.repository.url, pr.headRef.name]);\n    git.run(['checkout', '-q', '--detach', 'FETCH_HEAD']);\n    // Check if the PR cleanly rebases into the repo after the target PR.\n    try {\n      git.run(['rebase', tempWorkingBranch], {stdio: 'ignore'});\n    } catch (err) {\n      if (err instanceof GitCommandError) {\n        conflicts.push(pr);\n      } else {\n        throw err;\n      }\n    }\n    // Abort any outstanding rebase attempt.\n    git.runGraceful(['rebase', '--abort'], {stdio: 'ignore'});\n\n    progressBar.increment(1);\n  }\n  // End the progress bar as all PRs have been processed.\n  progressBar.stop();\n  Log.info();\n  Log.info(`Result:`);\n\n  git.checkout(previousBranchOrRevision, true);\n\n  // If no conflicts are found, exit successfully.\n  if (conflicts.length === 0) {\n    Log.info(`No new conflicting PRs found after #${newPrNumber} merging`);\n    process.exit(0);\n  }\n\n  // Inform about discovered conflicts, exit with failure.\n  Log.error.group(`${conflicts.length} PR(s) which conflict(s) after #${newPrNumber} merges:`);\n  for (const pr of conflicts) {\n    Log.error(`  - #${pr.number}: ${pr.title}`);\n  }\n  Log.error.groupEnd();\n  process.exit(1);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  CheckConclusionState,\n  CheckStatusState,\n  MergeableState,\n  PullRequestState,\n  StatusState,\n  CommentAuthorAssociation,\n} from '@octokit/graphql-schema';\nimport {getPendingPrs, getPr, getPrFiles, getPrComments} from '../../utils/github.js';\nimport {alias, types as graphqlTypes, onUnion, optional, params} from 'typed-graphqlify';\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\n\n/** A status for a pull request status or check. */\nexport enum PullRequestStatus {\n  PASSING,\n  FAILING,\n  PENDING,\n}\n\n/** Graphql schema for the response body the requested pull request. */\nexport const PR_SCHEMA = {\n  url: graphqlTypes.string,\n  isDraft: graphqlTypes.boolean,\n  state: graphqlTypes.custom(),\n  number: graphqlTypes.number,\n  mergeable: graphqlTypes.custom(),\n  updatedAt: graphqlTypes.string,\n  // Along with the `commits` queried below, we always query the oldest commit in the PR and\n  // determine its parent SHA. This is the base SHA of a pull request. Note that this is different\n  // to the `baseRefOid` which is based on when the PR has been created and the attached base branch.\n  [alias('baseCommitInfo', 'commits')]: params(\n    {first: 1},\n    {nodes: [{commit: {parents: params({first: 1}, {nodes: [{oid: graphqlTypes.string}]})}}]},\n  ),\n  // Only the last 100 commits from a pull request are obtained as we likely will never see a pull\n  // requests with more than 100 commits.\n  commits: params(\n    {last: 100},\n    {\n      totalCount: graphqlTypes.number,\n      nodes: [\n        {\n          commit: {\n            oid: graphqlTypes.string,\n            authoredDate: graphqlTypes.string,\n            statusCheckRollup: optional({\n              state: graphqlTypes.custom(),\n              contexts: params(\n                {last: 100},\n                {\n                  nodes: [\n                    onUnion({\n                      CheckRun: {\n                        __typename: graphqlTypes.constant('CheckRun'),\n                        status: graphqlTypes.custom(),\n                        conclusion: graphqlTypes.custom(),\n                        name: graphqlTypes.string,\n                      },\n                      StatusContext: {\n                        __typename: graphqlTypes.constant('StatusContext'),\n                        state: graphqlTypes.custom(),\n                        context: graphqlTypes.string,\n                      },\n                    }),\n                  ],\n                },\n              ),\n            }),\n            message: graphqlTypes.string,\n          },\n        },\n      ],\n    },\n  ),\n  reviewRequests: {\n    totalCount: graphqlTypes.number,\n  },\n  reviews: params(\n    {last: 100, states: 'APPROVED'},\n    {\n      nodes: [\n        {\n          author: {\n            login: graphqlTypes.string,\n          },\n          authorAssociation: graphqlTypes.custom(),\n          bodyText: graphqlTypes.string,\n          commit: {\n            oid: graphqlTypes.string,\n          },\n        },\n      ],\n    },\n  ),\n  maintainerCanModify: graphqlTypes.boolean,\n  viewerDidAuthor: graphqlTypes.boolean,\n  headRefOid: graphqlTypes.string,\n  headRef: {\n    name: graphqlTypes.string,\n    repository: {\n      url: graphqlTypes.string,\n      nameWithOwner: graphqlTypes.string,\n    },\n  },\n  baseRef: {\n    name: graphqlTypes.string,\n    repository: {\n      url: graphqlTypes.string,\n      nameWithOwner: graphqlTypes.string,\n    },\n  },\n  baseRefName: graphqlTypes.string,\n  title: graphqlTypes.string,\n  labels: params(\n    {first: 100},\n    {\n      nodes: [\n        {\n          name: graphqlTypes.string,\n        },\n      ],\n    },\n  ),\n};\n\nexport type PullRequestFromGithub = typeof PR_SCHEMA;\n\nexport const PR_FILES_SCHEMA = params(\n  {first: 100},\n  {\n    path: graphqlTypes.string,\n  },\n);\n\nexport type PullRequestFilesFromGithub = typeof PR_FILES_SCHEMA;\n\nexport const PR_COMMENTS_SCHEMA = params(\n  {first: 100},\n  {\n    author: {\n      login: graphqlTypes.string,\n    },\n    authorAssociation: graphqlTypes.custom(),\n    bodyText: graphqlTypes.string,\n  },\n);\n\nexport type PullRequestCommentsFromGithub = typeof PR_COMMENTS_SCHEMA;\n\n/** Type describing the normalized and combined status of a pull request. */\nexport type PullRequestStatusInfo = {\n  combinedStatus: PullRequestStatus;\n  statuses: {\n    status: PullRequestStatus;\n    type: 'check' | 'status';\n    name: string;\n  }[];\n};\n\n/** Fetches a pull request from Github. Returns null if an error occurred. */\nexport async function fetchPullRequestFromGithub(\n  git: AuthenticatedGitClient,\n  prNumber: number,\n): Promise {\n  return await getPr(PR_SCHEMA, prNumber, git);\n}\n\n/** Fetches a pull request from Github. Returns null if an error occurred. */\nexport async function fetchPendingPullRequestsFromGithub(\n  git: AuthenticatedGitClient,\n): Promise {\n  return await getPendingPrs(PR_SCHEMA, git);\n}\n\n/** Fetches a pull request from Github. Returns null if an error occurred. */\nexport async function fetchPullRequestFilesFromGithub(\n  git: AuthenticatedGitClient,\n  prNumber: number,\n): Promise {\n  return await getPrFiles(PR_FILES_SCHEMA, prNumber, git);\n}\n\n/** Fetches a pull request from Github. Returns null if an error occurred. */\nexport async function fetchPullRequestCommentsFromGithub(\n  git: AuthenticatedGitClient,\n  prNumber: number,\n): Promise {\n  return await getPrComments(PR_COMMENTS_SCHEMA, prNumber, git);\n}\n\n/**\n * Gets the statuses for a commit from a pull request, using a consistent interface\n * for both status and checks results.\n */\nexport function getStatusesForPullRequest(\n  pullRequest: PullRequestFromGithub,\n): PullRequestStatusInfo {\n  const nodes = pullRequest.commits.nodes;\n  /** The combined github status and github checks object. */\n  const {statusCheckRollup} = nodes[nodes.length - 1].commit;\n\n  // If there is no status check rollup (i.e. no status nor checks), we\n  // consider the pull request status as failing.\n  if (!statusCheckRollup) {\n    return {\n      combinedStatus: PullRequestStatus.FAILING,\n      statuses: [],\n    };\n  }\n\n  const statuses = statusCheckRollup.contexts.nodes.map((context) => {\n    switch (context.__typename) {\n      case 'CheckRun':\n        return {\n          type: 'check' as const,\n          name: context.name,\n          status: normalizeGithubCheckState(context.conclusion, context.status),\n        };\n      case 'StatusContext':\n        return {\n          type: 'status' as const,\n          name: context.context,\n          status: normalizeGithubStatusState(context.state),\n        };\n    }\n  });\n\n  return {\n    combinedStatus: normalizeGithubStatusState(statusCheckRollup.state),\n    statuses,\n  };\n}\n\n/** Retrieve the normalized PullRequestStatus for the provided github status state. */\nfunction normalizeGithubStatusState(state: StatusState): PullRequestStatus {\n  switch (state) {\n    case 'FAILURE':\n    case 'ERROR':\n      return PullRequestStatus.FAILING;\n    case 'PENDING':\n      return PullRequestStatus.PENDING;\n    case 'SUCCESS':\n    case 'EXPECTED':\n      return PullRequestStatus.PASSING;\n  }\n}\n\n/** Retrieve the normalized PullRequestStatus for the provided github check state. */\nfunction normalizeGithubCheckState(\n  conclusion: CheckConclusionState | null,\n  status: CheckStatusState,\n): PullRequestStatus {\n  if (status !== 'COMPLETED') {\n    return PullRequestStatus.PENDING;\n  }\n\n  // If the `status` is completed, a conclusion is guaranteed to be set.\n  switch (conclusion!) {\n    case 'ACTION_REQUIRED':\n    case 'TIMED_OUT':\n    case 'CANCELLED':\n    case 'FAILURE':\n    case 'SKIPPED':\n    case 'STALE':\n    case 'STARTUP_FAILURE':\n      return PullRequestStatus.FAILING;\n    case 'SUCCESS':\n    case 'NEUTRAL':\n      return PullRequestStatus.PASSING;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {Log} from '../../utils/logging.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n\nimport {discoverNewConflictsForPr} from './index.js';\n\n/** The options available to the discover-new-conflicts command via CLI. */\nexport interface DiscoverNewConflictsOptions {\n  date: number;\n  pr: number;\n}\n\n/** Builds the discover-new-conflicts pull request command. */\nfunction builder(argv: Argv): Argv {\n  return addGithubTokenOption(argv)\n    .option('date', {\n      description: 'Only consider PRs updated since provided date',\n      defaultDescription: '30 days ago',\n      coerce: (date) => (typeof date === 'number' ? date : Date.parse(date)),\n      default: getThirtyDaysAgoDate(),\n    })\n    .positional('pr', {demandOption: true, type: 'number'});\n}\n\n/** Handles the discover-new-conflicts pull request command. */\nasync function handler({pr, date}: Arguments) {\n  // If a provided date is not able to be parsed, yargs provides it as NaN.\n  if (isNaN(date)) {\n    Log.error('Unable to parse the value provided via --date flag');\n    process.exit(1);\n  }\n  await discoverNewConflictsForPr(pr, date);\n}\n\n/** Gets a date object 30 days ago from today. */\nfunction getThirtyDaysAgoDate() {\n  const date = new Date();\n  // Set the hours, minutes and seconds to 0 to only consider date.\n  date.setHours(0, 0, 0, 0);\n  // Set the date to 30 days in the past.\n  date.setDate(date.getDate() - 30);\n  return date.getTime();\n}\n\n/** yargs command module for discovering new conflicts for a PR  */\nexport const DiscoverNewConflictsCommandModule: CommandModule<{}, DiscoverNewConflictsOptions> = {\n  handler,\n  builder,\n  command: 'discover-new-conflicts ',\n  describe: 'Check if a pending PR causes new conflicts for other pending PRs',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {red, bold} from '../../utils/logging.js';\n\nimport {PullRequest} from './pull-request.js';\n\nexport function getCaretakerNotePromptMessage(pullRequest: PullRequest): string {\n  return (\n    red('Pull request has a caretaker note applied. Please make sure you read it.') +\n    `\\nQuick link to PR: ${pullRequest.url}\\nDo you want to proceed merging?`\n  );\n}\n\nexport function getTargetedBranchesConfirmationPromptMessage(): string {\n  return `Do you want to proceed merging?`;\n}\n\nexport function getTargetedBranchesMessage(pullRequest: PullRequest): string {\n  const targetBranchListAsString = pullRequest.targetBranches\n    .map((b) => `  - ${bold(b)}`)\n    .join('\\n');\n  return `Pull Request #${pullRequest.prNumber} will merge into:\\n${targetBranchListAsString}`;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Error class that indicates a fatal merge tool error that cannot be ignored. */\nexport class FatalMergeToolError extends Error {\n  constructor(message: string) {\n    super(message);\n  }\n}\n\nexport class UserAbortedMergeToolError extends FatalMergeToolError {\n  constructor() {\n    super('Tool exited due to user aborting merge attempt.');\n  }\n}\n\nexport class MismatchedTargetBranchFatalError extends FatalMergeToolError {\n  constructor(allowedBranches: string[]) {\n    super(\n      `Pull request is set to wrong base branch. Please update the PR in the Github UI ` +\n        `to one of the following branches: ${allowedBranches.join(', ')}.`,\n    );\n  }\n}\n\nexport class UnsatisfiedBaseShaFatalError extends FatalMergeToolError {\n  constructor() {\n    super(\n      `Pull request has not been rebased recently and could be bypassing CI checks. ` +\n        `Please rebase the PR.`,\n    );\n  }\n}\n\nexport class MergeConflictsFatalError extends FatalMergeToolError {\n  constructor(public failedBranches: string[]) {\n    super(\n      `Cannot not merge pull request into the following branches due to merge ` +\n        `conflicts: ${failedBranches.join(', ')}. Please rebase the PR or update the target label.`,\n    );\n  }\n}\n\nexport class PullRequestValidationError extends FatalMergeToolError {\n  constructor() {\n    super('Tool exited as at least one pull request validation error was discovered.');\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestValidationConfig} from '../../config/index.js';\n\n/** Class that can be used to describe pull request validation failures. */\nexport class PullRequestValidationFailure {\n  constructor(\n    /** Human-readable message for the failure */\n    public readonly message: string,\n    /** Validation config name for the failure. */\n    public readonly validationName: keyof PullRequestValidationConfig,\n    /** Validation config name for the failure. */\n    public readonly canBeForceIgnored: boolean,\n  ) {}\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestValidationConfig} from '../../config/index.js';\nimport {PullRequestValidationFailure} from './validation-failure.js';\n\n/**\n * Pull request validation configuration controlling which assertions\n * should run or not. This enables the forcibly non-fatal ignore feature.\n */\nconst defaultConfig: PullRequestValidationConfig = {\n  assertPending: true,\n  assertMergeReady: true,\n  assertSignedCla: true,\n  assertChangesAllowForTargetLabel: true,\n  assertPassingCi: true,\n  assertCompletedReviews: true,\n  assertEnforcedStatuses: true,\n  assertMinimumReviews: true,\n  assertIsolatedSeparateFiles: false,\n  assertEnforceTested: false,\n};\n\nexport function createPullRequestValidationConfig(\n  config: PullRequestValidationConfig,\n): PullRequestValidationConfig {\n  return {...defaultConfig, ...config};\n}\n\n/** Type describing a helper function for validations to create a validation failure. */\nexport type PullRequestValidationErrorCreateFn = (message: string) => PullRequestValidationFailure;\n\n/**\n * Base class for pull request validations, providing helpers for the validation errors,\n * and a consistent interface for checking the activation state of validations\n */\nexport abstract class PullRequestValidation {\n  constructor(\n    protected name: keyof PullRequestValidationConfig,\n    protected _createError: PullRequestValidationErrorCreateFn,\n  ) {}\n\n  /** Assertion function to be defined for the specific validator. */\n  abstract assert(...parameters: unknown[]): void | Promise;\n}\n\n/** Creates a pull request validation from a configuration and implementation class. */\nexport function createPullRequestValidation(\n  {name, canBeForceIgnored}: {name: keyof PullRequestValidationConfig; canBeForceIgnored: boolean},\n  getValidationCtor: () => new (...args: ConstructorParameters) => T,\n) {\n  return {\n    async run(\n      validationConfig: PullRequestValidationConfig,\n      ...args: Parameters\n    ): Promise {\n      if (validationConfig[name]) {\n        const validation = new (getValidationCtor())(\n          name,\n          (message) => new PullRequestValidationFailure(message, name, canBeForceIgnored),\n        );\n        try {\n          await validation.assert(...args);\n        } catch (e) {\n          if (e instanceof PullRequestValidationFailure) {\n            return e;\n          }\n          throw e;\n        }\n      }\n      return null;\n    },\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Commit} from '../../../commit-message/parse.js';\nimport {ActiveReleaseTrains} from '../../../release/versioning/active-release-trains.js';\nimport {Log, red} from '../../../utils/logging.js';\nimport {PullRequestConfig} from '../../config/index.js';\nimport {mergeLabels} from '../labels/index.js';\nimport {TargetLabel, targetLabels} from '../labels/target.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the commits provided are allowed to merge to the provided target label. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const changesAllowForTargetLabelValidation = createPullRequestValidation(\n  {name: 'assertChangesAllowForTargetLabel', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(\n    commits: Commit[],\n    targetLabel: TargetLabel,\n    config: PullRequestConfig,\n    releaseTrains: ActiveReleaseTrains,\n    labelsOnPullRequest: string[],\n  ) {\n    if (labelsOnPullRequest.includes(mergeLabels.MERGE_FIX_COMMIT_MESSAGE.name)) {\n      Log.debug(\n        'Skipping commit message target label validation because the commit message fixup label is ' +\n          'applied.',\n      );\n      return;\n    }\n\n    // List of commit scopes which are exempted from target label content requirements. i.e. no `feat`\n    // scopes in patch branches, no breaking changes in minor or patch changes.\n    const exemptedScopes = config.targetLabelExemptScopes || [];\n    // List of commits which are subject to content requirements for the target label.\n    commits = commits.filter((commit) => !exemptedScopes.includes(commit.scope));\n    const hasBreakingChanges = commits.some((commit) => commit.breakingChanges.length !== 0);\n    const hasDeprecations = commits.some((commit) => commit.deprecations.length !== 0);\n    const hasFeatureCommits = commits.some((commit) => commit.type === 'feat');\n    switch (targetLabel) {\n      case targetLabels.TARGET_MAJOR:\n        break;\n      case targetLabels.TARGET_MINOR:\n        if (hasBreakingChanges) {\n          throw this._createHasBreakingChangesError(targetLabel);\n        }\n        break;\n      case targetLabels.TARGET_RC:\n      case targetLabels.TARGET_LTS:\n      case targetLabels.TARGET_PATCH:\n        if (hasBreakingChanges) {\n          throw this._createHasBreakingChangesError(targetLabel);\n        }\n        if (hasFeatureCommits) {\n          throw this._createHasFeatureCommitsError(targetLabel);\n        }\n        // Deprecations should not be merged into RC, patch or LTS branches.\n        // https://semver.org/#spec-item-7. Deprecations should be part of\n        // minor releases, or major releases according to SemVer.\n        if (hasDeprecations && !releaseTrains.isFeatureFreeze()) {\n          throw this._createHasDeprecationsError(targetLabel);\n        }\n        break;\n      default:\n        Log.warn(red('WARNING: Unable to confirm all commits in the pull request are'));\n        Log.warn(red(`eligible to be merged into the target branches for: ${targetLabel.name}`));\n        break;\n    }\n  }\n\n  private _createHasBreakingChangesError(label: TargetLabel) {\n    const message =\n      `Cannot merge into branch for \"${label.name}\" as the pull request has ` +\n      `breaking changes. Breaking changes can only be merged with the \"target: major\" label.`;\n    return this._createError(message);\n  }\n\n  private _createHasDeprecationsError(label: TargetLabel) {\n    const message =\n      `Cannot merge into branch for \"${label.name}\" as the pull request ` +\n      `contains deprecations. Deprecations can only be merged with the \"target: minor\" or ` +\n      `\"target: major\" label.`;\n    return this._createError(message);\n  }\n\n  private _createHasFeatureCommitsError(label: TargetLabel) {\n    const message =\n      `Cannot merge into branch for \"${label.name}\" as the pull request has ` +\n      'commits with the \"feat\" type. New features can only be merged with the \"target: minor\" ' +\n      'or \"target: major\" label.';\n    return this._createError(message);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Commit} from '../../../commit-message/parse.js';\nimport {managedLabels} from '../labels/index.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request is properly denoted if it contains breaking changes. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const breakingChangeInfoValidation = createPullRequestValidation(\n  {name: 'assertPending', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(commits: Commit[], labels: string[]) {\n    // Whether the PR has a label noting a breaking change.\n    const hasLabel = labels.includes(managedLabels.DETECTED_BREAKING_CHANGE.name);\n    // Whether the PR has at least one commit which notes a breaking change.\n    const hasCommit = commits.some((commit) => commit.breakingChanges.length !== 0);\n\n    if (!hasLabel && hasCommit) {\n      throw this._createMissingBreakingChangeLabelError();\n    }\n\n    if (hasLabel && !hasCommit) {\n      throw this._createMissingBreakingChangeCommitError();\n    }\n  }\n\n  private _createMissingBreakingChangeLabelError() {\n    const message =\n      `Pull Request has at least one commit containing a breaking change note, ` +\n      `but does not have a breaking change label. Make sure to apply the ` +\n      `following label: ${managedLabels.DETECTED_BREAKING_CHANGE.name}`;\n    return this._createError(message);\n  }\n\n  private _createMissingBreakingChangeCommitError() {\n    const message =\n      'Pull Request has a breaking change label, but does not contain any commits with ' +\n      'breaking change notes (i.e. commits do not have a `BREAKING CHANGE: <..>` section).';\n    return this._createError(message);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has completed all requested reviews. */\nexport const completedReviewsValidation = createPullRequestValidation(\n  {name: 'assertCompletedReviews', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    const totalCount = pullRequest.reviewRequests.totalCount;\n    if (totalCount !== 0) {\n      throw this._createError(\n        `Pull request cannot be merged with pending reviews, it current has ${totalCount} pending review(s)`,\n      );\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Minimatch} from 'minimatch';\nimport path from 'path';\nimport {\n  CaretakerConfig,\n  GithubConfig,\n  GoogleSyncConfig,\n  NgDevConfig,\n  assertValidCaretakerConfig,\n} from '../../../utils/config.js';\nimport {SyncFileMatchFn, getGoogleSyncConfig} from '../../../utils/g3-sync-config.js';\nimport {G3StatsData, G3Stats} from '../../../utils/g3.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\nimport {fetchPullRequestFilesFromGithub} from '../fetch-pull-request.js';\n\n/** Assert the pull request has passing enforced statuses. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const isolatedSeparateFilesValidation = createPullRequestValidation(\n  {name: 'assertIsolatedSeparateFiles', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  async assert(\n    config: NgDevConfig<{\n      github: GithubConfig;\n    }>,\n    prNumber: number,\n    gitClient: AuthenticatedGitClient,\n  ) {\n    try {\n      assertValidCaretakerConfig(config);\n    } catch {\n      throw this._createError('No Caretaker Config was found.');\n    }\n\n    const g3SyncConfigWithMatchers = await getGsyncConfig(config.caretaker, gitClient);\n    if (g3SyncConfigWithMatchers === null) {\n      return;\n    }\n\n    // diffStats tells you what's already been merged in github, but hasn't yet been synced to G3\n    const diffStats = await getDiffStats(config, g3SyncConfigWithMatchers.config, gitClient);\n    if (diffStats === undefined) {\n      return;\n    }\n\n    const hasSeparateSyncFiles = await PullRequestFiles.create(\n      gitClient,\n      prNumber,\n      g3SyncConfigWithMatchers.config,\n    ).pullRequestHasSeparateFiles();\n\n    // This validation applies to PRs that get merged when changes have not yet been synced into G3.\n    // The rules are as follows:\n    //   1. if pure framework changes have been merged, separate file changes should not be merged.\n    //   2. if separate file changes have been merged, pure framework changes should not be merged.\n    //   3. if separate file changes have been merged, any change merged MUST have separate file changes in it.\n    //   4. framework changes can be merged with separate file changes as long as that change ALSO\n    //       has separate file changes also.\n\n    // covers 2 & 3\n    if (diffStats.separateFiles > 0 && !hasSeparateSyncFiles) {\n      throw this._createError(\n        `This PR cannot be merged as Shared Primitives code has already been merged. ` +\n          `Primitives and Framework code must be merged and synced separately. Try again after a g3sync has finished.`,\n      );\n    }\n\n    // covers 1 & 4\n    if (diffStats.files > 0 && diffStats.separateFiles === 0 && hasSeparateSyncFiles) {\n      throw this._createError(\n        `This PR cannot be merged as Angular framework code has already been merged. ` +\n          `Primitives and Framework code must be merged and synced separately. Try again after a g3sync has finished.`,\n      );\n    }\n  }\n}\n\nasync function getGsyncConfig(\n  config: CaretakerConfig,\n  git: AuthenticatedGitClient,\n): Promise<{\n  ngMatchFn: SyncFileMatchFn;\n  separateMatchFn: SyncFileMatchFn;\n  config: GoogleSyncConfig;\n} | null> {\n  let googleSyncConfig = null;\n  if (config.g3SyncConfigPath) {\n    try {\n      const configPath = path.join(git.baseDir, config.g3SyncConfigPath);\n      googleSyncConfig = await getGoogleSyncConfig(configPath);\n    } catch {}\n  }\n  return googleSyncConfig;\n}\n\nexport class PullRequestFiles {\n  constructor(\n    private git: AuthenticatedGitClient,\n    private prNumber: number,\n    private config: GoogleSyncConfig,\n  ) {}\n  /**\n   * Loads the files from a given pull request.\n   */\n  async loadPullRequestFiles(): Promise {\n    const files = await fetchPullRequestFilesFromGithub(this.git, this.prNumber);\n    return files?.map((x) => x.path) ?? [];\n  }\n\n  /**\n   * checks for separate files against the pull request files\n   */\n  async pullRequestHasSeparateFiles(): Promise {\n    const pullRequestFiles = await this.loadPullRequestFiles();\n    const separateFilePatterns = this.config.separateFilePatterns.map((p) => new Minimatch(p));\n    for (let path of pullRequestFiles) {\n      if (separateFilePatterns.some((p) => p.match(path))) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  static create(git: AuthenticatedGitClient, prNumber: number, config: GoogleSyncConfig) {\n    return new PullRequestFiles(git, prNumber, config);\n  }\n}\n\nasync function getDiffStats(\n  ngDevConfig: NgDevConfig<{\n    github: GithubConfig;\n    caretaker: CaretakerConfig;\n  }>,\n  googleSyncConfig: GoogleSyncConfig,\n  git: AuthenticatedGitClient,\n): Promise {\n  if (googleSyncConfig && googleSyncConfig.separateFilePatterns.length > 0) {\n    return G3Stats.retrieveDiffStats(git, {\n      caretaker: ngDevConfig.caretaker,\n      github: ngDevConfig.github,\n    });\n  }\n  return;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestConfig} from '../../config/index.js';\nimport {getStatusesForPullRequest, PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has passing enforced statuses. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const enforcedStatusesValidation = createPullRequestValidation(\n  {name: 'assertEnforcedStatuses', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub, config: PullRequestConfig) {\n    if (config.requiredStatuses === undefined) {\n      return;\n    }\n\n    const {statuses} = getStatusesForPullRequest(pullRequest);\n    const missing: string[] = [];\n\n    for (const enforced of config.requiredStatuses) {\n      if (!statuses.some((s) => s.name === enforced.name && s.type === enforced.type)) {\n        missing.push(enforced.name);\n      }\n    }\n\n    if (missing.length > 0) {\n      throw this._createError(\n        `Required statuses are missing on the pull request (${missing.join(', ')}).`,\n      );\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport githubMacros from '../../../utils/git/github-macros.js';\nimport {\n  fetchPullRequestCommentsFromGithub,\n  PullRequestFromGithub,\n  PullRequestCommentsFromGithub,\n} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\nimport {requiresLabels} from '../labels/index.js';\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\n\n/** Assert the pull request has passing enforced statuses. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const enforceTestedValidation = createPullRequestValidation(\n  {name: 'assertEnforceTested', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  async assert(pullRequest: PullRequestFromGithub, gitClient: AuthenticatedGitClient) {\n    if (!pullRequestRequiresTGP(pullRequest)) {\n      return;\n    }\n\n    const comments = await PullRequestComments.create(\n      gitClient,\n      pullRequest.number,\n    ).loadPullRequestComments();\n\n    if (await pullRequestHasValidTestedComment(comments, gitClient)) {\n      return;\n    }\n\n    // TODO(jessicajaniuk): Add the actual validation that a TGP has been run.\n\n    throw this._createError(\n      `Pull Request requires a TGP and does not have one. Either run a TGP or specify the PR is fully tested by adding a comment with \"TESTED=[reason]\".`,\n    );\n  }\n}\n\n/**\n * Checks the list of labels for the `requires: TGP` label\n */\nfunction pullRequestRequiresTGP(pullRequest: PullRequestFromGithub): boolean {\n  return pullRequest.labels.nodes.some(({name}) => name === requiresLabels.REQUIRES_TGP.name);\n}\n\nexport class PullRequestComments {\n  constructor(\n    private git: AuthenticatedGitClient,\n    private prNumber: number,\n  ) {}\n  /**\n   * Loads the files from a given pull request.\n   */\n  async loadPullRequestComments(): Promise {\n    return (await fetchPullRequestCommentsFromGithub(this.git, this.prNumber)) ?? [];\n  }\n\n  static create(git: AuthenticatedGitClient, prNumber: number) {\n    return new PullRequestComments(git, prNumber);\n  }\n}\n\n/**\n * Checks for `TESTED=[reason]` comment on a current commit sha from a google organization member\n */\nexport async function pullRequestHasValidTestedComment(\n  comments: PullRequestCommentsFromGithub[],\n  gitClient: AuthenticatedGitClient,\n): Promise {\n  for (const {bodyText, author} of comments) {\n    if (\n      bodyText.startsWith(`TESTED=`) &&\n      (await githubMacros.isGooglerOrgMember(gitClient.github, author.login))\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {actionLabels} from '../labels/index.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request is merge ready. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const mergeReadyValidation = createPullRequestValidation(\n  {name: 'assertMergeReady', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    if (!pullRequest.labels.nodes.some(({name}) => name === actionLabels.ACTION_MERGE.name)) {\n      throw this._createError('Pull request is not marked as merge ready.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has completed all requested reviews. */\nexport const minimumReviewsValidation = createPullRequestValidation(\n  {name: 'assertMinimumReviews', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    const totalCount = pullRequest.reviews.nodes.filter(\n      ({authorAssociation}) => authorAssociation === 'MEMBER',\n    ).length;\n    if (totalCount === 0) {\n      throw this._createError(\n        `Pull request cannot be merged without at least one review from a team member`,\n      );\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  getStatusesForPullRequest,\n  PullRequestFromGithub,\n  PullRequestStatus,\n} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has a passing combined CI status. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const passingCiValidation = createPullRequestValidation(\n  {name: 'assertPassingCi', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    const {combinedStatus, statuses} = getStatusesForPullRequest(pullRequest);\n\n    // TODO(josephperrott): Find a way to not need to do this kind of detection.\n    // Because its not possible to determine if workflow is pending approval or if all checks and\n    // statuses have run, we use the `CI / lint (pull_request)` as a marker for if the expected\n    // checks have run already.  If they have not yet run, we mark the combined status as missing.\n    if (statuses.find((status) => status.name === 'lint') === undefined) {\n      throw this._createError(\n        'Pull request is missing expected status checks. Check the pull request for pending workflows',\n      );\n    }\n    if (combinedStatus === PullRequestStatus.PENDING) {\n      throw this._createError('Pull request has pending status checks.');\n    }\n    if (combinedStatus === PullRequestStatus.FAILING) {\n      throw this._createError('Pull request has failing status checks.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request is pending, not closed, merged or in draft. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const pendingStateValidation = createPullRequestValidation(\n  {name: 'assertPending', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    if (pullRequest.isDraft) {\n      throw this._createError('Pull request is still a draft.');\n    }\n    switch (pullRequest.state) {\n      case 'CLOSED':\n        throw this._createError('Pull request is already closed.');\n      case 'MERGED':\n        throw this._createError('Pull request is already merged.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  getStatusesForPullRequest,\n  PullRequestFromGithub,\n  PullRequestStatus,\n} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has a signed CLA. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const signedClaValidation = createPullRequestValidation(\n  // CLA check can be force-ignored but the caretaker needs to make sure\n  // the target pull requests has a signed CLA or is authored by another Googler.\n  {name: 'assertSignedCla', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    const passing = getStatusesForPullRequest(pullRequest).statuses.some(({name, status}) => {\n      return name === 'cla/google' && status === PullRequestStatus.PASSING;\n    });\n\n    if (!passing) {\n      throw this._createError('CLA is not signed by the contributor.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {parseCommitMessage} from '../../../commit-message/parse.js';\nimport {ActiveReleaseTrains} from '../../../release/versioning/active-release-trains.js';\nimport {NgDevConfig, GithubConfig} from '../../../utils/config.js';\nimport {PullRequestConfig, PullRequestValidationConfig} from '../../config/index.js';\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {PullRequestTarget} from '../targeting/target-label.js';\nimport {changesAllowForTargetLabelValidation} from './assert-allowed-target-label.js';\nimport {breakingChangeInfoValidation} from './assert-breaking-change-info.js';\nimport {completedReviewsValidation} from './assert-completed-reviews.js';\nimport {isolatedSeparateFilesValidation} from './assert-isolated-separate-files.js';\nimport {enforcedStatusesValidation} from './assert-enforced-statuses.js';\nimport {enforceTestedValidation} from './assert-enforce-tested.js';\nimport {mergeReadyValidation} from './assert-merge-ready.js';\nimport {minimumReviewsValidation} from './assert-minimum-reviews.js';\nimport {passingCiValidation} from './assert-passing-ci.js';\nimport {pendingStateValidation} from './assert-pending.js';\nimport {signedClaValidation} from './assert-signed-cla.js';\nimport {PullRequestValidationFailure} from './validation-failure.js';\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\n\n/**\n * Runs all valiations that the given pull request is valid, returning a list of all failing\n * validations.\n *\n * Active release trains may be available for additional checks or not.\n */\nexport async function assertValidPullRequest(\n  pullRequest: PullRequestFromGithub,\n  validationConfig: PullRequestValidationConfig,\n  ngDevConfig: NgDevConfig<{\n    pullRequest: PullRequestConfig;\n    github: GithubConfig;\n  }>,\n  activeReleaseTrains: ActiveReleaseTrains | null,\n  target: PullRequestTarget,\n  gitClient: AuthenticatedGitClient,\n): Promise {\n  const labels = pullRequest.labels.nodes.map((l) => l.name);\n  const commitsInPr = pullRequest.commits.nodes.map((n) => {\n    return parseCommitMessage(n.commit.message);\n  });\n\n  const validationResults = [\n    minimumReviewsValidation.run(validationConfig, pullRequest),\n    completedReviewsValidation.run(validationConfig, pullRequest),\n    mergeReadyValidation.run(validationConfig, pullRequest),\n    signedClaValidation.run(validationConfig, pullRequest),\n    pendingStateValidation.run(validationConfig, pullRequest),\n    breakingChangeInfoValidation.run(validationConfig, commitsInPr, labels),\n    passingCiValidation.run(validationConfig, pullRequest),\n    enforcedStatusesValidation.run(validationConfig, pullRequest, ngDevConfig.pullRequest),\n    isolatedSeparateFilesValidation.run(\n      validationConfig,\n      ngDevConfig,\n      pullRequest.number,\n      gitClient,\n    ),\n    enforceTestedValidation.run(validationConfig, pullRequest, gitClient),\n  ];\n\n  if (activeReleaseTrains !== null) {\n    validationResults.push(\n      changesAllowForTargetLabelValidation.run(\n        validationConfig,\n        commitsInPr,\n        target.label,\n        ngDevConfig.pullRequest,\n        activeReleaseTrains,\n        labels,\n      ),\n    );\n  }\n\n  return await Promise.all(validationResults).then((results) => {\n    return results.filter(\n      <(result: null | PullRequestValidationFailure) => result is PullRequestValidationFailure>(\n        ((result) => result !== null)\n      ),\n    );\n  });\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\nimport {\n  FatalMergeToolError,\n  MergeConflictsFatalError,\n  MismatchedTargetBranchFatalError,\n  UnsatisfiedBaseShaFatalError,\n} from '../failures.js';\nimport {PullRequest} from '../pull-request.js';\n\n/**\n * Name of a temporary branch that contains the head of a currently-processed PR. Note\n * that a branch name should be used that most likely does not conflict with other local\n * development branches.\n */\nexport const TEMP_PR_HEAD_BRANCH = 'merge_pr_head';\n\n/**\n * Base class for merge strategies. A merge strategy accepts a pull request and\n * merges it into the determined target branches.\n */\nexport abstract class MergeStrategy {\n  constructor(protected git: AuthenticatedGitClient) {}\n\n  /**\n   * Prepares a merge of the given pull request. The strategy by default will\n   * fetch all target branches and the pull request into local temporary branches.\n   */\n  async prepare(pullRequest: PullRequest) {\n    this.fetchTargetBranches(\n      pullRequest.targetBranches,\n      `pull/${pullRequest.prNumber}/head:${TEMP_PR_HEAD_BRANCH}`,\n    );\n  }\n\n  /**\n   * Performs the merge of the given pull request. This needs to be implemented\n   * by individual merge strategies.\n   *\n   * @throws {FatalMergeToolError} A fatal error has occurred when attempting to merge the\n   *   pull request.\n   */\n  abstract merge(pullRequest: PullRequest): Promise;\n\n  /**\n   * Checks to confirm that a pull request in its current state is able to merge as expected to\n   * the targeted branches. This method notably does not commit any attempted cherry-picks during\n   * its check, but instead leaves this to the merging action.\n   *\n   * @throws {GitCommandError} An unknown Git command error occurred that is not\n   *   specific to the pull request merge.\n   * @throws {UnsatisfiedBaseShaFatalError} A fatal error if a specific is required to be present\n   *   in the pull requests branch and is not present in that branch.\n   * @throws {MismatchedTargetBranchFatalError} A fatal error if the pull request does not target\n   *   a branch via the Github UI that is managed by merge tooling.\n   */\n  async check(pullRequest: PullRequest): Promise {\n    const {githubTargetBranch, targetBranches, requiredBaseSha} = pullRequest;\n    // If the pull request does not have its base branch set to any determined target\n    // branch, we cannot merge using the API.\n    if (targetBranches.every((t) => t !== githubTargetBranch)) {\n      throw new MismatchedTargetBranchFatalError(targetBranches);\n    }\n\n    // In cases where a required base commit is specified for this pull request, check if\n    // the pull request contains the given commit. If not, return a pull request failure.\n    // This check is useful for enforcing that PRs are rebased on top of a given commit.\n    // e.g. a commit that changes the code ownership validation. PRs which are not rebased\n    // could bypass new codeowner ship rules.\n    if (requiredBaseSha && !this.git.hasCommit(TEMP_PR_HEAD_BRANCH, requiredBaseSha)) {\n      throw new UnsatisfiedBaseShaFatalError();\n    }\n\n    // First cherry-pick the PR into all local target branches in dry-run mode. This is\n    // purely for testing so that we can figure out whether the PR can be cherry-picked\n    // into the other target branches. We don't want to merge the PR through the API, and\n    // then run into cherry-pick conflicts after the initial merge already completed.\n    await this._assertMergeableOrThrow(pullRequest, targetBranches);\n  }\n\n  /** Cleans up the pull request merge. e.g. deleting temporary local branches. */\n  async cleanup(pullRequest: PullRequest) {\n    // Delete all temporary target branches.\n    pullRequest.targetBranches.forEach((branchName) =>\n      this.git.run(['branch', '-D', this.getLocalTargetBranchName(branchName)]),\n    );\n\n    // Delete temporary branch for the pull request head.\n    this.git.run(['branch', '-D', TEMP_PR_HEAD_BRANCH]);\n  }\n\n  /** Gets a deterministic local branch name for a given branch. */\n  protected getLocalTargetBranchName(targetBranch: string): string {\n    return `merge_pr_target_${targetBranch.replace(/\\//g, '_')}`;\n  }\n\n  /**\n   * Cherry-picks the given revision range into the specified target branches.\n   * @returns A list of branches for which the revisions could not be cherry-picked into.\n   */\n  protected cherryPickIntoTargetBranches(\n    revisionRange: string,\n    targetBranches: string[],\n    options: {\n      dryRun?: boolean;\n      linkToOriginalCommits?: boolean;\n    } = {},\n  ) {\n    const cherryPickArgs = [revisionRange];\n    const failedBranches: string[] = [];\n\n    const revisionCountOutput = this.git.run(['rev-list', '--count', revisionRange]);\n    const revisionCount = Number(revisionCountOutput.stdout.trim());\n    if (isNaN(revisionCount)) {\n      throw new FatalMergeToolError(\n        'Unexpected revision range for cherry-picking. No commit count could be determined.',\n      );\n    }\n\n    if (options.linkToOriginalCommits) {\n      // We add `-x` when cherry-picking as that will allow us to easily jump to original\n      // commits for cherry-picked commits. With that flag set, Git will automatically append\n      // the original SHA/revision to the commit message. e.g. `(cherry picked from commit <..>)`.\n      // https://git-scm.com/docs/git-cherry-pick#Documentation/git-cherry-pick.txt--x.\n      cherryPickArgs.push('-x');\n    }\n\n    // Cherry-pick the refspec into all determined target branches.\n    for (const branchName of targetBranches) {\n      const localTargetBranch = this.getLocalTargetBranchName(branchName);\n      // Checkout the local target branch.\n      this.git.run(['checkout', localTargetBranch]);\n      // Cherry-pick the refspec into the target branch.\n      const cherryPickResult = this.git.runGraceful(['cherry-pick', ...cherryPickArgs]);\n      if (cherryPickResult.status !== 0) {\n        // Abort the failed cherry-pick. We do this because Git persists the failed\n        // cherry-pick state globally in the repository. This could prevent future\n        // pull request merges as a Git thinks a cherry-pick is still in progress.\n        this.git.runGraceful(['cherry-pick', '--abort']);\n        failedBranches.push(branchName);\n      }\n      // If we run with dry run mode, we reset the local target branch so that all dry-run\n      // cherry-pick changes are discard. Changes are applied to the working tree and index.\n      if (options.dryRun) {\n        this.git.run(['reset', '--hard', `HEAD~${revisionCount}`]);\n      }\n    }\n    return failedBranches;\n  }\n\n  /**\n   * Fetches the given target branches. Also accepts a list of additional refspecs that\n   * should be fetched. This is helpful as multiple slow fetches could be avoided.\n   */\n  protected fetchTargetBranches(names: string[], ...extraRefspecs: string[]) {\n    const fetchRefspecs = names.map((targetBranch) => {\n      const localTargetBranch = this.getLocalTargetBranchName(targetBranch);\n      return `refs/heads/${targetBranch}:${localTargetBranch}`;\n    });\n    // Fetch all target branches with a single command. We don't want to fetch them\n    // individually as that could cause an unnecessary slow-down.\n    this.git.run([\n      'fetch',\n      '-q',\n      '-f',\n      this.git.getRepoGitUrl(),\n      ...fetchRefspecs,\n      ...extraRefspecs,\n    ]);\n  }\n\n  /** Pushes the given target branches upstream. */\n  protected pushTargetBranchesUpstream(names: string[]) {\n    const pushRefspecs = names.map((targetBranch) => {\n      const localTargetBranch = this.getLocalTargetBranchName(targetBranch);\n      return `${localTargetBranch}:refs/heads/${targetBranch}`;\n    });\n    // Push all target branches with a single command if we don't run in dry-run mode.\n    // We don't want to push them individually as that could cause an unnecessary slow-down.\n    this.git.run(['push', '--atomic', this.git.getRepoGitUrl(), ...pushRefspecs]);\n  }\n\n  /** Asserts that given pull request could be merged into the given target branches. */\n  protected async _assertMergeableOrThrow(\n    {revisionRange}: PullRequest,\n    targetBranches: string[],\n  ): Promise {\n    const failedBranches = this.cherryPickIntoTargetBranches(revisionRange, targetBranches, {\n      dryRun: true,\n    });\n\n    if (failedBranches.length) {\n      throw new MergeConflictsFatalError(failedBranches);\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  getTargetBranchesAndLabelForPullRequest,\n  PullRequestTarget,\n} from '../common/targeting/target-label.js';\nimport {fetchPullRequestFromGithub} from '../common/fetch-pull-request.js';\nimport {FatalMergeToolError} from './failures.js';\nimport {ActiveReleaseTrains} from '../../release/versioning/active-release-trains.js';\nimport {assertValidPullRequest} from '../common/validation/validate-pull-request.js';\nimport {TEMP_PR_HEAD_BRANCH} from './strategies/strategy.js';\nimport {mergeLabels} from '../common/labels/merge.js';\nimport {PullRequestValidationFailure} from '../common/validation/validation-failure.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {GithubConfig, NgDevConfig, CaretakerConfig, GoogleSyncConfig} from '../../utils/config.js';\nimport {PullRequestConfig, PullRequestValidationConfig} from '../config/index.js';\nimport {targetLabels} from '../common/labels/target.js';\n\n/** Interface that describes a pull request. */\nexport interface PullRequest {\n  /** URL to the pull request. */\n  url: string;\n  /** Number of the pull request. */\n  prNumber: number;\n  /** Title of the pull request. */\n  title: string;\n  /** Labels applied to the pull request. */\n  labels: string[];\n  /** List of branches this PR should be merged into. */\n  targetBranches: string[];\n  /** Branch that the PR targets in the Github UI. */\n  githubTargetBranch: string;\n  /** Count of commits in this pull request. */\n  commitCount: number;\n  /** Optional SHA that this pull request needs to be based on. */\n  requiredBaseSha?: string;\n  /** Whether the pull request commit message fixup. */\n  needsCommitMessageFixup: boolean;\n  /** Whether the pull request has a caretaker note. */\n  hasCaretakerNote: boolean;\n  /** The SHA for the first commit the pull request is based on. */\n  baseSha: string;\n  /** Git revision range that matches the pull request commits. */\n  revisionRange: string;\n  /** A list of validation failures found for the pull request, empty if no failures are discovered. */\n  validationFailures: PullRequestValidationFailure[];\n  /** The SHA for the latest commit in the pull request. */\n  headSha: string;\n}\n\n/**\n * Loads and validates the specified pull request against the given configuration.\n * If the pull requests fails, a pull request failure is returned.\n *\n * @throws {FatalMergeToolError} A fatal error might be thrown when e.g. the pull request\n *   does not exist upstream.\n * @throws {InvalidTargetLabelError} Error thrown if an invalid target label is applied.\n * @throws {InvalidTargetBranchError} Error thrown if an invalid GitHub PR destination branch\n *   is selected.\n */\nexport async function loadAndValidatePullRequest(\n  {\n    git,\n    config,\n  }: {\n    git: AuthenticatedGitClient;\n    config: NgDevConfig<{\n      pullRequest: PullRequestConfig;\n      github: GithubConfig;\n    }>;\n  },\n  prNumber: number,\n  validationConfig: PullRequestValidationConfig,\n): Promise {\n  const prData = await fetchPullRequestFromGithub(git, prNumber);\n\n  if (prData === null) {\n    throw new FatalMergeToolError('Pull request could not be found.');\n  }\n\n  const labels = prData.labels.nodes.map((l) => l.name);\n  const githubTargetBranch = prData.baseRefName;\n\n  const {mainBranchName, name, owner} = config.github;\n\n  // Active release trains fetched. May be `null` if e.g. target labeling is disabled\n  // and the active release train information is not available/computable.\n  let activeReleaseTrains: ActiveReleaseTrains | null = null;\n  let target: PullRequestTarget | null = null;\n\n  if (config.pullRequest.__noTargetLabeling) {\n    // If there is no target labeling, we always target the main branch and treat the PR as\n    // if it has been labeled with the `target: major` label (allowing for all types of changes).\n    target = {branches: [config.github.mainBranchName], label: targetLabels.TARGET_MAJOR};\n  } else {\n    activeReleaseTrains = await ActiveReleaseTrains.fetch({\n      name,\n      nextBranchName: mainBranchName,\n      owner,\n      api: git.github,\n    });\n\n    target = await getTargetBranchesAndLabelForPullRequest(\n      activeReleaseTrains,\n      git.github,\n      config,\n      labels,\n      githubTargetBranch,\n    );\n  }\n\n  const validationFailures = await assertValidPullRequest(\n    prData,\n    validationConfig,\n    config,\n    activeReleaseTrains,\n    target,\n    git,\n  );\n\n  const requiredBaseSha =\n    config.pullRequest.requiredBaseCommits &&\n    config.pullRequest.requiredBaseCommits[githubTargetBranch];\n  const needsCommitMessageFixup = labels.includes(mergeLabels.MERGE_FIX_COMMIT_MESSAGE.name);\n  const hasCaretakerNote = labels.includes(mergeLabels.MERGE_CARETAKER_NOTE.name);\n\n  // The parent of the first commit in a PR is the base SHA.\n  const baseSha = prData.baseCommitInfo.nodes[0].commit.parents.nodes[0].oid;\n\n  // Typically we would be able to rely on referencing the base revision as the pull\n  // request head commit minus the number of commits in the pull request. This is not always\n  // reliable when we rebase e.g. the PR with autosquash where the amount of commits could\n  // change. We avoid this issue around this by using the resolved base revision so that we are\n  // able to reference an explicit SHA before a autosquash rebase could be performed.\n  const revisionRange = `${baseSha}..${TEMP_PR_HEAD_BRANCH}`;\n\n  return {\n    url: prData.url,\n    prNumber,\n    labels,\n    requiredBaseSha,\n    githubTargetBranch,\n    needsCommitMessageFixup,\n    baseSha,\n    revisionRange,\n    hasCaretakerNote,\n    validationFailures,\n    targetBranches: target.branches,\n    title: prData.title,\n    commitCount: prData.commits.totalCount,\n    headSha: prData.headRefOid,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {RestEndpointMethodTypes} from '@octokit/plugin-rest-endpoint-methods';\n\nimport {parseCommitMessage} from '../../../commit-message/parse.js';\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\nimport {GithubApiMergeMethod, GithubApiMergeStrategyConfig} from '../../config/index.js';\nimport {PullRequest} from '../pull-request.js';\n\nimport {MergeStrategy} from './strategy.js';\nimport {isGithubApiError} from '../../../utils/git/github.js';\nimport {FatalMergeToolError, MergeConflictsFatalError} from '../failures.js';\nimport {Prompt} from '../../../utils/prompt.js';\n\n/** Type describing the parameters for the Octokit `merge` API endpoint. */\ntype OctokitMergeParams = RestEndpointMethodTypes['pulls']['merge']['parameters'];\n\ntype OctokitPullRequestCommitsList =\n  RestEndpointMethodTypes['pulls']['listCommits']['response']['data'];\n\n/** Separator between commit message header and body. */\nconst COMMIT_HEADER_SEPARATOR = '\\n\\n';\n\n/**\n * Merge strategy that primarily leverages the Github API. The strategy merges a given\n * pull request into a target branch using the API. This ensures that Github displays\n * the pull request as merged. The merged commits are then cherry-picked into the remaining\n * target branches using the local Git instance. The benefit is that the Github merged state\n * is properly set, but a notable downside is that PRs cannot use fixup or squash commits.\n */\nexport class GithubApiMergeStrategy extends MergeStrategy {\n  constructor(\n    git: AuthenticatedGitClient,\n    private _config: GithubApiMergeStrategyConfig,\n  ) {\n    super(git);\n  }\n\n  /**\n   * Merges the specified pull request via the Github API, cherry-picks the change into the other\n   * target branhces and pushes the branches upstream.\n   *\n   * @throws {GitCommandError} An unknown Git command error occurred that is not\n   *   specific to the pull request merge.\n   * @throws {FatalMergeToolError} A fatal error if the merge could not be performed.\n   */\n  override async merge(pullRequest: PullRequest): Promise {\n    const {githubTargetBranch, prNumber, needsCommitMessageFixup, targetBranches} = pullRequest;\n    const method = this._getMergeActionFromPullRequest(pullRequest);\n    const cherryPickTargetBranches = targetBranches.filter((b) => b !== githubTargetBranch);\n\n    const mergeOptions: OctokitMergeParams = {\n      pull_number: prNumber,\n      merge_method: method,\n      ...this.git.remoteParams,\n    };\n\n    if (needsCommitMessageFixup) {\n      // Commit message fixup does not work with other merge methods as the Github API only\n      // allows commit message modifications for squash merging.\n      if (method !== 'squash') {\n        throw new FatalMergeToolError(\n          `Unable to fixup commit message of pull request. Commit message can only be ` +\n            `modified if the PR is merged using squash.`,\n        );\n      }\n      await this._promptCommitMessageEdit(pullRequest, mergeOptions);\n    }\n\n    let mergeStatusCode: number;\n    let mergeResponseMessage: string;\n    let targetSha: string;\n\n    try {\n      // Merge the pull request using the Github API into the selected base branch.\n      const result = await this.git.github.pulls.merge(mergeOptions);\n\n      mergeStatusCode = result.status;\n      mergeResponseMessage = result.data.message;\n      targetSha = result.data.sha;\n    } catch (e) {\n      // Note: Github usually returns `404` as status code if the API request uses a\n      // token with insufficient permissions. Github does this because it doesn't want\n      // to leak whether a repository exists or not. In our case we expect a certain\n      // repository to exist, so we always treat this as a permission failure.\n      if (isGithubApiError(e) && (e.status === 403 || e.status === 404)) {\n        throw new FatalMergeToolError('Insufficient Github API permissions to merge pull request.');\n      }\n      throw e;\n    }\n\n    // https://developer.github.com/v3/pulls/#response-if-merge-cannot-be-performed\n    // Pull request cannot be merged due to merge conflicts.\n    if (mergeStatusCode === 405) {\n      throw new MergeConflictsFatalError([githubTargetBranch]);\n    }\n    if (mergeStatusCode !== 200) {\n      throw new FatalMergeToolError(\n        `Unexpected merge status code: ${mergeStatusCode}: ${mergeResponseMessage}`,\n      );\n    }\n\n    // If the PR does not need to be merged into any other target branches,\n    // we exit here as we already completed the merge.\n    if (!cherryPickTargetBranches.length) {\n      return;\n    }\n\n    // Refresh the target branch the PR has been merged into through the API. We need\n    // to re-fetch as otherwise we cannot cherry-pick the new commits into the remaining\n    // target branches.\n    this.fetchTargetBranches([githubTargetBranch]);\n\n    // Number of commits that have landed in the target branch. This could vary from\n    // the count of commits in the PR due to squashing.\n    const targetCommitsCount = method === 'squash' ? 1 : pullRequest.commitCount;\n\n    // Cherry pick the merged commits into the remaining target branches.\n    const failedBranches = await this.cherryPickIntoTargetBranches(\n      `${targetSha}~${targetCommitsCount}..${targetSha}`,\n      cherryPickTargetBranches,\n      {\n        // Commits that have been created by the Github API do not necessarily contain\n        // a reference to the source pull request (unless the squash strategy is used).\n        // To ensure that original commits can be found when a commit is viewed in a\n        // target branch, we add a link to the original commits when cherry-picking.\n        linkToOriginalCommits: true,\n      },\n    );\n\n    // We already checked whether the PR can be cherry-picked into the target branches,\n    // but in case the cherry-pick somehow fails, we still handle the conflicts here. The\n    // commits created through the Github API could be different (i.e. through squash).\n    if (failedBranches.length) {\n      throw new MergeConflictsFatalError(failedBranches);\n    }\n\n    this.pushTargetBranchesUpstream(cherryPickTargetBranches);\n\n    // Because our process brings changes into multiple branchces, we include a comment which\n    // expresses all of the branches the changes were merged into.\n    await this.git.github.issues.createComment({\n      ...this.git.remoteParams,\n      issue_number: pullRequest.prNumber,\n      body: `The changes were merged into the following branches: ${targetBranches.join(', ')}`,\n    });\n  }\n\n  /**\n   * Prompts the user for the commit message changes. Unlike as in the autosquash merge\n   * strategy, we cannot start an interactive rebase because we merge using the Github API.\n   * The Github API only allows modifications to PR title and body for squash merges.\n   */\n  private async _promptCommitMessageEdit(\n    pullRequest: PullRequest,\n    mergeOptions: OctokitMergeParams,\n  ) {\n    const commitMessage = await this._getDefaultSquashCommitMessage(pullRequest);\n    const result = await Prompt.editor({\n      message: 'Please update the commit message',\n      default: commitMessage,\n    });\n\n    // Split the new message into title and message. This is necessary because the\n    // Github API expects title and message to be passed separately.\n    const [newTitle, ...newMessage] = result.split(COMMIT_HEADER_SEPARATOR);\n\n    // Update the merge options so that the changes are reflected in there.\n    mergeOptions.commit_title = `${newTitle} (#${pullRequest.prNumber})`;\n    mergeOptions.commit_message = newMessage.join(COMMIT_HEADER_SEPARATOR);\n  }\n\n  /**\n   * Gets a commit message for the given pull request. Github by default concatenates\n   * multiple commit messages if a PR is merged in squash mode. We try to replicate this\n   * behavior here so that we have a default commit message that can be fixed up.\n   */\n  private async _getDefaultSquashCommitMessage(pullRequest: PullRequest): Promise {\n    const commits = (await this._getPullRequestCommitMessages(pullRequest)).map((message) => ({\n      message,\n      parsed: parseCommitMessage(message),\n    }));\n    const messageBase = `${pullRequest.title}${COMMIT_HEADER_SEPARATOR}`;\n    if (commits.length <= 1) {\n      return `${messageBase}${commits[0].parsed.body}`;\n    }\n    const joinedMessages = commits.map((c) => `* ${c.message}`).join(COMMIT_HEADER_SEPARATOR);\n    return `${messageBase}${joinedMessages}`;\n  }\n\n  /** Gets all commit messages of commits in the pull request. */\n  private async _getPullRequestCommitMessages({prNumber}: PullRequest) {\n    const allCommits: OctokitPullRequestCommitsList = await this.git.github.paginate(\n      this.git.github.pulls.listCommits,\n      {\n        ...this.git.remoteParams,\n        pull_number: prNumber,\n      },\n    );\n    return allCommits.map(({commit}) => commit.message);\n  }\n\n  /** Determines the merge action from the given pull request. */\n  private _getMergeActionFromPullRequest({labels}: PullRequest): GithubApiMergeMethod {\n    if (this._config.labels) {\n      const matchingLabel = this._config.labels.find(({pattern}) => labels.includes(pattern));\n      if (matchingLabel !== undefined) {\n        return matchingLabel.method;\n      }\n    }\n    return this._config.default;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {dirname, join} from 'path';\nimport {fileURLToPath} from 'url';\nimport {PullRequest} from '../pull-request.js';\nimport {MergeStrategy, TEMP_PR_HEAD_BRANCH} from './strategy.js';\nimport {MergeConflictsFatalError} from '../failures.js';\n\n/**\n * Merge strategy that does not use the Github API for merging. Instead, it fetches\n * all target branches and the PR locally. The PR is then cherry-picked with autosquash\n * enabled into the target branches. The benefit is the support for fixup and squash commits.\n * A notable downside though is that Github does not show the PR as `Merged` due to non\n * fast-forward merges\n */\nexport class AutosquashMergeStrategy extends MergeStrategy {\n  /**\n   * Merges the specified pull request into the target branches and pushes the target\n   * branches upstream. This method requires the temporary target branches to be fetched\n   * already as we don't want to fetch the target branches per pull request merge. This\n   * would causes unnecessary multiple fetch requests when multiple PRs are merged.\n   *\n   * @throws {GitCommandError} An unknown Git command error occurred that is not\n   *   specific to the pull request merge.\n   * @throws {FatalMergeToolError} A fatal error if the merge could not be performed.\n   */\n  override async merge(pullRequest: PullRequest): Promise {\n    const {\n      githubTargetBranch,\n      targetBranches,\n      revisionRange,\n      needsCommitMessageFixup,\n      baseSha,\n      prNumber,\n    } = pullRequest;\n\n    // We always rebase the pull request so that fixup or squash commits are automatically\n    // collapsed. Git's autosquash functionality does only work in interactive rebases, so\n    // our rebase is always interactive. In reality though, unless a commit message fixup\n    // is desired, we set the `GIT_SEQUENCE_EDITOR` environment variable to `true` so that\n    // the rebase seems interactive to Git, while it's not interactive to the user.\n    // See: https://github.com/git/git/commit/891d4a0313edc03f7e2ecb96edec5d30dc182294.\n    const branchOrRevisionBeforeRebase = this.git.getCurrentBranchOrRevision();\n    const rebaseEnv = needsCommitMessageFixup\n      ? undefined\n      : {...process.env, GIT_SEQUENCE_EDITOR: 'true'};\n    this.git.run(['rebase', '--interactive', '--autosquash', baseSha, TEMP_PR_HEAD_BRANCH], {\n      stdio: 'inherit',\n      env: rebaseEnv,\n    });\n\n    // Update pull requests commits to reference the pull request. This matches what\n    // Github does when pull requests are merged through the Web UI. The motivation is\n    // that it should be easy to determine which pull request contained a given commit.\n    // Note: The filter-branch command relies on the working tree, so we want to make sure\n    // that we are on the initial branch or revision where the merge script has been invoked.\n    this.git.run(['checkout', '-f', branchOrRevisionBeforeRebase]);\n    this.git.run([\n      'filter-branch',\n      '-f',\n      '--msg-filter',\n      `${getCommitMessageFilterScriptPath()} ${prNumber}`,\n      revisionRange, // Range still captures the squashed commits (`base..PR_HEAD`).\n    ]);\n\n    // Perform the actual cherry picking into target branches.\n    // Note: Range still captures the squashed commits (`base..PR_HEAD`).\n    const failedBranches = this.cherryPickIntoTargetBranches(revisionRange, targetBranches);\n\n    // We already checked whether the PR can be cherry-picked into the target branches,\n    // but in case the cherry-pick somehow fails, we still handle the conflicts here. The\n    // commits created through the Github API could be different (i.e. through squash).\n    if (failedBranches.length) {\n      throw new MergeConflictsFatalError(failedBranches);\n    }\n\n    // Push the cherry picked branches upstream.\n    this.pushTargetBranchesUpstream(targetBranches);\n\n    /** The local branch name of the github targeted branch. */\n    const localBranch = this.getLocalTargetBranchName(githubTargetBranch);\n    /** The SHA of the commit pushed to github which represents closing the PR. */\n    const sha = this.git.run(['rev-parse', localBranch]).stdout.trim();\n    // Allow user to set an amount of time to wait to account for rate limiting of the token usage\n    // during merge otherwise just waits 0 seconds.\n    await new Promise((resolve) =>\n      setTimeout(resolve, parseInt(process.env['AUTOSQUASH_TIMEOUT'] || '0')),\n    );\n    // Github automatically closes PRs whose commits are merged into the main branch on Github.\n    // However, it does not note them as merged using the purple merge badge as occurs when done via\n    // the UI. To inform users that the PR was in fact merged, add a comment expressing the fact\n    // that the PR is merged and what branches the changes were merged into.\n    await this.git.github.issues.createComment({\n      ...this.git.remoteParams,\n      issue_number: pullRequest.prNumber,\n      body:\n        `This PR was merged into the repository by commit ${sha}.\\n\\n` +\n        `The changes were merged into the following branches: ${targetBranches.join(', ')}`,\n    });\n\n    // For PRs which do not target the `main` branch on Github, Github does not automatically\n    // close the PR when its commit is pushed into the repository. To ensure these PRs are\n    // correctly marked as closed, we must detect this situation and close the PR via the API after\n    // the upstream pushes are completed.\n    if (githubTargetBranch !== this.git.mainBranchName) {\n      await this.git.github.pulls.update({\n        ...this.git.remoteParams,\n        pull_number: pullRequest.prNumber,\n        state: 'closed',\n      });\n    }\n  }\n}\n\n/** Gets the absolute file path to the commit-message filter script. */\nfunction getCommitMessageFilterScriptPath(): string {\n  // This file is getting bundled and ends up in `/bundles/`. We also\n  // bundle the commit-message-filter script as another entry-point and can reference\n  // it relatively as the path is preserved inside `bundles/`.\n  // *Note*: Relying on package resolution is problematic within ESM and with `local-dev.sh`\n  const bundlesDir = dirname(fileURLToPath(import.meta.url));\n  return join(bundlesDir, './pr/merge/strategies/commit-message-filter.mjs');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport semver from 'semver';\nimport {bold, green, Log, red, yellow} from '../../utils/logging.js';\n\nimport {PullRequestConfig, PullRequestValidationConfig} from '../config/index.js';\nimport {\n  getCaretakerNotePromptMessage,\n  getTargetedBranchesConfirmationPromptMessage,\n  getTargetedBranchesMessage,\n} from './messages.js';\nimport {loadAndValidatePullRequest, PullRequest} from './pull-request.js';\nimport {GithubApiMergeStrategy} from './strategies/api-merge.js';\nimport {AutosquashMergeStrategy} from './strategies/autosquash-merge.js';\nimport {GithubConfig, NgDevConfig} from '../../utils/config.js';\nimport {assertValidReleaseConfig} from '../../release/config/index.js';\nimport {\n  ActiveReleaseTrains,\n  fetchLongTermSupportBranchesFromNpm,\n  getNextBranchName,\n} from '../../release/versioning/index.js';\nimport {\n  FatalMergeToolError,\n  PullRequestValidationError,\n  UserAbortedMergeToolError,\n} from './failures.js';\nimport {createPullRequestValidationConfig} from '../common/validation/validation-config.js';\nimport {Prompt} from '../../utils/prompt.js';\n\nexport interface PullRequestMergeFlags {\n  branchPrompt: boolean;\n  forceManualBranches: boolean;\n  dryRun: boolean;\n  ignorePendingReviews: boolean;\n}\n\nconst defaultPullRequestMergeFlags: PullRequestMergeFlags = {\n  branchPrompt: true,\n  forceManualBranches: false,\n  dryRun: false,\n  ignorePendingReviews: false,\n};\n\n/**\n * Class that accepts a merge script configuration and Github token. It provides\n * a programmatic interface for merging multiple pull requests based on their\n * labels that have been resolved through the merge script configuration.\n */\nexport class MergeTool {\n  private flags: PullRequestMergeFlags;\n\n  constructor(\n    public config: NgDevConfig<{\n      pullRequest: PullRequestConfig;\n      github: GithubConfig;\n    }>,\n    public git: AuthenticatedGitClient,\n    flags: Partial,\n  ) {\n    // Update flags property with the provided flags values as patches to the default flag values.\n    this.flags = {...defaultPullRequestMergeFlags, ...flags};\n  }\n\n  /**\n   * Merges the given pull request and pushes it upstream.\n   * @param prNumber Pull request that should be merged.\n   * @param partialValidationConfig Pull request validation config. Can be modified to skip\n   *   certain non-fatal validations.\n   */\n  async merge(\n    prNumber: number,\n    partialValidationConfig: PullRequestValidationConfig,\n  ): Promise {\n    /** The full validation config, using the provided config from flags, config and defaults. */\n    const validationConfig = createPullRequestValidationConfig({\n      ...this.config.pullRequest.validators,\n      ...partialValidationConfig,\n    });\n\n    if (this.git.hasUncommittedChanges()) {\n      throw new FatalMergeToolError(\n        'Local working repository not clean. Please make sure there are ' +\n          'no uncommitted changes.',\n      );\n    }\n\n    if (this.git.isShallowRepo()) {\n      throw new FatalMergeToolError(\n        `Unable to perform merge in a local repository that is configured as shallow.\\n` +\n          `Please convert the repository to a complete one by syncing with upstream.\\n` +\n          `https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---unshallow`,\n      );\n    }\n\n    await this.confirmMergeAccess();\n\n    const pullRequest = await loadAndValidatePullRequest(this, prNumber, validationConfig);\n\n    if (pullRequest.validationFailures.length > 0) {\n      Log.error(`Pull request did not pass one or more validation checks. Error:`);\n\n      for (const failure of pullRequest.validationFailures) {\n        Log.error(` -> ${bold(failure.message)}`);\n      }\n      Log.info();\n\n      if (pullRequest.validationFailures.some((failure) => !failure.canBeForceIgnored)) {\n        Log.debug('Discovered a fatal error, which cannot be forced');\n        throw new PullRequestValidationError();\n      }\n\n      Log.info(yellow(`All discovered validations are non-fatal and can be forcibly ignored.`));\n      if (\n        !(await Prompt.confirm({\n          message: 'Do you want to forcibly ignore these validation failures?',\n        }))\n      ) {\n        throw new PullRequestValidationError();\n      }\n    }\n\n    if (this.flags.forceManualBranches) {\n      await this.updatePullRequestTargetedBranchesFromPrompt(pullRequest);\n    }\n\n    // If the pull request has a caretaker note applied, raise awareness by prompting\n    // the caretaker. The caretaker can then decide to proceed or abort the merge.\n    if (\n      pullRequest.hasCaretakerNote &&\n      !(await Prompt.confirm({message: getCaretakerNotePromptMessage(pullRequest)}))\n    ) {\n      throw new UserAbortedMergeToolError();\n    }\n\n    const strategy = this.config.pullRequest.githubApiMerge\n      ? new GithubApiMergeStrategy(this.git, this.config.pullRequest.githubApiMerge)\n      : new AutosquashMergeStrategy(this.git);\n\n    // Branch or revision that is currently checked out so that we can switch back to\n    // it once the pull request has been merged.\n    const previousBranchOrRevision = this.git.getCurrentBranchOrRevision();\n\n    // The following block runs Git commands as child processes. These Git commands can fail.\n    // We want to capture these command errors and return an appropriate merge request status.\n    try {\n      // Run preparations for the merge (e.g. fetching branches).\n      await strategy.prepare(pullRequest);\n\n      // Print the target branches.\n      Log.info();\n      Log.info(getTargetedBranchesMessage(pullRequest));\n\n      // Check for conflicts between the pull request and target branches.\n      await strategy.check(pullRequest);\n\n      Log.info('');\n      Log.info(green(`     PR: ${bold(pullRequest.title)}`));\n      Log.info(green(`  ✓  Pull request can be merged into all target branches.`));\n      Log.info();\n\n      if (this.flags.dryRun) {\n        Log.info(green(`  ✓  Exiting due to dry run mode.`));\n        return;\n      }\n\n      if (\n        // If there is no target labeling then the pull request is always just directly merged, so\n        // the confirmation can be skipped.\n        !this.config.pullRequest.__noTargetLabeling &&\n        // In cases where manual branch targeting is used, the user already confirmed.\n        !this.flags.forceManualBranches &&\n        this.flags.branchPrompt &&\n        !(await Prompt.confirm({message: getTargetedBranchesConfirmationPromptMessage()}))\n      ) {\n        throw new UserAbortedMergeToolError();\n      }\n\n      // Perform the merge and pass-through potential failures.\n      await strategy.merge(pullRequest);\n      Log.info(green(`  ✓  Successfully merged the pull request: #${prNumber}`));\n    } finally {\n      // Switch back to the previous branch. We need to do this before deleting the temporary\n      // branches because we cannot delete branches which are currently checked out.\n      this.git.run(['checkout', '-f', previousBranchOrRevision]);\n\n      await strategy.cleanup(pullRequest);\n    }\n  }\n\n  /**\n   * Modifies the pull request in place with new target branches based on user\n   * selection from the available active branches.\n   */\n  private async updatePullRequestTargetedBranchesFromPrompt(\n    pullRequest: PullRequest,\n  ): Promise {\n    const {name: repoName, owner} = this.config.github;\n\n    // Attempt to retrieve the active LTS branches to be included in the selection.\n    let ltsBranches: {branchName: string; version: semver.SemVer}[] = [];\n    try {\n      assertValidReleaseConfig(this.config);\n      const ltsBranchesFromNpm = await fetchLongTermSupportBranchesFromNpm(this.config.release);\n      ltsBranches = ltsBranchesFromNpm.active.map(({name, version}) => ({\n        branchName: name,\n        version,\n      }));\n    } catch {\n      Log.warn(\n        'Unable to determine the active LTS branches as a release config is not set for this repo.',\n      );\n    }\n\n    // Gather the current active release trains.\n    const {latest, next, releaseCandidate} = await ActiveReleaseTrains.fetch({\n      name: repoName,\n      nextBranchName: getNextBranchName(this.config.github),\n      owner,\n      api: this.git.github,\n    });\n\n    // Collate the known active branches into a single list.\n    const activeBranches: {branchName: string; version: semver.SemVer}[] = [\n      next,\n      latest,\n      ...ltsBranches,\n    ];\n    if (releaseCandidate !== null) {\n      // Since the next version will always be the primary github branch rather than semver, the RC\n      // branch should be included as the second item in the list.\n      activeBranches.splice(1, 0, releaseCandidate);\n    }\n\n    const selectedBranches = await Prompt.checkbox({\n      choices: activeBranches.map(({branchName, version}) => {\n        return {\n          checked: pullRequest.targetBranches.includes(branchName),\n          value: branchName,\n          short: branchName,\n          name: `${branchName} (${version})${\n            branchName === pullRequest.githubTargetBranch ? ' [Targeted via Github UI]' : ''\n          }`,\n        };\n      }),\n      message: 'Select branches to merge pull request into:',\n    });\n    const confirmation = await Prompt.confirm({\n      default: false,\n      message:\n        red('!!!!!! WARNING !!!!!!!\\n') +\n        yellow(\n          'Using manual branch selection disables protective checks provided by the merge ' +\n            'tooling. This means that the merge tooling will not prevent changes which are not ' +\n            'allowed for the targeted branches. Please proceed with caution.\\n',\n        ) +\n        'Are you sure you would like to proceed with the selected branches?',\n    });\n\n    if (confirmation === false) {\n      throw new UserAbortedMergeToolError();\n    }\n\n    // The Github Targeted branch must always be selected. It is not currently possible\n    // to make a readonly selection in inquirer's checkbox.\n    if (!selectedBranches.includes(pullRequest.githubTargetBranch)) {\n      throw new FatalMergeToolError(\n        `Pull Requests must merge into their targeted Github branch. If this branch (${pullRequest.githubTargetBranch}) ` +\n          'should not be included, please change the targeted branch via the Github UI.',\n      );\n    }\n\n    pullRequest.targetBranches = selectedBranches;\n  }\n\n  async confirmMergeAccess() {\n    if (this.git.userType === 'user') {\n      // Check whether the given Github token has sufficient permissions for writing\n      // to the configured repository. If the repository is not private, only the\n      // reduced `public_repo` OAuth scope is sufficient for performing merges.\n      const hasOauthScopes = await this.git.hasOauthScopes((scopes, missing) => {\n        if (!scopes.includes('repo')) {\n          if (this.config.github.private) {\n            missing.push('repo');\n          } else if (!scopes.includes('public_repo')) {\n            missing.push('public_repo');\n          }\n        }\n\n        // Pull requests can modify Github action workflow files. In such cases Github requires us to\n        // push with a token that has the `workflow` oauth scope set. To avoid errors when the\n        // caretaker intends to merge such PRs, we ensure the scope is always set on the token before\n        // the merge process starts.\n        // https://docs.github.com/en/developers/apps/scopes-for-oauth-apps#available-scopes\n        if (!scopes.includes('workflow')) {\n          missing.push('workflow');\n        }\n      });\n\n      if (hasOauthScopes !== true) {\n        throw new FatalMergeToolError(hasOauthScopes.error);\n      }\n      return;\n    } else {\n      // TODO(josephperrott): Find a way to check access of the installation without using a JWT.\n      Log.debug('Assuming correct access because this a bot account.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertValidGithubConfig, ConfigValidationError, getConfig} from '../../utils/config.js';\nimport {bold, Log} from '../../utils/logging.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {isGithubApiError} from '../../utils/git/github.js';\nimport {GITHUB_TOKEN_GENERATE_URL} from '../../utils/git/github-urls.js';\n\nimport {assertValidPullRequestConfig} from '../config/index.js';\nimport {MergeTool, PullRequestMergeFlags} from './merge-tool.js';\nimport {\n  FatalMergeToolError,\n  PullRequestValidationError,\n  UserAbortedMergeToolError,\n} from './failures.js';\nimport {\n  InvalidTargetBranchError,\n  InvalidTargetLabelError,\n} from '../common/targeting/target-label.js';\n\n/**\n * Merges a given pull request based on labels configured in the given merge configuration.\n * Pull requests can be merged with different strategies such as the Github API merge\n * strategy, or the local autosquash strategy. Either strategy has benefits and downsides.\n * More information on these strategies can be found in their dedicated strategy classes.\n *\n * See {@link GithubApiMergeStrategy} and {@link AutosquashMergeStrategy}\n *\n * @param prNumber Number of the pull request that should be merged.\n * @param flags Configuration options for merging pull requests.\n */\nexport async function mergePullRequest(prNumber: number, flags: PullRequestMergeFlags) {\n  // Set the environment variable to skip all git commit hooks triggered by husky. We are unable to\n  // rely on `--no-verify` as some hooks still run, notably the `prepare-commit-msg` hook.\n  process.env['HUSKY'] = '0';\n\n  const tool = await createPullRequestMergeTool(flags);\n\n  // Perform the merge. If the merge fails with non-fatal failures, the script\n  // will prompt whether it should rerun in force mode with the ignored failure.\n  if (!(await performMerge())) {\n    process.exit(1);\n  }\n\n  /** Performs the merge and returns whether it was successful or not. */\n  async function performMerge(\n    validationConfig = {\n      assertCompletedReviews: !flags.ignorePendingReviews,\n    },\n  ): Promise {\n    try {\n      await tool.merge(prNumber, validationConfig);\n      return true;\n    } catch (e) {\n      // Catch errors to the Github API for invalid requests. We want to\n      // exit the script with a better explanation of the error.\n      if (isGithubApiError(e) && e.status === 401) {\n        Log.error('Github API request failed: ' + bold(e.message));\n        Log.error('Please ensure that your provided token is valid.');\n        Log.warn(`You can generate a token here: ${GITHUB_TOKEN_GENERATE_URL}`);\n        return false;\n      }\n      if (isGithubApiError(e)) {\n        Log.error('Github API request failed: ' + bold(e.message));\n        return false;\n      }\n      if (e instanceof UserAbortedMergeToolError) {\n        Log.warn('Manually aborted merging..');\n        return false;\n      }\n      if (e instanceof InvalidTargetBranchError) {\n        Log.error(`Pull request selects an invalid GitHub destination branch:`);\n        Log.error(` -> ${bold(e.failureMessage)}`);\n      }\n      if (e instanceof InvalidTargetLabelError) {\n        Log.error(`Pull request target label could not be determined:`);\n        Log.error(` -> ${bold(e.failureMessage)}`);\n      }\n\n      if (e instanceof PullRequestValidationError) {\n        Log.error('Pull request failed at least one validation check.');\n        Log.error('See above for specific error information');\n        return false;\n      }\n\n      // Note: Known errors in the merge tooling extend from the FatalMergeToolError, as such\n      // the instance check for FatalMergeToolError should remain last as it will be truthy for\n      // all of the subclasses.\n      if (e instanceof FatalMergeToolError) {\n        Log.error(`Could not merge the specified pull request. Error:`);\n        Log.error(` -> ${bold(e.message)}`);\n        return false;\n      }\n\n      // For unknown errors, always re-throw.\n      throw e;\n    }\n  }\n}\n\n/**\n * Creates the pull request merge tool using the given configuration options.\n *\n * Explicit configuration options can be specified when the merge script is used\n * outside of an `ng-dev` configured repository.\n */\nasync function createPullRequestMergeTool(flags: PullRequestMergeFlags) {\n  try {\n    const config = await getConfig();\n\n    assertValidGithubConfig(config);\n    assertValidPullRequestConfig(config);\n\n    /** The singleton instance of the authenticated git client. */\n    const git = await AuthenticatedGitClient.get();\n    return new MergeTool(config, git, flags);\n  } catch (e) {\n    if (e instanceof ConfigValidationError) {\n      if (e.errors.length) {\n        Log.error('Invalid merge configuration:');\n        e.errors.forEach((desc) => Log.error(`  -  ${desc}`));\n      } else {\n        Log.error(e.message);\n      }\n      process.exit(1);\n    }\n    throw e;\n  }\n}\n\n/**\n * Parses the pull request number from either the number or url string\n */\nexport function parsePrNumber(prUrlOrNumber: string): number {\n  // There is no url validation here other than presence of `/`.\n  // So whatever is the last segment of that string, url or not, will be\n  // parsed as a PR number.\n  const prNumber = parseInt(prUrlOrNumber.split('/').pop()!);\n  if (isNaN(prNumber)) {\n    throw new Error('Pull Request was unable to be parsed from the parameters');\n  }\n  return prNumber;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\nimport {addDryRunFlag} from '../../utils/dry-run.js';\n\nimport {mergePullRequest, parsePrNumber} from './merge-pull-request.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n/** The options available to the merge command via CLI. */\nexport interface MergeCommandOptions {\n  pr: number;\n  branchPrompt: boolean;\n  forceManualBranches: boolean;\n  dryRun: boolean;\n  ignorePendingReviews: boolean;\n}\n\n/** Builds the command. */\nasync function builder(argv: Argv) {\n  return addDryRunFlag(addGithubTokenOption(argv))\n    .help()\n    .strict()\n    .positional('pr', {\n      demandOption: true,\n      coerce: (prUrlOrNumber: string) => parsePrNumber(prUrlOrNumber),\n      type: 'string',\n      description: 'The PR to be merged.',\n    })\n    .option('branch-prompt' as 'branchPrompt', {\n      type: 'boolean',\n      default: true,\n      description: 'Whether to prompt to confirm the branches a PR will merge into.',\n    })\n    .option('force-manual-branches' as 'forceManualBranches', {\n      type: 'boolean',\n      default: false,\n      description: 'Whether to manually select the branches you wish to merge the PR into.',\n    })\n    .option('ignore-pending-reviews' as 'ignorePendingReviews', {\n      type: 'boolean',\n      default: false,\n      description: 'Bypass the check for pending reviews on the pull request',\n    });\n}\n\n/** Handles the command. */\nasync function handler({\n  pr,\n  branchPrompt,\n  forceManualBranches,\n  dryRun,\n  ignorePendingReviews,\n}: Arguments) {\n  await mergePullRequest(pr, {branchPrompt, forceManualBranches, dryRun, ignorePendingReviews});\n}\n\n/** yargs command module describing the command. */\nexport const MergeCommandModule: CommandModule<{}, MergeCommandOptions> = {\n  handler,\n  builder,\n  command: 'merge ',\n  describe: 'Merge a PR into its targeted branches.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Commit} from '../../commit-message/parse.js';\nimport {getCommitsInRange} from '../../commit-message/utils.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {addTokenToGitHttpsUrl} from '../../utils/git/github-urls.js';\nimport {Log} from '../../utils/logging.js';\nimport {Prompt} from '../../utils/prompt.js';\nimport {fetchPullRequestFromGithub} from '../common/fetch-pull-request.js';\n\n/**\n * Rebase the provided PR onto its merge target branch, and push up the resulting\n * commit to the PRs repository.\n *\n * @returns a status code indicating whether the rebase was successful.\n */\nexport async function rebasePr(prNumber: number): Promise {\n  /** The singleton instance of the authenticated git client. */\n  const git = await AuthenticatedGitClient.get();\n\n  if (git.hasUncommittedChanges()) {\n    Log.error('Cannot perform rebase of PR with local changes.');\n    return 1;\n  }\n\n  /**\n   * The branch or revision originally checked out before this method performed\n   * any Git operations that may change the working branch.\n   */\n  const previousBranchOrRevision = git.getCurrentBranchOrRevision();\n  /* Get the PR information from Github. */\n  const pr = await fetchPullRequestFromGithub(git, prNumber);\n\n  if (pr === null) {\n    Log.error(`Specified pull request does not exist.`);\n    return 1;\n  }\n\n  const headRefName = pr.headRef.name;\n  const baseRefName = pr.baseRef.name;\n  const fullHeadRef = `${pr.headRef.repository.nameWithOwner}:${headRefName}`;\n  const fullBaseRef = `${pr.baseRef.repository.nameWithOwner}:${baseRefName}`;\n  const headRefUrl = addTokenToGitHttpsUrl(pr.headRef.repository.url, git.githubToken);\n  const baseRefUrl = addTokenToGitHttpsUrl(pr.baseRef.repository.url, git.githubToken);\n\n  // Note: Since we use a detached head for rebasing the PR and therefore do not have\n  // remote-tracking branches configured, we need to set our expected ref and SHA. This\n  // allows us to use `--force-with-lease` for the detached head while ensuring that we\n  // never accidentally override upstream changes that have been pushed in the meanwhile.\n  // See:\n  // https://git-scm.com/docs/git-push#Documentation/git-push.txt---force-with-leaseltrefnamegtltexpectgt\n  const forceWithLeaseFlag = `--force-with-lease=${headRefName}:${pr.headRefOid}`;\n\n  // If the PR does not allow maintainers to modify it, exit as the rebased PR cannot\n  // be pushed up.\n  if (!pr.maintainerCanModify && !pr.viewerDidAuthor) {\n    Log.error(\n      `Cannot rebase as you did not author the PR and the PR does not allow maintainers` +\n        `to modify the PR`,\n    );\n    return 1;\n  }\n\n  try {\n    // Fetches are done with --deepen=500 increase the likelihood of finding a common ancestor when\n    // a shallow clone is being used.\n\n    // Fetch the branch at the commit of the PR, and check it out in a detached state.\n    Log.info(`Checking out PR #${prNumber} from ${fullHeadRef}`);\n    git.run(['fetch', '-q', headRefUrl, headRefName, '--deepen=500']);\n    git.run(['checkout', '-q', '--detach', 'FETCH_HEAD']);\n    // Fetch the PRs target branch and rebase onto it.\n    Log.info(`Fetching ${fullBaseRef} to rebase #${prNumber} on`);\n    git.run(['fetch', '-q', baseRefUrl, baseRefName, '--deepen=500']);\n\n    const commonAncestorSha = git.run(['merge-base', 'HEAD', 'FETCH_HEAD']).stdout.trim();\n\n    const commits = await getCommitsInRange(commonAncestorSha, 'HEAD');\n\n    let squashFixups =\n      process.env['CI'] !== undefined ||\n      commits.filter((commit: Commit) => commit.isFixup).length === 0\n        ? false\n        : await Prompt.confirm({\n            message: `PR #${prNumber} contains fixup commits, would you like to squash them during rebase?`,\n            default: true,\n          });\n\n    Log.info(`Attempting to rebase PR #${prNumber} on ${fullBaseRef}`);\n\n    /**\n     * Tuple of flags to be added to the rebase command and env object to run the git command.\n     *\n     * Additional flags to perform the autosquashing are added when the user confirm squashing of\n     * fixup commits should occur.\n     */\n    const [flags, env] = squashFixups\n      ? [['--interactive', '--autosquash'], {...process.env, GIT_SEQUENCE_EDITOR: 'true'}]\n      : [[], undefined];\n    const rebaseResult = git.runGraceful(['rebase', ...flags, 'FETCH_HEAD'], {env: env});\n\n    // If the rebase was clean, push the rebased PR up to the authors fork.\n    if (rebaseResult.status === 0) {\n      Log.info(`Rebase was able to complete automatically without conflicts`);\n      Log.info(`Pushing rebased PR #${prNumber} to ${fullHeadRef}`);\n      git.run(['push', headRefUrl, `HEAD:${headRefName}`, forceWithLeaseFlag]);\n      Log.info(`Rebased and updated PR #${prNumber}`);\n      git.checkout(previousBranchOrRevision, true);\n      return 0;\n    }\n  } catch (err) {\n    Log.error(err);\n    git.checkout(previousBranchOrRevision, true);\n    return 1;\n  }\n\n  // On automatic rebase failures, prompt to choose if the rebase should be continued\n  // manually or aborted now.\n  Log.info(`Rebase was unable to complete automatically without conflicts.`);\n  // If the command is run in a non-CI environment, prompt to allow for the user to\n  // manually complete the rebase.\n  const continueRebase =\n    process.env['CI'] === undefined &&\n    (await Prompt.confirm({message: 'Manually complete rebase?'}));\n\n  if (continueRebase) {\n    Log.info(\n      `After manually completing rebase, run the following command to update PR #${prNumber}:`,\n    );\n    Log.info(` $ git push ${pr.headRef.repository.url} HEAD:${headRefName} ${forceWithLeaseFlag}`);\n    Log.info();\n    Log.info(`To abort the rebase and return to the state of the repository before this command`);\n    Log.info(`run the following command:`);\n    Log.info(\n      ` $ git rebase --abort && git reset --hard && git checkout ${previousBranchOrRevision}`,\n    );\n    return 1;\n  } else {\n    Log.info(`Cleaning up git state, and restoring previous state.`);\n  }\n\n  git.checkout(previousBranchOrRevision, true);\n  return 1;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n\nimport {rebasePr} from './index.js';\n\n/** The options available to the rebase command via CLI. */\nexport interface RebaseOptions {\n  pr: number;\n}\n\n/** Builds the rebase pull request command. */\nfunction builder(argv: Argv): Argv {\n  return addGithubTokenOption(argv).positional('pr', {type: 'number', demandOption: true});\n}\n\n/** Handles the rebase pull request command. */\nasync function handler({pr}: Arguments) {\n  process.exitCode = await rebasePr(pr);\n}\n\n/** yargs command module for rebasing a PR  */\nexport const RebaseCommandModule: CommandModule<{}, RebaseOptions> = {\n  handler,\n  builder,\n  command: 'rebase ',\n  describe: 'Rebase a pending PR and push the rebased commits back to Github',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv} from 'yargs';\n\nimport {CheckTargetBranchesModule} from './check-target-branches/cli.js';\nimport {CheckoutCommandModule} from './checkout/cli.js';\nimport {DiscoverNewConflictsCommandModule} from './discover-new-conflicts/cli.js';\nimport {MergeCommandModule} from './merge/cli.js';\nimport {RebaseCommandModule} from './rebase/cli.js';\n\n/** Build the parser for pull request commands. */\nexport function buildPrParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .command(DiscoverNewConflictsCommandModule)\n    .command(RebaseCommandModule)\n    .command(MergeCommandModule)\n    .command(CheckoutCommandModule)\n    .command(CheckTargetBranchesModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {readFileSync} from 'fs';\nimport {resolve} from 'path';\n\nimport {Log} from '../utils/logging.js';\nimport {GitClient} from '../utils/git/git-client.js';\nimport {logGroup, logHeader} from './logging.js';\nimport {getGroupsFromYaml} from './parse-yaml.js';\n\nexport async function verify() {\n  const git = await GitClient.get();\n  /** Full path to PullApprove config file */\n  const PULL_APPROVE_YAML_PATH = resolve(git.baseDir, '.pullapprove.yml');\n  /** All tracked files in the repository. */\n  const REPO_FILES = git.allFiles();\n  /** The pull approve config file. */\n  const pullApproveYamlRaw = readFileSync(PULL_APPROVE_YAML_PATH, 'utf8');\n  /** All of the groups defined in the pullapprove yaml. */\n  const groups = getGroupsFromYaml(pullApproveYamlRaw);\n  /**\n   * PullApprove groups without conditions. These are skipped in the verification\n   * as those would always be active and cause zero unmatched files.\n   */\n  const groupsSkipped = groups.filter((group) => !group.conditions.length);\n  /** PullApprove groups with conditions. */\n  const groupsWithConditions = groups.filter((group) => !!group.conditions.length);\n  /** Files which are matched by at least one group. */\n  const matchedFiles: string[] = [];\n  /** Files which are not matched by at least one group. */\n  const unmatchedFiles: string[] = [];\n\n  // Test each file in the repo against each group for being matched.\n  REPO_FILES.forEach((file: string) => {\n    if (groupsWithConditions.filter((group) => group.testFile(file)).length) {\n      matchedFiles.push(file);\n    } else {\n      unmatchedFiles.push(file);\n    }\n  });\n  /** Results for each group */\n  const resultsByGroup = groupsWithConditions.map((group) => group.getResults());\n  /**\n   * Whether all group condition lines match at least one file and all files\n   * are matched by at least one group.\n   */\n  const allGroupConditionsValid =\n    resultsByGroup.every((r) => !r.unmatchedCount) && !unmatchedFiles.length;\n  /** Whether all groups have at least one reviewer user or team defined.  */\n  const groupsWithoutReviewers = groups.filter(\n    (group) => Object.keys(group.reviewers).length === 0,\n  );\n  /** The overall result of the verifcation. */\n  const overallResult = allGroupConditionsValid && groupsWithoutReviewers.length === 0;\n\n  /**\n   * Overall result\n   */\n  logHeader('Overall Result');\n  if (overallResult) {\n    Log.info('PullApprove verification succeeded!');\n  } else {\n    Log.info(`PullApprove verification failed.`);\n    Log.info();\n    Log.info(`Please update '.pullapprove.yml' to ensure that all necessary`);\n    Log.info(`files/directories have owners and all patterns that appear in`);\n    Log.info(`the file correspond to actual files/directories in the repo.`);\n  }\n  /** Reviewers check */\n  logHeader(`Group Reviewers Check`);\n  if (groupsWithoutReviewers.length === 0) {\n    Log.info('All group contain at least one reviewer user or team.');\n  } else {\n    Log.info.group(\n      `Discovered ${groupsWithoutReviewers.length} group(s) without a reviewer defined`,\n    );\n    groupsWithoutReviewers.forEach((g) => Log.info(g.groupName));\n    Log.info.groupEnd();\n  }\n  /**\n   * File by file Summary\n   */\n  logHeader('PullApprove results by file');\n  Log.info.group(`Matched Files (${matchedFiles.length} files)`);\n  matchedFiles.forEach((file) => Log.debug(file));\n  Log.info.groupEnd();\n  Log.info.group(`Unmatched Files (${unmatchedFiles.length} files)`);\n  unmatchedFiles.forEach((file) => Log.info(file));\n  Log.info.groupEnd();\n  /**\n   * Group by group Summary\n   */\n  logHeader('PullApprove results by group');\n  Log.info.group(`Groups skipped (${groupsSkipped.length} groups)`);\n  groupsSkipped.forEach((group) => Log.debug(`${group.groupName}`));\n  Log.info.groupEnd();\n  const matchedGroups = resultsByGroup.filter((group) => !group.unmatchedCount);\n  Log.info.group(`Matched conditions by Group (${matchedGroups.length} groups)`);\n  matchedGroups.forEach((group) => logGroup(group, 'matchedConditions', Log.debug));\n  Log.info.groupEnd();\n  const unmatchedGroups = resultsByGroup.filter((group) => group.unmatchedCount);\n  Log.info.group(`Unmatched conditions by Group (${unmatchedGroups.length} groups)`);\n  unmatchedGroups.forEach((group) => logGroup(group, 'unmatchedConditions'));\n  Log.info.groupEnd();\n  const unverifiableConditionsInGroups = resultsByGroup.filter(\n    (group) => group.unverifiableConditions.length > 0,\n  );\n  Log.info.group(\n    `Unverifiable conditions by Group (${unverifiableConditionsInGroups.length} groups)`,\n  );\n  unverifiableConditionsInGroups.forEach((group) => logGroup(group, 'unverifiableConditions'));\n  Log.info.groupEnd();\n\n  // Provide correct exit code based on verification success.\n  process.exit(overallResult ? 0 : 1);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Log} from '../utils/logging.js';\nimport {PullApproveGroupResult} from './group.js';\n\ntype ConditionGrouping = keyof Pick<\n  PullApproveGroupResult,\n  'matchedConditions' | 'unmatchedConditions' | 'unverifiableConditions'\n>;\n\n/** Create logs for each pullapprove group result. */\nexport function logGroup(\n  group: PullApproveGroupResult,\n  conditionsToPrint: ConditionGrouping,\n  printMessageFn = Log.info,\n) {\n  const conditions = group[conditionsToPrint];\n  printMessageFn.group(`[${group.groupName}]`);\n  if (conditions.length) {\n    conditions.forEach((groupCondition) => {\n      const count = groupCondition.matchedFiles.size;\n      if (conditionsToPrint === 'unverifiableConditions') {\n        printMessageFn(`${groupCondition.expression}`);\n      } else {\n        printMessageFn(\n          `${count} ${count === 1 ? 'match' : 'matches'} - ${groupCondition.expression}`,\n        );\n      }\n    });\n    printMessageFn.groupEnd();\n  }\n}\n\n/** Logs a header within a text drawn box. */\nexport function logHeader(...params: string[]) {\n  const totalWidth = 80;\n  const fillWidth = totalWidth - 2;\n  const headerText = params.join(' ').substr(0, fillWidth);\n  const leftSpace = Math.ceil((fillWidth - headerText.length) / 2);\n  const rightSpace = fillWidth - leftSpace - headerText.length;\n  const fill = (count: number, content: string) => content.repeat(count);\n\n  Log.info(`┌${fill(fillWidth, '─')}┐`);\n  Log.info(`│${fill(leftSpace, ' ')}${headerText}${fill(rightSpace, ' ')}│`);\n  Log.info(`└${fill(fillWidth, '─')}┘`);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {parse as parseYaml} from 'yaml';\nimport {PullApproveGroup} from './group.js';\n\nexport interface PullApproveGroupConfig {\n  conditions?: string[];\n  reviewers?:\n    | {\n        users: string[];\n        teams?: string[];\n      }\n    | {\n        teams: string[];\n      };\n}\n\nexport interface PullApproveConfig {\n  version: number;\n  github_api_version?: string;\n  pullapprove_conditions?: {\n    condition: string;\n    unmet_status: string;\n    explanation: string;\n  }[];\n  groups: {\n    [key: string]: PullApproveGroupConfig;\n  };\n}\n\nexport function parsePullApproveYaml(rawYaml: string): PullApproveConfig {\n  return parseYaml(rawYaml, {merge: true}) as PullApproveConfig;\n}\n\n/** Parses all of the groups defined in the pullapprove yaml. */\nexport function getGroupsFromYaml(pullApproveYamlRaw: string): PullApproveGroup[] {\n  /** JSON representation of the pullapprove yaml file. */\n  const pullApprove = parsePullApproveYaml(pullApproveYamlRaw);\n  return Object.entries(pullApprove.groups).reduce((groups, [groupName, group]) => {\n    return groups.concat(new PullApproveGroup(groupName, group, groups));\n  }, [] as PullApproveGroup[]);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport class PullApproveGroupStateDependencyError extends Error {}\n\nexport class PullApproveAuthorStateDependencyError extends Error {}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Minimatch} from 'minimatch';\n\n/** Map that holds patterns and their corresponding Minimatch globs. */\nconst patternCache = new Map();\n\n/**\n * Gets a glob for the given pattern. The cached glob will be returned\n * if available. Otherwise a new glob will be created and cached.\n */\nexport function getOrCreateGlob(pattern: string) {\n  if (patternCache.has(pattern)) {\n    return patternCache.get(pattern)!;\n  }\n  const glob = new Minimatch(pattern, {dot: false, nobrace: false});\n  patternCache.set(pattern, glob);\n  return glob;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullApproveGroup} from './group.js';\nimport {PullApproveGroupStateDependencyError} from './condition_errors.js';\nimport {getOrCreateGlob} from './utils.js';\n\n/**\n * Superset of a native array. The superset provides methods which mimic the\n * list data structure used in PullApprove for files in conditions.\n */\nexport class PullApproveStringArray extends Array {\n  /** Returns a new array which only includes files that match the given pattern. */\n  include(pattern: string): PullApproveStringArray {\n    return new PullApproveStringArray(...this.filter((s) => getOrCreateGlob(pattern).match(s)));\n  }\n\n  /** Returns a new array which only includes files that did not match the given pattern. */\n  exclude(pattern: string): PullApproveStringArray {\n    return new PullApproveStringArray(...this.filter((s) => !getOrCreateGlob(pattern).match(s)));\n  }\n}\n\n/**\n * Superset of a native array. The superset provides methods which mimic the\n * list data structure used in PullApprove for groups in conditions.\n */\nexport class PullApproveGroupArray extends Array {\n  include(pattern: string): PullApproveGroupArray {\n    return new PullApproveGroupArray(...this.filter((s) => s.groupName.match(pattern)));\n  }\n\n  /** Returns a new array which only includes files that did not match the given pattern. */\n  exclude(pattern: string): PullApproveGroupArray {\n    return new PullApproveGroupArray(...this.filter((s) => s.groupName.match(pattern)));\n  }\n\n  get approved() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get pending() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get active() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get inactive() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get rejected() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get names() {\n    return this.map((g) => g.groupName);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullApproveGroupArray, PullApproveStringArray} from './pullapprove_arrays.js';\n\nimport {PullApproveAuthorStateDependencyError} from './condition_errors.js';\nimport {PullApproveGroup} from './group.js';\nimport {getOrCreateGlob} from './utils.js';\nimport {runInNewContext} from 'vm';\n\n/**\n * Context object that will be used as global context in condition evaluation.\n *\n * Conditions can use various helpers that PullApprove provides. We try to\n * mock them here. Consult the official docs for more details:\n * https://docs.pullapprove.com/config/conditions.\n */\nconst conditionEvaluationContext: object = (() => {\n  const context = {\n    'len': (value: any[]) => value.length,\n    'contains_any_globs': (files: PullApproveStringArray, patterns: string[]) => {\n      // Note: Do not always create globs for the same pattern again. This method\n      // could be called for each source file. Creating glob's is expensive.\n      return files.some((f) => patterns.some((pattern) => getOrCreateGlob(pattern).match(f)));\n    },\n  };\n\n  // We cannot process references to `author` in conditions.\n  Object.defineProperty(context, 'author', {\n    get: () => {\n      const x: any = new String();\n      x.matchesAny = true;\n      return x;\n    },\n  });\n\n  return context;\n})();\n\n/**\n * Converts a given condition to a function that accepts a set of files. The returned\n * function can be called to check if the set of files matches the condition.\n */\nexport function convertConditionToFunction(\n  expr: string,\n): (files: string[], groups: PullApproveGroup[]) => boolean {\n  const jsExpression = `\n    (files, groups) => {\n      return (${transformExpressionToJs(expr)});\n    }\n  `;\n  const isMatchingFn = runInNewContext(jsExpression, conditionEvaluationContext);\n\n  return (files, groups) => {\n    const result = isMatchingFn(\n      new PullApproveStringArray(...files),\n      new PullApproveGroupArray(...groups),\n    );\n\n    // If an array is returned, we consider the condition as active if the array is not\n    // empty. This matches PullApprove's condition evaluation that is based on Python.\n    if (Array.isArray(result)) {\n      return result.length !== 0;\n    }\n    return !!result;\n  };\n}\n\n/**\n * Transforms a condition expression from PullApprove that is based on python\n * so that it can be run inside JavaScript. Current transformations:\n *\n *   1. `aExpr not in bExpr` --> `!bExpr.includes(aExpr)`\n *   2. `aExpr in bExpr`     --> `bExpr.includes(aExpr`)\n *   3. `not expr`           --> `!expr`\n */\nfunction transformExpressionToJs(expression: string): string {\n  return expression\n    .replace(/^(.+)\\s+not in\\s+(\\[.+\\])$/, '!$2.includes($1)')\n    .replace(/^(.+)\\s+in\\s+(.+)$/, '$2.some(x => $1.matchesAny || $1 == x)')\n    .replace(/^(.+)\\s+not in\\s+(.+)$/, '!$2.includes($1)')\n    .replace(/^(.+)\\s+in\\s+(.+)$/, '$2.includes($1)')\n    .replace(/not\\s+/g, '!');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  PullApproveAuthorStateDependencyError,\n  PullApproveGroupStateDependencyError,\n} from './condition_errors.js';\n\nimport {PullApproveGroupConfig} from './parse-yaml.js';\nimport {convertConditionToFunction} from './condition_evaluator.js';\nimport {Log} from '../utils/logging.js';\n\n/** A condition for a group. */\ninterface GroupCondition {\n  expression: string;\n  checkFn: (files: string[], groups: PullApproveGroup[]) => boolean;\n  matchedFiles: Set;\n  unverifiable: boolean;\n}\n\ninterface GroupReviewers {\n  users?: string[];\n  teams?: string[];\n}\n\n/** Result of testing files against the group. */\nexport interface PullApproveGroupResult {\n  groupName: string;\n  matchedConditions: GroupCondition[];\n  matchedCount: number;\n  unmatchedConditions: GroupCondition[];\n  unmatchedCount: number;\n  unverifiableConditions: GroupCondition[];\n}\n\n/** A PullApprove group to be able to test files against. */\nexport class PullApproveGroup {\n  /** List of conditions for the group. */\n  readonly conditions: GroupCondition[] = [];\n  /** List of reviewers for the group. */\n  readonly reviewers: GroupReviewers;\n\n  constructor(\n    public groupName: string,\n    config: PullApproveGroupConfig,\n    readonly precedingGroups: PullApproveGroup[] = [],\n  ) {\n    this._captureConditions(config);\n    this.reviewers = config.reviewers ?? {users: [], teams: []};\n  }\n\n  private _captureConditions(config: PullApproveGroupConfig) {\n    if (config.conditions) {\n      return config.conditions.forEach((condition) => {\n        const expression = condition.trim();\n\n        try {\n          this.conditions.push({\n            expression,\n            checkFn: convertConditionToFunction(expression),\n            matchedFiles: new Set(),\n            unverifiable: false,\n          });\n        } catch (e) {\n          Log.error(`Could not parse condition in group: ${this.groupName}`);\n          Log.error(` - ${expression}`);\n          Log.error(`Error:`, e);\n          process.exit(1);\n        }\n      });\n    }\n  }\n\n  /**\n   * Tests a provided file path to determine if it would be considered matched by\n   * the pull approve group's conditions.\n   */\n  testFile(filePath: string): boolean {\n    let allConditionsMet: boolean | null = null;\n\n    for (const condition of this.conditions) {\n      const {matchedFiles, checkFn, expression} = condition;\n      try {\n        const matchesFile = checkFn([filePath], this.precedingGroups);\n\n        if (matchesFile) {\n          matchedFiles.add(filePath);\n        }\n\n        allConditionsMet = (allConditionsMet ?? true) && matchesFile;\n      } catch (e) {\n        // If a group relies on the author state, we assume this group to never match\n        // or own a file. This is a strict assumption but prevents false-positives.\n        if (e instanceof PullApproveAuthorStateDependencyError) {\n          condition.unverifiable = true;\n          allConditionsMet = false;\n        }\n        // In the case of a condition that depends on the state of groups, we want to ignore\n        // that the verification can't accurately evaluate the condition and continue processing.\n        // Other types of errors fail the verification, as conditions should otherwise be able to\n        // execute without throwing.\n        else if (e instanceof PullApproveGroupStateDependencyError) {\n          condition.unverifiable = true;\n        } else {\n          const errMessage =\n            `Condition could not be evaluated: \\n\\n` +\n            `From the [${this.groupName}] group:\\n` +\n            ` - ${expression}`;\n          Log.error(errMessage, '\\n\\n', e, '\\n\\n');\n          process.exit(1);\n        }\n      }\n    }\n\n    // A file matches the group when all conditions are met. A group is not considered\n    // as matching when all conditions have been skipped.\n    return allConditionsMet === true;\n  }\n\n  /** Retrieve the results for the Group, all matched and unmatched conditions. */\n  getResults(): PullApproveGroupResult {\n    const matchedConditions = this.conditions.filter((c) => c.matchedFiles.size > 0);\n    const unmatchedConditions = this.conditions.filter(\n      (c) => c.matchedFiles.size === 0 && !c.unverifiable,\n    );\n    const unverifiableConditions = this.conditions.filter((c) => c.unverifiable);\n    return {\n      matchedConditions,\n      matchedCount: matchedConditions.length,\n      unmatchedConditions,\n      unmatchedCount: unmatchedConditions.length,\n      unverifiableConditions,\n      groupName: this.groupName,\n    };\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\nimport {verify} from './verify.js';\n\n/** Build the parser for the pullapprove commands. */\nexport function buildPullapproveParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .command('verify', 'Verify the pullapprove config', {}, () => verify());\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {getConfig} from '../../utils/config.js';\nimport {green, Log} from '../../utils/logging.js';\nimport {assertValidReleaseConfig, BuiltPackage} from '../config/index.js';\n\nimport {BuildWorker} from './index.js';\n\n/**\n * Type describing the JSON output of this command.\n *\n * @important When changing this, make sure the release action\n *   invocation is updated as well.\n */\nexport type ReleaseBuildJsonStdout = BuiltPackage[];\n\n/** Command line options for building a release. */\nexport interface ReleaseBuildOptions {\n  json: boolean;\n}\n\n/** Yargs command builder for configuring the `ng-dev release build` command. */\nfunction builder(argv: Argv): Argv {\n  return argv.option('json', {\n    type: 'boolean',\n    description: 'Whether the built packages should be printed to stdout as JSON.',\n    default: false,\n  });\n}\n\n/** Yargs command handler for building a release. */\nasync function handler(args: Arguments) {\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n  const {npmPackages} = config.release;\n  let builtPackages = await BuildWorker.invokeBuild();\n\n  // If package building failed, print an error and exit with an error code.\n  if (builtPackages === null) {\n    Log.error(`  ✘   Could not build release output. Please check output above.`);\n    process.exit(1);\n  }\n\n  // If no packages have been built, we assume that this is never correct\n  // and exit with an error code.\n  if (builtPackages.length === 0) {\n    Log.error(`  ✘   No release packages have been built. Please ensure that the`);\n    Log.error(`      build script is configured correctly in \".ng-dev\".`);\n    process.exit(1);\n  }\n\n  const missingPackages = npmPackages.filter(\n    (pkg) => !builtPackages!.find((b) => b.name === pkg.name),\n  );\n\n  // Check for configured release packages which have not been built. We want to\n  // error and exit if any configured package has not been built.\n  if (missingPackages.length > 0) {\n    Log.error(`  ✘   Release output missing for the following packages:`);\n    missingPackages.forEach((pkg) => Log.error(`      - ${pkg.name}`));\n    process.exit(1);\n  }\n\n  if (args.json) {\n    process.stdout.write(JSON.stringify(builtPackages, null, 2));\n  } else {\n    Log.info(green('  ✓   Built release packages.'));\n    builtPackages.forEach(({name}) => Log.info(green(`      - ${name}`)));\n  }\n}\n\n/** CLI command module for building release output. */\nexport const ReleaseBuildCommandModule: CommandModule<{}, ReleaseBuildOptions> = {\n  builder,\n  handler,\n  command: 'build',\n  describe: 'Builds the release output for the current branch.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {blue, bold, underline, Log} from '../../utils/logging.js';\nimport {ReleaseConfig} from '../config/index.js';\n\nimport {ActiveReleaseTrains} from './active-release-trains.js';\nimport {fetchLongTermSupportBranchesFromNpm} from './long-term-support.js';\nimport {isVersionPublishedToNpm} from './npm-registry.js';\n\n/**\n * Prints the active release trains to the console.\n * @params active Active release trains that should be printed.\n * @params config Release configuration used for querying NPM on published versions.\n */\nexport async function printActiveReleaseTrains(\n  active: ActiveReleaseTrains,\n  config: ReleaseConfig,\n): Promise {\n  const {releaseCandidate, next, latest, exceptionalMinor} = active;\n  const isNextPublishedToNpm = await isVersionPublishedToNpm(next.version, config);\n  const nextTrainType = next.isMajor ? 'major' : 'minor';\n  const ltsBranches = await fetchLongTermSupportBranchesFromNpm(config);\n\n  Log.info();\n  Log.info(blue('Current version branches in the project:'));\n\n  if (exceptionalMinor !== null) {\n    const version = exceptionalMinor.version;\n    const exceptionalMinorPublished = await isVersionPublishedToNpm(version, config);\n    const trainPhase = version.prerelease[0] === 'next' ? 'next' : 'release-candidate';\n    const minorLabel = underline('exceptional minor');\n\n    Log.info(\n      ` • ${bold(exceptionalMinor.branchName)} contains changes for an ${minorLabel} ` +\n        `that is currently in ${bold(trainPhase)} phase.`,\n    );\n    // An exceptional minor may not be published yet. e.g. when we branch off there\n    // will not be a release immediately.\n    if (exceptionalMinorPublished) {\n      Log.info(`   Most recent pre-release for this branch is \"${bold(`v${version}`)}\".`);\n    } else {\n      Log.info(`   Version is set to \"${bold(`v${version}`)}\", but has not been published yet.`);\n    }\n  }\n\n  // Print information for release trains in the feature-freeze/release-candidate phase.\n  if (releaseCandidate !== null) {\n    const rcVersion = releaseCandidate.version;\n    const rcTrainType = releaseCandidate.isMajor ? 'major' : 'minor';\n    const rcTrainPhase =\n      rcVersion.prerelease[0] === 'next' ? 'feature-freeze' : 'release-candidate';\n    Log.info(\n      ` • ${bold(releaseCandidate.branchName)} contains changes for an upcoming ` +\n        `${rcTrainType} that is currently in ${bold(rcTrainPhase)} phase.`,\n    );\n    Log.info(`   Most recent pre-release for this branch is \"${bold(`v${rcVersion}`)}\".`);\n  }\n\n  // Print information about the release-train in the latest phase. i.e. the patch branch.\n  Log.info(` • ${bold(latest.branchName)} contains changes for the most recent patch.`);\n  Log.info(`   Most recent patch version for this branch is \"${bold(`v${latest.version}`)}\".`);\n\n  // Print information about the release-train in the next phase.\n  Log.info(\n    ` • ${bold(next.branchName)} contains changes for a ${nextTrainType} ` +\n      `currently in active development.`,\n  );\n  // Note that there is a special case for versions in the next release-train. The version in\n  // the next branch is not always published to NPM. This can happen when we recently branched\n  // off for a feature-freeze release-train. More details are in the next pre-release action.\n  if (isNextPublishedToNpm) {\n    Log.info(\n      `   Most recent pre-release version for this branch is \"${bold(`v${next.version}`)}\".`,\n    );\n  } else {\n    Log.info(\n      `   Version is currently set to \"${bold(`v${next.version}`)}\", but has not been ` +\n        `published yet.`,\n    );\n  }\n\n  // If no release-train in release-candidate or feature-freeze phase is active,\n  // we print a message as last bullet point to make this clear.\n  if (releaseCandidate === null) {\n    Log.info(' • No release-candidate or feature-freeze branch currently active.');\n  }\n\n  Log.info();\n  Log.info(blue('Current active LTS version branches:'));\n\n  // Print all active LTS branches (each branch as own bullet point).\n  if (ltsBranches.active.length !== 0) {\n    for (const ltsBranch of ltsBranches.active) {\n      Log.info(` • ${bold(ltsBranch.name)} is currently in active long-term support phase.`);\n      Log.info(\n        `   Most recent patch version for this branch is \"${bold(`v${ltsBranch.version}`)}\".`,\n      );\n    }\n  }\n\n  Log.info();\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {assertValidReleaseConfig, NpmPackage} from '../config/index.js';\nimport {ActiveReleaseTrains} from '../versioning/active-release-trains.js';\nimport {printActiveReleaseTrains} from '../versioning/print-active-trains.js';\nimport {getNextBranchName, ReleaseRepoWithApi} from '../versioning/index.js';\nimport {getConfig} from '../../utils/config.js';\n\n/**\n * Type describing the JSON output of this command.\n *\n * @important When changing this, make sure the release action\n *   invocation is updated as well.\n */\nexport type ReleaseInfoJsonStdout = {npmPackages: NpmPackage[]};\n\n/** Command line options for printing release information. */\nexport interface ReleaseInfoOptions {\n  json: boolean;\n}\n\n/** Yargs command builder for the `ng-dev release info` command. */\nfunction builder(argv: Argv): Argv {\n  return argv.option('json', {\n    type: 'boolean',\n    description: 'Whether information should be written as JSON to stdout.',\n    default: false,\n  });\n}\n\n/** Yargs command handler for printing release information. */\nasync function handler(argv: Arguments) {\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n\n  // If JSON output is requested, print the information as JSON to stdout.\n  if (argv.json) {\n    process.stdout.write(JSON.stringify(config.release, null, 2));\n    return;\n  }\n\n  const git = await GitClient.get();\n  const nextBranchName = getNextBranchName(git.config.github);\n  const repo: ReleaseRepoWithApi = {api: git.github, ...git.remoteConfig, nextBranchName};\n  const releaseTrains = await ActiveReleaseTrains.fetch(repo);\n\n  // Print the active release trains.\n  await printActiveReleaseTrains(releaseTrains, config.release);\n}\n\n/** CLI command module for retrieving release information. */\nexport const ReleaseInfoCommandModule: CommandModule<{}, ReleaseInfoOptions> = {\n  builder,\n  handler,\n  command: 'info',\n  describe: 'Prints information for the current release state.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport semver from 'semver';\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {Log} from '../../utils/logging.js';\n\nimport {ReleaseNotes} from './release-notes.js';\nimport {GitClient} from '../../utils/git/git-client.js';\n\n/** Command line options for building a release. */\nexport interface Options {\n  from: string;\n  to: string;\n  prependToChangelog: boolean;\n  releaseVersion: semver.SemVer;\n  type: 'github-release' | 'changelog';\n}\n\n/** Yargs command builder for configuring the `ng-dev release build` command. */\nfunction builder(argv: Argv): Argv {\n  return argv\n    .option('releaseVersion', {\n      type: 'string',\n      default: '0.0.0',\n      coerce: (version: string) => new semver.SemVer(version),\n    })\n    .option('from', {\n      type: 'string',\n      description: 'The git tag or ref to start the changelog entry from',\n      demandOption: true,\n    })\n    .option('to', {\n      type: 'string',\n      description: 'The git tag or ref to end the changelog entry with',\n      default: 'HEAD',\n    })\n    .option('type', {\n      type: 'string',\n      description: 'The type of release notes to create',\n      choices: ['github-release', 'changelog'] as const,\n      default: 'changelog' as const,\n    })\n    .option('prependToChangelog', {\n      type: 'boolean',\n      default: false,\n      description: 'Whether to update the changelog with the newly created entry',\n    });\n}\n\n/** Yargs command handler for generating release notes. */\nasync function handler({releaseVersion, from, to, prependToChangelog, type}: Arguments) {\n  /** Git client to use for generating the release notes. */\n  const git = await GitClient.get();\n  /** The ReleaseNotes instance to generate release notes. */\n  const releaseNotes = await ReleaseNotes.forRange(git, releaseVersion, from, to);\n\n  if (prependToChangelog) {\n    await releaseNotes.prependEntryToChangelogFile();\n    Log.info(`Added release notes for \"${releaseVersion}\" to the changelog`);\n    return;\n  }\n\n  /** The requested release notes entry. */\n  const releaseNotesEntry =\n    type === 'changelog'\n      ? await releaseNotes.getChangelogEntry()\n      : await releaseNotes.getGithubReleaseEntry();\n\n  process.stdout.write(releaseNotesEntry);\n}\n\n/** CLI command module for generating release notes. */\nexport const ReleaseNotesCommandModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'notes',\n  describe: 'Generate release notes',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {render} from 'ejs';\nimport semver from 'semver';\nimport {CommitFromGitLog} from '../../commit-message/parse.js';\n\nimport {formatFiles} from '../../format/format.js';\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {assertValidReleaseConfig, ReleaseConfig} from '../config/index.js';\nimport {RenderContext} from './context.js';\n\nimport changelogTemplate from './templates/changelog.js';\nimport githubReleaseTemplate from './templates/github-release.js';\nimport {getCommitsForRangeWithDeduping} from './commits/get-commits-in-range.js';\nimport {getConfig, NgDevConfig} from '../../utils/config.js';\nimport {assertValidFormatConfig} from '../../format/config.js';\nimport {Changelog} from './changelog.js';\nimport {Prompt} from '../../utils/prompt.js';\n\n/** Workspace-relative path for the changelog file. */\nexport const workspaceRelativeChangelogPath = 'CHANGELOG.md';\n\n/** Release note generation. */\nexport class ReleaseNotes {\n  static async forRange(git: GitClient, version: semver.SemVer, baseRef: string, headRef: string) {\n    const config = await getConfig([assertValidReleaseConfig]);\n    const commits = getCommitsForRangeWithDeduping(git, baseRef, headRef);\n    return new ReleaseNotes(config, version, commits, git);\n  }\n\n  /** The RenderContext to be used during rendering. */\n  private renderContext: RenderContext | undefined;\n\n  /** The title to use for the release. */\n  private title: string | false | undefined;\n\n  protected constructor(\n    public config: NgDevConfig<{release: ReleaseConfig}>,\n    public version: semver.SemVer,\n    private commits: CommitFromGitLog[],\n    private git: GitClient,\n  ) {}\n\n  /** Retrieve the release note generated for a Github Release. */\n  async getGithubReleaseEntry(): Promise {\n    return render(githubReleaseTemplate, await this.generateRenderContext(), {\n      rmWhitespace: true,\n    });\n  }\n\n  /** Retrieve the release note generated for a CHANGELOG entry. */\n  async getChangelogEntry() {\n    return render(changelogTemplate, await this.generateRenderContext(), {rmWhitespace: true});\n  }\n\n  /**\n   * Prepend generated release note to the CHANGELOG.md file in the base directory of the repository\n   * provided by the GitClient. Removes entries for related prerelease entries as appropriate.\n   */\n  async prependEntryToChangelogFile() {\n    // When the version for the entry is a non-prelease (i.e. 1.0.0 rather than 1.0.0-next.1), the\n    // pre-release entries for the version should be removed from the changelog.\n    if (semver.prerelease(this.version) === null) {\n      Changelog.removePrereleaseEntriesForVersion(this.git, this.version);\n    }\n    Changelog.prependEntryToChangelogFile(this.git, await this.getChangelogEntry());\n\n    // TODO(josephperrott): Remove file formatting calls.\n    //   Upon reaching a standardized formatting for markdown files, rather than calling a formatter\n    //   for all creation of changelogs, we instead will confirm in our testing that the new changes\n    //   created for changelogs meet on standardized markdown formats via unit testing.\n    try {\n      assertValidFormatConfig(await this.config);\n      await formatFiles([Changelog.getChangelogFilePaths(this.git).filePath]);\n    } catch {\n      // If the formatting is either unavailable or fails, continue on with the unformatted result.\n    }\n  }\n\n  /** Retrieve the number of commits included in the release notes after filtering and deduping. */\n  async getCommitCountInReleaseNotes() {\n    const context = await this.generateRenderContext();\n    return context.commits.filter(context.includeInReleaseNotes()).length;\n  }\n\n  /**\n   * Gets the URL fragment for the release notes. The URL fragment identifier\n   * can be used to point to a specific changelog entry through an URL.\n   */\n  async getUrlFragmentForRelease() {\n    return (await this.generateRenderContext()).urlFragmentForRelease;\n  }\n\n  /**\n   * Prompt the user for a title for the release, if the project's configuration is defined to use a\n   * title.\n   */\n  async promptForReleaseTitle() {\n    const notesConfig = await this._getNotesConfig();\n\n    if (this.title === undefined) {\n      if (notesConfig.useReleaseTitle) {\n        this.title = await Prompt.input({message: 'Please provide a title for the release:'});\n      } else {\n        this.title = false;\n      }\n    }\n    return this.title;\n  }\n\n  /** Build the render context data object for constructing the RenderContext instance. */\n  private async generateRenderContext(): Promise {\n    const notesConfig = await this._getNotesConfig();\n\n    if (!this.renderContext) {\n      this.renderContext = new RenderContext({\n        commits: this.commits,\n        github: this.git.remoteConfig,\n        version: this.version.format(),\n        groupOrder: notesConfig.groupOrder,\n        hiddenScopes: notesConfig.hiddenScopes,\n        categorizeCommit: notesConfig.categorizeCommit,\n        title: await this.promptForReleaseTitle(),\n      });\n    }\n    return this.renderContext;\n  }\n\n  /** Gets the configuration for the release notes. */\n  private async _getNotesConfig() {\n    return (await this.config).release.releaseNotes ?? {};\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {COMMIT_TYPES, ReleaseNotesLevel} from '../../commit-message/config.js';\nimport {CommitFromGitLog} from '../../commit-message/parse.js';\nimport {GithubConfig} from '../../utils/config.js';\nimport {ReleaseNotesConfig} from '../config/index.js';\nimport {compareString} from '../../utils/locale.js';\n\n/** List of types to be included in the release notes. */\nconst typesToIncludeInReleaseNotes = Object.values(COMMIT_TYPES)\n  .filter((type) => type.releaseNotesLevel === ReleaseNotesLevel.Visible)\n  .map((type) => type.name);\n\n/** List of commit authors which are bots. */\nconst botsAuthorNames = [\n  'dependabot[bot]',\n  'Renovate Bot',\n  'angular-robot',\n  'angular-robot[bot]',\n  'Angular Robot',\n];\n\n/** Data used for context during rendering. */\nexport interface RenderContextData {\n  title: string | false;\n  groupOrder: ReleaseNotesConfig['groupOrder'];\n  hiddenScopes: ReleaseNotesConfig['hiddenScopes'];\n  categorizeCommit: ReleaseNotesConfig['categorizeCommit'];\n  commits: CommitFromGitLog[];\n  version: string;\n  github: GithubConfig;\n  date?: Date;\n}\n\n/** Interface describing an categorized commit. */\nexport interface CategorizedCommit extends CommitFromGitLog {\n  groupName: string;\n  description: string;\n}\n\n/** Context class used for rendering release notes. */\nexport class RenderContext {\n  /** An array of group names in sort order if defined. */\n  private readonly groupOrder = this.data.groupOrder || [];\n  /** An array of scopes to hide from the release entry output. */\n  private readonly hiddenScopes = this.data.hiddenScopes || [];\n  /** The title of the release, or `false` if no title should be used. */\n  readonly title = this.data.title;\n  /** The version of the release. */\n  readonly version = this.data.version;\n  /** The date stamp string for use in the release notes entry. */\n  readonly dateStamp = buildDateStamp(this.data.date);\n  /** URL fragment that is used to create an anchor for the release. */\n  readonly urlFragmentForRelease = this.data.version;\n  /** List of categorized commits in the release period. */\n  readonly commits = this._categorizeCommits(this.data.commits);\n\n  constructor(private readonly data: RenderContextData) {}\n\n  /** Gets a list of categorized commits from all commits in the release period. */\n  _categorizeCommits(commits: CommitFromGitLog[]): CategorizedCommit[] {\n    return commits.map((commit) => {\n      const {description, groupName} = this.data.categorizeCommit?.(commit) ?? {};\n      return {\n        groupName: groupName ?? commit.scope,\n        description: description ?? commit.subject,\n        ...commit,\n      };\n    });\n  }\n\n  /**\n   * Comparator used for sorting commits within a release notes group. Commits\n   * are sorted alphabetically based on their type. Commits having the same type\n   * will be sorted alphabetically based on their determined description\n   */\n  private _commitsWithinGroupComparator = (a: CategorizedCommit, b: CategorizedCommit): number => {\n    const typeCompareOrder = compareString(a.type, b.type);\n    if (typeCompareOrder === 0) {\n      return compareString(a.description, b.description);\n    }\n    return typeCompareOrder;\n  };\n\n  /**\n   * Organizes and sorts the commits into groups of commits.\n   *\n   * Groups are sorted either by default `Array.sort` order, or using the provided group order from\n   * the configuration. Commits are order in the same order within each groups commit list as they\n   * appear in the provided list of commits.\n   * */\n  asCommitGroups(commits: CategorizedCommit[]) {\n    /** The discovered groups to organize into. */\n    const groups = new Map();\n\n    // Place each commit in the list into its group.\n    commits.forEach((commit) => {\n      const key = commit.groupName;\n      const groupCommits = groups.get(key) || [];\n      groups.set(key, groupCommits);\n      groupCommits.push(commit);\n    });\n\n    /**\n     * List of discovered commit groups which are sorted in alphanumeric order\n     * based on the group title.\n     */\n    const commitGroups = Array.from(groups.entries())\n      .map(([title, groupCommits]) => ({\n        title,\n        commits: groupCommits.sort(this._commitsWithinGroupComparator),\n      }))\n      .sort((a, b) => compareString(a.title, b.title));\n\n    // If the configuration provides a sorting order, updated the sorted list of group keys to\n    // satisfy the order of the groups provided in the list with any groups not found in the list at\n    // the end of the sorted list.\n    if (this.groupOrder.length) {\n      for (const groupTitle of this.groupOrder.reverse()) {\n        const currentIdx = commitGroups.findIndex((k) => k.title === groupTitle);\n        if (currentIdx !== -1) {\n          const removedGroups = commitGroups.splice(currentIdx, 1);\n          commitGroups.splice(0, 0, ...removedGroups);\n        }\n      }\n    }\n    return commitGroups;\n  }\n\n  /** Whether the specified commit contains breaking changes. */\n  hasBreakingChanges(commit: CategorizedCommit) {\n    return commit.breakingChanges.length !== 0;\n  }\n\n  /** Whether the specified commit contains deprecations. */\n  hasDeprecations(commit: CategorizedCommit) {\n    return commit.deprecations.length !== 0;\n  }\n\n  /**\n   * A filter function for filtering a list of commits to only include commits which\n   * should appear in release notes.\n   */\n  includeInReleaseNotes() {\n    return (commit: CategorizedCommit) => {\n      if (this.hiddenScopes.includes(commit.scope)) {\n        return false;\n      }\n\n      // Commits which contain breaking changes or deprecations are always included\n      // in release notes. The breaking change or deprecations will already be listed\n      // in a dedicated section but it is still valuable to include the actual commit.\n      if (this.hasBreakingChanges(commit) || this.hasDeprecations(commit)) {\n        return true;\n      }\n\n      return typesToIncludeInReleaseNotes.includes(commit.type);\n    };\n  }\n\n  /**\n   * A filter function for filtering a list of commits to only include commits which contain a\n   * unique value for the provided field across all commits in the list.\n   */\n  unique(field: keyof CategorizedCommit) {\n    const set = new Set();\n    return (commit: CategorizedCommit) => {\n      const include = !set.has(commit[field]);\n      set.add(commit[field]);\n      return include;\n    };\n  }\n\n  /**\n   * Convert a commit object to a Markdown link.\n   */\n  commitToLink(commit: CategorizedCommit): string {\n    const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/commit/${commit.hash}`;\n    return `[${commit.shortHash}](${url})`;\n  }\n\n  /**\n   * Convert a pull request number to a Markdown link.\n   */\n  pullRequestToLink(prNumber: number): string {\n    const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/pull/${prNumber}`;\n    return `[#${prNumber}](${url})`;\n  }\n\n  /**\n   * Transform a given string by replacing any pull request references with their\n   * equivalent markdown links.\n   *\n   * This is useful for the changelog output. Github transforms pull request references\n   * automatically in release note entries, issues and pull requests, but not for plain\n   * markdown files (like the changelog file).\n   */\n  convertPullRequestReferencesToLinks(content: string): string {\n    return content.replace(/#(\\d+)/g, (_, g) => this.pullRequestToLink(Number(g)));\n  }\n\n  /**\n   * Bulletize a paragraph.\n   */\n  bulletizeText(text: string): string {\n    return '- ' + text.replace(/\\n/g, '\\n  ');\n  }\n\n  /**\n   * Convert a commit object to a Markdown linked badged.\n   */\n  commitToBadge(commit: CategorizedCommit): string {\n    let color = 'yellow';\n    switch (commit.type) {\n      case 'fix':\n        color = 'green';\n        break;\n      case 'feat':\n        color = 'blue';\n        break;\n      case 'perf':\n        color = 'orange';\n        break;\n    }\n    const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/commit/${commit.hash}`;\n    const imgSrc = `https://img.shields.io/badge/${commit.shortHash}-${commit.type}-${color}`;\n    return `[![${commit.type} - ${commit.shortHash}](${imgSrc})](${url})`;\n  }\n}\n\n/**\n * Builds a date stamp for stamping in release notes.\n *\n * Uses the current date, or a provided date in the format of YYYY-MM-DD, i.e. 1970-11-05.\n */\nexport function buildDateStamp(date = new Date()) {\n  const year = `${date.getFullYear()}`;\n  const month = `${date.getMonth() + 1}`.padStart(2, '0');\n  const day = `${date.getDate()}`.padStart(2, '0');\n\n  return [year, month, day].join('-');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport default `\n\">\n# <%- version %><% if (title) { %> \"<%- title %>\"<% } %> (<%- dateStamp %>)\n\n<%_\nconst breakingChanges = commits.filter(hasBreakingChanges);\nif (breakingChanges.length) {\n_%>\n## Breaking Changes\n\n<%_\n  for (const group of asCommitGroups(breakingChanges)) {\n_%>\n### <%- group.title %>\n<%_\n    for (const commit of group.commits) {\n      for (const breakingChange of commit.breakingChanges) {\n_%>\n<%- bulletizeText(breakingChange.text) %>\n<%_\n      }\n    }\n  }\n}\n_%>\n\n<%_\nconst deprecations = commits.filter(hasDeprecations);\nif (deprecations.length) {\n_%>\n## Deprecations\n<%_\n  for (const group of asCommitGroups(deprecations)) {\n_%>\n### <%- group.title %>\n<%_\n    for (const commit of group.commits) {\n      for (const deprecation of commit.deprecations) {\n_%>\n<%- bulletizeText(deprecation.text) %>\n<%_\n      }\n    }\n  }\n}\n_%>\n\n<%_\nconst commitsInChangelog = commits.filter(includeInReleaseNotes());\nfor (const group of asCommitGroups(commitsInChangelog)) {\n_%>\n\n### <%- group.title %>\n| Commit | Type | Description |\n| -- | -- | -- |\n<%_\n  for (const commit of group.commits) {\n    const descriptionWithMarkdownLinks = convertPullRequestReferencesToLinks(\n      commit.description);\n_%>\n| <%- commitToLink(commit) %> | <%- commit.type %> | <%- descriptionWithMarkdownLinks %> |\n<%_\n  }\n}\n_%>\n\n`;\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport default `\n\">\n# <%- version %><% if (title) { %> \"<%- title %>\"<% } %> (<%- dateStamp %>)\n\n<%_\nconst commitsInChangelog = commits.filter(includeInReleaseNotes());\nfor (const group of asCommitGroups(commitsInChangelog)) {\n_%>\n\n### <%- group.title %>\n| Commit | Description |\n| -- | -- |\n<%_\n  for (const commit of group.commits) {\n_%>\n| <%- commitToBadge(commit) %> | <%- commit.description %> |\n<%_\n  }\n}\n_%>\n\n<%_\nconst breakingChanges = commits.filter(hasBreakingChanges);\nif (breakingChanges.length) {\n_%>\n## Breaking Changes\n\n<%_\n  for (const group of asCommitGroups(breakingChanges)) {\n_%>\n### <%- group.title %>\n<%_\n    for (const commit of group.commits) {\n      for (const breakingChange of commit.breakingChanges) {\n_%>\n<%- bulletizeText(breakingChange.text) %>\n<%_\n      }\n    }\n  }\n}\n_%>\n\n<%_\nconst deprecations = commits.filter(hasDeprecations);\nif (deprecations.length) {\n_%>\n## Deprecations\n<%_\n  for (const group of asCommitGroups(deprecations)) {\n_%>\n### <%- group.title %>\n<%_\n    for (const commit of group.commits) {\n      for (const deprecation of commit.deprecations) {\n_%>\n<%- bulletizeText(deprecation.text) %>\n<%_\n      }\n    }\n  }\n}\n_%>\n`;\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Commit} from '../../../commit-message/parse.js';\n\n/**\n * Fields from a `Commit` to incorporate when building up an unique\n * id for a commit message.\n *\n * Note: The header incorporates the commit type, scope and message\n * but lacks information for fixup, revert or squash commits..\n */\nconst fieldsToIncorporateForId: (keyof Commit)[] = ['header', 'isFixup', 'isRevert', 'isSquash'];\n\n/**\n * Computes an unique id for the given commit using its commit message.\n * This can be helpful for comparisons, if commits differ in SHAs due\n * to cherry-picking.\n */\nexport function computeUniqueIdFromCommitMessage(commit: Commit): string {\n  // Join all resolved fields with a special character to build up an id.\n  return fieldsToIncorporateForId.map((f) => commit[f]).join('ɵɵ');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GitClient} from '../../../utils/git/git-client.js';\nimport {\n  CommitFromGitLog,\n  gitLogFormatForParsing,\n  parseCommitFromGitLog,\n} from '../../../commit-message/parse.js';\nimport {computeUniqueIdFromCommitMessage} from './unique-commit-id.js';\n\n/**\n * Gets all commits the head branch contains, but the base branch does not include.\n * This follows the same semantics as Git's double-dot revision range.\n *\n * i.e. `..` revision range as per Git.\n * https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection.\n *\n * Branches in the Angular organization are diverging quickly due to multiple factors\n * concerning the versioning and merging. i.e. Commits are cherry-picked into branches,\n * resulting in different SHAs for each branch. Additionally, branches diverge quickly\n * because changes can be made only for specific branches (e.g. a master-only change).\n *\n * In order to allow for comparisons that follow similar semantics as Git's double-dot\n * revision range syntax, the logic re-implementing the semantics need to account for\n * the mentioned semi-diverged branches. We achieve this by excluding commits in the\n * head branch which have a similarly-named commit in the base branch. We cannot rely on\n * SHAs for determining common commits between the two branches (as explained above).\n *\n * More details can be found in the `get-commits-in-range.png` file which illustrates a\n * scenario where commits from the patch branch need to be excluded from the main branch.\n */\nexport function getCommitsForRangeWithDeduping(\n  client: GitClient,\n  baseRef: string,\n  headRef: string,\n): CommitFromGitLog[] {\n  const commits: CommitFromGitLog[] = [];\n  const commitsForHead = fetchCommitsForRevisionRange(client, `${baseRef}..${headRef}`);\n  const commitsForBase = fetchCommitsForRevisionRange(client, `${headRef}..${baseRef}`);\n\n  // Map that keeps track of commits within the base branch. Commits are\n  // stored with an unique id based on the commit message. If a similarly-named\n  // commit appears multiple times, the value number will reflect that.\n  const knownCommitsOnlyInBase = new Map();\n\n  for (const commit of commitsForBase) {\n    const id = computeUniqueIdFromCommitMessage(commit);\n    const numSimilarCommits = knownCommitsOnlyInBase.get(id) ?? 0;\n    knownCommitsOnlyInBase.set(id, numSimilarCommits + 1);\n  }\n\n  for (const commit of commitsForHead) {\n    const id = computeUniqueIdFromCommitMessage(commit);\n    const numSimilarCommits = knownCommitsOnlyInBase.get(id) ?? 0;\n\n    // If there is a similar commit in the base branch, the current commit in the head branch\n    // needs to be skipped. We keep track of the number of similar commits so that we do not\n    // accidentally \"dedupe\" a commit. e.g. consider a case where commit `X` lands in the\n    // patch branch and next branch. Then a similar similarly named commits lands only in the\n    // next branch. We would not want to omit that one as it is not part of the patch branch.\n    if (numSimilarCommits > 0) {\n      knownCommitsOnlyInBase.set(id, numSimilarCommits - 1);\n      continue;\n    }\n\n    commits.push(commit);\n  }\n  return commits;\n}\n\n/** Fetches commits for the given revision range using `git log`. */\nexport function fetchCommitsForRevisionRange(\n  client: GitClient,\n  revisionRange: string,\n): CommitFromGitLog[] {\n  const splitDelimiter = '-------------ɵɵ------------';\n  const output = client.run([\n    'log',\n    `--format=${gitLogFormatForParsing}${splitDelimiter}`,\n    revisionRange,\n  ]);\n\n  return output.stdout\n    .split(splitDelimiter)\n    .filter((entry) => !!entry.trim())\n    .map(santizeCommitMessage)\n    .map((entry) => parseCommitFromGitLog(Buffer.from(entry, 'utf-8')));\n}\n\n/**\n * Santized a raw Github message to avoid unintended results in github rendered contexts.\n *\n * Currently sanitization does:\n *  - Removes unexpected references to users\n */\nfunction santizeCommitMessage(content: string): string {\n  return content.replace(/ (@[A-z0-9]+) /g, ' `$1` ');\n}\n", "import {existsSync, readFileSync, writeFileSync} from 'fs';\nimport {join} from 'path';\nimport semver from 'semver';\nimport {GitClient} from '../../utils/git/git-client.js';\n\n/** Project-relative path for the changelog file. */\nconst changelogPath = 'CHANGELOG.md';\n\n/** Project-relative path for the changelog archive file. */\nconst changelogArchivePath = 'CHANGELOG_ARCHIVE.md';\n\n/** A marker used to split a CHANGELOG.md file into individual entries. */\nexport const splitMarker = '';\n\n/**\n * A string to use between each changelog entry when joining them together.\n *\n * Since all every changelog entry's content is trimmed, when joining back together, two new lines\n * must be placed around the splitMarker to create a one line buffer around the comment in the\n * markdown.\n * i.e.\n * \n *\n * \n *\n * \n */\nconst joinMarker = `\\n\\n${splitMarker}\\n\\n`;\n\n/** A RegExp matcher to extract the version of a changelog entry from the entry content. */\nconst versionAnchorMatcher = new RegExp(``);\n\n/** An individual changelog entry. */\ninterface ChangelogEntry {\n  content: string;\n  version: semver.SemVer;\n}\n\nexport class Changelog {\n  /** Prepend a changelog entry to the current changelog file. */\n  static prependEntryToChangelogFile(git: GitClient, entry: string) {\n    const changelog = new this(git);\n    changelog.prependEntryToChangelogFile(entry);\n  }\n\n  /**\n   * Move all changelog entries from the CHANGELOG.md file for versions prior to the provided\n   * version to the changelog archive.\n   *\n   * Versions should be used to determine which entries are moved to archive as versions are the\n   * most accurate piece of context found within a changelog entry to determine its relationship to\n   * other changelog entries.  This allows for example, moving all changelog entries out of the\n   * main changelog when a version moves out of support.\n   */\n  static moveEntriesPriorToVersionToArchive(git: GitClient, version: semver.SemVer) {\n    const changelog = new this(git);\n    changelog.moveEntriesPriorToVersionToArchive(version);\n  }\n\n  /**\n   * Remove all changelog entries from the CHANGELOG.md file for versions which are prereleases\n   * for the provided version. This is expected to be done on each major and minor release to remove\n   * the changelog entries which will be made redundant by the first major/minor changelog for a\n   * version.\n   */\n  static removePrereleaseEntriesForVersion(git: GitClient, version: semver.SemVer) {\n    const changelog = new this(git);\n    changelog.removePrereleaseEntriesForVersion(version);\n  }\n\n  // TODO(josephperrott): Remove this after it is unused.\n  /** Retrieve the file paths for the changelog files. */\n  static getChangelogFilePaths(git: GitClient) {\n    return new this(git);\n  }\n\n  /** The absolute path to the changelog file. */\n  readonly filePath = join(this.git.baseDir, changelogPath);\n  /** The absolute path to the changelog archive file. */\n  readonly archiveFilePath = join(this.git.baseDir, changelogArchivePath);\n  /**\n   * The changelog entries in the CHANGELOG.md file.\n   * Delays reading the CHANGELOG.md file until it is actually used.\n   */\n  private get entries() {\n    if (this._entries === undefined) {\n      return (this._entries = this.getEntriesFor(this.filePath));\n    }\n    return this._entries;\n  }\n  private _entries: undefined | ChangelogEntry[] = undefined;\n  /**\n   * The changelog entries in the CHANGELOG_ARCHIVE.md file.\n   * Delays reading the CHANGELOG_ARCHIVE.md file until it is actually used.\n   */\n  private get archiveEntries() {\n    if (this._archiveEntries === undefined) {\n      return (this._archiveEntries = this.getEntriesFor(this.archiveFilePath));\n    }\n    return this._archiveEntries;\n  }\n  private _archiveEntries: undefined | ChangelogEntry[] = undefined;\n\n  private constructor(private git: GitClient) {}\n\n  /** Prepend a changelog entry to the changelog. */\n  private prependEntryToChangelogFile(entry: string) {\n    this.entries.unshift(parseChangelogEntry(entry));\n    this.writeToChangelogFile();\n  }\n\n  /**\n   * Remove all changelog entries from the CHANGELOG.md file for versions which are prereleases\n   * for the provided version. This is expected to be done on each major and minor release to remove\n   * the changelog entries which will be made redundant by the first major/minor changelog for a\n   * version.\n   */\n  private removePrereleaseEntriesForVersion(version: semver.SemVer) {\n    this._entries = this.entries.filter((entry: ChangelogEntry) => {\n      // For entries which are a prerelease, ensure that at least one segment of the version is\n      // divergent from the version we are checking against.\n      if (entry.version.prerelease.length !== 0) {\n        return (\n          version.major !== entry.version.major ||\n          version.minor !== entry.version.minor ||\n          version.patch !== entry.version.patch\n        );\n      }\n      return true;\n    });\n    this.writeToChangelogFile();\n  }\n\n  /**\n   * Move all changelog entries from the CHANGELOG.md file for versions prior to the provided\n   * version to the changelog archive.\n   *\n   * Versions should be used to determine which entries are moved to archive as versions are the\n   * most accurate piece of context found within a changelog entry to determine its relationship to\n   * other changelog entries.  This allows for example, moving all changelog entries out of the\n   * main changelog when a version moves out of support.\n   */\n  private moveEntriesPriorToVersionToArchive(version: semver.SemVer) {\n    [...this.entries].reverse().forEach((entry: ChangelogEntry) => {\n      if (semver.lt(entry.version, version)) {\n        this.archiveEntries.unshift(entry);\n        this.entries.splice(this.entries.indexOf(entry), 1);\n      }\n    });\n\n    this.writeToChangelogFile();\n    if (this.archiveEntries.length) {\n      this.writeToChangelogArchiveFile();\n    }\n  }\n\n  /** Update the changelog archive file with the known changelog archive entries. */\n  private writeToChangelogArchiveFile(): void {\n    const changelogArchive = this.archiveEntries.map((entry) => entry.content).join(joinMarker);\n    writeFileSync(this.archiveFilePath, changelogArchive);\n  }\n\n  /** Update the changelog file with the known changelog entries. */\n  private writeToChangelogFile(): void {\n    const changelog = this.entries.map((entry) => entry.content).join(joinMarker);\n    writeFileSync(this.filePath, changelog);\n  }\n\n  /**\n   * Retrieve the changelog entries for the provide changelog path, if the file does not exist an\n   * empty array is returned.\n   */\n  private getEntriesFor(path: string): ChangelogEntry[] {\n    if (!existsSync(path)) {\n      return [];\n    }\n\n    return (\n      readFileSync(path, {encoding: 'utf8'})\n        // Use the versionMarker as the separator for .split().\n        .split(splitMarker)\n        // If the `split()` method finds the separator at the beginning or end of a string, it\n        // includes an empty string at the respective locaiton, so we filter to remove all of these\n        // potential empty strings.\n        .filter((entry) => entry.trim().length !== 0)\n        // Create a ChangelogEntry for each of the string entry.\n        .map(parseChangelogEntry)\n    );\n  }\n}\n\n/** Parse the provided string into a ChangelogEntry object. */\nfunction parseChangelogEntry(content: string): ChangelogEntry {\n  const versionMatcherResult = versionAnchorMatcher.exec(content);\n  if (versionMatcherResult === null) {\n    throw Error(`Unable to determine version for changelog entry: ${content}`);\n  }\n  const version = semver.parse(versionMatcherResult[1]);\n\n  if (version === null) {\n    throw Error(\n      `Unable to determine version for changelog entry, with tag: ${versionMatcherResult[1]}`,\n    );\n  }\n\n  return {\n    content: content.trim(),\n    version,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport semver from 'semver';\nimport {CommandModule} from 'yargs';\n\nimport {assertPassingReleasePrechecks} from './index.js';\nimport {getConfig} from '../../utils/config.js';\nimport {readBufferFromStdinUntilClosed} from '../../utils/read-stdin-until-closed.js';\nimport {assertValidReleaseConfig, BuiltPackageWithInfo} from '../config/index.js';\nimport {Log} from '../../utils/logging.js';\n\n/**\n * Type describing the JSON stdin input of this command. The release tool will\n * deliver this information through `stdin` because command line arguments are\n * less reliable and have max-length limits.\n *\n * @important When changing this, make sure the release action\n *   invocation is updated as well.\n */\nexport interface ReleasePrecheckJsonStdin {\n  /** Package output that has been built and can be checked. */\n  builtPackagesWithInfo: BuiltPackageWithInfo[];\n  /** New version that is intended to be released. */\n  newVersion: string;\n}\n\nasync function handler() {\n  // Note: Stdin input is buffered until we start reading from it. This allows us to\n  // asynchronously start reading the `stdin` input. With the default `readableFlowing`\n  // value of `null`, data is buffered. See: https://nodejs.org/api/stream.html#three-states.\n  const stdin = await readBufferFromStdinUntilClosed();\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n\n  // Parse the JSON metadata read from `stdin`.\n  const {builtPackagesWithInfo, newVersion: newVersionRaw} = JSON.parse(\n    stdin.toString('utf8'),\n  ) as ReleasePrecheckJsonStdin;\n\n  if (!Array.isArray(builtPackagesWithInfo)) {\n    Log.error(`  ✘   Release pre-checks failed. Invalid list of built packages was provided.`);\n    process.exitCode = 1;\n    return;\n  }\n\n  const newVersion = semver.parse(newVersionRaw);\n  if (newVersion === null) {\n    Log.error(`  ✘   Release pre-checks failed. Invalid new version was provided.`);\n    process.exitCode = 1;\n    return;\n  }\n\n  if (!(await assertPassingReleasePrechecks(config.release, newVersion, builtPackagesWithInfo))) {\n    process.exitCode = 1;\n  }\n}\n\n/** CLI command module for running checks before releasing. */\nexport const ReleasePrecheckCommandModule: CommandModule<{}, {}> = {\n  handler,\n  command: 'precheck',\n  describe: false,\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Unique error class for failures when reading from the stdin. */\nexport class ReadBufferFromStdinError extends Error {}\n\n/**\n * Reads a `Buffer` from `stdin` until the stream is closed.\n *\n * @returns a Promise resolving with the `Buffer`. Rejects with `ReadBufferFromStdinError`\n *   on unexpected read errors.\n */\nexport function readBufferFromStdinUntilClosed(\n  input: NodeJS.ReadStream = process.stdin,\n): Promise {\n  return new Promise((resolve, reject) => {\n    const data: Buffer[] = [];\n\n    input.on('data', (chunk) => data.push(chunk));\n    input.on('end', () => resolve(Buffer.concat(data)));\n    input.on('error', () => reject(new ReadBufferFromStdinError()));\n    input.on('timeout', () => reject(new ReadBufferFromStdinError('Unexpected timeout')));\n  });\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ChildProcess} from '../../utils/child-process.js';\n\nimport {NpmDistTag} from './npm-registry.js';\n\nexport abstract class NpmCommand {\n  /**\n   * Runs NPM publish within a specified package directory.\n   * @throws With the process log output if the publish failed.\n   */\n  static async publish(packagePath: string, distTag: NpmDistTag, registryUrl: string | undefined) {\n    const args = ['publish', '--access', 'public', '--tag', distTag];\n    // If a custom registry URL has been specified, add the `--registry` flag.\n    if (registryUrl !== undefined) {\n      args.push('--registry', registryUrl);\n    }\n    await ChildProcess.spawn('npm', args, {cwd: packagePath, mode: 'silent'});\n  }\n\n  /**\n   * Sets the NPM tag to the specified version for the given package.\n   * @throws With the process log output if the tagging failed.\n   */\n  static async setDistTagForPackage(\n    packageName: string,\n    distTag: string,\n    version: semver.SemVer,\n    registryUrl: string | undefined,\n  ) {\n    const args = ['dist-tag', 'add', `${packageName}@${version}`, distTag];\n    // If a custom registry URL has been specified, add the `--registry` flag.\n    if (registryUrl !== undefined) {\n      args.push('--registry', registryUrl);\n    }\n    await ChildProcess.spawn('npm', args, {mode: 'silent'});\n  }\n\n  /**\n   * Deletes the specified NPM tag for the given package.\n   * @throws With the process log output if the removal failed.\n   */\n  static async deleteDistTagForPackage(\n    packageName: string,\n    distTag: string,\n    registryUrl: string | undefined,\n  ) {\n    const args = ['dist-tag', 'rm', packageName, distTag];\n    // If a custom registry URL has been specified, add the `--registry` flag.\n    if (registryUrl !== undefined) {\n      args.push('--registry', registryUrl);\n    }\n    await ChildProcess.spawn('npm', args, {mode: 'silent'});\n  }\n\n  /**\n   * Checks whether the user is currently logged into NPM.\n   * @returns Whether the user is currently logged into NPM.\n   */\n  static async checkIsLoggedIn(registryUrl: string | undefined): Promise {\n    const args = ['whoami'];\n    // If a custom registry URL has been specified, add the `--registry` flag.\n    if (registryUrl !== undefined) {\n      args.push('--registry', registryUrl);\n    }\n    try {\n      await ChildProcess.spawn('npm', args, {mode: 'silent'});\n    } catch (e) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Log into NPM at a provided registry using an interactive invocation.\n   * @throws With the `npm login` status code if the login failed.\n   */\n  static async startInteractiveLogin(registryUrl: string | undefined) {\n    const args = ['login', '--no-browser'];\n    // If a custom registry URL has been specified, add the `--registry` flag. The `--registry` flag\n    // must be spliced into the correct place in the command as npm expects it to be the flag\n    // immediately following the login subcommand.\n    if (registryUrl !== undefined) {\n      args.splice(1, 0, '--registry', registryUrl);\n    }\n    // The login command prompts for username, password and other profile information. Hence\n    // the process needs to be interactive (i.e. respecting current TTYs stdin).\n    await ChildProcess.spawnInteractive('npm', args);\n  }\n\n  /**\n   * Log out of NPM at a provided registry.\n   * @returns Whether the user was logged out of NPM.\n   */\n  static async logout(registryUrl: string | undefined): Promise {\n    const args = ['logout'];\n    // If a custom registry URL has been specified, add the `--registry` flag. The `--registry` flag\n    // must be spliced into the correct place in the command as npm expects it to be the flag\n    // immediately following the logout subcommand.\n    if (registryUrl !== undefined) {\n      args.splice(1, 0, '--registry', registryUrl);\n    }\n    try {\n      await ChildProcess.spawn('npm', args, {mode: 'silent'});\n    } finally {\n      return this.checkIsLoggedIn(registryUrl);\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Error that will be thrown if the user manually aborted a release action. */\nexport class UserAbortedReleaseActionError extends Error {}\n\n/** Error that will be thrown if the action has been aborted due to a fatal error. */\nexport class FatalReleaseActionError extends Error {}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {green, Log} from '../../../utils/logging.js';\nimport {workspaceRelativePackageJsonPath} from '../../../utils/constants.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {ReleaseAction} from '../actions.js';\nimport {getCommitMessageForNextBranchMajorSwitch} from '../commit-message.js';\nimport {isFirstNextPrerelease} from '../../versioning/prerelease-version.js';\nimport {isVersionPublishedToNpm} from '../../versioning/npm-registry.js';\nimport {ReleaseConfig} from '../../config/index.js';\n\n/**\n * Release action that configures the active next release-train to be for a major\n * version. This means that major changes can land in the next branch.\n */\nexport class ConfigureNextAsMajorAction extends ReleaseAction {\n  private _newVersion = semver.parse(`${this.active.next.version.major + 1}.0.0-next.0`)!;\n\n  override async getDescription() {\n    const {branchName} = this.active.next;\n    const newVersion = this._newVersion;\n    return `Configure the \"${branchName}\" branch to be released as major (v${newVersion}).`;\n  }\n\n  override async perform() {\n    const {branchName} = this.active.next;\n    const newVersion = this._newVersion;\n    const beforeStagingSha = await this.getLatestCommitOfBranch(branchName);\n\n    await this.assertPassingGithubStatus(beforeStagingSha, branchName);\n    await this.checkoutUpstreamBranch(branchName);\n    await this.updateProjectVersion(newVersion);\n\n    await this.createCommit(getCommitMessageForNextBranchMajorSwitch(newVersion), [\n      workspaceRelativePackageJsonPath,\n      ...this.getAspectLockFiles(),\n    ]);\n    const pullRequest = await this.pushChangesToForkAndCreatePullRequest(\n      branchName,\n      `switch-next-to-major-${newVersion}`,\n      `Configure next branch to receive major changes for v${newVersion}`,\n    );\n\n    Log.info(green('  ✓   Next branch update pull request has been created.'));\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n  }\n\n  static override async isActive(active: ActiveReleaseTrains, config: ReleaseConfig) {\n    // The `next` branch can be switched to a major version, unless it already\n    // is targeting a new major, or if pre-releases have already started.\n    return (\n      !active.next.isMajor &&\n      isFirstNextPrerelease(active.next.version) &&\n      !(await isVersionPublishedToNpm(active.next.version, config))\n    );\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** NPM package name that is used for the `ng-dev` tool. */\nexport const ngDevNpmPackageName = '@angular/ng-dev';\n\n/** Workspace-relative path for the \"package.json\" file. */\nexport const workspaceRelativePackageJsonPath = 'package.json';\n\n/** Workspace-relative path for the \"yarn.lock\" file. */\nexport const workspaceRelativeYarnLockFilePath = 'yarn.lock';\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {promises as fs, existsSync} from 'fs';\nimport path, {join} from 'path';\nimport semver from 'semver';\n\nimport {workspaceRelativePackageJsonPath} from '../../utils/constants.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {isGithubApiError} from '../../utils/git/github.js';\nimport githubMacros from '../../utils/git/github-macros.js';\nimport {\n  getFileContentsUrl,\n  getListCommitsInBranchUrl,\n  getRepositoryGitUrl,\n} from '../../utils/git/github-urls.js';\nimport {green, Log} from '../../utils/logging.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {BuiltPackage, BuiltPackageWithInfo, ReleaseConfig} from '../config/index.js';\nimport {ReleaseNotes, workspaceRelativeChangelogPath} from '../notes/release-notes.js';\nimport {NpmDistTag, PackageJson} from '../versioning/index.js';\nimport {ActiveReleaseTrains} from '../versioning/active-release-trains.js';\nimport {createExperimentalSemver} from '../versioning/experimental-versions.js';\nimport {NpmCommand} from '../versioning/npm-command.js';\nimport {getReleaseTagForVersion} from '../versioning/version-tags.js';\nimport {FatalReleaseActionError, UserAbortedReleaseActionError} from './actions-error.js';\nimport {\n  analyzeAndExtendBuiltPackagesWithInfo,\n  assertIntegrityOfBuiltPackages,\n} from './built-package-info.js';\nimport {\n  getCommitMessageForRelease,\n  getReleaseNoteCherryPickCommitMessage,\n} from './commit-message.js';\nimport {githubReleaseBodyLimit} from './constants.js';\nimport {ExternalCommands} from './external-commands.js';\nimport {promptToInitiatePullRequestMerge} from './prompt-merge.js';\nimport {Prompt} from '../../utils/prompt.js';\nimport {glob} from 'fast-glob';\n\n/** Interface describing a Github repository. */\nexport interface GithubRepo {\n  owner: string;\n  name: string;\n}\n\n/** Interface describing a Github pull request. */\nexport interface PullRequest {\n  /** Unique id for the pull request (i.e. the PR number). */\n  id: number;\n  /** URL that resolves to the pull request in Github. */\n  url: string;\n  /** Fork containing the head branch of this pull request. */\n  fork: GithubRepo;\n  /** Branch name in the fork that defines this pull request. */\n  forkBranch: string;\n}\n\n/** Options that can be used to control the staging of a new version. */\nexport interface StagingOptions {\n  /**\n   * As part of staging, the `package.json` can be updated before the\n   * new version is set.\n   * @see {ReleaseAction.updateProjectVersion}\n   */\n  updatePkgJsonFn?: (pkgJson: PackageJson) => void;\n}\n\n/** Constructor type for instantiating a release action */\nexport interface ReleaseActionConstructor {\n  /** Whether the release action is currently active. */\n  isActive(active: ActiveReleaseTrains, config: ReleaseConfig): Promise;\n  /** Constructs a release action. */\n  new (...args: [ActiveReleaseTrains, AuthenticatedGitClient, ReleaseConfig, string]): T;\n}\n\n/**\n * Abstract base class for a release action. A release action is selectable by the caretaker\n * if active, and can perform changes for releasing, such as staging a release, bumping the\n * version, cherry-picking the changelog, branching off from the main branch. etc.\n */\nexport abstract class ReleaseAction {\n  /** Whether the release action is currently active. */\n  static isActive(_trains: ActiveReleaseTrains, _config: ReleaseConfig): Promise {\n    throw Error('Not implemented.');\n  }\n\n  /** Gets the description for a release action. */\n  abstract getDescription(): Promise;\n  /**\n   * Performs the given release action.\n   * @throws {UserAbortedReleaseActionError} When the user manually aborted the action.\n   * @throws {FatalReleaseActionError} When the action has been aborted due to a fatal error.\n   */\n  abstract perform(): Promise;\n\n  constructor(\n    protected active: ActiveReleaseTrains,\n    protected git: AuthenticatedGitClient,\n    protected config: ReleaseConfig,\n    protected projectDir: string,\n  ) {}\n\n  /**\n   * Updates the version in the project top-level `package.json` file.\n   *\n   * @param newVersion New SemVer version to be set in the file.\n   * @param additionalUpdateFn Optional update function that runs before\n   *   the version update. Can be used to update other fields.\n   */\n  protected async updateProjectVersion(\n    newVersion: semver.SemVer,\n    additionalUpdateFn?: (pkgJson: PackageJson) => void,\n  ) {\n    const pkgJsonPath = join(this.projectDir, workspaceRelativePackageJsonPath);\n    const pkgJson = JSON.parse(await fs.readFile(pkgJsonPath, 'utf8')) as {\n      version: string;\n      [key: string]: any;\n    };\n    if (additionalUpdateFn !== undefined) {\n      additionalUpdateFn(pkgJson);\n    }\n    pkgJson.version = newVersion.format();\n    // Write the `package.json` file. Note that we add a trailing new line\n    // to avoid unnecessary diff. IDEs usually add a trailing new line.\n    await fs.writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n    Log.info(green(`  ✓   Updated project version to ${pkgJson.version}`));\n\n    if (this.config.rulesJsInteropMode && existsSync(path.join(this.projectDir, '.aspect'))) {\n      await ExternalCommands.invokeBazelUpdateAspectLockFiles(this.projectDir);\n    }\n  }\n\n  /*\n   * Get the modified Aspect lock files if `rulesJsInteropMode` is enabled.\n   */\n  protected getAspectLockFiles(): string[] {\n    // TODO: Remove after `rules_js` migration is complete.\n    return this.config.rulesJsInteropMode\n      ? glob.sync(['.aspect/**', 'pnpm-lock.yaml'], {cwd: this.projectDir})\n      : [];\n  }\n\n  /** Gets the most recent commit of a specified branch. */\n  protected async getLatestCommitOfBranch(branchName: string): Promise {\n    const {\n      data: {commit},\n    } = await this.git.github.repos.getBranch({...this.git.remoteParams, branch: branchName});\n    return commit.sha;\n  }\n\n  /** Checks whether the given revision is ahead to the base by the specified amount. */\n  private async _isRevisionAheadOfBase(\n    baseRevision: string,\n    targetRevision: string,\n    expectedAheadCount: number,\n  ) {\n    const {\n      data: {ahead_by, status},\n    } = await this.git.github.repos.compareCommits({\n      ...this.git.remoteParams,\n      base: baseRevision,\n      head: targetRevision,\n    });\n\n    return status === 'ahead' && ahead_by === expectedAheadCount;\n  }\n\n  /**\n   * Verifies that the given commit has passing all statuses.\n   *\n   * Upon error, a link to the branch containing the commit is printed,\n   * allowing the caretaker to quickly inspect the GitHub commit status failures.\n   */\n  protected async assertPassingGithubStatus(commitSha: string, branchNameForError: string) {\n    const {result} = await githubMacros.getCombinedChecksAndStatusesForRef(this.git.github, {\n      ...this.git.remoteParams,\n      ref: commitSha,\n    });\n    const branchCommitsUrl = getListCommitsInBranchUrl(this.git, branchNameForError);\n\n    if (result === 'failing' || result === null) {\n      Log.error(\n        `  ✘   Cannot stage release. Commit \"${commitSha}\" does not pass all github ` +\n          'status checks. Please make sure this commit passes all checks before re-running.',\n      );\n      Log.error(`      Please have a look at: ${branchCommitsUrl}`);\n\n      if (await Prompt.confirm({message: 'Do you want to ignore the Github status and proceed?'})) {\n        Log.warn(\n          '  ⚠   Upstream commit is failing CI checks, but status has been forcibly ignored.',\n        );\n        return;\n      }\n      throw new UserAbortedReleaseActionError();\n    } else if (result === 'pending') {\n      Log.error(\n        `  ✘   Commit \"${commitSha}\" still has pending github statuses that ` +\n          'need to succeed before staging a release.',\n      );\n      Log.error(`      Please have a look at: ${branchCommitsUrl}`);\n      if (await Prompt.confirm({message: 'Do you want to ignore the Github status and proceed?'})) {\n        Log.warn('  ⚠   Upstream commit is pending CI, but status has been forcibly ignored.');\n        return;\n      }\n      throw new UserAbortedReleaseActionError();\n    }\n\n    Log.info(green('  ✓   Upstream commit is passing all github status checks.'));\n  }\n\n  /**\n   * Prompts the user for potential release notes edits that need to be made. Once\n   * confirmed, a new commit for the release point is created.\n   */\n  protected async waitForEditsAndCreateReleaseCommit(newVersion: semver.SemVer) {\n    Log.warn(\n      '  ⚠   Please review the changelog and ensure that the log contains only changes ' +\n        'that apply to the public API surface.',\n    );\n    Log.warn('      Manual changes can be made. When done, please proceed with the prompt below.');\n\n    if (!(await Prompt.confirm({message: 'Do you want to proceed and commit the changes?'}))) {\n      throw new UserAbortedReleaseActionError();\n    }\n\n    // Commit message for the release point.\n    const commitMessage = getCommitMessageForRelease(newVersion);\n    const filesToCommit = [\n      workspaceRelativePackageJsonPath,\n      workspaceRelativeChangelogPath,\n      ...this.getAspectLockFiles(),\n    ];\n\n    // Create a release staging commit including changelog and version bump.\n    await this.createCommit(commitMessage, filesToCommit);\n\n    // The caretaker may have attempted to make additional changes. These changes would\n    // not be captured into the release commit. The working directory should remain clean,\n    // like we assume it being clean when we start the release actions.\n    if (this.git.hasUncommittedChanges()) {\n      Log.error('  ✘   Unrelated changes have been made as part of the changelog editing.');\n      throw new FatalReleaseActionError();\n    }\n\n    Log.info(green(`  ✓   Created release commit for: \"${newVersion}\".`));\n  }\n\n  /**\n   * Gets an owned fork for the configured project of the authenticated user. Aborts the\n   * process with an error if no fork could be found.\n   */\n  private async _getForkOfAuthenticatedUser(): Promise {\n    try {\n      return this.git.getForkOfAuthenticatedUser();\n    } catch {\n      const {owner, name} = this.git.remoteConfig;\n      Log.error('  ✘   Unable to find fork for currently authenticated user.');\n      Log.error(`      Please ensure you created a fork of: ${owner}/${name}.`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /** Checks whether a given branch name is reserved in the specified repository. */\n  private async _isBranchNameReservedInRepo(repo: GithubRepo, name: string): Promise {\n    try {\n      await this.git.github.repos.getBranch({owner: repo.owner, repo: repo.name, branch: name});\n      return true;\n    } catch (e) {\n      // If the error has a `status` property set to `404`, then we know that the branch\n      // does not exist. Otherwise, it might be an API error that we want to report/re-throw.\n      if (isGithubApiError(e) && e.status === 404) {\n        return false;\n      }\n      throw e;\n    }\n  }\n\n  /** Finds a non-reserved branch name in the repository with respect to a base name. */\n  private async _findAvailableBranchName(repo: GithubRepo, baseName: string): Promise {\n    let currentName = baseName;\n    let suffixNum = 0;\n    while (await this._isBranchNameReservedInRepo(repo, currentName)) {\n      suffixNum++;\n      currentName = `${baseName}_${suffixNum}`;\n    }\n    return currentName;\n  }\n\n  /**\n   * Creates a local branch from the current Git `HEAD`. Will override\n   * existing branches in case of a collision.\n   */\n  protected async createLocalBranchFromHead(branchName: string) {\n    this.git.run(['checkout', '-q', '-B', branchName]);\n  }\n\n  /** Pushes the current Git `HEAD` to the given remote branch in the configured project. */\n  protected async pushHeadToRemoteBranch(branchName: string) {\n    // Push the local `HEAD` to the remote branch in the configured project.\n    this.git.run(['push', '-q', this.git.getRepoGitUrl(), `HEAD:refs/heads/${branchName}`]);\n  }\n\n  /**\n   * Pushes the current Git `HEAD` to a fork for the configured project that is owned by\n   * the authenticated user. If the specified branch name exists in the fork already, a\n   * unique one will be generated based on the proposed name to avoid collisions.\n   * @param proposedBranchName Proposed branch name for the fork.\n   * @param trackLocalBranch Whether the fork branch should be tracked locally. i.e. whether\n   *   a local branch with remote tracking should be set up.\n   * @returns The fork and branch name containing the pushed changes.\n   */\n  private async _pushHeadToFork(\n    proposedBranchName: string,\n    trackLocalBranch: boolean,\n  ): Promise<{fork: GithubRepo; branchName: string}> {\n    const fork = await this._getForkOfAuthenticatedUser();\n    // Compute a repository URL for pushing to the fork. Note that we want to respect\n    // the SSH option from the dev-infra github configuration.\n    const repoGitUrl = getRepositoryGitUrl(\n      {...fork, useSsh: this.git.remoteConfig.useSsh},\n      this.git.githubToken,\n    );\n    const branchName = await this._findAvailableBranchName(fork, proposedBranchName);\n    const pushArgs: string[] = [];\n    // If a local branch should track the remote fork branch, create a branch matching\n    // the remote branch. Later with the `git push`, the remote is set for the branch.\n    if (trackLocalBranch) {\n      await this.createLocalBranchFromHead(branchName);\n      pushArgs.push('--set-upstream');\n    }\n    // Push the local `HEAD` to the remote branch in the fork.\n    this.git.run(['push', '-q', repoGitUrl, `HEAD:refs/heads/${branchName}`, ...pushArgs]);\n    return {fork, branchName};\n  }\n\n  /**\n   * Pushes changes to a fork for the configured project that is owned by the currently\n   * authenticated user. A pull request is then created for the pushed changes on the\n   * configured project that targets the specified target branch.\n   * @returns An object describing the created pull request.\n   */\n  protected async pushChangesToForkAndCreatePullRequest(\n    targetBranch: string,\n    proposedForkBranchName: string,\n    title: string,\n    body?: string,\n  ): Promise {\n    const repoSlug = `${this.git.remoteParams.owner}/${this.git.remoteParams.repo}`;\n    const {fork, branchName} = await this._pushHeadToFork(proposedForkBranchName, true);\n    const {data} = await this.git.github.pulls.create({\n      ...this.git.remoteParams,\n      head: `${fork.owner}:${branchName}`,\n      base: targetBranch,\n      body,\n      title,\n    });\n\n    // Add labels to the newly created PR if provided in the configuration.\n    if (this.config.releasePrLabels !== undefined) {\n      await this.git.github.issues.addLabels({\n        ...this.git.remoteParams,\n        issue_number: data.number,\n        labels: this.config.releasePrLabels,\n      });\n    }\n\n    Log.info(green(`  ✓   Created pull request #${data.number} in ${repoSlug}.`));\n    return {\n      id: data.number,\n      url: data.html_url,\n      fork,\n      forkBranch: branchName,\n    };\n  }\n\n  /**\n   * Prepend releases notes for a version published in a given branch to the changelog in\n   * the current Git `HEAD`. This is useful for cherry-picking the changelog.\n   * @returns A boolean indicating whether the release notes have been prepended.\n   */\n  protected async prependReleaseNotesToChangelog(releaseNotes: ReleaseNotes): Promise {\n    await releaseNotes.prependEntryToChangelogFile();\n    Log.info(\n      green(`  ✓   Updated the changelog to capture changes for \"${releaseNotes.version}\".`),\n    );\n  }\n\n  /** Checks out an upstream branch with a detached head. */\n  protected async checkoutUpstreamBranch(branchName: string) {\n    this.git.run(['fetch', '-q', this.git.getRepoGitUrl(), branchName]);\n    this.git.run(['checkout', '-q', 'FETCH_HEAD', '--detach']);\n  }\n\n  /** Installs all Yarn dependencies in the current branch. */\n  protected async installDependenciesForCurrentBranch() {\n    const nodeModulesDir = join(this.projectDir, 'node_modules');\n    // Note: We delete all contents of the `node_modules` first. This is necessary\n    // because Yarn could preserve extraneous/outdated nested modules that will cause\n    // unexpected build failures with the NodeJS Bazel `@npm` workspace generation.\n    // This is a workaround for: https://github.com/yarnpkg/yarn/issues/8146. Even though\n    // we might be able to fix this with Yarn 2+, it is reasonable ensuring clean node modules.\n    // TODO: Remove this when we use Yarn 2+ in all Angular repositories.\n    await fs.rm(nodeModulesDir, {force: true, recursive: true, maxRetries: 3});\n    await ExternalCommands.invokeYarnInstall(this.projectDir);\n  }\n\n  /**\n   * Creates a commit for the specified files with the given message.\n   * @param message Message for the created commit\n   * @param files List of project-relative file paths to be committed.\n   */\n  protected async createCommit(message: string, files: string[]) {\n    // Note: `git add` would not be needed if the files are already known to\n    // Git, but the specified files could also be newly created, and unknown.\n    this.git.run(['add', ...files]);\n    // Note: `--no-verify` skips the majority of commit hooks here, but there are hooks\n    // like `prepare-commit-message` which still run. We have set the `HUSKY=0` environment\n    // variable at the start of the publish command to ignore such hooks as well.\n    this.git.run(['commit', '-q', '--no-verify', '-m', message, ...files]);\n  }\n\n  /**\n   * Builds the release output for the current branch. Assumes the node modules\n   * to be already installed for the current branch.\n   *\n   * @returns A list of built release packages.\n   */\n  protected async buildReleaseForCurrentBranch(): Promise {\n    // Note that we do not directly call the build packages function from the release\n    // config. We only want to build and publish packages that have been configured in the given\n    // publish branch. e.g. consider we publish patch version and a new package has been\n    // created in the `next` branch. The new package would not be part of the patch branch,\n    // so we cannot build and publish it.\n    const builtPackages = await ExternalCommands.invokeReleaseBuild(this.projectDir);\n    const releaseInfo = await ExternalCommands.invokeReleaseInfo(this.projectDir);\n\n    // Extend the built packages with their disk hash and NPM package information. This is\n    // helpful later for verifying integrity and filtering out e.g. experimental packages.\n    return analyzeAndExtendBuiltPackagesWithInfo(builtPackages, releaseInfo.npmPackages);\n  }\n\n  /**\n   * Stages the specified new version for the current branch, builds the release output,\n   * verifies its output and creates a pull request  that targets the given base branch.\n   *\n   * This method assumes the staging branch is already checked-out.\n   *\n   * @param newVersion New version to be staged.\n   * @param compareVersionForReleaseNotes Version used for comparing with the current\n   *   `HEAD` in order build the release notes.\n   * @param pullRequestTargetBranch Branch the pull request should target.\n   * @param opts Non-mandatory options for controlling the staging, e.g.\n   *   allowing for additional `package.json` modifications.\n   * @returns an object capturing actions performed as part of staging.\n   */\n  protected async stageVersionForBranchAndCreatePullRequest(\n    newVersion: semver.SemVer,\n    compareVersionForReleaseNotes: semver.SemVer,\n    pullRequestTargetBranch: string,\n    opts?: StagingOptions,\n  ): Promise<{\n    releaseNotes: ReleaseNotes;\n    pullRequest: PullRequest;\n    builtPackagesWithInfo: BuiltPackageWithInfo[];\n  }> {\n    const releaseNotesCompareTag = getReleaseTagForVersion(compareVersionForReleaseNotes);\n\n    // Fetch the compare tag so that commits for the release notes can be determined.\n    // We forcibly override existing local tags that are named similar as we will fetch\n    // the correct tag for release notes comparison from the upstream remote.\n    this.git.run([\n      'fetch',\n      '--force',\n      this.git.getRepoGitUrl(),\n      `refs/tags/${releaseNotesCompareTag}:refs/tags/${releaseNotesCompareTag}`,\n    ]);\n\n    // Build release notes for commits from `..HEAD`.\n    const releaseNotes = await ReleaseNotes.forRange(\n      this.git,\n      newVersion,\n      releaseNotesCompareTag,\n      'HEAD',\n    );\n\n    await this.updateProjectVersion(newVersion, opts?.updatePkgJsonFn);\n    await this.prependReleaseNotesToChangelog(releaseNotes);\n    await this.waitForEditsAndCreateReleaseCommit(newVersion);\n\n    // Install the project dependencies for the publish branch.\n    await this.installDependenciesForCurrentBranch();\n\n    const builtPackagesWithInfo = await this.buildReleaseForCurrentBranch();\n\n    // Run release pre-checks (e.g. validating the release output).\n    await ExternalCommands.invokeReleasePrecheck(\n      this.projectDir,\n      newVersion,\n      builtPackagesWithInfo,\n    );\n\n    // Verify the packages built are the correct version.\n    await this._verifyPackageVersions(releaseNotes.version, builtPackagesWithInfo);\n\n    const pullRequest = await this.pushChangesToForkAndCreatePullRequest(\n      pullRequestTargetBranch,\n      `release-stage-${newVersion}`,\n      `Bump version to \"v${newVersion}\" with changelog.`,\n    );\n\n    Log.info(green('  ✓   Release staging pull request has been created.'));\n\n    return {releaseNotes, pullRequest, builtPackagesWithInfo};\n  }\n\n  /**\n   * Checks out the specified target branch, verifies its CI status and stages\n   * the specified new version in order to create a pull request.\n   *\n   * @param newVersion New version to be staged.\n   * @param compareVersionForReleaseNotes Version used for comparing with `HEAD` of\n   *   the staging branch in order build the release notes.\n   * @param stagingBranch Branch within the new version should be staged.\n   * @param stagingOptions Non-mandatory options for controlling the staging of\n   *   the new version. e.g. allowing for additional `package.json` modifications.\n   * @returns an object capturing actions performed as part of staging.\n   */\n  protected async checkoutBranchAndStageVersion(\n    newVersion: semver.SemVer,\n    compareVersionForReleaseNotes: semver.SemVer,\n    stagingBranch: string,\n    stagingOpts?: StagingOptions,\n  ): Promise<{\n    releaseNotes: ReleaseNotes;\n    pullRequest: PullRequest;\n    builtPackagesWithInfo: BuiltPackageWithInfo[];\n    beforeStagingSha: string;\n  }> {\n    // Keep track of the commit where we started the staging process on. This will be used\n    // later to ensure that no changes, except for the version bump have landed as part\n    // of the staging time window (where the caretaker could accidentally land other stuff).\n    const beforeStagingSha = await this.getLatestCommitOfBranch(stagingBranch);\n\n    await this.assertPassingGithubStatus(beforeStagingSha, stagingBranch);\n    await this.checkoutUpstreamBranch(stagingBranch);\n\n    const stagingInfo = await this.stageVersionForBranchAndCreatePullRequest(\n      newVersion,\n      compareVersionForReleaseNotes,\n      stagingBranch,\n      stagingOpts,\n    );\n\n    return {\n      ...stagingInfo,\n      beforeStagingSha,\n    };\n  }\n\n  /**\n   * Cherry-picks the release notes of a version that have been pushed to a given branch\n   * into the `next` primary development branch. A pull request is created for this.\n   * @returns a boolean indicating successful creation of the cherry-pick pull request.\n   */\n  protected async cherryPickChangelogIntoNextBranch(\n    releaseNotes: ReleaseNotes,\n    stagingBranch: string,\n  ): Promise {\n    const nextBranch = this.active.next.branchName;\n    const commitMessage = getReleaseNoteCherryPickCommitMessage(releaseNotes.version);\n\n    // Checkout the next branch.\n    await this.checkoutUpstreamBranch(nextBranch);\n\n    await this.prependReleaseNotesToChangelog(releaseNotes);\n\n    // Create a changelog cherry-pick commit.\n    await this.createCommit(commitMessage, [workspaceRelativeChangelogPath]);\n    Log.info(green(`  ✓   Created changelog cherry-pick commit for: \"${releaseNotes.version}\".`));\n\n    // Create a cherry-pick pull request that should be merged by the caretaker.\n    const pullRequest = await this.pushChangesToForkAndCreatePullRequest(\n      nextBranch,\n      `changelog-cherry-pick-${releaseNotes.version}`,\n      commitMessage,\n      `Cherry-picks the changelog from the \"${stagingBranch}\" branch to the next ` +\n        `branch (${nextBranch}).`,\n    );\n\n    Log.info(\n      green(\n        `  ✓   Pull request for cherry-picking the changelog into \"${nextBranch}\" ` +\n          'has been created.',\n      ),\n    );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n\n    return true;\n  }\n\n  /** Prompts the user for merging the pull request, and waits for it to be merged. */\n  protected async promptAndWaitForPullRequestMerged(pullRequest: PullRequest): Promise {\n    await promptToInitiatePullRequestMerge(this.git, pullRequest);\n  }\n\n  /**\n   * Creates a Github release for the specified version. The release is created\n   * by tagging the version bump commit, and by creating the release entry.\n   *\n   * Expects the version bump commit and changelog to be available in the\n   * upstream remote.\n   *\n   * @param releaseNotes The release notes for the version being published.\n   * @param versionBumpCommitSha Commit that bumped the version. The release tag\n   *   will point to this commit.\n   * @param isPrerelease Whether the new version is published as a pre-release.\n   * @param showAsLatestOnGitHub Whether the version released will represent\n   *   the \"latest\" version of the project. I.e. GitHub will show this version as \"latest\".\n   */\n  private async _createGithubReleaseForVersion(\n    releaseNotes: ReleaseNotes,\n    versionBumpCommitSha: string,\n    isPrerelease: boolean,\n    showAsLatestOnGitHub: boolean,\n  ) {\n    const tagName = getReleaseTagForVersion(releaseNotes.version);\n    await this.git.github.git.createRef({\n      ...this.git.remoteParams,\n      ref: `refs/tags/${tagName}`,\n      sha: versionBumpCommitSha,\n    });\n    Log.info(green(`  ✓   Tagged v${releaseNotes.version} release upstream.`));\n\n    let releaseBody = await releaseNotes.getGithubReleaseEntry();\n\n    // If the release body exceeds the Github body limit, we just provide\n    // a link to the changelog entry in the Github release entry.\n    if (releaseBody.length > githubReleaseBodyLimit) {\n      const releaseNotesUrl = await this._getGithubChangelogUrlForRef(releaseNotes, tagName);\n      releaseBody =\n        `Release notes are too large to be captured here. ` +\n        `[View all changes here](${releaseNotesUrl}).`;\n    }\n\n    await this.git.github.repos.createRelease({\n      ...this.git.remoteParams,\n      name: `v${releaseNotes.version}`,\n      tag_name: tagName,\n      prerelease: isPrerelease,\n      make_latest: showAsLatestOnGitHub ? 'true' : 'false',\n      body: releaseBody,\n    });\n    Log.info(green(`  ✓   Created v${releaseNotes.version} release in Github.`));\n  }\n\n  /** Gets a Github URL that resolves to the release notes in the given ref. */\n  private async _getGithubChangelogUrlForRef(releaseNotes: ReleaseNotes, ref: string) {\n    const baseUrl = getFileContentsUrl(this.git, ref, workspaceRelativeChangelogPath);\n    const urlFragment = await releaseNotes.getUrlFragmentForRelease();\n    return `${baseUrl}#${urlFragment}`;\n  }\n\n  /**\n   * Publishes the given packages to the registry and makes the releases\n   * available on GitHub.\n   *\n   * @param builtPackagesWithInfo List of built packages that will be published.\n   * @param releaseNotes The release notes for the version being published.\n   * @param beforeStagingSha Commit SHA that is expected to be the most recent one after\n   *   the actual version bump commit. This exists to ensure that caretakers do not land\n   *   additional changes after the release output has been built locally.\n   * @param publishBranch Name of the branch that contains the new version.\n   * @param npmDistTag NPM dist tag where the version should be published to.\n   * @param additionalOptions Additional options needed for publishing a release.\n   */\n  protected async publish(\n    builtPackagesWithInfo: BuiltPackageWithInfo[],\n    releaseNotes: ReleaseNotes,\n    beforeStagingSha: string,\n    publishBranch: string,\n    npmDistTag: NpmDistTag,\n    additionalOptions: {showAsLatestOnGitHub: boolean},\n  ) {\n    const versionBumpCommitSha = await this.getLatestCommitOfBranch(publishBranch);\n\n    // Ensure the latest commit in the publish branch is the bump commit.\n    if (!(await this._isCommitForVersionStaging(releaseNotes.version, versionBumpCommitSha))) {\n      Log.error(`  ✘   Latest commit in \"${publishBranch}\" branch is not a staging commit.`);\n      Log.error('      Please make sure the staging pull request has been merged.');\n      throw new FatalReleaseActionError();\n    }\n\n    // Ensure no commits have landed since we started the staging process. This would signify\n    // that the locally-built release packages are not matching with the release commit on GitHub.\n    // Note: We expect the version bump commit to be ahead by **one** commit. This means it's\n    // the direct parent of the commit that was latest when we started the staging.\n    if (!(await this._isRevisionAheadOfBase(beforeStagingSha, versionBumpCommitSha, 1))) {\n      Log.error(`  ✘   Unexpected additional commits have landed while staging the release.`);\n      Log.error('      Please revert the bump commit and retry, or cut a new version on top.');\n      throw new FatalReleaseActionError();\n    }\n\n    // Before publishing, we want to ensure that the locally-built packages we\n    // built in the staging phase have not been modified accidentally.\n    await assertIntegrityOfBuiltPackages(builtPackagesWithInfo);\n\n    // Create a Github release for the new version.\n    await this._createGithubReleaseForVersion(\n      releaseNotes,\n      versionBumpCommitSha,\n      npmDistTag === 'next',\n      additionalOptions.showAsLatestOnGitHub,\n    );\n\n    // Walk through all built packages and publish them to NPM.\n    for (const pkg of builtPackagesWithInfo) {\n      await this._publishBuiltPackageToNpm(pkg, npmDistTag);\n    }\n\n    Log.info(green('  ✓   Published all packages successfully'));\n  }\n\n  /** Publishes the given built package to NPM with the specified NPM dist tag. */\n  private async _publishBuiltPackageToNpm(pkg: BuiltPackage, npmDistTag: NpmDistTag) {\n    Log.debug(`Starting publish of \"${pkg.name}\".`);\n    const spinner = new Spinner(`Publishing \"${pkg.name}\"`);\n\n    try {\n      await NpmCommand.publish(pkg.outputPath, npmDistTag, this.config.publishRegistry);\n      spinner.complete();\n      Log.info(green(`  ✓   Successfully published \"${pkg.name}.`));\n    } catch (e) {\n      spinner.complete();\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while publishing \"${pkg.name}\".`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /** Checks whether the given commit represents a staging commit for the specified version. */\n  private async _isCommitForVersionStaging(version: semver.SemVer, commitSha: string) {\n    const {data} = await this.git.github.repos.getCommit({\n      ...this.git.remoteParams,\n      ref: commitSha,\n    });\n    return data.commit.message.startsWith(getCommitMessageForRelease(version));\n  }\n\n  // TODO: Remove this check and run it as part of common release validation.\n  /** Verify the version of each generated package exact matches the specified version. */\n  private async _verifyPackageVersions(version: semver.SemVer, packages: BuiltPackageWithInfo[]) {\n    // Experimental equivalent version for packages.\n    const experimentalVersion = createExperimentalSemver(version);\n\n    for (const pkg of packages) {\n      const {version: packageJsonVersion} = JSON.parse(\n        await fs.readFile(join(pkg.outputPath, 'package.json'), 'utf8'),\n      ) as {version: string; [key: string]: any};\n\n      const expectedVersion = pkg.experimental ? experimentalVersion : version;\n      const mismatchesVersion = expectedVersion.compare(packageJsonVersion) !== 0;\n\n      if (mismatchesVersion) {\n        Log.error(`The built package version does not match for: ${pkg.name}.`);\n        Log.error(`  Actual version:   ${packageJsonVersion}`);\n        Log.error(`  Expected version: ${expectedVersion}`);\n        throw new FatalReleaseActionError();\n      }\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/** Gets whether the given version denotes an experimental SemVer version. */\nexport function isExperimentalSemver(version: semver.SemVer): boolean {\n  return version.major === 0 && version.minor >= 100;\n}\n\n/** Creates the equivalent experimental version for a provided SemVer. */\nexport function createExperimentalSemver(version: string | semver.SemVer): semver.SemVer {\n  version = new semver.SemVer(version);\n  const experimentalVersion = new semver.SemVer(version.format());\n  experimentalVersion.major = 0;\n  experimentalVersion.minor = version.major * 100 + version.minor;\n  return new semver.SemVer(experimentalVersion.format());\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/** Gets the release tag name for the specified version. */\nexport function getReleaseTagForVersion(version: semver.SemVer): string {\n  return version.format();\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {hashElement} from 'folder-hash';\n\n/** Class holding methods for hashing a directory. */\nexport abstract class DirectoryHash {\n  /** Computes a hash for the given directory. */\n  static async compute(dirPath: string): Promise {\n    return (await hashElement(dirPath, {})).hash;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Log} from '../../utils/logging.js';\n\nimport {BuiltPackage, BuiltPackageWithInfo, NpmPackage} from '../config/index.js';\nimport {FatalReleaseActionError} from './actions-error.js';\nimport {DirectoryHash} from './directory-hash.js';\n\n/**\n * Analyzes and extends the given built packages with additional information,\n * such as their corresponding NPM information or a hash for the package contents.\n */\nexport async function analyzeAndExtendBuiltPackagesWithInfo(\n  builtPackages: BuiltPackage[],\n  npmPackages: NpmPackage[],\n): Promise {\n  const result: BuiltPackageWithInfo[] = [];\n\n  // Note: We sequentially analyze/extend the built packages as we would not want\n  // to risk too many file system operations at the same time. Since workspaces\n  // do not have a lot of packages, this operation is fine to run sequentially.\n  for (const pkg of builtPackages) {\n    const info = npmPackages.find((i) => i.name === pkg.name);\n\n    if (info === undefined) {\n      Log.debug(`Retrieved package information:`, npmPackages);\n      Log.error(`  ✘   Could not find package information for built package: \"${pkg.name}\".`);\n      throw new FatalReleaseActionError();\n    }\n\n    result.push({\n      hash: await computeHashForPackageContents(pkg),\n      ...pkg,\n      ...info,\n    });\n  }\n\n  return result;\n}\n\n/**\n * Asserts that the expected built package content matches the disk\n * contents of the built packages.\n *\n * @throws {FatalReleaseActionError} When the integrity check failed.\n */\nexport async function assertIntegrityOfBuiltPackages(\n  builtPackagesWithInfo: BuiltPackageWithInfo[],\n): Promise {\n  const modifiedPackages: string[] = [];\n\n  // Note: This runs sequentially for the same reason when we analyze/extend the\n  // built package info. See `analyzeAndExtendBuiltPackagesWithInfo`.\n  for (const pkg of builtPackagesWithInfo) {\n    if ((await computeHashForPackageContents(pkg)) !== pkg.hash) {\n      modifiedPackages.push(pkg.name);\n    }\n  }\n\n  if (modifiedPackages.length > 0) {\n    Log.error(`  ✘   Release output has been modified locally since it was built.`);\n    Log.error(`      The following packages changed: ${modifiedPackages.join(', ')}`);\n    throw new FatalReleaseActionError();\n  }\n}\n\n/** Computes a deterministic hash for the package and its contents. */\nasync function computeHashForPackageContents(pkg: BuiltPackage): Promise {\n  return DirectoryHash.compute(pkg.outputPath);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/** Gets the commit message for a new release point in the project. */\nexport function getCommitMessageForRelease(newVersion: semver.SemVer): string {\n  return `release: cut the v${newVersion} release`;\n}\n\n/**\n * Gets the commit message for an exceptional version bump in the next branch. The next\n * branch version will be bumped without the release being published in some situations.\n * More details can be found in the `MoveNextIntoFeatureFreeze` release action and in:\n * https://hackmd.io/2Le8leq0S6G_R5VEVTNK9A.\n */\nexport function getCommitMessageForExceptionalNextVersionBump(newVersion: semver.SemVer) {\n  return `release: bump the next branch to v${newVersion}`;\n}\n\n/**\n * Gets the commit message for a version update in the next branch to a major version. The next\n * branch version will be updated without the release being published if the branch is configured\n * as a major. More details can be found in the `ConfigureNextAsMajor` release action and in:\n * https://hackmd.io/2Le8leq0S6G_R5VEVTNK9A.\n */\nexport function getCommitMessageForNextBranchMajorSwitch(newVersion: semver.SemVer) {\n  return `release: switch the next branch to v${newVersion}`;\n}\n\n/** Gets the commit message for a release notes cherry-pick commit */\nexport function getReleaseNoteCherryPickCommitMessage(newVersion: semver.SemVer): string {\n  return `docs: release notes for the v${newVersion} release`;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Maximum number of characters a Github release entry can use for its body.  This number was\n * confirmed by reaching out to Github support to confirm the character limit.\n */\nexport const githubReleaseBodyLimit = 125000;\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ChildProcess} from '../../utils/child-process.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {NpmDistTag} from '../versioning/index.js';\n\nimport {FatalReleaseActionError} from './actions-error.js';\nimport {resolveYarnScriptForProject} from '../../utils/resolve-yarn-bin.js';\nimport {ReleaseBuildJsonStdout} from '../build/cli.js';\nimport {ReleaseInfoJsonStdout} from '../info/cli.js';\nimport {ReleasePrecheckJsonStdin} from '../precheck/cli.js';\nimport {BuiltPackageWithInfo} from '../config/index.js';\nimport {green, Log} from '../../utils/logging.js';\nimport {getBazelBin} from '../../utils/bazel-bin.js';\n\n/*\n * ###############################################################\n *\n * This file contains helpers for invoking external `ng-dev` commands. A subset of actions,\n * like building release output or setting aν NPM dist tag for release packages, cannot be\n * performed directly as part of the release tool and need to be delegated to external `ng-dev`\n * commands that exist across arbitrary version branches.\n *\n * In a concrete example: Consider a new patch version is released and that a new release\n * package has been added to the `next` branch. The patch branch will not contain the new\n * release package, so we could not build the release output for it. To work around this, we\n * call the ng-dev build command for the patch version branch and expect it to return a list\n * of built packages that need to be released as part of this release train.\n *\n * ###############################################################\n */\n\n/** Class holding method for invoking release action external commands. */\nexport abstract class ExternalCommands {\n  /**\n   * Invokes the `ng-dev release set-dist-tag` command in order to set the specified\n   * NPM dist tag for all packages in the checked out branch to the given version.\n   *\n   * Optionally, the NPM dist tag update can be skipped for experimental packages. This\n   * is useful when tagging long-term-support packages within NPM.\n   */\n  static async invokeSetNpmDist(\n    projectDir: string,\n    npmDistTag: NpmDistTag,\n    version: semver.SemVer,\n    options: {skipExperimentalPackages: boolean} = {skipExperimentalPackages: false},\n  ) {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n\n    try {\n      // Note: No progress indicator needed as that is the responsibility of the command.\n      // TODO: detect yarn berry and handle flag differences properly.\n      await ChildProcess.spawn(\n        yarnCommand.binary,\n        [\n          ...yarnCommand.args,\n          'ng-dev',\n          'release',\n          'set-dist-tag',\n          npmDistTag,\n          version.format(),\n          `--skip-experimental-packages=${options.skipExperimentalPackages}`,\n        ],\n        {cwd: projectDir},\n      );\n      Log.info(green(`  ✓   Set \"${npmDistTag}\" NPM dist tag for all packages to v${version}.`));\n    } catch (e) {\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while setting the NPM dist tag for \"${npmDistTag}\".`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `ng-dev release npm-dist-tag delete` command in order to delete the\n   * NPM dist tag for all packages in the checked-out version branch.\n   */\n  static async invokeDeleteNpmDistTag(projectDir: string, npmDistTag: NpmDistTag) {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n\n    try {\n      // Note: No progress indicator needed as that is the responsibility of the command.\n      // TODO: detect yarn berry and handle flag differences properly.\n      await ChildProcess.spawn(\n        yarnCommand.binary,\n        [...yarnCommand.args, 'ng-dev', 'release', 'npm-dist-tag', 'delete', npmDistTag],\n        {cwd: projectDir},\n      );\n      Log.info(green(`  ✓   Deleted \"${npmDistTag}\" NPM dist tag for all packages.`));\n    } catch (e) {\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while deleting the NPM dist tag: \"${npmDistTag}\".`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `ng-dev release build` command in order to build the release\n   * packages for the currently checked out branch.\n   */\n  static async invokeReleaseBuild(projectDir: string): Promise {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n    // Note: We explicitly mention that this can take a few minutes, so that it's obvious\n    // to caretakers that it can take longer than just a few seconds.\n    const spinner = new Spinner('Building release output. This can take a few minutes.');\n\n    try {\n      // Since we expect JSON to be printed from the `ng-dev release build` command,\n      // we spawn the process in silent mode. We have set up an Ora progress spinner.\n      // TODO: detect yarn berry and handle flag differences properly.\n      const {stdout} = await ChildProcess.spawn(\n        yarnCommand.binary,\n        [...yarnCommand.args, 'ng-dev', 'release', 'build', '--json'],\n        {\n          cwd: projectDir,\n          mode: 'silent',\n        },\n      );\n      spinner.complete();\n      Log.info(green('  ✓   Built release output for all packages.'));\n      // The `ng-dev release build` command prints a JSON array to stdout\n      // that represents the built release packages and their output paths.\n      return JSON.parse(stdout.trim()) as ReleaseBuildJsonStdout;\n    } catch (e) {\n      spinner.complete();\n      Log.error(e);\n      Log.error('  ✘   An error occurred while building the release packages.');\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `ng-dev release info` command in order to retrieve information\n   * about the release for the currently checked-out branch.\n   *\n   * This is useful to e.g. determine whether a built package is currently\n   * denoted as experimental or not.\n   */\n  static async invokeReleaseInfo(projectDir: string): Promise {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n\n    try {\n      // Note: No progress indicator needed as that is expected to be a fast operation.\n      // TODO: detect yarn berry and handle flag differences properly.\n      const {stdout} = await ChildProcess.spawn(\n        yarnCommand.binary,\n        [...yarnCommand.args, 'ng-dev', 'release', 'info', '--json'],\n        {\n          cwd: projectDir,\n          mode: 'silent',\n        },\n      );\n      // The `ng-dev release info` command prints a JSON object to stdout.\n      return JSON.parse(stdout.trim()) as ReleaseInfoJsonStdout;\n    } catch (e) {\n      Log.error(e);\n      Log.error(\n        `  ✘   An error occurred while retrieving the release information for ` +\n          `the currently checked-out branch.`,\n      );\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `ng-dev release precheck` command in order to validate the\n   * built packages or run other validations before actually releasing.\n   *\n   * This is run as an external command because prechecks can be customized\n   * through the `ng-dev` configuration, and we wouldn't want to run prechecks\n   * from the `next` branch for older branches, like patch or an LTS branch.\n   */\n  static async invokeReleasePrecheck(\n    projectDir: string,\n    newVersion: semver.SemVer,\n    builtPackagesWithInfo: BuiltPackageWithInfo[],\n  ): Promise {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n    const precheckStdin: ReleasePrecheckJsonStdin = {\n      builtPackagesWithInfo,\n      newVersion: newVersion.format(),\n    };\n\n    try {\n      // Note: No progress indicator needed as that is expected to be a fast operation. Also\n      // we expect the command to handle console messaging and wouldn't want to clobber it.\n      // TODO: detect yarn berry and handle flag differences properly.\n      await ChildProcess.spawn(\n        yarnCommand.binary,\n        [...yarnCommand.args, 'ng-dev', 'release', 'precheck'],\n        {\n          cwd: projectDir,\n          // Note: We pass the precheck information to the command through `stdin`\n          // because command line arguments are less reliable and have length limits.\n          input: JSON.stringify(precheckStdin),\n        },\n      );\n      Log.info(green(`  ✓   Executed release pre-checks for ${newVersion}`));\n    } catch (e) {\n      // The `spawn` invocation already prints all stdout/stderr, so we don't need re-print.\n      // To ease debugging in case of runtime exceptions, we still print the error to `debug`.\n      Log.debug(e);\n      Log.error(`  ✘   An error occurred while running release pre-checks.`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `yarn install` command in order to install dependencies for\n   * the configured project with the currently checked out revision.\n   */\n  static async invokeYarnInstall(projectDir: string): Promise {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n\n    try {\n      // Note: No progress indicator needed as that is the responsibility of the command.\n      // TODO: Consider using an Ora spinner instead to ensure minimal console output.\n      await ChildProcess.spawn(\n        yarnCommand.binary,\n        [\n          ...yarnCommand.args,\n          'install',\n          ...(yarnCommand.legacy ? ['--frozen-lockfile', '--non-interactive'] : ['--immutable']),\n        ],\n        {cwd: projectDir},\n      );\n      Log.info(green('  ✓   Installed project dependencies.'));\n    } catch (e) {\n      Log.error(e);\n      Log.error('  ✘   An error occurred while installing dependencies.');\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `yarn bazel run @npm2//:sync` command in order\n   * to refresh Aspect lock files.\n   */\n  static async invokeBazelUpdateAspectLockFiles(projectDir: string): Promise {\n    const spinner = new Spinner('Updating Aspect lock files');\n\n    try {\n      await ChildProcess.spawn(getBazelBin(), ['run', '@npm2//:sync'], {\n        cwd: projectDir,\n        mode: 'silent',\n      });\n    } catch (e) {\n      // Note: Gracefully handling these errors because `sync` command\n      // alway exits with a non-zero exit code.\n      Log.debug(e);\n    }\n\n    spinner.success(green(' Updated Aspect `rules_js` lock files.'));\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GitClient} from '../../utils/git/git-client.js';\n\n/** State of a pull request in Github. */\nexport type PullRequestState = 'merged' | 'unknown';\n\n/**\n * Gets whether a given pull request has been merged.\n *\n * Note: There are situations where GitHub still processes the merging or\n * closing action and temporarily this function would return `false`. Make\n * sure to account for this when logic relies on this method.\n *\n * More details here: https://github.com/angular/angular/pull/40181.\n *\n * @throws May throw Github API request errors if e.g. a pull request\n *   cannot be found, or the repository is not existing/visible.\n */\nexport async function isPullRequestMerged(api: GitClient, id: number): Promise {\n  const {data} = await api.github.pulls.get({...api.remoteParams, pull_number: id});\n  if (data.merged) {\n    return true;\n  }\n  return await isPullRequestClosedWithAssociatedCommit(api, id);\n}\n\n/**\n * Whether the pull request has been closed with an associated commit. This is usually\n * the case if a PR has been merged using the autosquash merge script strategy. Since\n * the merge is not fast-forward, Github does not consider the PR as merged and instead\n * shows the PR as closed. See for example: https://github.com/angular/angular/pull/37918.\n */\nasync function isPullRequestClosedWithAssociatedCommit(api: GitClient, id: number) {\n  const events = await api.github.paginate(api.github.issues.listEvents, {\n    ...api.remoteParams,\n    issue_number: id,\n  });\n  // Iterate through the events of the pull request in reverse. We want to find the most\n  // recent events and check if the PR has been closed with a commit associated with it.\n  // If the PR has been closed through a commit, we assume that the PR has been merged\n  // using the autosquash merge strategy. For more details. See the `AutosquashMergeStrategy`.\n  for (let i = events.length - 1; i >= 0; i--) {\n    const {event, commit_id} = events[i];\n    // If we come across a \"reopened\" event, we abort looking for referenced commits. Any\n    // commits that closed the PR before, are no longer relevant and did not close the PR.\n    if (event === 'reopened') {\n      return false;\n    }\n    // If a `closed` event is captured with a commit assigned, then we assume that\n    // this PR has been merged properly.\n    if (event === 'closed' && commit_id) {\n      return true;\n    }\n    // If the PR has been referenced by a commit, check if the commit closes this pull\n    // request. Note that this is needed besides checking `closed` as PRs could be merged\n    // into any non-default branch where the `Closes <..>` keyword does not work and the PR\n    // is simply closed without an associated `commit_id`. For more details see:\n    // https://docs.github.com/en/enterprise/2.16/user/github/managing-your-work-on-github/closing-issues-using-keywords#:~:text=non-default.\n    if (\n      event === 'referenced' &&\n      commit_id &&\n      (await isCommitClosingPullRequest(api, commit_id, id))\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/** Checks whether the specified commit is closing the given pull request. */\nasync function isCommitClosingPullRequest(api: GitClient, sha: string, id: number) {\n  const {data} = await api.github.repos.getCommit({...api.remoteParams, ref: sha});\n  // Matches the closing keyword supported in commit messages. See:\n  // https://docs.github.com/en/enterprise/2.16/user/github/managing-your-work-on-github/closing-issues-using-keywords.\n  return data.commit.message.match(\n    new RegExp(`(?:close[sd]?|fix(?:e[sd]?)|resolve[sd]?):? #${id}(?!\\\\d)`, 'i'),\n  );\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {bold, green, Log} from '../../utils/logging.js';\nimport {isGithubApiError} from '../../utils/git/github.js';\n\nimport {PullRequest} from './actions.js';\nimport {isPullRequestMerged} from './pull-request-state.js';\nimport {Prompt} from '../../utils/prompt.js';\n\n/**\n * Prints the pull request to the console and informs the user about\n * the process of getting the pull request merged.\n *\n * The user will then be prompted, allowing the user to initiate the\n * merging. The tool will then attempt to merge the pull request\n * automatically.\n */\nexport async function promptToInitiatePullRequestMerge(\n  git: AuthenticatedGitClient,\n  {id, url}: PullRequest,\n): Promise {\n  Log.info();\n  Log.info();\n  Log.info(green(bold(`      Pull request #${id} is sent out for review: ${url}`)));\n  Log.warn(bold(`      Do not merge it manually. The tool will automatically merge it.`));\n  Log.info('');\n  Log.warn(`      The tool is ${bold('not')} ensuring that all tests pass. Branch protection`);\n  Log.warn('      rules always apply, but other non-required checks can be skipped.');\n  Log.info('');\n  Log.info(`      If you think it is ready (i.e. has the necessary approvals), you can continue`);\n  Log.info(`      by confirming the prompt. The tool will then auto-merge the PR if possible.`);\n  Log.info('');\n\n  // We will loop forever until the PR has been merged. If a user wants to abort,\n  // the script needs to be aborted e.g. using CTRL + C.\n  while (true) {\n    if (!(await Prompt.confirm({message: `Do you want to continue with merging PR #${id}?`}))) {\n      continue;\n    }\n\n    Log.info(`      Attempting to merge pull request #${id}..`);\n    Log.info(``);\n\n    try {\n      // Special logic that will check if the pull request is already merged. This should never\n      // happen but there may be situations where a caretaker merged manually. We wouldn't want\n      // the process to stuck forever here but continue given the caretaker explicitly confirming\n      // that they would like to continue (assuming they expect the PR to be recognized as merged).\n      if (await gracefulCheckIfPullRequestIsMerged(git, id)) {\n        break;\n      }\n\n      const {data, status, headers} = await git.github.pulls.merge({\n        ...git.remoteParams,\n        pull_number: id,\n        merge_method: 'rebase',\n      });\n\n      // If merge is successful, break out of the loop and complete the function.\n      if (data.merged) {\n        break;\n      }\n\n      // Octokit throws for non-200 status codes, but there may be unknown cases\n      // where `merged` is false but we have a 200 status code. We handle this here\n      // and allow for the merge to be re-attempted.\n      Log.error(`  ✘   Pull request #${id} could not be merged.`);\n      Log.error(`      ${data.message} (${status})`);\n      Log.debug(data, status, headers);\n    } catch (e) {\n      if (!isGithubApiError(e)) {\n        throw e;\n      }\n\n      // If there is an request error, e.g. 403 permissions or insufficient permissions\n      // due to active branch protections, then we want to print the message and allow\n      // for the user to re-attempt the merge (by continuing in the loop).\n      Log.error(`  ✘   Pull request #${id} could not be merged.`);\n      Log.error(`      ${e.message} (${e.status})`);\n      Log.debug(e);\n    }\n  }\n\n  Log.info(green(`  ✓   Pull request #${id} has been merged.`));\n}\n\n/** Gracefully checks whether the given pull request has been merged. */\nasync function gracefulCheckIfPullRequestIsMerged(\n  git: AuthenticatedGitClient,\n  id: number,\n): Promise {\n  try {\n    return await isPullRequestMerged(git, id);\n  } catch (e) {\n    if (isGithubApiError(e)) {\n      Log.debug(`Unable to determine if pull request #${id} has been merged.`);\n      Log.debug(e);\n      return false;\n    }\n    throw e;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/**\n * Gets whether the given version is the first `-next` pre-release.\n * e.g. returns `true` for `v14.0.0-next.0`, but not for `v14.0.0-next.1`.\n */\nexport function isFirstNextPrerelease(v: semver.SemVer): boolean {\n  return v.prerelease[0] === 'next' && v.prerelease[1] === 0;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/**\n * Increments a specified SemVer version. Compared to the original increment in SemVer,\n * the version is cloned to not modify the original version instance.\n */\nexport function semverInc(\n  version: semver.SemVer,\n  release: semver.ReleaseType,\n  identifier?: string,\n) {\n  const clone = new semver.SemVer(version.version);\n  return clone.inc(release, identifier);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Prompt} from '../../../utils/prompt.js';\nimport {semverInc} from '../../../utils/semver.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {\n  fetchLongTermSupportBranchesFromNpm,\n  LtsBranch,\n} from '../../versioning/long-term-support.js';\nimport {ReleaseAction} from '../actions.js';\n\n/**\n * Release action that cuts a new patch release for an active release-train in the long-term\n * support phase. The patch segment is incremented. The changelog is generated for the new\n * patch version, but also needs to be cherry-picked into the next development branch.\n */\nexport class CutLongTermSupportPatchAction extends ReleaseAction {\n  /** Promise resolving an object describing long-term support branches. */\n  ltsBranches = fetchLongTermSupportBranchesFromNpm(this.config);\n\n  override async getDescription() {\n    const {active} = await this.ltsBranches;\n    return `Cut a new release for an active LTS branch (${active.length} active).`;\n  }\n\n  override async perform() {\n    const ltsBranch = await this._promptForTargetLtsBranch();\n    const newVersion = semverInc(ltsBranch.version, 'patch');\n    const compareVersionForReleaseNotes = ltsBranch.version;\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        ltsBranch.name,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      ltsBranch.name,\n      ltsBranch.npmDistTag,\n      {showAsLatestOnGitHub: false},\n    );\n    await this.cherryPickChangelogIntoNextBranch(releaseNotes, ltsBranch.name);\n  }\n\n  /** Prompts the user to select an LTS branch for which a patch should but cut. */\n  private async _promptForTargetLtsBranch(): Promise {\n    const {active, inactive} = await this.ltsBranches;\n    const activeBranchChoices: {name: string; value: LtsBranch | null}[] = active.map((branch) =>\n      this._getChoiceForLtsBranch(branch),\n    );\n    const inactiveBranchChoices = inactive.map((branch) => this._getChoiceForLtsBranch(branch));\n\n    // If there are inactive LTS branches, we allow them to be selected. In some situations,\n    // patch releases are still cut for inactive LTS branches. e.g. when the LTS duration\n    // has been increased due to exceptional events ()\n    if (inactive.length !== 0) {\n      activeBranchChoices.push({name: 'Inactive LTS versions (not recommended)', value: null});\n    }\n\n    const activeLtsBranch = await Prompt.select({\n      message: 'Please select a version for which you want to cut an LTS patch',\n      choices: activeBranchChoices,\n    });\n    if (activeLtsBranch) {\n      return activeLtsBranch;\n    }\n    return await Prompt.select({\n      message: 'Please select an inactive LTS version for which you want to cut an LTS patch',\n      choices: inactiveBranchChoices,\n    });\n  }\n\n  /** Gets an inquirer choice for the given LTS branch. */\n  private _getChoiceForLtsBranch(branch: LtsBranch): {name: string; value: LtsBranch} {\n    return {name: `v${branch.version.major} (from ${branch.name})`, value: branch};\n  }\n\n  static override async isActive(_active: ActiveReleaseTrains) {\n    // LTS patch versions can be only cut if there are release trains in LTS phase.\n    // This action is always selectable as we support publishing of old LTS branches,\n    // and have prompt for selecting an LTS branch when the action performs.\n    return true;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {semverInc} from '../../../utils/semver.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {ReleaseAction} from '../actions.js';\n\n/**\n * Release action that cuts a new patch release for the current latest release-train version\n * branch (i.e. the patch branch). The patch segment is incremented. The changelog is generated\n * for the new patch version, but also needs to be cherry-picked into the next development branch.\n */\nexport class CutNewPatchAction extends ReleaseAction {\n  private _previousVersion = this.active.latest.version;\n  private _newVersion = semverInc(this._previousVersion, 'patch');\n\n  override async getDescription() {\n    const {branchName} = this.active.latest;\n    const newVersion = this._newVersion;\n    return `Cut a new patch release for the \"${branchName}\" branch (v${newVersion}).`;\n  }\n\n  override async perform() {\n    const {branchName} = this.active.latest;\n    const newVersion = this._newVersion;\n    const compareVersionForReleaseNotes = this._previousVersion;\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        branchName,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      branchName,\n      'latest',\n      {showAsLatestOnGitHub: true},\n    );\n    await this.cherryPickChangelogIntoNextBranch(releaseNotes, branchName);\n  }\n\n  static override async isActive(_active: ActiveReleaseTrains) {\n    // Patch versions can be cut at any time. See:\n    // https://hackmd.io/2Le8leq0S6G_R5VEVTNK9A#Release-prompt-options.\n    return true;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {semverInc} from '../../../../utils/semver.js';\nimport {NpmDistTag} from '../../../versioning/npm-registry.js';\nimport {ReleaseTrain} from '../../../versioning/release-trains.js';\nimport {ReleaseAction} from '../../actions.js';\n\n/**\n * Base action that cuts a pre-release increment for a given release train.\n * A minor or major can have an arbitrary amount of next pre-releases.\n *\n * This base action is used for supporting pre-releases of the `next` train,\n * or an exceptional minor train, or an in-progress FF/RC train. Also used\n * for cutting first release-candidates.\n */\nexport abstract class CutPrereleaseBaseAction extends ReleaseAction {\n  abstract releaseTrain: ReleaseTrain;\n  abstract npmDistTag: NpmDistTag;\n\n  /**\n   * Whether the existing version of the release train should be used. This\n   * functionality exists to allow for cases where a release-train is newly\n   * created and uses a version that is \"to be released\".\n   *\n   * This can happen when an exceptional minor branch is created, or when we\n   * branch off from `main` and bump the version for the upcoming version-\n   * which we do not publish immediately.\n   *\n   * If the promise returns `true`- the same version is used. If `false`,\n   * the simple pre-release increment is used. e.g. `next.1` becomes `next.2`.\n   */\n  abstract shouldUseExistingVersion: Promise;\n\n  /**\n   * Compare version used for the release notes generation. This is configurable\n   * because there is no obvious choice for a compare version if `shouldUseExistingVersion`\n   * would evaluate to `true`.\n   */\n  abstract releaseNotesCompareVersion: Promise;\n\n  override async getDescription() {\n    const branch = this._getBranch();\n    const newVersion = await this.getNewVersion();\n    return `Cut a new pre-release for the \"${branch}\" branch (v${newVersion}).`;\n  }\n\n  // This action is also used for cutting a first release candidate. To avoid duplication,\n  // we expose the canonical description here (especially since it's an actual pre-release).\n  async getReleaseCandidateDescription() {\n    const branch = this._getBranch();\n    const newVersion = await this.getNewVersion();\n    return `Cut a first release-candidate for the \"${branch}\" branch (v${newVersion}).`;\n  }\n\n  override async perform() {\n    const branchName = this._getBranch();\n    const newVersion = await this.getNewVersion();\n    const compareVersionForReleaseNotes = await this.releaseNotesCompareVersion;\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        branchName,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      branchName,\n      this.npmDistTag,\n      {showAsLatestOnGitHub: false},\n    );\n\n    // If the pre-release has been cut from a train that is not corresponding to\n    // the next release-train, cherry-pick the changelog into the primary development\n    // branch (i.e. the next branch).\n    if (this.releaseTrain !== this.active.next) {\n      await this.cherryPickChangelogIntoNextBranch(releaseNotes, branchName);\n    }\n  }\n\n  /**\n   * Gets the new version that will be published.\n   * Note: Might be overridden by derived actions for e.g. cutting an RC.\n   */\n  async getNewVersion(): Promise {\n    if (await this.shouldUseExistingVersion) {\n      return this.releaseTrain.version;\n    } else {\n      return semverInc(this.releaseTrain.version, 'prerelease');\n    }\n  }\n\n  private _getBranch(): string {\n    return this.releaseTrain.branchName;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {isVersionPublishedToNpm} from '../../versioning/npm-registry.js';\nimport {isFirstNextPrerelease} from '../../versioning/prerelease-version.js';\nimport {CutPrereleaseBaseAction} from './shared/cut-prerelease.js';\n\n/**\n * Release action that allows NPM `@next` pre-releases. The action will\n * always be active and operate on the an ongoing FF/RC train, or the\n * next release-train.\n *\n * The action will bump the pre-release version to the next increment\n * and publish it to NPM along with the `@npm` dist tag.\n */\nexport class CutNpmNextPrereleaseAction extends CutPrereleaseBaseAction {\n  releaseTrain = this.active.releaseCandidate ?? this.active.next;\n  npmDistTag = 'next' as const;\n\n  shouldUseExistingVersion = (async () => {\n    // Special-case where the version in the `next` release-train is not published yet. This\n    // happens when we recently branched off for feature-freeze. We already bump the version to\n    // the next minor or major, but do not publish immediately. Cutting a release immediately\n    // would be not helpful as there are no other changes than in the feature-freeze branch. If\n    // we happen to detect this case, we stage the release as usual but do not increment the version.\n    if (this.releaseTrain === this.active.next && isFirstNextPrerelease(this.active.next.version)) {\n      return !(await isVersionPublishedToNpm(this.active.next.version, this.config));\n    }\n    return false;\n  })();\n\n  releaseNotesCompareVersion: Promise = (async () => {\n    // If we happen to detect the case from above, we use the most recent patch version as base\n    // for building release notes. This is better than finding the \"next\" version when we\n    // branched off as it also prevents us from duplicating many commits that have already\n    // landed in the new patch that was worked on when we branched off.\n    // For more details see the release notes generation and commit range determination.\n    if (this.releaseTrain === this.active.next && (await this.shouldUseExistingVersion)) {\n      return this.active.latest.version;\n    }\n    return this.releaseTrain.version;\n  })();\n\n  static override async isActive(_active: ActiveReleaseTrains) {\n    // Pre-releases for the `next` NPM dist tag can always be cut. A NPM next\n    // release could always either occur for an in-progress FF/RCm, or `next`.\n    return true;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {semverInc} from '../../../utils/semver.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {CutNpmNextPrereleaseAction} from './cut-npm-next-prerelease.js';\n\n/**\n * Release action that allows for the NPM `@next` first release-candidate. The\n * action is only active when there is a current feature-freeze going on.\n *\n * The action will bump the pre-release version from the `-next` prerelease to\n * the first release-candidate. The action will then become inactive again as\n * additional RC pre-releases would be handled by `CutNpmNextPrereleaseAction` then.\n *\n * Additional note: There is a separate action allowing in-progress minor's to\n * go directly into the RC phase from the `next` train. See `MoveNextIntoReleaseCandidate`.\n */\nexport class CutNpmNextReleaseCandidateAction extends CutNpmNextPrereleaseAction {\n  override async getDescription(): Promise {\n    return await super.getReleaseCandidateDescription();\n  }\n\n  override async getNewVersion(): Promise {\n    return semverInc(this.releaseTrain.version, 'prerelease', 'rc');\n  }\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    // A NPM `@next` release-candidate can only be cut if we are in feature-freeze.\n    return active.isFeatureFreeze();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {getLtsNpmDistTagOfMajor} from '../../versioning/long-term-support.js';\nimport {NpmDistTag} from '../../versioning/npm-registry.js';\nimport {ReleaseTrain} from '../../versioning/release-trains.js';\nimport {exceptionalMinorPackageIndicator} from '../../versioning/version-branches.js';\nimport {FatalReleaseActionError} from '../actions-error.js';\nimport {ReleaseAction, StagingOptions} from '../actions.js';\nimport {ExternalCommands} from '../external-commands.js';\n\n/**\n * Release action that cuts a stable version for the current release-train\n * in the \"release-candidate\" phase.\n *\n * There are only two possible release-trains that can ever be in the RC phase.\n * This is either an exceptional-minor or the dedicated FF/RC release-train.\n */\nexport class CutStableAction extends ReleaseAction {\n  private _train = (this.active.exceptionalMinor ?? this.active.releaseCandidate)!;\n  private _branch = this._train.branchName;\n  private _newVersion = this._computeNewVersion(this._train);\n  private _isNewMajor = this._train.isMajor;\n\n  override async getDescription() {\n    if (this._isNewMajor) {\n      return `Cut a stable release for the \"${this._branch}\" branch — published as \\`@next\\` (v${this._newVersion}).`;\n    } else {\n      return `Cut a stable release for the \"${this._branch}\" branch — published as \\`@latest\\` (v${this._newVersion}).`;\n    }\n  }\n\n  override async perform() {\n    // This should never happen, but we add a sanity check just to be sure.\n    if (this._isNewMajor && this._train === this.active.exceptionalMinor) {\n      throw new FatalReleaseActionError('Unexpected major release of an `exceptional-minor`.');\n    }\n\n    const branchName = this._branch;\n    const newVersion = this._newVersion;\n\n    // When cutting a new stable minor/major or an exceptional minor, we want to build the\n    // notes capturing all changes that have landed in the individual `-next`/RC pre-releases.\n    const compareVersionForReleaseNotes = this.active.latest.version;\n\n    // We always remove a potential exceptional-minor indicator. If we would\n    // publish a stable version of an exceptional minor here- it would leave\n    // the exceptional minor train and the indicator should be removed.\n    const stagingOpts: StagingOptions = {\n      updatePkgJsonFn: (pkgJson) => {\n        pkgJson[exceptionalMinorPackageIndicator] = undefined;\n      },\n    };\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        branchName,\n        stagingOpts,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      branchName,\n      this._getNpmDistTag(),\n      {showAsLatestOnGitHub: true},\n    );\n\n    // If we turned an exceptional minor into the new patch, the temporary\n    // NPM dist tag for the exceptional minor can be deleted. For more details\n    // see the `CutExceptionalMinorPrereleaseAction` class.\n    if (this._train === this.active.exceptionalMinor) {\n      await ExternalCommands.invokeDeleteNpmDistTag(\n        this.projectDir,\n        'do-not-use-exceptional-minor',\n      );\n    }\n\n    // If a new major version is published and becomes the \"latest\" release-train, we need\n    // to set the LTS npm dist tag for the previous latest release-train (the current patch).\n    if (this._isNewMajor) {\n      const previousPatch = this.active.latest;\n      const ltsTagForPatch = getLtsNpmDistTagOfMajor(previousPatch.version.major);\n\n      // Instead of directly setting the NPM dist tags, we invoke the ng-dev command for\n      // setting the NPM dist tag to the specified version. We do this because release NPM\n      // packages could be different in the previous patch branch, and we want to set the\n      // LTS tag for all packages part of the last major. It would not be possible to set the\n      // NPM dist tag for new packages part of the released major, nor would it be acceptable\n      // to skip the LTS tag for packages which are no longer part of the new major.\n      await this.checkoutUpstreamBranch(previousPatch.branchName);\n      await this.installDependenciesForCurrentBranch();\n\n      await ExternalCommands.invokeSetNpmDist(\n        this.projectDir,\n        ltsTagForPatch,\n        previousPatch.version,\n        {\n          // We do not intend to tag experimental NPM packages as LTS.\n          skipExperimentalPackages: true,\n        },\n      );\n    }\n\n    await this.cherryPickChangelogIntoNextBranch(releaseNotes, branchName);\n  }\n\n  private _getNpmDistTag(): NpmDistTag {\n    // If a new major version is published, we publish to the `next` NPM dist tag temporarily.\n    // We do this because for major versions, we want all main Angular projects to have their\n    // new major become available at the same time. Publishing immediately to the `latest` NPM\n    // dist tag could cause inconsistent versions when users install packages with `@latest`.\n    // For example: Consider Angular Framework releases v12. CLI and Components would need to\n    // wait for that release to complete. Once done, they can update their dependencies to point\n    // to v12. Afterwards they could start the release process. In the meanwhile though, the FW\n    // dependencies were already available as `@latest`, so users could end up installing v12 while\n    // still having the older (but currently still latest) CLI version that is incompatible.\n    // The major release can be re-tagged to `latest` through a separate release action.\n    return this._isNewMajor ? 'next' : 'latest';\n  }\n\n  /** Gets the new stable version of the given release-train. */\n  private _computeNewVersion({version}: ReleaseTrain): semver.SemVer {\n    return semver.parse(`${version.major}.${version.minor}.${version.patch}`)!;\n  }\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    // -- Notes -- :\n    //   * A stable version can be cut for an active release-train currently in the\n    //     release-candidate phase.\n    //   * If there is an exceptional minor, **only** the exceptional minor considered\n    //     because it would be problematic if an in-progress RC would suddenly take over\n    //     while there is still an in-progress exceptional minor.\n    //   * It is impossible to directly release from feature-freeze phase into stable.\n    if (active.exceptionalMinor !== null) {\n      return active.exceptionalMinor.version.prerelease[0] === 'rc';\n    }\n    if (active.releaseCandidate !== null) {\n      return active.releaseCandidate.version.prerelease[0] === 'rc';\n    }\n    return false;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\nimport {isVersionPublishedToNpm} from '../../../versioning/npm-registry.js';\nimport {isFirstNextPrerelease} from '../../../versioning/prerelease-version.js';\nimport {CutPrereleaseBaseAction} from '../shared/cut-prerelease.js';\n\n/**\n * Release action that allows for `-next` pre-releases of an in-progress\n * exceptional minor. The action is active when there is an exceptional minor.\n *\n * The action will bump the pre-release version to the next increment\n * and publish it to NPM. Note that it would not be tagged on NPM as `@next`.\n */\nexport class CutExceptionalMinorPrereleaseAction extends CutPrereleaseBaseAction {\n  releaseTrain = this.active.exceptionalMinor!;\n\n  // An exceptional minor will never be released as `@next`. The NPM next dist tag\n  // will be reserved for the normal FF/RC or `next` release trains. Specifically\n  // we cannot override the `@next` NPM dist tag when it already points to a more\n  // recent major. This would most commonly be the case, and in the other edge-case\n  // of where no NPM next release has occurred yet- arguably an exceptional minor\n  // should not prevent actual pre-releases for an on-going FF/RC or the next branch.\n  // Note that NPM always requires a dist-tag, so we explicitly have one dedicated\n  // for exceptional minors. This tag could be deleted in the future.\n  npmDistTag = 'do-not-use-exceptional-minor' as const;\n\n  shouldUseExistingVersion = (async () => {\n    // If an exceptional minor branch has just been created, the actual version\n    // will not be published directly. To account for this case, based on if the\n    // version is already published or not, the version is NOT incremented.\n    return (\n      isFirstNextPrerelease(this.releaseTrain.version) &&\n      !(await isVersionPublishedToNpm(this.releaseTrain.version, this.config))\n    );\n  })();\n\n  releaseNotesCompareVersion: Promise = (async () => {\n    if (await this.shouldUseExistingVersion) {\n      return this.active.latest.version;\n    }\n    return this.releaseTrain.version;\n  })();\n\n  override async getDescription(): Promise {\n    // Make it more obvious that this action is for an exceptional minor.\n    return `Exceptional Minor: ${await super.getDescription()}`;\n  }\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    return active.exceptionalMinor !== null;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {semverInc} from '../../../../utils/semver.js';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\nimport {CutExceptionalMinorPrereleaseAction} from './cut-exceptional-minor-prerelease.js';\n\n/**\n * Release action that allows for the first exceptional minor release-candidate. The\n * action is only active when there is an in-progress exceptional minor that\n * is still in the `-next` pre-release phase.\n *\n * The action will bump the pre-release version from the `-next` prerelease to\n * the first release-candidate. The action will then become inactive again as\n * additional RC pre-releases would be handled by `CutExceptionalMinorPrereleaseAction`\n * then.\n */\nexport class CutExceptionalMinorReleaseCandidateAction extends CutExceptionalMinorPrereleaseAction {\n  override async getDescription(): Promise {\n    // Use the RC description and make it clear that this action is for an exceptional minor.\n    return `Exceptional Minor: ${await super.getReleaseCandidateDescription()}`;\n  }\n\n  override async getNewVersion(): Promise {\n    return semverInc(this.releaseTrain.version, 'prerelease', 'rc');\n  }\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    return (\n      // If there is an exceptional minor and we are still in `-next` pre-releases,\n      // the first RC pre-release can be cut.\n      active.exceptionalMinor !== null && active.exceptionalMinor.version.prerelease[0] === 'next'\n    );\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {workspaceRelativePackageJsonPath} from '../../../../utils/constants.js';\nimport {green, Log} from '../../../../utils/logging.js';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\nimport {exceptionalMinorPackageIndicator} from '../../../versioning/version-branches.js';\nimport {ReleaseAction} from '../../actions.js';\n\n/**\n * Release action for initiating an exceptional minor release-train. This\n * action is active when a new major is already in-progress but another\n * minor is suddenly needed for the previous major.\n *\n * The action will create a new branch based on the existing \"latest\"\n * release-train. No release will be published immediately to allow for\n * changes to be made. Once changes have been made, an exceptional minor\n * can switch into the `release-candidate` phase, and then become \"latest\".\n *\n * More details can be found here: http://go/angular-exceptional-minor.\n */\nexport class PrepareExceptionalMinorAction extends ReleaseAction {\n  private _patch = this.active.latest;\n  private _baseBranch = this._patch.branchName;\n  private _patchVersion = this._patch.version;\n  private _newBranch = `${this._patchVersion.major}.${this._patchVersion.minor + 1}.x`;\n  private _newVersion = semver.parse(\n    `${this._patchVersion.major}.${this._patchVersion.minor + 1}.0-next.0`,\n  )!;\n\n  async getDescription(): Promise {\n    return `Prepare an exceptional minor based on the existing \"${this._baseBranch}\" branch (${this._newBranch}).`;\n  }\n\n  async perform(): Promise {\n    const latestBaseBranchSha = await this.getLatestCommitOfBranch(this._baseBranch);\n\n    await this.assertPassingGithubStatus(latestBaseBranchSha, this._baseBranch);\n\n    await this.checkoutUpstreamBranch(this._baseBranch);\n    await this.createLocalBranchFromHead(this._newBranch);\n    await this.updateProjectVersion(this._newVersion, (pkgJson) => {\n      pkgJson[exceptionalMinorPackageIndicator] = true;\n    });\n\n    await this.createCommit(`build: prepare exceptional minor branch: ${this._newBranch}`, [\n      workspaceRelativePackageJsonPath,\n      ...this.getAspectLockFiles(),\n    ]);\n\n    await this.pushHeadToRemoteBranch(this._newBranch);\n\n    Log.info(green(`  ✓   Version branch \"${this._newBranch}\" created.`));\n    Log.info(green(`      Exceptional minor release-train is now active.`));\n  }\n\n  static override async isActive(active: ActiveReleaseTrains): Promise {\n    if (active.exceptionalMinor !== null) {\n      return false;\n    }\n    // If a FF/RC train is in-progress and it's for a major, we allow\n    // for an exceptional minor.\n    if (active.releaseCandidate !== null) {\n      return active.releaseCandidate.isMajor;\n    }\n    // Otherwise if there is no FF/RC train and `next` is for a major,\n    // an exceptional minor is allowed.\n    return active.next.isMajor;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {green, Log} from '../../../../utils/logging.js';\nimport {workspaceRelativePackageJsonPath} from '../../../../utils/constants.js';\nimport {ReleaseNotes, workspaceRelativeChangelogPath} from '../../../notes/release-notes.js';\nimport {PullRequest} from '../../actions.js';\nimport {\n  getCommitMessageForExceptionalNextVersionBump,\n  getReleaseNoteCherryPickCommitMessage,\n} from '../../commit-message.js';\nimport {CutNpmNextPrereleaseAction} from '../cut-npm-next-prerelease.js';\nimport {CutNpmNextReleaseCandidateAction} from '../cut-npm-next-release-candidate.js';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\n\n/**\n * Base action that can be used to move the next release-train into the dedicated FF/RC\n * release-train while also cutting a release to move the train into the `feature-freeze`\n * or `release-candidate` phase.\n *\n * This means that a new version branch is created based on the next branch, and a new\n * pre-release (either RC or another `next`) is cut- indicating the new phase.\n */\nexport abstract class BranchOffNextBranchBaseAction extends CutNpmNextPrereleaseAction {\n  /** Phase which the release-train currently in the `next` phase will move into. */\n  abstract newPhaseName: 'feature-freeze' | 'release-candidate';\n\n  // Instances of the action for cutting a NPM next pre-releases. We will re-use\n  // these for determining the \"new versions\" and \"release notes comparison version\".\n  // This helps avoiding duplication, especially since there are is some special logic.\n  private _nextPrerelease = new CutNpmNextPrereleaseAction(\n    new ActiveReleaseTrains({...this.active, releaseCandidate: null}),\n    this.git,\n    this.config,\n    this.projectDir,\n  );\n  private _rcPrerelease = new CutNpmNextReleaseCandidateAction(\n    new ActiveReleaseTrains({...this.active, releaseCandidate: this.active.next}),\n    this.git,\n    this.config,\n    this.projectDir,\n  );\n\n  override async getDescription() {\n    const {branchName} = this.active.next;\n    const newVersion = await this._computeNewVersion();\n    return `Move the \"${branchName}\" branch into ${this.newPhaseName} phase (v${newVersion}).`;\n  }\n\n  override async perform() {\n    const nextBranchName = this.active.next.branchName;\n    const compareVersionForReleaseNotes = await this._computeReleaseNoteCompareVersion();\n    const newVersion = await this._computeNewVersion();\n    const newBranch = `${newVersion.major}.${newVersion.minor}.x`;\n    const beforeStagingSha = await this.getLatestCommitOfBranch(nextBranchName);\n\n    // Verify the current next branch has a passing status, before we branch off.\n    await this.assertPassingGithubStatus(beforeStagingSha, nextBranchName);\n\n    // Branch-off the next branch into a new version branch.\n    await this._createNewVersionBranchFromNext(newBranch);\n\n    // Stage the new version for the newly created branch, and push changes to a\n    // fork in order to create a staging pull request. Note that we re-use the newly\n    // created branch instead of re-fetching from the upstream.\n    const {pullRequest, releaseNotes, builtPackagesWithInfo} =\n      await this.stageVersionForBranchAndCreatePullRequest(\n        newVersion,\n        compareVersionForReleaseNotes,\n        newBranch,\n      );\n\n    // Wait for the staging PR to be merged. Then publish the feature-freeze next pre-release. Finally,\n    // cherry-pick the release notes into the next branch in combination with bumping the version to\n    // the next minor too.\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(builtPackagesWithInfo, releaseNotes, beforeStagingSha, newBranch, 'next', {\n      showAsLatestOnGitHub: false,\n    });\n\n    const branchOffPullRequest = await this._createNextBranchUpdatePullRequest(\n      releaseNotes,\n      newVersion,\n    );\n    await this.promptAndWaitForPullRequestMerged(branchOffPullRequest);\n  }\n\n  /** Computes the new version for the release-train being branched-off. */\n  private async _computeNewVersion(): Promise {\n    if (this.newPhaseName === 'feature-freeze') {\n      return this._nextPrerelease.getNewVersion();\n    } else {\n      return this._rcPrerelease.getNewVersion();\n    }\n  }\n\n  /** Gets the release notes compare version for the branching-off release. */\n  private async _computeReleaseNoteCompareVersion(): Promise {\n    // Regardless of the new phase, the release notes compare version should\n    // always be the one as if a pre-release is cut on the `next` branch.\n    // We cannot rely on the `CutNpmNextReleaseCandidateAction` here because it\n    // assumes a published release for the train. This is not guaranteed.\n    return await this._nextPrerelease.releaseNotesCompareVersion;\n  }\n\n  /** Creates a new version branch from the next branch. */\n  private async _createNewVersionBranchFromNext(newBranch: string) {\n    const {branchName: nextBranch} = this.active.next;\n    await this.checkoutUpstreamBranch(nextBranch);\n    await this.createLocalBranchFromHead(newBranch);\n    await this.pushHeadToRemoteBranch(newBranch);\n    Log.info(green(`  ✓   Version branch \"${newBranch}\" created.`));\n  }\n\n  /**\n   * Creates a pull request for the next branch that bumps the version to the next\n   * minor, and cherry-picks the changelog for the newly branched-off release-candidate\n   * or feature-freeze version.\n   */\n  private async _createNextBranchUpdatePullRequest(\n    releaseNotes: ReleaseNotes,\n    newVersion: semver.SemVer,\n  ): Promise {\n    const {branchName: nextBranch, version} = this.active.next;\n    // We increase the version for the next branch to the next minor. The team can decide\n    // later if they want next to be a major through the `Configure Next as Major` release action.\n    const newNextVersion = semver.parse(`${version.major}.${version.minor + 1}.0-next.0`)!;\n    const bumpCommitMessage = getCommitMessageForExceptionalNextVersionBump(newNextVersion);\n\n    await this.checkoutUpstreamBranch(nextBranch);\n    await this.updateProjectVersion(newNextVersion);\n\n    // Create an individual commit for the next version bump. The changelog should go into\n    // a separate commit that makes it clear where the changelog is cherry-picked from.\n    await this.createCommit(bumpCommitMessage, [\n      workspaceRelativePackageJsonPath,\n      ...this.getAspectLockFiles(),\n    ]);\n\n    await this.prependReleaseNotesToChangelog(releaseNotes);\n\n    const commitMessage = getReleaseNoteCherryPickCommitMessage(releaseNotes.version);\n\n    await this.createCommit(commitMessage, [workspaceRelativeChangelogPath]);\n\n    let nextPullRequestMessage =\n      `The previous \"next\" release-train has moved into the ` +\n      `${this.newPhaseName} phase. This PR updates the next branch to the subsequent ` +\n      `release-train.\\n\\nAlso this PR cherry-picks the changelog for ` +\n      `v${newVersion} into the ${nextBranch} branch so that the changelog is up to date.`;\n\n    const nextUpdatePullRequest = await this.pushChangesToForkAndCreatePullRequest(\n      nextBranch,\n      `next-release-train-${newNextVersion}`,\n      `Update next branch to reflect new release-train \"v${newNextVersion}\".`,\n      nextPullRequestMessage,\n    );\n\n    Log.info(green(`  ✓   Pull request for updating the \"${nextBranch}\" branch has been created.`));\n\n    return nextUpdatePullRequest;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ActiveReleaseTrains} from '../../versioning/index.js';\n\nimport {BranchOffNextBranchBaseAction} from './shared/branch-off-next-branch.js';\n\n/**\n * Release action that moves the next release-train into the feature-freeze phase. This means\n * that a new version branch is created from the next branch, and a new next pre-release is\n * cut indicating the started feature-freeze.\n */\nexport class MoveNextIntoFeatureFreezeAction extends BranchOffNextBranchBaseAction {\n  override newPhaseName = 'feature-freeze' as const;\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    // A new feature-freeze branch can only be created if there is no active\n    // release-train in feature-freeze/release-candidate phase and the version\n    // currently in the `next` branch is for a major. The feature-freeze phase\n    // is not foreseen for minor versions.\n    return active.releaseCandidate === null && active.next.isMajor;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ActiveReleaseTrains} from '../../versioning/index.js';\n\nimport {BranchOffNextBranchBaseAction} from './shared/branch-off-next-branch.js';\n\n/**\n * Release action that moves the next release-train into the release-candidate phase. This means\n * that a new version branch is created from the next branch, and the first release candidate\n * version is cut indicating the new phase.\n */\nexport class MoveNextIntoReleaseCandidateAction extends BranchOffNextBranchBaseAction {\n  override newPhaseName = 'release-candidate' as const;\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    // Directly switching a next release-train into the `release-candidate`\n    // phase is only allowed for minor releases. Major version always need to\n    // go through the `feature-freeze` phase.\n    return active.releaseCandidate === null && !active.next.isMajor;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {Log} from '../../../../utils/logging.js';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\nimport {getLtsNpmDistTagOfMajor} from '../../../versioning/long-term-support.js';\nimport {\n  convertVersionBranchToSemVer,\n  isVersionBranch,\n} from '../../../versioning/version-branches.js';\nimport {FatalReleaseActionError} from '../../actions-error.js';\nimport {ReleaseAction} from '../../actions.js';\nimport {Prompt} from '../../../../utils/prompt.js';\n\n/**\n * SPECIAL: Action should only be used by dev-infra members.\n *\n * Release action that cuts a new minor for an LTS major. The new LTS\n * minor branch is required to be created beforehand.\n */\nexport class SpecialCutLongTermSupportMinorAction extends ReleaseAction {\n  override async getDescription() {\n    return `SPECIAL: Cut a new release for an LTS minor.`;\n  }\n\n  override async perform() {\n    const ltsBranch = await this._askForVersionBranch('Please specify the target LTS branch:');\n    const compareVersionForReleaseNotes = semver.parse(\n      await Prompt.input({message: 'Compare version for release'}),\n    )!;\n\n    const newVersion = semver.parse(\n      `${ltsBranch.branchVersion.major}.${ltsBranch.branchVersion.minor}.0`,\n    )!;\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        ltsBranch.branch,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      ltsBranch.branch,\n      getLtsNpmDistTagOfMajor(newVersion.major),\n      {showAsLatestOnGitHub: false},\n    );\n    await this.cherryPickChangelogIntoNextBranch(releaseNotes, ltsBranch.branch);\n  }\n\n  private async _askForVersionBranch(message: string): Promise<{\n    branch: string;\n    branchVersion: semver.SemVer;\n  }> {\n    const branch = await Prompt.input({message});\n    if (!isVersionBranch(branch)) {\n      Log.error('Invalid release branch specified.');\n      throw new FatalReleaseActionError();\n    }\n\n    const branchVersion = convertVersionBranchToSemVer(branch);\n    if (branchVersion === null) {\n      Log.error('Could not parse version branch.');\n      throw new FatalReleaseActionError();\n    }\n    return {branch, branchVersion};\n  }\n\n  static override async isActive(_active: ActiveReleaseTrains) {\n    // Only enabled if explicitly enabled for dev-infra team.\n    return process.env['NG_DEV_SPECIAL_RELEASE_ACTIONS'] === '1';\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseConfig} from '../../config/index.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {fetchProjectNpmPackageInfo} from '../../versioning/npm-registry.js';\nimport {ReleaseAction} from '../actions.js';\nimport {ExternalCommands} from '../external-commands.js';\nimport {getReleaseTagForVersion} from '../../versioning/version-tags.js';\n\n/**\n * Release action that tags the recently published major as latest within the NPM\n * registry. Major versions are published to the `next` NPM dist tag initially and\n * can be re-tagged to the `latest` NPM dist tag. This allows caretakers to make major\n * releases available at the same time. e.g. Framework, Tooling and Components\n * are able to publish v12 to `@latest` at the same time. This wouldn't be possible if\n * we directly publish to `@latest` because Tooling and Components needs to wait\n * for the major framework release to be available on NPM.\n * @see {CutStableAction#perform} for more details.\n */\nexport class TagRecentMajorAsLatest extends ReleaseAction {\n  override async getDescription() {\n    return `Retag recently published major v${this.active.latest.version} as \"latest\" in NPM.`;\n  }\n\n  override async perform() {\n    await this.updateGithubReleaseEntryToStable(this.active.latest.version);\n    await this.checkoutUpstreamBranch(this.active.latest.branchName);\n    await this.installDependenciesForCurrentBranch();\n    await ExternalCommands.invokeSetNpmDist(this.projectDir, 'latest', this.active.latest.version);\n  }\n\n  /**\n   * Updates the Github release entry for the specified version to show\n   * it as stable release, compared to it being shown as a pre-release.\n   */\n  async updateGithubReleaseEntryToStable(version: semver.SemVer) {\n    const releaseTagName = getReleaseTagForVersion(version);\n    const {data: releaseInfo} = await this.git.github.repos.getReleaseByTag({\n      ...this.git.remoteParams,\n      tag: releaseTagName,\n    });\n\n    await this.git.github.repos.updateRelease({\n      ...this.git.remoteParams,\n      release_id: releaseInfo.id,\n      prerelease: false,\n    });\n  }\n\n  static override async isActive({latest}: ActiveReleaseTrains, config: ReleaseConfig) {\n    // If the latest release-train does currently not have a major version as version. e.g.\n    // the latest branch is `10.0.x` with the version being `10.0.2`. In such cases, a major\n    // has not been released recently, and this action should never become active.\n    if (latest.version.minor !== 0 || latest.version.patch !== 0) {\n      return false;\n    }\n\n    const packageInfo = await fetchProjectNpmPackageInfo(config);\n    const npmLatestVersion = semver.parse(packageInfo['dist-tags']['latest']);\n    // This action only becomes active if a major just has been released recently, but is\n    // not set to the `latest` NPM dist tag in the NPM registry. Note that we only allow\n    // re-tagging if the current `@latest` in NPM is the previous major version.\n    return npmLatestVersion !== null && npmLatestVersion.major === latest.version.major - 1;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReleaseActionConstructor} from '../actions.js';\nimport {ConfigureNextAsMajorAction} from './configure-next-as-major.js';\nimport {CutLongTermSupportPatchAction} from './cut-lts-patch.js';\nimport {CutNewPatchAction} from './cut-new-patch.js';\nimport {CutNpmNextPrereleaseAction} from './cut-npm-next-prerelease.js';\nimport {CutNpmNextReleaseCandidateAction} from './cut-npm-next-release-candidate.js';\nimport {CutStableAction} from './cut-stable.js';\nimport {CutExceptionalMinorPrereleaseAction} from './exceptional-minor/cut-exceptional-minor-prerelease.js';\nimport {CutExceptionalMinorReleaseCandidateAction} from './exceptional-minor/cut-exceptional-minor-release-candidate.js';\nimport {PrepareExceptionalMinorAction} from './exceptional-minor/prepare-exceptional-minor.js';\nimport {MoveNextIntoFeatureFreezeAction} from './move-next-into-feature-freeze.js';\nimport {MoveNextIntoReleaseCandidateAction} from './move-next-into-release-candidate.js';\nimport {SpecialCutLongTermSupportMinorAction} from './special/cut-lts-minor.js';\nimport {TagRecentMajorAsLatest} from './tag-recent-major-as-latest.js';\n\n/**\n * List of release actions supported by the release staging tool. These are sorted\n * by priority. Actions which are selectable are sorted based on this declaration order.\n */\nexport const actions: ReleaseActionConstructor[] = [\n  CutExceptionalMinorReleaseCandidateAction,\n  CutExceptionalMinorPrereleaseAction,\n  TagRecentMajorAsLatest,\n  CutStableAction,\n  CutNpmNextReleaseCandidateAction,\n  CutNewPatchAction,\n  CutNpmNextPrereleaseAction,\n  MoveNextIntoFeatureFreezeAction,\n  MoveNextIntoReleaseCandidateAction,\n  ConfigureNextAsMajorAction,\n  PrepareExceptionalMinorAction,\n  CutLongTermSupportPatchAction,\n\n  // Special actions. Not displayed by default.\n  SpecialCutLongTermSupportMinorAction,\n];\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport lockfile from '@yarnpkg/lockfile';\nimport {parse as parseYaml} from 'yaml';\nimport {\n  ngDevNpmPackageName,\n  workspaceRelativePackageJsonPath,\n  workspaceRelativeYarnLockFilePath,\n} from './constants.js';\nimport {Log} from './logging.js';\n\n/**\n * Verifies that the `ng-dev` tool is up-to-date in the workspace. The check will compare\n * the local version of the tool against the requested version in the workspace lock file.\n *\n * This check is helpful ensuring that the caretaker does not accidentally run with an older\n * local version of `ng-dev` due to not running `yarn` after checking out new revisions.\n *\n * @returns a boolean indicating success or failure.\n */\nexport async function verifyNgDevToolIsUpToDate(workspacePath: string): Promise {\n  // The placeholder will be replaced by the `pkg_npm` substitutions.\n  const localVersion = `0.0.0-e8d26efbaea89c31f1580c61c968c8119f5247a6`;\n  const workspacePackageJsonFile = path.join(workspacePath, workspaceRelativePackageJsonPath);\n  const workspaceDirLockFile = path.join(workspacePath, workspaceRelativeYarnLockFilePath);\n\n  try {\n    const packageJson = JSON.parse(fs.readFileSync(workspacePackageJsonFile, 'utf8')) as any;\n    // If we are operating in the actual dev-infra repo, always return `true`.\n    if (packageJson.name === ngDevNpmPackageName) {\n      return true;\n    }\n\n    const lockFileContent = fs.readFileSync(workspaceDirLockFile, 'utf8');\n\n    let lockFileObject: Record;\n    try {\n      const lockFile = lockfile.parse(lockFileContent);\n\n      if (lockFile.type !== 'success') {\n        throw Error('Unable to parse workspace lock file. Please ensure the file is valid.');\n      }\n      lockFileObject = lockFile.object as lockfile.LockFileObject;\n    } catch {\n      lockFileObject = parseYaml(lockFileContent);\n    }\n\n    const devInfraPkgVersion =\n      packageJson?.dependencies?.[ngDevNpmPackageName] ??\n      packageJson?.devDependencies?.[ngDevNpmPackageName] ??\n      packageJson?.optionalDependencies?.[ngDevNpmPackageName];\n    const expectedVersion = lockFileObject[`${ngDevNpmPackageName}@${devInfraPkgVersion}`].version;\n\n    if (localVersion !== expectedVersion) {\n      Log.error('  ✘   Your locally installed version of the `ng-dev` tool is outdated and not');\n      Log.error('      matching with the version in the `package.json` file.');\n      Log.error('      Re-install the dependencies to ensure you are using the correct version.');\n      return false;\n    }\n    return true;\n  } catch (e) {\n    Log.error(e);\n    return false;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GithubConfig} from '../../utils/config.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {ReleaseConfig} from '../config/index.js';\nimport {ActiveReleaseTrains} from '../versioning/active-release-trains.js';\nimport {NpmCommand} from '../versioning/npm-command.js';\nimport {printActiveReleaseTrains} from '../versioning/print-active-trains.js';\nimport {getNextBranchName, ReleaseRepoWithApi} from '../versioning/version-branches.js';\n\nimport {ReleaseAction} from './actions.js';\nimport {FatalReleaseActionError, UserAbortedReleaseActionError} from './actions-error.js';\nimport {actions} from './actions/index.js';\nimport {verifyNgDevToolIsUpToDate} from '../../utils/version-check.js';\nimport {Log, yellow} from '../../utils/logging.js';\nimport {Prompt} from '../../utils/prompt.js';\n\nexport enum CompletionState {\n  SUCCESS,\n  FATAL_ERROR,\n  MANUALLY_ABORTED,\n}\n\nexport class ReleaseTool {\n  /** The previous git commit to return back to after the release tool runs. */\n  private previousGitBranchOrRevision = this._git.getCurrentBranchOrRevision();\n\n  constructor(\n    protected _git: AuthenticatedGitClient,\n    protected _config: ReleaseConfig,\n    protected _github: GithubConfig,\n    protected _projectRoot: string,\n  ) {}\n\n  /** Runs the interactive release tool. */\n  async run(): Promise {\n    Log.info();\n    Log.info(yellow('--------------------------------------------'));\n    Log.info(yellow('  Angular Dev-Infra release staging script'));\n    Log.info(yellow('--------------------------------------------'));\n    Log.info();\n\n    const {owner, name} = this._github;\n    const nextBranchName = getNextBranchName(this._github);\n\n    if (\n      !(await this._verifyNoUncommittedChanges()) ||\n      !(await this._verifyRunningFromNextBranch(nextBranchName)) ||\n      !(await this._verifyNoShallowRepository()) ||\n      !(await verifyNgDevToolIsUpToDate(this._projectRoot))\n    ) {\n      return CompletionState.FATAL_ERROR;\n    }\n\n    if (!(await this._verifyNpmLoginState())) {\n      return CompletionState.MANUALLY_ABORTED;\n    }\n\n    // Set the environment variable to skip all git commit hooks triggered by husky. We are unable to\n    // rely on `--no-verify` as some hooks still run, notably the `prepare-commit-msg` hook.\n    // Running hooks has the downside of potentially running code (like the `ng-dev` tool) when a version\n    // branch is checked out, but the node modules are not re-installed. The tool switches branches\n    // multiple times per execution, and it is not desirable re-running Yarn all the time.\n    process.env['HUSKY'] = '0';\n\n    const repo: ReleaseRepoWithApi = {owner, name, api: this._git.github, nextBranchName};\n    const releaseTrains = await ActiveReleaseTrains.fetch(repo);\n\n    // Print the active release trains so that the caretaker can access\n    // the current project branching state without switching context.\n    await printActiveReleaseTrains(releaseTrains, this._config);\n\n    const action = await this._promptForReleaseAction(releaseTrains);\n\n    try {\n      await action.perform();\n    } catch (e) {\n      if (e instanceof UserAbortedReleaseActionError) {\n        return CompletionState.MANUALLY_ABORTED;\n      }\n      // Only print the error message and stack if the error is not a known fatal release\n      // action error (for which we print the error gracefully to the console with colors).\n      if (!(e instanceof FatalReleaseActionError) && e instanceof Error) {\n        console.error(e);\n      }\n      return CompletionState.FATAL_ERROR;\n    } finally {\n      await this.cleanup();\n    }\n\n    return CompletionState.SUCCESS;\n  }\n\n  /** Run post release tool cleanups. */\n  private async cleanup(): Promise {\n    // Return back to the git state from before the release tool ran.\n    this._git.checkout(this.previousGitBranchOrRevision, true);\n    // Ensure log out of NPM.\n    await NpmCommand.logout(this._config.publishRegistry);\n  }\n\n  /** Prompts the caretaker for a release action that should be performed. */\n  private async _promptForReleaseAction(activeTrains: ActiveReleaseTrains) {\n    const choices: {name: string; value: ReleaseAction}[] = [];\n\n    // Find and instantiate all release actions which are currently valid.\n    for (let actionType of actions) {\n      if (await actionType.isActive(activeTrains, this._config)) {\n        const action: ReleaseAction = new actionType(\n          activeTrains,\n          this._git,\n          this._config,\n          this._projectRoot,\n        );\n        choices.push({name: await action.getDescription(), value: action});\n      }\n    }\n\n    Log.info('Please select the type of release you want to perform.');\n\n    const releaseAction = await Prompt.select({\n      message: 'Please select an action:',\n      choices,\n    });\n\n    return releaseAction;\n  }\n\n  /**\n   * Verifies that there are no uncommitted changes in the project.\n   * @returns a boolean indicating success or failure.\n   */\n  private async _verifyNoUncommittedChanges(): Promise {\n    if (this._git.hasUncommittedChanges()) {\n      Log.error('  ✘   There are changes which are not committed and should be discarded.');\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Verifies that the local repository is not configured as shallow.\n   * @returns a boolean indicating success or failure.\n   */\n  private async _verifyNoShallowRepository(): Promise {\n    if (this._git.isShallowRepo()) {\n      Log.error('  ✘   The local repository is configured as shallow.');\n      Log.error(`      Please convert the repository to a complete one by syncing with upstream.`);\n      Log.error(`      https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---unshallow`);\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Verifies that the next branch from the configured repository is checked out.\n   * @returns a boolean indicating success or failure.\n   */\n  private async _verifyRunningFromNextBranch(nextBranchName: string): Promise {\n    const headSha = this._git.run(['rev-parse', 'HEAD']).stdout.trim();\n    const {data} = await this._git.github.repos.getBranch({\n      ...this._git.remoteParams,\n      branch: this._git.mainBranchName,\n    });\n\n    if (headSha !== data.commit.sha) {\n      Log.error('  ✘   Running release tool from an outdated local branch.');\n      Log.error(`      Please make sure you are running from the \"${nextBranchName}\" branch.`);\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Verifies that the user is logged into NPM at the correct registry, if defined for the release.\n   * @returns a boolean indicating whether the user is logged into NPM.\n   */\n  private async _verifyNpmLoginState(): Promise {\n    const registry = `NPM at the ${this._config.publishRegistry ?? 'default NPM'} registry`;\n    // TODO(josephperrott): remove wombat specific block once wombot allows `npm whoami` check to\n    // check the status of the local token in the .npmrc file.\n    if (this._config.publishRegistry?.includes('wombat-dressing-room.appspot.com')) {\n      Log.info('Unable to determine NPM login state for wombat proxy, requiring login now.');\n      try {\n        await NpmCommand.startInteractiveLogin(this._config.publishRegistry);\n      } catch {\n        return false;\n      }\n      return true;\n    }\n    if (await NpmCommand.checkIsLoggedIn(this._config.publishRegistry)) {\n      Log.debug(`Already logged into ${registry}.`);\n      return true;\n    }\n    Log.warn(`  ✘   Not currently logged into ${registry}.`);\n    const shouldLogin = await Prompt.confirm({message: 'Would you like to log into NPM now?'});\n    if (shouldLogin) {\n      Log.debug('Starting NPM login.');\n      try {\n        await NpmCommand.startInteractiveLogin(this._config.publishRegistry);\n      } catch {\n        return false;\n      }\n      return true;\n    }\n    return false;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {assertValidGithubConfig, getConfig} from '../../utils/config.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\nimport {assertValidReleaseConfig} from '../config/index.js';\n\nimport {CompletionState, ReleaseTool} from './index.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {green, Log, yellow} from '../../utils/logging.js';\n\n/** Command line options for publishing a release. */\nexport interface ReleasePublishOptions {}\n\n/** Yargs command builder for configuring the `ng-dev release publish` command. */\nfunction builder(argv: Argv): Argv {\n  return addGithubTokenOption(argv);\n}\n\n/** Yargs command handler for staging a release. */\nasync function handler() {\n  const git = await AuthenticatedGitClient.get();\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n  assertValidGithubConfig(config);\n\n  const task = new ReleaseTool(git, config.release, config.github, git.baseDir);\n  const result = await task.run();\n\n  switch (result) {\n    case CompletionState.FATAL_ERROR:\n      Log.error(`Release action has been aborted due to fatal errors. See above.`);\n      process.exitCode = 2;\n      break;\n    case CompletionState.MANUALLY_ABORTED:\n      Log.info(yellow(`Release action has been manually aborted.`));\n      process.exitCode = 1;\n      break;\n    case CompletionState.SUCCESS:\n      Log.info(green(`Release action has completed successfully.`));\n      break;\n  }\n}\n\n/** CLI command module for publishing a release. */\nexport const ReleasePublishCommandModule: CommandModule<{}, ReleasePublishOptions> = {\n  builder,\n  handler,\n  command: 'publish',\n  describe: 'Publish new releases and configure version branches.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport semver from 'semver';\nimport {Argv, Arguments, CommandModule} from 'yargs';\nimport {getConfig} from '../../../utils/config.js';\n\nimport {Log, bold, green} from '../../../utils/logging.js';\nimport {Spinner} from '../../../utils/spinner.js';\nimport {assertValidReleaseConfig} from '../../config/index.js';\nimport {NpmCommand} from '../../versioning/npm-command.js';\nimport {\n  createExperimentalSemver,\n  isExperimentalSemver,\n} from '../../versioning/experimental-versions.js';\n\n/** Command line options for setting an NPM dist tag. */\nexport interface ReleaseNpmDistTagSetOptions {\n  tagName: string;\n  targetVersion: string;\n  skipExperimentalPackages: boolean;\n}\n\nfunction builder(args: Argv): Argv {\n  return args\n    .positional('tagName', {\n      type: 'string',\n      demandOption: true,\n      description: 'Name of the NPM dist tag.',\n    })\n    .positional('targetVersion', {\n      type: 'string',\n      demandOption: true,\n      description:\n        'Version to which the NPM dist tag should be set.\\nThis version will be ' +\n        'converted to an experimental version for experimental packages.',\n    })\n    .option('skipExperimentalPackages', {\n      type: 'boolean',\n      description: 'Whether the dist tag should not be set for experimental NPM packages.',\n      default: false,\n    });\n}\n\n/** Yargs command handler for setting an NPM dist tag. */\nasync function handler(args: Arguments) {\n  const {targetVersion: rawVersion, tagName, skipExperimentalPackages} = args;\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n  const {npmPackages, publishRegistry} = config.release;\n  const version = semver.parse(rawVersion);\n\n  if (version === null) {\n    Log.error(`Invalid version specified (${rawVersion}). Unable to set NPM dist tag.`);\n    process.exit(1);\n  } else if (isExperimentalSemver(version)) {\n    Log.error(\n      `Unexpected experimental SemVer version specified. This command expects a ` +\n        `non-experimental project SemVer version.`,\n    );\n    process.exit(1);\n  }\n\n  Log.debug(`Setting \"${tagName}\" NPM dist tag for release packages to v${version}.`);\n  const spinner = new Spinner('');\n\n  for (const pkg of npmPackages) {\n    // If `--skip-experimental-packages` is specified, all NPM packages which\n    // are marked as experimental will not receive the NPM dist tag update.\n    if (pkg.experimental && skipExperimentalPackages) {\n      spinner.update(`Skipping \"${pkg.name}\" due to it being experimental.`);\n      continue;\n    }\n\n    spinner.update(`Setting NPM dist tag for \"${pkg.name}\"`);\n    const distTagVersion = pkg.experimental ? createExperimentalSemver(version!) : version!;\n\n    try {\n      await NpmCommand.setDistTagForPackage(pkg.name, tagName, distTagVersion, publishRegistry);\n      Log.debug(`Successfully set \"${tagName}\" NPM dist tag for \"${pkg.name}\".`);\n    } catch (e) {\n      spinner.complete();\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while setting the NPM dist tag for \"${pkg.name}\".`);\n      process.exit(1);\n    }\n  }\n\n  spinner.complete();\n  Log.info(green(`  ✓   Set NPM dist tag for all release packages.`));\n  Log.info(green(`      ${bold(tagName)} will now point to ${bold(`v${version}`)}.`));\n}\n\n/** CLI command module for setting an NPM dist tag. */\nexport const ReleaseNpmDistTagSetCommand: CommandModule<{}, ReleaseNpmDistTagSetOptions> = {\n  builder,\n  handler,\n  command: 'set  ',\n  describe: 'Sets a given NPM dist tag for all release packages.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReleaseNpmDistTagSetCommand} from '../npm-dist-tag/set/cli.js';\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\n// TODO(devversion): Remove this command in 2024 Jan. It only exists for backwards compat.\n//  If all active and LTS release trains support the new `release npm-dist-tag`\n//  command, this can be removed.\n\n/** CLI command module for setting an NPM dist tag. */\nexport const ReleaseSetDistTagCommand: typeof ReleaseNpmDistTagSetCommand = {\n  ...ReleaseNpmDistTagSetCommand,\n  command: 'set-dist-tag  ',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport path from 'path';\nimport url from 'url';\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {printEnvStamp, EnvStampMode} from './env-stamp.js';\n\n/**\n * Type describing a custom stamping function that\n * can be exposed through the `--additional-stamping-script`.\n */\nexport type EnvStampCustomPrintFn = (mode: EnvStampMode) => Promise;\n\nexport interface Options {\n  mode: EnvStampMode;\n  includeVersion: boolean;\n  additionalStampingScript: string | undefined;\n}\n\nfunction builder(args: Argv): Argv {\n  return args\n    .option('mode', {\n      demandOption: true,\n      description: 'Whether the env-stamp should be built for a snapshot or release',\n      choices: ['snapshot' as const, 'release' as const],\n    })\n    .option('includeVersion', {\n      type: 'boolean',\n      description: 'Whether the version should be included in the stamp.',\n      default: true,\n    })\n    .option('additionalStampingScript', {\n      type: 'string',\n      description:\n        'Working-dir relative or absolute path to an ESM script which can ' +\n        'print additional stamping variables',\n    });\n}\n\nasync function handler({mode, includeVersion, additionalStampingScript}: Arguments) {\n  await printEnvStamp(mode, includeVersion);\n\n  // Support for additional stamping. We import the script and call the default\n  // function while providing the stamping mode.\n  if (additionalStampingScript !== undefined) {\n    const scriptURL = url.pathToFileURL(path.resolve(additionalStampingScript));\n    const stampingExports = (await import(scriptURL.toString())) as {\n      default: EnvStampCustomPrintFn;\n    };\n    await stampingExports.default(mode);\n  }\n}\n\n/** CLI command module for building the environment stamp. */\nexport const BuildEnvStampCommand: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'build-env-stamp',\n  describe: 'Build the environment stamping information',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as fs from 'fs';\n\nimport {GitClient} from '../../utils/git/git-client.js';\nimport semver from 'semver';\nimport {createExperimentalSemver} from '../../release/versioning/experimental-versions.js';\nimport {join} from 'path';\n\nexport type EnvStampMode = 'snapshot' | 'release';\n\n/** Log the environment variables expected by Bazel for stamping. */\nexport async function printEnvStamp(mode: EnvStampMode, includeVersion: boolean) {\n  const git = await GitClient.get();\n\n  console.info(`BUILD_SCM_BRANCH ${getCurrentBranch(git)}`);\n  console.info(`BUILD_SCM_COMMIT_SHA ${getCurrentSha(git)}`);\n  console.info(`BUILD_SCM_HASH ${getCurrentSha(git)}`);\n  console.info(`BUILD_SCM_ABBREV_HASH ${getCurrentAbbrevSha(git)}`);\n  console.info(`BUILD_SCM_BRANCH ${getCurrentBranchOrRevision(git)}`);\n  console.info(`BUILD_SCM_LOCAL_CHANGES ${hasLocalChanges(git)}`);\n  console.info(`BUILD_SCM_USER ${getCurrentGitUser(git)}`);\n\n  if (includeVersion === true) {\n    const {version, experimentalVersion} = getSCMVersions(git, mode);\n    // Note: We need to use the `STABLE_` prefix to tell Bazel that these\n    // variables are changing rarely, and if they do- the targets relying\n    // on it should be rebuilt. e.g. the NPM package would need to be re-assembled.\n    // https://bazel.build/docs/user-manual#workspace-status-command.\n    console.info(`STABLE_PROJECT_VERSION ${version}`);\n    console.info(`STABLE_PROJECT_EXPERIMENTAL_VERSION ${experimentalVersion}`);\n  }\n}\n\n/** Whether the repo has local changes. */\nfunction hasLocalChanges(git: GitClient) {\n  try {\n    return git.hasUncommittedChanges();\n  } catch {\n    return true;\n  }\n}\n\n/**\n * Get the versions for generated packages. The stamped versions are always based\n * on the workspace version. Relying on tags is less reliable because tags can be\n * modified easily in an untracked/uncontrolled way, and are less predictable with\n * regards to the source control revision currently being checked out.\n *\n * A concrete use-case: The release tool tags the versioning commit only after building\n * and publishing to NPM, causing snapshot-docs deployment to display versions from\n * a previous version because the CI push for the bump commits executes earlier.\n *\n * In snapshot mode, we will include the current SHA along with the workspace version.\n */\nfunction getSCMVersions(\n  git: GitClient,\n  mode: EnvStampMode,\n): {version: string; experimentalVersion: string} {\n  const version = getVersionFromWorkspacePackageJson(git).format();\n  const experimentalVersion = createExperimentalSemver(version).format();\n\n  if (mode === 'release') {\n    return {\n      version,\n      experimentalVersion,\n    };\n  }\n\n  const headShaAbbreviated = getCurrentSha(git).slice(0, 7);\n  const localChanges = hasLocalChanges(git) ? '-with-local-changes' : '';\n\n  return {\n    version: `${version}+sha-${headShaAbbreviated}${localChanges}`,\n    experimentalVersion: `${experimentalVersion}+sha-${headShaAbbreviated}${localChanges}`,\n  };\n}\n\n/** Get the current SHA of HEAD. */\nfunction getCurrentSha(git: GitClient) {\n  try {\n    return git.run(['rev-parse', 'HEAD']).stdout.trim();\n  } catch {\n    return '';\n  }\n}\n\n/** Get the current abbreviated SHA of HEAD. */\nfunction getCurrentAbbrevSha(git: GitClient) {\n  try {\n    return git.run(['rev-parse', '--short', 'HEAD']).stdout.trim();\n  } catch {\n    return '';\n  }\n}\n\n/** Get the current branch or revision of HEAD. */\nfunction getCurrentBranchOrRevision(git: GitClient) {\n  try {\n    return git.getCurrentBranchOrRevision();\n  } catch {\n    return '';\n  }\n}\n\n/** Get the currently checked out branch. */\nfunction getCurrentBranch(git: GitClient) {\n  try {\n    return git.run(['symbolic-ref', '--short', 'HEAD']).stdout.trim();\n  } catch {\n    return '';\n  }\n}\n\n/** Get the current git user based on the git config. */\nfunction getCurrentGitUser(git: GitClient) {\n  try {\n    let userName = git.runGraceful(['config', 'user.name']).stdout.trim() || 'Unknown User';\n    let userEmail = git.runGraceful(['config', 'user.email']).stdout.trim() || 'unknown_email';\n    return `${userName} <${userEmail}>`;\n  } catch {\n    return '';\n  }\n}\n\n/** Gets the `version` from the workspace top-level `package.json` file. */\nfunction getVersionFromWorkspacePackageJson(git: GitClient): semver.SemVer {\n  const packageJsonPath = join(git.baseDir, 'package.json');\n  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as {\n    version: string | undefined;\n  };\n\n  if (packageJson.version === undefined) {\n    throw new Error(`No workspace version found in: ${packageJsonPath}`);\n  }\n\n  return new semver.SemVer(packageJson.version);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport {Arguments, Argv, CommandModule} from 'yargs';\nimport {getConfig} from '../../../utils/config.js';\n\nimport {bold, green, Log} from '../../../utils/logging.js';\nimport {Spinner} from '../../../utils/spinner.js';\nimport {assertValidReleaseConfig} from '../../config/index.js';\nimport {NpmCommand} from '../../versioning/npm-command.js';\n\n/** Command line options for deleting a NPM dist tag. */\nexport interface ReleaseNpmDistTagDeleteOptions {\n  tagName: string;\n}\n\nfunction builder(args: Argv): Argv {\n  return args.positional('tagName', {\n    type: 'string',\n    demandOption: true,\n    description: 'Name of the NPM dist tag.',\n  });\n}\n\n/** Yargs command handler for deleting an NPM dist tag. */\nasync function handler(args: Arguments) {\n  const {tagName} = args;\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n  const {npmPackages, publishRegistry} = config.release;\n\n  Log.debug(`Deleting \"${tagName}\" NPM dist tag for release packages.`);\n  const spinner = new Spinner('');\n\n  for (const pkg of npmPackages) {\n    spinner.update(`Deleting NPM dist tag for \"${pkg.name}\"`);\n\n    try {\n      await NpmCommand.deleteDistTagForPackage(pkg.name, tagName, publishRegistry);\n      Log.debug(`Successfully deleted \"${tagName}\" NPM dist tag for \"${pkg.name}\".`);\n    } catch (e) {\n      spinner.complete();\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while deleting the NPM dist tag for \"${pkg.name}\".`);\n      process.exit(1);\n    }\n  }\n\n  spinner.complete();\n  Log.info(green(`  ✓   Deleted \"${bold(tagName)}\" NPM dist tag for all packages.`));\n}\n\n/** CLI command module for deleting an NPM dist tag. */\nexport const ReleaseNpmDistTagDeleteCommand: CommandModule<{}, ReleaseNpmDistTagDeleteOptions> = {\n  builder,\n  handler,\n  command: 'delete ',\n  describe: 'Deletes a given NPM dist tag for all release packages.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv, CommandModule} from 'yargs';\n\nimport {ReleaseNpmDistTagDeleteCommand} from './delete/cli.js';\nimport {ReleaseNpmDistTagSetCommand} from './set/cli.js';\n\nfunction subCommandsBuilder(argv: Argv) {\n  return argv\n    .help()\n    .strict()\n    .demandCommand()\n    .command(ReleaseNpmDistTagDeleteCommand)\n    .command(ReleaseNpmDistTagSetCommand);\n}\n\nexport const ReleaseNpmDistTagCommand: CommandModule<{}, {}> = {\n  describe: 'Update the NPM dist tags for release packages.',\n  command: 'npm-dist-tag',\n  builder: subCommandsBuilder,\n  handler: () => {},\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\n\nimport {ReleaseBuildCommandModule} from './build/cli.js';\nimport {ReleaseInfoCommandModule} from './info/cli.js';\nimport {ReleaseNotesCommandModule} from './notes/cli.js';\nimport {ReleasePrecheckCommandModule} from './precheck/cli.js';\nimport {ReleasePublishCommandModule} from './publish/cli.js';\nimport {ReleaseSetDistTagCommand} from './set-dist-tag/cli.js';\nimport {BuildEnvStampCommand} from './stamping/cli.js';\nimport {ReleaseNpmDistTagCommand} from './npm-dist-tag/cli.js';\n\n/** Build the parser for the release commands. */\nexport function buildReleaseParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .command(ReleasePublishCommandModule)\n    .command(ReleaseBuildCommandModule)\n    .command(ReleaseInfoCommandModule)\n    .command(ReleaseNpmDistTagCommand)\n    .command(ReleasePrecheckCommandModule)\n    .command(ReleaseSetDistTagCommand)\n    .command(BuildEnvStampCommand)\n    .command(ReleaseNotesCommandModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {existsSync, readFileSync, writeFileSync} from 'fs';\nimport {isAbsolute, relative, resolve} from 'path';\nimport {Argv} from 'yargs';\n\nimport ts from 'typescript';\nimport {globSync} from 'fast-glob';\n\nimport {green, Log, yellow} from '../utils/logging.js';\n\nimport {Analyzer, ReferenceChain} from './analyzer.js';\nimport {CircularDependenciesTestConfig, loadTestConfig} from './config.js';\nimport {convertPathToForwardSlash} from './file_system.js';\nimport {compareGoldens, convertReferenceChainToGolden, Golden} from './golden.js';\n\nexport function tsCircularDependenciesBuilder(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .option('config', {\n      type: 'string',\n      demandOption: true,\n      description: 'Path to the configuration file.',\n    })\n    .option('warnings', {type: 'boolean', description: 'Prints all warnings.'})\n    .command(\n      'check',\n      'Checks if the circular dependencies have changed.',\n      (args) => args,\n      async (argv) => {\n        const {config: configArg, warnings} = argv;\n        const configPath = isAbsolute(configArg) ? configArg : resolve(configArg);\n        const config = await loadTestConfig(configPath);\n        process.exit(main(false, config, !!warnings));\n      },\n    )\n    .command(\n      'approve',\n      'Approves the current circular dependencies.',\n      (args) => args,\n      async (argv) => {\n        const {config: configArg, warnings} = argv;\n        const configPath = isAbsolute(configArg) ? configArg : resolve(configArg);\n        const config = await loadTestConfig(configPath);\n        process.exit(main(true, config, !!warnings));\n      },\n    );\n}\n\n/**\n * Runs the ts-circular-dependencies tool.\n * @param approve Whether the detected circular dependencies should be approved.\n * @param config Configuration for the current circular dependencies test.\n * @param printWarnings Whether warnings should be printed out.\n * @returns Status code.\n */\nexport function main(\n  approve: boolean,\n  config: CircularDependenciesTestConfig,\n  printWarnings: boolean,\n): number {\n  const {\n    baseDir,\n    goldenFile,\n    glob: globPattern,\n    resolveModule,\n    approveCommand,\n    ignoreTypeOnlyChecks,\n  } = config;\n  const analyzer = new Analyzer(resolveModule, ignoreTypeOnlyChecks);\n  const cycles: ReferenceChain[] = [];\n  const checkedNodes = new WeakSet();\n\n  globSync(globPattern, {absolute: true, ignore: ['**/node_modules/**']}).forEach((filePath) => {\n    const sourceFile = analyzer.getSourceFile(filePath);\n    cycles.push(...analyzer.findCycles(sourceFile, checkedNodes));\n  });\n\n  const actual = convertReferenceChainToGolden(cycles, baseDir);\n\n  Log.info(green(`   Current number of cycles: ${yellow(cycles.length.toString())}`));\n\n  if (approve) {\n    writeFileSync(goldenFile, JSON.stringify(actual, null, 2));\n    Log.info(green('✔  Updated golden file.'));\n    return 0;\n  } else if (!existsSync(goldenFile)) {\n    Log.error(`x  Could not find golden file: ${goldenFile}`);\n    return 1;\n  }\n\n  const warningsCount = analyzer.unresolvedFiles.size + analyzer.unresolvedModules.size;\n\n  // By default, warnings for unresolved files or modules are not printed. This is because\n  // it's common that third-party modules are not resolved/visited. Also generated files\n  // from the View Engine compiler (i.e. factories, summaries) cannot be resolved.\n  if (printWarnings && warningsCount !== 0) {\n    Log.info(yellow('⚠  The following imports could not be resolved:'));\n    Array.from(analyzer.unresolvedModules)\n      .sort()\n      .forEach((specifier) => Log.info(`  • ${specifier}`));\n    analyzer.unresolvedFiles.forEach((value, key) => {\n      Log.info(`  • ${getRelativePath(baseDir, key)}`);\n      value.sort().forEach((specifier) => Log.info(`      ${specifier}`));\n    });\n  } else {\n    Log.warn(`⚠  ${warningsCount} imports could not be resolved.`);\n    Log.warn(`   Please rerun with \"--warnings\" to inspect unresolved imports.`);\n  }\n\n  const expected = JSON.parse(readFileSync(goldenFile, 'utf8')) as Golden;\n  const {fixedCircularDeps, newCircularDeps} = compareGoldens(actual, expected);\n  const isMatching = fixedCircularDeps.length === 0 && newCircularDeps.length === 0;\n\n  if (isMatching) {\n    Log.info(green('✔  Golden matches current circular dependencies.'));\n    return 0;\n  }\n\n  Log.error('✘  Golden does not match current circular dependencies.');\n  if (newCircularDeps.length !== 0) {\n    Log.error(`   New circular dependencies which are not allowed:`);\n    newCircularDeps.forEach((c) => Log.error(`     • ${convertReferenceChainToString(c)}`));\n    Log.error();\n  }\n  if (fixedCircularDeps.length !== 0) {\n    Log.error(`   Fixed circular dependencies that need to be removed from the golden:`);\n    fixedCircularDeps.forEach((c) => Log.error(`     • ${convertReferenceChainToString(c)}`));\n    Log.info(\n      yellow(\n        `\\n   Total: ${newCircularDeps.length} new cycle(s), ${fixedCircularDeps.length} fixed cycle(s). \\n`,\n      ),\n    );\n  }\n\n  if (approveCommand) {\n    Log.info(yellow(`   Please approve the new golden with: ${approveCommand}`));\n  } else {\n    Log.info(\n      yellow(\n        `   Please update the golden. The following command can be ` +\n          `run: yarn ng-dev ts-circular-deps approve ${getRelativePath(process.cwd(), goldenFile)}.`,\n      ),\n    );\n  }\n\n  return 1;\n}\n\n/** Gets the specified path relative to the base directory. */\nfunction getRelativePath(baseDir: string, path: string) {\n  return convertPathToForwardSlash(relative(baseDir, path));\n}\n\n/** Converts the given reference chain to its string representation. */\nfunction convertReferenceChainToString(chain: ReferenceChain) {\n  return chain.join(' → ');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {readFileSync} from 'fs';\nimport {dirname, join, resolve} from 'path';\nimport ts from 'typescript';\nimport {CircularDependenciesParserOptions} from './config.js';\n\nimport {getFileStatus} from './file_system.js';\nimport {getModuleReferences} from './parser.js';\n\nexport type ModuleResolver = (specifier: string) => string | null;\n\n/**\n * Reference chains describe a sequence of source files which are connected through imports.\n * e.g. `file_a.ts` imports `file_b.ts`, whereas `file_b.ts` imports `file_c.ts`. The reference\n * chain data structure could be used to represent this import sequence.\n */\nexport type ReferenceChain = T[];\n\n/** Default extensions that the analyzer uses for resolving imports. */\nconst DEFAULT_EXTENSIONS = ['ts', 'js', 'd.ts'];\n\n/**\n * Analyzer that can be used to detect import cycles within source files. It supports\n * custom module resolution, source file caching and collects unresolved specifiers.\n */\nexport class Analyzer {\n  private _sourceFileCache = new Map();\n\n  private _ignoreTypeOnlyChecks: boolean;\n\n  unresolvedModules = new Set();\n  unresolvedFiles = new Map();\n\n  constructor(\n    public resolveModuleFn?: ModuleResolver,\n    ignoreTypeOnlyChecks: boolean = false,\n    public extensions: string[] = DEFAULT_EXTENSIONS,\n  ) {\n    this._ignoreTypeOnlyChecks = !!ignoreTypeOnlyChecks;\n  }\n\n  /** Finds all cycles in the specified source file. */\n  findCycles(\n    sf: ts.SourceFile,\n    visited = new WeakSet(),\n    path: ReferenceChain = [],\n  ): ReferenceChain[] {\n    const previousIndex = path.indexOf(sf);\n    // If the given node is already part of the current path, then a cycle has\n    // been found. Add the reference chain which represents the cycle to the results.\n    if (previousIndex !== -1) {\n      return [path.slice(previousIndex)];\n    }\n    // If the node has already been visited, then it's not necessary to go check its edges\n    // again. Cycles would have been already detected and collected in the first check.\n    if (visited.has(sf)) {\n      return [];\n    }\n    path.push(sf);\n    visited.add(sf);\n    // Go through all edges, which are determined through import/exports, and collect cycles.\n    const result: ReferenceChain[] = [];\n    for (const ref of getModuleReferences(sf, this._ignoreTypeOnlyChecks)) {\n      const targetFile = this._resolveImport(ref, sf.fileName);\n      if (targetFile !== null) {\n        result.push(...this.findCycles(this.getSourceFile(targetFile), visited, path.slice()));\n      }\n    }\n    return result;\n  }\n\n  /** Gets the TypeScript source file of the specified path. */\n  getSourceFile(filePath: string): ts.SourceFile {\n    const resolvedPath = resolve(filePath);\n    if (this._sourceFileCache.has(resolvedPath)) {\n      return this._sourceFileCache.get(resolvedPath)!;\n    }\n    const fileContent = readFileSync(resolvedPath, 'utf8');\n    const sourceFile = ts.createSourceFile(\n      resolvedPath,\n      fileContent,\n      ts.ScriptTarget.Latest,\n      false,\n    );\n    this._sourceFileCache.set(resolvedPath, sourceFile);\n    return sourceFile;\n  }\n\n  /** Resolves the given import specifier with respect to the specified containing file path. */\n  private _resolveImport(specifier: string, containingFilePath: string): string | null {\n    if (specifier.charAt(0) === '.') {\n      const resolvedPath = this._resolveFileSpecifier(specifier, containingFilePath);\n      if (resolvedPath === null) {\n        this._trackUnresolvedFileImport(specifier, containingFilePath);\n      }\n      return resolvedPath;\n    }\n    if (this.resolveModuleFn) {\n      const targetFile = this.resolveModuleFn(specifier);\n      if (targetFile !== null) {\n        const resolvedPath = this._resolveFileSpecifier(targetFile);\n        if (resolvedPath !== null) {\n          return resolvedPath;\n        }\n      }\n    }\n    this.unresolvedModules.add(specifier);\n    return null;\n  }\n\n  /** Tracks the given file import as unresolved. */\n  private _trackUnresolvedFileImport(specifier: string, originFilePath: string) {\n    if (!this.unresolvedFiles.has(originFilePath)) {\n      this.unresolvedFiles.set(originFilePath, [specifier]);\n    }\n    this.unresolvedFiles.get(originFilePath)!.push(specifier);\n  }\n\n  /** Resolves the given import specifier to the corresponding source file. */\n  private _resolveFileSpecifier(specifier: string, containingFilePath?: string): string | null {\n    const importFullPath =\n      containingFilePath !== undefined ? join(dirname(containingFilePath), specifier) : specifier;\n    const stat = getFileStatus(importFullPath);\n    if (stat && stat.isFile()) {\n      return importFullPath;\n    }\n    for (const extension of this.extensions) {\n      const pathWithExtension = `${importFullPath}.${extension}`;\n      const withExtensionStat = getFileStatus(pathWithExtension);\n      if (withExtensionStat?.isFile()) {\n        return pathWithExtension;\n      }\n    }\n    // Directories should be considered last. TypeScript first looks for source files, then\n    // falls back to directories if no file with appropriate extension could be found.\n    if (stat && stat.isDirectory()) {\n      return this._resolveFileSpecifier(join(importFullPath, 'index'));\n    }\n    return null;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Stats, statSync} from 'fs';\n\n/** Gets the status of the specified file. Returns null if the file does not exist. */\nexport function getFileStatus(filePath: string): Stats | null {\n  try {\n    return statSync(filePath);\n  } catch {\n    return null;\n  }\n}\n\n/** Ensures that the specified path uses forward slashes as delimiter. */\nexport function convertPathToForwardSlash(path: string) {\n  return path.replace(/\\\\/g, '/');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport ts from 'typescript';\n\n/**\n * Finds all module references in the specified source file.\n * @param node Source file which should be parsed.\n * @returns List of import specifiers in the source file.\n */\nexport function getModuleReferences(\n  initialNode: ts.SourceFile,\n  ignoreTypeOnlyChecks: boolean,\n): string[] {\n  const references: string[] = [];\n  const visitNode = (node: ts.Node) => {\n    if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {\n      // When ignoreTypeOnlyChecks are enabled, if the declaration is found to be type only, it is skipped.\n      if (\n        ignoreTypeOnlyChecks &&\n        ((ts.isImportDeclaration(node) && node.importClause?.isTypeOnly) ||\n          (ts.isExportDeclaration(node) && node.isTypeOnly))\n      ) {\n        return;\n      }\n\n      if (node.moduleSpecifier !== undefined && ts.isStringLiteral(node.moduleSpecifier)) {\n        references.push(node.moduleSpecifier.text);\n      }\n    }\n    ts.forEachChild(node, visitNode);\n  };\n\n  ts.forEachChild(initialNode, visitNode);\n\n  return references;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {dirname, extname, isAbsolute, resolve} from 'path';\n\nimport {Log} from '../utils/logging.js';\n\nimport {ModuleResolver} from './analyzer.js';\n\n/** Options used at runtime by the parser.  */\nexport interface CircularDependenciesParserOptions {\n  /** Whether to ignore type only imports in circular dependency checks. */\n  ignoreTypeOnlyChecks?: true;\n}\n\n/** Configuration for a circular dependencies test. */\nexport interface CircularDependenciesTestConfig extends CircularDependenciesParserOptions {\n  /** Base directory used for shortening paths in the golden file. */\n  baseDir: string;\n  /** Path to the golden file that is used for checking and approving. */\n  goldenFile: string;\n  /** Glob that resolves source files which should be checked. */\n  glob: string;\n  /**\n   * Optional module resolver function that can be used to resolve modules\n   * to absolute file paths.\n   */\n  resolveModule?: ModuleResolver;\n  /**\n   * Optional command that will be displayed if the golden check failed. This can be used\n   * to consistently use script aliases for checking/approving the golden.\n   */\n  approveCommand?: string;\n}\n\n/**\n * Loads the configuration for the circular dependencies test. If the config cannot be\n * loaded, an error will be printed and the process exists with a non-zero exit code.\n */\nexport async function loadTestConfig(configPath: string): Promise {\n  const configBaseDir = dirname(configPath);\n  const resolveRelativePath = (relativePath: string) => resolve(configBaseDir, relativePath);\n\n  try {\n    let config: CircularDependenciesTestConfig;\n    switch (extname(configPath)) {\n      case '.mjs':\n        // Load the ESM configuration file using the TypeScript dynamic import workaround.\n        // Once TypeScript provides support for keeping the dynamic import this workaround can be\n        // changed to a direct dynamic import.\n        config = await loadEsmModule(configPath);\n        break;\n      case '.cjs':\n        config = require(configPath);\n        break;\n      default:\n        // The file could be either CommonJS or ESM.\n        // CommonJS is tried first then ESM if loading fails.\n        try {\n          config = require(configPath);\n        } catch (e) {\n          if ((e as any).code === 'ERR_REQUIRE_ESM') {\n            // Load the ESM configuration file using the TypeScript dynamic import workaround.\n            // Once TypeScript provides support for keeping the dynamic import this workaround can be\n            // changed to a direct dynamic import.\n            config = await loadEsmModule(configPath);\n          }\n\n          throw e;\n        }\n    }\n\n    // Clone to config object. This is needed because in ESM the properties are non writeable\n    config = {...config};\n\n    if (!isAbsolute(config.baseDir)) {\n      config.baseDir = resolveRelativePath(config.baseDir);\n    }\n    if (!isAbsolute(config.goldenFile)) {\n      config.goldenFile = resolveRelativePath(config.goldenFile);\n    }\n    if (!isAbsolute(config.glob)) {\n      config.glob = resolveRelativePath(config.glob);\n    }\n    return config;\n  } catch (e) {\n    Log.error('Could not load test configuration file at: ' + configPath);\n    Log.error(`Failed with error:`, e);\n    process.exit(1);\n  }\n}\n\n/**\n * Lazily compiled dynamic import loader function.\n */\nlet load: ((modulePath: string | URL) => Promise) | undefined;\n\n/**\n * This uses a dynamic import to load a module which may be ESM.\n * CommonJS code can load ESM code via a dynamic import. Unfortunately, TypeScript\n * will currently, unconditionally downlevel dynamic import into a require call.\n * require calls cannot load ESM code and will result in a runtime error. To workaround\n * this, a Function constructor is used to prevent TypeScript from changing the dynamic import.\n * Once TypeScript provides support for keeping the dynamic import this workaround can\n * be dropped.\n *\n * @param modulePath The path of the module to load.\n * @returns A Promise that resolves to the dynamically imported module.\n */\nexport function loadEsmModule(modulePath: string | URL): Promise {\n  load ??= new Function('modulePath', `return import(modulePath);`) as Exclude<\n    typeof load,\n    undefined\n  >;\n\n  return load(modulePath);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {relative} from 'path';\n\nimport {ReferenceChain} from './analyzer.js';\nimport {convertPathToForwardSlash} from './file_system.js';\n\nexport type CircularDependency = ReferenceChain;\nexport type Golden = CircularDependency[];\n\n/**\n * Converts a list of reference chains to a JSON-compatible golden object. Reference chains\n * by default use TypeScript source file objects. In order to make those chains printable,\n * the source file objects are mapped to their relative file names.\n */\nexport function convertReferenceChainToGolden(refs: ReferenceChain[], baseDir: string): Golden {\n  return (\n    refs\n      .map(\n        // Normalize cycles as the paths can vary based on which node in the cycle is visited\n        // first in the analyzer. The paths represent cycles. Hence we can shift nodes in a\n        // deterministic way so that the goldens don't change unnecessarily and cycle comparison\n        // is simpler.\n        (chain) =>\n          normalizeCircularDependency(\n            chain.map(({fileName}) => convertPathToForwardSlash(relative(baseDir, fileName))),\n          ),\n      )\n      // Sort cycles so that the golden doesn't change unnecessarily when cycles are detected\n      // in different order (e.g. new imports cause cycles to be detected earlier or later).\n      .sort(compareCircularDependency)\n  );\n}\n\n/**\n * Compares the specified goldens and returns two lists that describe newly\n * added circular dependencies, or fixed circular dependencies.\n */\nexport function compareGoldens(actual: Golden, expected: Golden) {\n  const newCircularDeps: CircularDependency[] = [];\n  const fixedCircularDeps: CircularDependency[] = [];\n  actual.forEach((a) => {\n    if (!expected.find((e) => isSameCircularDependency(a, e))) {\n      newCircularDeps.push(a);\n    }\n  });\n  expected.forEach((e) => {\n    if (!actual.find((a) => isSameCircularDependency(e, a))) {\n      fixedCircularDeps.push(e);\n    }\n  });\n  return {newCircularDeps, fixedCircularDeps};\n}\n\n/**\n * Normalizes the a circular dependency by ensuring that the path starts with the first\n * node in alphabetical order. Since the path array represents a cycle, we can make a\n * specific node the first element in the path that represents the cycle.\n *\n * This method is helpful because the path of circular dependencies changes based on which\n * file in the path has been visited first by the analyzer. e.g. Assume we have a circular\n * dependency represented as: `A -> B -> C`. The analyzer will detect this cycle when it\n * visits `A`. Though when a source file that is analyzed before `A` starts importing `B`,\n * the cycle path will detected as `B -> C -> A`. This represents the same cycle, but is just\n * different due to a limitation of using a data structure that can be written to a text-based\n * golden file.\n *\n * To account for this non-deterministic behavior in goldens, we shift the circular\n * dependency path to the first node based on alphabetical order. e.g. `A` will always\n * be the first node in the path that represents the cycle.\n */\nfunction normalizeCircularDependency(path: CircularDependency): CircularDependency {\n  if (path.length <= 1) {\n    return path;\n  }\n\n  let indexFirstNode: number = 0;\n  let valueFirstNode: string = path[0];\n\n  // Find a node in the cycle path that precedes all other elements\n  // in terms of alphabetical order.\n  for (let i = 1; i < path.length; i++) {\n    const value = path[i];\n    if (value.localeCompare(valueFirstNode, 'en') < 0) {\n      indexFirstNode = i;\n      valueFirstNode = value;\n    }\n  }\n\n  // If the alphabetically first node is already at start of the path, just\n  // return the actual path as no changes need to be made.\n  if (indexFirstNode === 0) {\n    return path;\n  }\n\n  // Move the determined first node (as of alphabetical order) to the start of a new\n  // path array. The nodes before the first node in the old path are then concatenated\n  // to the end of the new path. This is possible because the path represents a cycle.\n  return [...path.slice(indexFirstNode), ...path.slice(0, indexFirstNode)];\n}\n\n/** Checks whether the specified circular dependencies are equal. */\nfunction isSameCircularDependency(actual: CircularDependency, expected: CircularDependency) {\n  if (actual.length !== expected.length) {\n    return false;\n  }\n  for (let i = 0; i < actual.length; i++) {\n    if (actual[i] !== expected[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Compares two circular dependencies by respecting the alphabetic order of nodes in the\n * cycle paths. The first nodes which don't match in both paths are decisive on the order.\n */\nfunction compareCircularDependency(a: CircularDependency, b: CircularDependency): number {\n  // Go through nodes in both cycle paths and determine whether `a` should be ordered\n  // before `b`. The first nodes which don't match decide on the order.\n  for (let i = 0; i < Math.min(a.length, b.length); i++) {\n    const compareValue = a[i].localeCompare(b[i], 'en');\n    if (compareValue !== 0) {\n      return compareValue;\n    }\n  }\n  // If all nodes are equal in the cycles, the order is based on the length of both cycles.\n  return a.length - b.length;\n}\n", "import {Argv, CommandModule} from 'yargs';\nimport {Log} from '../../utils/logging.js';\n\nexport interface Options {}\n\n/** Builds the command. */\nasync function builder(yargs: Argv) {\n  return yargs;\n}\n\n/** Handles the command. */\nasync function handler() {\n  Log.warn('ng-dev auth login has been deprecated. Authentication will be done');\n  Log.warn('using TOKEN from the local environment.');\n}\n\n/** yargs command module for logging into the ng-dev service. */\nexport const LoginModule: CommandModule<{}, Options> = {\n  handler,\n  builder,\n  command: 'login',\n  describe: 'Log into the ng-dev service',\n};\n", "import {Argv, CommandModule} from 'yargs';\nimport {Log} from '../../utils/logging.js';\n\nexport interface Options {}\n\n/** Builds the command. */\nasync function builder(yargs: Argv) {\n  return yargs;\n}\n\n/** Handles the command. */\nasync function handler() {\n  Log.warn('ng-dev auth logout has been deprecated. Authentication will be done');\n  Log.warn('using local environment.');\n}\n\n/** yargs command module for logging out of the ng-dev service. */\nexport const LogoutModule: CommandModule<{}, Options> = {\n  handler,\n  builder,\n  command: 'logout',\n  describe: 'Log out of the ng-dev service',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv} from 'yargs';\nimport {LoginModule} from './login/cli.js';\nimport {LogoutModule} from './logout/cli.js';\n\n/** CLI command module. */\nexport function buildAuthParser(yargs: Argv) {\n  return yargs.command(LoginModule).command(LogoutModule);\n}\n", "import {ChildProcess} from '../../utils/child-process.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {Workflow} from './loader.js';\n\nexport async function measureWorkflow({name, workflow, prepare, cleanup}: Workflow) {\n  const spinner = new Spinner();\n  try {\n    if (prepare) {\n      spinner.update('Preparing environment for workflow execution');\n      // Run the `prepare` commands to establish the environment, caching, etc prior to running the\n      // workflow.\n      await runCommands(prepare);\n      spinner.update('Environment preperation completed');\n    }\n\n    spinner.update(`Executing workflow (${name})`);\n    // Mark the start time of the workflow, execute all of the commands provided in the workflow and\n    // then mark the ending time.\n    performance.mark('start');\n    await runCommands(workflow);\n    performance.mark('end');\n\n    spinner.update('Workflow completed');\n\n    if (cleanup) {\n      spinner.update('Cleaning up environment after workflow');\n      // Run the clean up commands to reset the environment and undo changes made during the workflow.\n      await runCommands(cleanup);\n      spinner.update('Environment cleanup complete');\n    }\n\n    const results = performance.measure(name, 'start', 'end');\n\n    spinner.success(`${name}: ${results.duration.toFixed(2)}ms`);\n\n    return {\n      name,\n      value: results.duration,\n    };\n  } finally {\n    spinner.complete();\n  }\n}\n\n/**\n * Run a set of commands provided as a multiline text block. Commands are assumed to always be\n * provided on a single line.\n */\nasync function runCommands(commands?: string[]) {\n  if (!commands || commands.length === 0) {\n    return;\n  }\n  for (let cmd of commands) {\n    await ChildProcess.exec(cmd, {mode: 'silent'});\n  }\n}\n", "import {readFile} from 'fs/promises';\nimport {parse} from 'yaml';\n\nexport interface Workflow {\n  // The friendly name of the workflow.\n  name: string;\n  // The set of commands to run under timing test for the workflow.\n  workflow: string[];\n  // The set of commands to run in preparation for the workflow.\n  prepare?: string[];\n  // The set of commands to run as a cleanup.\n  cleanup?: string[];\n  // Whether the workflow is temporarily disabled.\n  disabled?: true;\n}\n\nexport async function loadWorkflows(src: string) {\n  /** The set of workflows which can be executed. */\n  const filteredWorkflows: {[key: string]: Workflow} = {};\n  /** The workflow configuration file content as a string.  */\n  const rawWorkflows = await readFile(src, {encoding: 'utf-8'});\n  /** The object parsed from the workflow configuration file, holding the workflow configurations. */\n  const workflows = parse(rawWorkflows).workflows as {[key: string]: Workflow};\n\n  // Remove any workflow which is marked as disabled.\n  for (const [name, workflow] of Object.entries(workflows)) {\n    if (workflow.disabled !== true) {\n      filteredWorkflows[name] = workflow;\n    }\n  }\n\n  return filteredWorkflows;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, CommandModule} from 'yargs';\nimport {measureWorkflow} from './workflow.js';\nimport {loadWorkflows} from './loader.js';\nimport {join} from 'path';\nimport {determineRepoBaseDirFromCwd} from '../../utils/repo-directory.js';\nimport {addWorkflowPerformanceResult} from './database.js';\nimport {Spinner} from '../../utils/spinner.js';\n\ninterface WorkflowsParams {\n  configFile: string;\n  list: boolean;\n  name?: string;\n  commitSha?: string;\n}\n\n/** Builds the checkout pull request command. */\nfunction builder(yargs: Argv) {\n  return yargs\n    .option('config-file' as 'configFile', {\n      default: '.ng-dev/dx-perf-workflows.yml',\n      type: 'string',\n      description: 'The path to the workflow definitions in a yml file',\n    })\n    .option('list', {\n      default: false,\n      type: 'boolean',\n      description: 'Whether to get back a list of workflows that can be executed',\n    })\n    .option('name', {\n      type: 'string',\n      description: 'A specific workflow to run by name',\n    })\n    .option('commit-sha' as 'commitSha', {\n      type: 'string',\n      description: 'The commit sha to associate the measurement with, uploading it to our database',\n    });\n}\n\n/** Handles the checkout pull request command. */\nasync function handler({configFile, list, name, commitSha}: WorkflowsParams) {\n  const workflows = await loadWorkflows(join(determineRepoBaseDirFromCwd(), configFile));\n\n  if (list) {\n    process.stdout.write(JSON.stringify(Object.keys(workflows)));\n    return;\n  }\n\n  const results: {name: string; value: number}[] = [];\n\n  if (name) {\n    const {value} = await measureWorkflow(workflows[name]);\n    results.push({value, name});\n  } else {\n    for (const workflow of Object.values(workflows)) {\n      const {name, value} = await measureWorkflow(workflow);\n      results.push({value, name});\n    }\n  }\n\n  if (commitSha) {\n    const spinner = new Spinner('Uploading performance results to database');\n    try {\n      for (let {value, name} of results) {\n        await addWorkflowPerformanceResult({\n          name,\n          value,\n          commit_sha: commitSha,\n        });\n      }\n    } finally {\n      spinner.success('Upload complete');\n    }\n  }\n}\n\n/** yargs command module for checking out a PR. */\nexport const WorkflowsModule: CommandModule<{}, WorkflowsParams> = {\n  handler,\n  builder,\n  command: 'workflows',\n  describe: 'Evaluate the performance of the provided workflows',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Spanner} from '@google-cloud/spanner';\n\n/**\n * The workflow performance results are stored in a spanner database within our\n * project to be able to retrieve later, The commit sha will be used as a foreign\n * key to point to specific commits found in the table of commit shas expressing\n * the full graph of commits within the git graph for the repository.\n *\n * The workflow performance table is defined with the following characteristics.\n *\n * |--------------------------------------------------------------------|\n * |              Column              |     Type     |       Notes      |\n * |--------------------------------------------------------------------|\n * |     workflow_performance_id      |  STRING(36)  |   Autogenerated  |\n * |     commit_sha                   |  STRING(40)  |                  |\n * |     value                        |  FLOAT64     |                  |\n * |     name                         |  STRING(256) |                  |\n * |--------------------------------------------------------------------|\n */\n\n/** The reuslt of workflow performance eresult to be stored in the database. */\nexport interface WorkflowPerformanceRowResult {\n  commit_sha: string;\n  value: number;\n  name: string;\n}\n\n/** Add a single workflow performance result to the spanner database. */\nexport async function addWorkflowPerformanceResult(result: WorkflowPerformanceRowResult) {\n  /** The spanner client instance. */\n  const spanner = new Spanner({\n    projectId: 'internal-200822',\n  });\n  /** The spanner instance within our project. */\n  const instance = spanner.instance('ng-measurables');\n  /** The commit performance database within our spanner instance. */\n  const database = instance.database('commit_performance');\n  /** The table holding workflow performance information. */\n  const workflowPerformanceTable = database.table('WorkflowPerformance');\n\n  try {\n    await workflowPerformanceTable.insert(result);\n  } finally {\n    await database.close();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv} from 'yargs';\n\nimport {WorkflowsModule} from './workflow/cli.js';\n\n/** Build the parser for pull request commands. */\nexport function buildPerfParser(localYargs: Argv) {\n  return localYargs.help().strict().demandCommand().command(WorkflowsModule);\n}\n", "#!/usr/bin/env node\n\n/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {runParserWithCompletedFunctions} from './utils/yargs.js';\n\nimport {buildCaretakerParser} from './caretaker/cli.js';\nimport {buildCommitMessageParser} from './commit-message/cli.js';\nimport {buildFormatParser} from './format/cli.js';\nimport {buildMiscParser} from './misc/cli.js';\nimport {buildNgbotParser} from './ngbot/cli.js';\nimport {buildPrParser} from './pr/cli.js';\nimport {buildPullapproveParser} from './pullapprove/cli.js';\nimport {buildReleaseParser} from './release/cli.js';\nimport {tsCircularDependenciesBuilder} from './ts-circular-dependencies/index.js';\nimport {captureLogOutputForCommand} from './utils/logging.js';\nimport {buildAuthParser} from './auth/cli.js';\nimport {buildPerfParser} from './perf/cli.js';\nimport {Argv} from 'yargs';\n\nrunParserWithCompletedFunctions((yargs: Argv) => {\n  return yargs\n    .scriptName('ng-dev')\n    .middleware(captureLogOutputForCommand, true)\n    .demandCommand()\n    .recommendCommands()\n    .command('auth ', false, buildAuthParser)\n    .command('commit-message ', '', buildCommitMessageParser)\n    .command('format ', '', buildFormatParser)\n    .command('pr ', '', buildPrParser)\n    .command('pullapprove ', '', buildPullapproveParser)\n    .command('release ', '', buildReleaseParser)\n    .command('ts-circular-deps ', '', tsCircularDependenciesBuilder)\n    .command('caretaker ', '', buildCaretakerParser)\n    .command('misc ', '', buildMiscParser)\n    .command('ngbot ', false, buildNgbotParser)\n    .command('perf ', '', buildPerfParser)\n    .wrap(120)\n    .strict();\n});\n"],
-  "mappings": "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AM;AAC5CA,sBAAeA,gBAAe,QAAQ,MAAM;AAC5CA,sBAAeA,gBAAe,QAAQ,MAAM;AAC5CA,sBAAeA,gBAAe,QAAQ,MAAM;AAC5CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MA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A,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAA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AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,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,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM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AAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,QAC5C;AAAA,MACF;AAEA,WAAK,SAAS,WAAW;AACvB,eAAO;AAAA,UACL;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,QACxE;AAAA,MACF;AAEA,WAAK,OAAO,SAAS,KAAK;AACxB,eAAO;AAAA,MACT;AAEA,WAAK,WAAW,WAAW;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,YAAY,IAAI;AAG7C,WAAO,QAAQ,aAAa,WAAW;AACrC,WAAK,UAAU,WAAW;AACxB,eAAO;AAAA,UACL;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,QAC5C;AAAA,MACF;AAEA,WAAK,SAAS,WAAW;AACvB,eAAO;AAAA,UACL;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,QACxE;AAAA,MACF;AAEA,WAAK,OAAO,SAAS,KAAK;AACxB,eAAQ,OAAO,IAAI,WAAY,iBAAiB;AAAA,MAClD;AAEA,WAAK,WAAW,WAAW;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,YAAY,IAAI;AAE7C,WAAO,QAAQ,aAAa,WAAW;AAErC,WAAK,UAAU,WAAW;AACxB,eAAO;AAAA,UACL;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C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M;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA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A,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM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AAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,U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;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,QAC5C;AAAA,MACF;AAEA,WAAK,SAAS,WAAW;AACvB,eAAO;AAAA,UACL;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,QACxE;AAAA,MACF;AAEA,WAAK,OAAO,SAAS,KAAK;AACxB,eAAO;AAAA,MACT;AAEA,WAAK,WAAW,WAAW;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,QAAQ,IAAI;AAAA;AAAA;;;AC72BzC;AAAA;AAAA,QAAI,OAAO,UAAQ;AAAnB,QACE,QAAQ;AASV,aAAS,WAAW;AAAA,IAAC;AAErB,aAAS,UAAU,QAAQ,SAAS,KAAK;AAevC,UAAI,GAAG;AACP,UAAI;AACJ,UAAI,OAAS;AACb,UAAI,SAAS;AACb,UAAI,SAAS;AACb,UAAI;AAGJ,UAAI,OAAO,IAAI;AACf,UAAI,UAAU,IAAI;AAElB;AACE,aAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,cAAI,KAAK,MAAM,IAAM;AACnB;AACE,mBAAK,OAAO,GAAG,OAAO,KAAK,gBAAgB,QAAQ,QAAQ;AACzD,oBAAI,MAAM,KAAK,gBAAgB;AAE/B,oBAAK,UAAU,IAAK,IAAI;AACtB,2BAAS;AAEX,qBAAK,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC1B,sBAAI,IAAI,MAAM,KAAK,IAAI;AACrB,6BAAS;AAGb;AACA,qBAAK,IAAI,SAAS;AAClB,yBAAS;AAAA,cACX;AAEA;AAAA,UACJ;AAGA,cAAI,KAAK,MAAM,MAAQ,KAAK,MAAM;AAChC;AAAA,QAEJ;AAEF,UAAI,QAAQ;AACV,eAAO;AAQT,iBAAW,MAAM,OAAO,MAAM,WAAW,OAAO;AAKhD,UAAI,OAAO,SAAS;AAClB,oBAAY,KAAK,OAAO,WAAW;AAErC,aAAO,WAAW,IAAI,OAAO,IAAI,MAAM,KAAK,MAAM,OAAO;AAAA,IAC3D;AAEA,WAAO,QAAQ,cAAc,WAAW;AACtC,WAAK,OAAO,WAAW;AACrB,eAAO;AAAA,MACT;AACA,WAAK,kBAAkB;AAAA,QACrB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,QACnB,CAAE,IAAM,IAAM,EAAK;AAAA,MACrB;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,aAAa,QAAQ;AAIlD,WAAO,QAAQ,cAAc,WAAW;AACtC,WAAK,OAAO,WAAW;AACrB,eAAO;AAAA,MACT;AACA,WAAK,kBAAkB;AAAA,QACrB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,MAC3B;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,aAAa,QAAQ;AAIlD,WAAO,QAAQ,cAAc,WAAW;AACtC,WAAK,OAAO,WAAW;AACrB,eAAO;AAAA,MACT;AACA,WAAK,kBAAkB;AAAA,QACrB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,IAAM,IAAM,EAAK;AAAA,QACzB,CAAE,IAAM,EAAK;AAAA,QACb,CAAE,IAAM,EAAK;AAAA,MACf;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,aAAa,QAAQ;AAAA;AAAA;;;AC5IlD;AAAA;AACA,QAAIC,MAAK,UAAQ;AAEjB,QAAI,OAAQ;AAAZ,QACE,UAAU;AADZ,QAEE,OAAU;AAFZ,QAGE,OAAU;AAHZ,QAIE,UAAU;AAEZ,QAAI,OAAO;AAEX,QAAI,cAAc;AAAA,MAChB,IAAI;AAAA,MACJ,IAAI,QAAQ;AAAA,MACZ,IAAI,QAAQ;AAAA,MACZ,IAAI,QAAQ;AAAA,MACZ,IAAI,QAAQ;AAAA,MACZ,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,QAAQ;AAAA,MACZ,IAAI,QAAQ;AAAA,MACZ,IAAI,QAAQ;AAAA,MACZ,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,IACX;AAEA,WAAO,QAAQ,SAAS,SAAS,QAAQ,MAAM;AAG7C,UAAI,aAAa,CAAC;AAClB,eAAS,IAAI,GAAG,IAAI,KAAK;AACvB,mBAAW,KAAK;AAElB,eAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG;AACtC,mBAAW,OAAO,KAAK;AAEzB,UAAI,WAAW;AACf,eAAS,IAAI,KAAM,KAAK,KAAM,KAAK,GAAG;AACpC,YAAI,WAAW,MAAM,GAAG;AACtB,qBAAW;AACX;AAAA,QACF;AAAA,MACF;AAEA,UAAI,UAAU;AAAA,QACZ;AAAA,QACA;AAAA,QACA,WAAa;AAAA,QACb,YAAa,OAAO;AAAA,QACpB,aAAa;AAAA,QACb,WAAa,OAAO;AAAA,MACtB;AAEA,UAAI,UAAU,YAAY,IAAI,SAAS,KAAK;AAC1C,eAAO,IAAI,MAAM,OAAO;AAAA,MAC1B,CAAC,EAAE,OAAO,SAASC,QAAO;AACxB,eAAO,CAAC,CAACA;AAAA,MACX,CAAC,EAAE,KAAK,SAAS,GAAG,GAAG;AACrB,eAAO,EAAE,aAAa,EAAE;AAAA,MAC1B,CAAC;AAED,UAAI,QAAQ,KAAK,qBAAqB,MAAM;AAC1C,eAAO;AAAA,MACT,OACK;AACH,eAAO,QAAQ,SAAS,IAAI,QAAQ,GAAG,OAAO;AAAA,MAChD;AAAA,IACF;AAEA,WAAO,QAAQ,aAAa,SAAS,UAAU,MAAM,IAAI;AACvD,UAAI,OAAO,SAAS,YAAY;AAC9B,aAAK;AACL,eAAO;AAAA,MACT;AAEA,UAAI;AAEJ,UAAIC,YAAU,SAAS,KAAK,QAAQ;AAClC,YAAI,IAAI;AACN,UAAAF,IAAG,UAAU,EAAE;AAAA,QACjB;AAEA,YAAI;AAAK,iBAAO,GAAG,KAAK,IAAI;AAC5B,WAAG,MAAM,KAAK,OAAO,QAAQ,IAAI,CAAC;AAAA,MACpC;AAEA,UAAI,QAAQ,KAAK,YAAY;AAC3B,aAAKA,IAAG,SAAS,UAAU,GAAG,GAC5B,SAAS,OAAO,YAAY,KAAK,UAAU;AAE7C,QAAAA,IAAG,KAAK,IAAI,QAAQ,GAAG,KAAK,YAAY,MAAM,SAAS,KAAK;AAC1D,UAAAE,UAAQ,KAAK,MAAM;AAAA,QACrB,CAAC;AACD;AAAA,MACF;AAEA,MAAAF,IAAG,SAAS,UAAUE,SAAO;AAAA,IAC/B;AAEA,WAAO,QAAQ,iBAAiB,SAAS,UAAU,MAAM;AACvD,UAAI,QAAQ,KAAK,YAAY;AAC3B,YAAI,KAAKF,IAAG,SAAS,UAAU,GAAG,GAChCG,UAAS,OAAO,YAAY,KAAK,UAAU;AAE7C,QAAAH,IAAG,SAAS,IAAIG,SAAQ,GAAG,KAAK,UAAU;AAC1C,QAAAH,IAAG,UAAU,EAAE;AACf,eAAO,KAAK,OAAOG,SAAQ,IAAI;AAAA,MACjC;AAEA,aAAO,KAAK,OAAOH,IAAG,aAAa,QAAQ,GAAG,IAAI;AAAA,IACpD;AAGA,WAAO,QAAQ,YAAY,SAAS,QAAQ,MAAM;AAChD,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,CAAC;AAAA,MACV;AACA,WAAK,mBAAmB;AACxB,aAAO,KAAK,OAAO,QAAQ,IAAI;AAAA,IACjC;AAEA,WAAO,QAAQ,gBAAgB,SAAS,UAAU,MAAM,IAAI;AAC1D,UAAI,OAAO,SAAS,YAAY;AAC9B,aAAK;AACL,eAAO;AAAA,MACT;AACA,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,CAAC;AAAA,MACV;AACA,WAAK,mBAAmB;AACxB,WAAK,WAAW,UAAU,MAAM,EAAE;AAAA,IACpC;AAEA,WAAO,QAAQ,oBAAoB,SAAS,UAAU,MAAM;AAC1D,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,CAAC;AAAA,MACV;AACA,WAAK,mBAAmB;AACxB,aAAO,KAAK,eAAe,UAAU,IAAI;AAAA,IAC3C;AAAA;AAAA;;;ACtJA;AAAA;AAAA;AAIA,QAAI,SAAS,UAAQ;AACrB,QAAII,UAAS,OAAO;AAEpB,QAAI,QAAQ,CAAC;AAEb,QAAI;AAEJ,SAAK,OAAO,QAAQ;AAClB,UAAI,CAAC,OAAO,eAAe,GAAG;AAAG;AACjC,UAAI,QAAQ,gBAAgB,QAAQ;AAAU;AAC9C,YAAM,OAAO,OAAO;AAAA,IACtB;AAEA,QAAI,QAAQ,MAAM,SAAS,CAAC;AAC5B,SAAK,OAAOA,SAAQ;AAClB,UAAI,CAACA,QAAO,eAAe,GAAG;AAAG;AACjC,UAAI,QAAQ,iBAAiB,QAAQ;AAAmB;AACxD,YAAM,OAAOA,QAAO;AAAA,IACtB;AAEA,UAAM,OAAO,YAAYA,QAAO;AAEhC,QAAI,CAAC,MAAM,QAAQ,MAAM,SAAS,WAAW,MAAM;AACjD,YAAM,OAAO,SAAU,OAAO,kBAAkB,QAAQ;AACtD,YAAI,OAAO,UAAU,UAAU;AAC7B,gBAAM,IAAI,UAAU,oEAAoE,OAAO,KAAK;AAAA,QACtG;AACA,YAAI,SAAS,OAAO,MAAM,WAAW,aAAa;AAChD,gBAAM,IAAI,UAAU,oHAAoH,OAAO,KAAK;AAAA,QACtJ;AACA,eAAOA,QAAO,OAAO,kBAAkB,MAAM;AAAA,MAC/C;AAAA,IACF;AAEA,QAAI,CAAC,MAAM,OAAO;AAChB,YAAM,QAAQ,SAAU,MAAM,MAAM,UAAU;AAC5C,YAAI,OAAO,SAAS,UAAU;AAC5B,gBAAM,IAAI,UAAU,+DAA+D,OAAO,IAAI;AAAA,QAChG;AACA,YAAI,OAAO,KAAK,QAAQ,KAAK,KAAK,KAAK;AACrC,gBAAM,IAAI,WAAW,gBAAgB,OAAO,gCAAgC;AAAA,QAC9E;AACA,YAAI,MAAMA,QAAO,IAAI;AACrB,YAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAC9B,cAAI,KAAK,CAAC;AAAA,QACZ,WAAW,OAAO,aAAa,UAAU;AACvC,cAAI,KAAK,MAAM,QAAQ;AAAA,QACzB,OAAO;AACL,cAAI,KAAK,IAAI;AAAA,QACf;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,CAAC,MAAM,kBAAkB;AAC3B,UAAI;AACF,cAAM,mBAAmB,QAAQ,QAAQ,QAAQ,EAAE;AAAA,MACrD,SAAS,GAAP;AAAA,MAGF;AAAA,IACF;AAEA,QAAI,CAAC,MAAM,WAAW;AACpB,YAAM,YAAY;AAAA,QAChB,YAAY,MAAM;AAAA,MACpB;AACA,UAAI,MAAM,kBAAkB;AAC1B,cAAM,UAAU,oBAAoB,MAAM;AAAA,MAC5C;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC5EjB;AAAA;AAAA;AAEA,QAAI,UAAU;AAEd,YAAQ,aAAa;AACrB,aAAS,kBAAkB,SAAS,SAAS;AACzC,WAAK,UAAU;AACf,WAAK,SAAS;AAAA,IAClB;AAEA,sBAAkB,UAAU,QAAQ,SAAS,KAAK;AAC9C,UAAI,KAAK,QAAQ;AACb,cAAM,UAAU;AAChB,aAAK,SAAS;AAAA,MAClB;AAEA,aAAO,KAAK,QAAQ,MAAM,GAAG;AAAA,IACjC;AAEA,sBAAkB,UAAU,MAAM,WAAW;AACzC,aAAO,KAAK,QAAQ,IAAI;AAAA,IAC5B;AAKA,YAAQ,WAAW;AACnB,aAAS,gBAAgB,SAAS,SAAS;AACvC,WAAK,UAAU;AACf,WAAK,OAAO;AACZ,WAAK,UAAU,WAAW,CAAC;AAAA,IAC/B;AAEA,oBAAgB,UAAU,QAAQ,SAAS,KAAK;AAC5C,UAAI,MAAM,KAAK,QAAQ,MAAM,GAAG;AAChC,UAAI,KAAK,QAAQ,CAAC;AACd,eAAO;AAEX,UAAI,IAAI,OAAO,SAAS;AACpB,cAAM,IAAI,MAAM,CAAC;AACjB,YAAI,OAAO,KAAK,QAAQ,aAAa;AACjC,eAAK,QAAQ,SAAS;AAAA,MAC9B;AAEA,WAAK,OAAO;AACZ,aAAO;AAAA,IACX;AAEA,oBAAgB,UAAU,MAAM,WAAW;AACvC,aAAO,KAAK,QAAQ,IAAI;AAAA,IAC5B;AAAA;AAAA;;;AClDA;AAAA;AAAA;AACA,QAAIC,UAAS,gBAAwB;AAIrC,WAAO,UAAU;AAAA,MAEb,MAAQ,EAAE,MAAM,aAAa,UAAU,KAAI;AAAA,MAC3C,OAAQ,EAAE,MAAM,aAAa,UAAU,KAAI;AAAA,MAC3C,eAAe;AAAA,MAEf,MAAQ,EAAE,MAAM,aAAa,UAAU,KAAI;AAAA,MAC3C,SAAS;AAAA,MAET,QAAQ,EAAE,MAAM,YAAY;AAAA,MAC5B,QAAQ,EAAE,MAAM,YAAY;AAAA,MAC5B,KAAQ,EAAE,MAAM,YAAY;AAAA,MAG5B,WAAW;AAAA,IACf;AAIA,aAAS,cAAc,cAAc,OAAO;AACxC,WAAK,MAAM,aAAa;AACxB,WAAK,WAAW,aAAa;AAE7B,UAAI,KAAK,QAAQ;AACb,aAAK,UAAU;AAAA,eACV,KAAK,QAAQ,SAAS;AAC3B,aAAK,MAAM;AACX,aAAK,UAAU;AAGf,YAAIA,QAAO,KAAK,gBAAgB,KAAK,EAAE,SAAS,MAAM,aAAM;AACxD,eAAK,UAAU;AACf,eAAK,qBAAqB,MAAM;AAAA,QACpC;AAAA,MACJ;AAAA,IACJ;AAEA,kBAAc,UAAU,UAAU;AAClC,kBAAc,UAAU,UAAU;AAKlC,QAAI,gBAAgB,UAAQ,kBAAkB;AAE9C,QAAI,CAAC,cAAc,UAAU;AACzB,oBAAc,UAAU,MAAM,WAAW;AAAA,MAAC;AAG9C,aAAS,gBAAgB,SAAS,OAAO;AACrC,oBAAc,KAAK,MAAM,MAAM,GAAG;AAAA,IACtC;AAEA,oBAAgB,YAAY,cAAc;AAM1C,aAAS,gBAAgB,SAAS,OAAO;AACrC,WAAK,MAAM,MAAM;AAAA,IACrB;AAEA,oBAAgB,UAAU,QAAQ,SAAS,KAAK;AAC5C,aAAOA,QAAO,KAAK,KAAK,KAAK,GAAG;AAAA,IACpC;AAEA,oBAAgB,UAAU,MAAM,WAAW;AAAA,IAC3C;AAMA,aAAS,sBAAsB,SAAS,OAAO;AAC3C,WAAK,UAAU;AAAA,IACnB;AAEA,0BAAsB,UAAU,QAAQ,SAAS,KAAK;AAClD,YAAM,KAAK,UAAU;AACrB,UAAI,gBAAgB,IAAI,SAAU,IAAI,SAAS;AAC/C,WAAK,UAAU,IAAI,MAAM,aAAa;AACtC,YAAM,IAAI,MAAM,GAAG,aAAa;AAEhC,aAAOA,QAAO,KAAK,KAAK,QAAQ;AAAA,IACpC;AAEA,0BAAsB,UAAU,MAAM,WAAW;AAC7C,aAAOA,QAAO,KAAK,KAAK,SAAS,QAAQ;AAAA,IAC7C;AAMA,aAAS,qBAAqB,SAAS,OAAO;AAAA,IAC9C;AAEA,yBAAqB,UAAU,QAAQ,SAAS,KAAK;AACjD,UAAI,MAAMA,QAAO,MAAM,IAAI,SAAS,CAAC,GAAG,SAAS;AACjD,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,YAAI,WAAW,IAAI,WAAW,CAAC;AAG/B,YAAI,WAAW;AACX,cAAI,YAAY;AAAA,iBACX,WAAW,MAAO;AACvB,cAAI,YAAY,OAAQ,aAAa;AACrC,cAAI,YAAY,OAAQ,WAAW;AAAA,QACvC,OACK;AACD,cAAI,YAAY,OAAQ,aAAa;AACrC,cAAI,YAAY,OAAS,aAAa,IAAK;AAC3C,cAAI,YAAY,OAAQ,WAAW;AAAA,QACvC;AAAA,MACJ;AACA,aAAO,IAAI,MAAM,GAAG,MAAM;AAAA,IAC9B;AAEA,yBAAqB,UAAU,MAAM,WAAW;AAAA,IAChD;AAKA,aAAS,qBAAqB,SAAS,OAAO;AAC1C,WAAK,MAAM;AACX,WAAK,YAAY;AACjB,WAAK,WAAW;AAChB,WAAK,qBAAqB,MAAM;AAAA,IACpC;AAEA,yBAAqB,UAAU,QAAQ,SAAS,KAAK;AACjD,UAAI,MAAM,KAAK,KAAK,YAAY,KAAK,WAAW,WAAW,KAAK,UAC5D,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,YAAI,UAAU,IAAI;AAClB,aAAK,UAAU,SAAU,KAAM;AAC3B,cAAI,YAAY,GAAG;AACf,mBAAO,KAAK;AACZ,wBAAY;AAAA,UAChB;AAEA,cAAI,UAAU,KAAM;AAChB,mBAAO,OAAO,aAAa,OAAO;AAAA,UACtC,WAAW,UAAU,KAAM;AACvB,kBAAM,UAAU;AAChB,wBAAY;AAAG,uBAAW;AAAA,UAC9B,WAAW,UAAU,KAAM;AACvB,kBAAM,UAAU;AAChB,wBAAY;AAAG,uBAAW;AAAA,UAC9B,OAAO;AACH,mBAAO,KAAK;AAAA,UAChB;AAAA,QACJ,OAAO;AACH,cAAI,YAAY,GAAG;AACf,kBAAO,OAAO,IAAM,UAAU;AAC9B;AAAa;AACb,gBAAI,cAAc,GAAG;AAEjB,kBAAI,aAAa,KAAK,MAAM,OAAQ,MAAM;AACtC,uBAAO,KAAK;AAAA,uBACP,aAAa,KAAK,MAAM;AAC7B,uBAAO,KAAK;AAAA;AAGZ,uBAAO,OAAO,aAAa,GAAG;AAAA,YACtC;AAAA,UACJ,OAAO;AACH,mBAAO,KAAK;AAAA,UAChB;AAAA,QACJ;AAAA,MACJ;AACA,WAAK,MAAM;AAAK,WAAK,YAAY;AAAW,WAAK,WAAW;AAC5D,aAAO;AAAA,IACX;AAEA,yBAAqB,UAAU,MAAM,WAAW;AAC5C,UAAI,MAAM;AACV,UAAI,KAAK,YAAY;AACjB,eAAO,KAAK;AAChB,aAAO;AAAA,IACX;AAAA;AAAA;;;AC3LA;AAAA;AAAA;AACA,QAAIC,UAAS,gBAAwB;AAMrC,YAAQ,UAAU;AAClB,aAAS,eAAe;AAAA,IACxB;AAEA,iBAAa,UAAU,UAAU;AACjC,iBAAa,UAAU,UAAU;AACjC,iBAAa,UAAU,WAAW;AAKlC,aAAS,iBAAiB;AAAA,IAC1B;AAEA,mBAAe,UAAU,QAAQ,SAAS,KAAK;AAC3C,UAAI,MAAMA,QAAO,KAAK,KAAK,MAAM;AACjC,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AACpC,YAAI,MAAM,IAAI;AAAI,YAAI,KAAK,IAAI,IAAE;AAAI,YAAI,IAAE,KAAK;AAAA,MACpD;AACA,aAAO;AAAA,IACX;AAEA,mBAAe,UAAU,MAAM,WAAW;AAAA,IAC1C;AAKA,aAAS,iBAAiB;AACtB,WAAK,eAAe;AAAA,IACxB;AAEA,mBAAe,UAAU,QAAQ,SAAS,KAAK;AAC3C,UAAI,IAAI,UAAU;AACd,eAAO;AAEX,UAAI,OAAOA,QAAO,MAAM,IAAI,SAAS,CAAC,GAClC,IAAI,GAAG,IAAI;AAEf,UAAI,KAAK,iBAAiB,IAAI;AAC1B,aAAK,KAAK,IAAI;AACd,aAAK,KAAK,KAAK;AACf,YAAI;AAAG,YAAI;AAAA,MACf;AAEA,aAAO,IAAI,IAAI,SAAO,GAAG,KAAK,GAAG,KAAI,GAAG;AACpC,aAAK,KAAK,IAAI,IAAE;AAChB,aAAK,IAAE,KAAK,IAAI;AAAA,MACpB;AAEA,WAAK,eAAgB,KAAK,IAAI,SAAO,IAAK,IAAI,IAAI,SAAO,KAAK;AAE9D,aAAO,KAAK,MAAM,GAAG,CAAC,EAAE,SAAS,MAAM;AAAA,IAC3C;AAEA,mBAAe,UAAU,MAAM,WAAW;AAAA,IAC1C;AAWA,YAAQ,QAAQ;AAChB,aAAS,WAAW,cAAc,OAAO;AACrC,WAAK,QAAQ;AAAA,IACjB;AAEA,eAAW,UAAU,UAAU;AAC/B,eAAW,UAAU,UAAU;AAK/B,aAAS,aAAa,SAAS,OAAO;AAClC,gBAAU,WAAW,CAAC;AACtB,UAAI,QAAQ,WAAW;AACnB,gBAAQ,SAAS;AACrB,WAAK,UAAU,MAAM,MAAM,WAAW,YAAY,OAAO;AAAA,IAC7D;AAEA,iBAAa,UAAU,QAAQ,SAAS,KAAK;AACzC,aAAO,KAAK,QAAQ,MAAM,GAAG;AAAA,IACjC;AAEA,iBAAa,UAAU,MAAM,WAAW;AACpC,aAAO,KAAK,QAAQ,IAAI;AAAA,IAC5B;AAKA,aAAS,aAAa,SAAS,OAAO;AAClC,WAAK,UAAU;AACf,WAAK,eAAe,CAAC;AACrB,WAAK,kBAAkB;AAEvB,WAAK,UAAU,WAAW,CAAC;AAC3B,WAAK,QAAQ,MAAM;AAAA,IACvB;AAEA,iBAAa,UAAU,QAAQ,SAAS,KAAK;AACzC,UAAI,CAAC,KAAK,SAAS;AAEf,aAAK,aAAa,KAAK,GAAG;AAC1B,aAAK,mBAAmB,IAAI;AAE5B,YAAI,KAAK,kBAAkB;AACvB,iBAAO;AAGX,YAAI,MAAMA,QAAO,OAAO,KAAK,YAAY,GACrC,WAAW,eAAe,KAAK,KAAK,QAAQ,eAAe;AAC/D,aAAK,UAAU,KAAK,MAAM,WAAW,UAAU,KAAK,OAAO;AAC3D,aAAK,aAAa,SAAS,KAAK,kBAAkB;AAAA,MACtD;AAEA,aAAO,KAAK,QAAQ,MAAM,GAAG;AAAA,IACjC;AAEA,iBAAa,UAAU,MAAM,WAAW;AACpC,UAAI,CAAC,KAAK,SAAS;AACf,YAAI,MAAMA,QAAO,OAAO,KAAK,YAAY,GACrC,WAAW,eAAe,KAAK,KAAK,QAAQ,eAAe;AAC/D,aAAK,UAAU,KAAK,MAAM,WAAW,UAAU,KAAK,OAAO;AAE3D,YAAI,MAAM,KAAK,QAAQ,MAAM,GAAG,GAC5B,QAAQ,KAAK,QAAQ,IAAI;AAE7B,eAAO,QAAS,MAAM,QAAS;AAAA,MACnC;AACA,aAAO,KAAK,QAAQ,IAAI;AAAA,IAC5B;AAEA,aAAS,eAAe,KAAK,iBAAiB;AAC1C,UAAI,MAAM,mBAAmB;AAE7B,UAAI,IAAI,UAAU,GAAG;AAEjB,YAAI,IAAI,MAAM,OAAQ,IAAI,MAAM;AAC5B,gBAAM;AAAA,iBACD,IAAI,MAAM,OAAQ,IAAI,MAAM;AACjC,gBAAM;AAAA,aACL;AAID,cAAI,eAAe,GAAG,eAAe,GACjC,OAAO,KAAK,IAAI,IAAI,SAAU,IAAI,SAAS,GAAI,EAAE;AAErD,mBAAS,IAAI,GAAG,IAAI,MAAM,KAAK,GAAG;AAC9B,gBAAI,IAAI,OAAO,KAAK,IAAI,IAAE,OAAO;AAAG;AACpC,gBAAI,IAAI,OAAO,KAAK,IAAI,IAAE,OAAO;AAAG;AAAA,UACxC;AAEA,cAAI,eAAe;AACf,kBAAM;AAAA,mBACD,eAAe;AACpB,kBAAM;AAAA,QACd;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA;AAAA;;;AC9KA;AAAA;AAAA;AACA,QAAIC,UAAS,gBAAwB;AAKrC,YAAQ,OAAO;AACf,YAAQ,gBAAgB;AACxB,aAAS,UAAU,cAAc,OAAO;AACpC,WAAK,QAAQ;AAAA,IACjB;AAEA,cAAU,UAAU,UAAU;AAC9B,cAAU,UAAU,UAAU;AAC9B,cAAU,UAAU,WAAW;AAK/B,QAAI,iBAAiB;AAErB,aAAS,YAAY,SAAS,OAAO;AACjC,WAAK,QAAQ,MAAM;AAAA,IACvB;AAEA,gBAAY,UAAU,QAAQ,SAAS,KAAK;AAGxC,aAAOA,QAAO,KAAK,IAAI,QAAQ,gBAAgB,SAAS,OAAO;AAC3D,eAAO,OAAO,UAAU,MAAM,KAC1B,KAAK,MAAM,OAAO,OAAO,UAAU,EAAE,SAAS,QAAQ,EAAE,QAAQ,OAAO,EAAE,KACvE;AAAA,MACV,EAAE,KAAK,IAAI,CAAC,CAAC;AAAA,IACjB;AAEA,gBAAY,UAAU,MAAM,WAAW;AAAA,IACvC;AAKA,aAAS,YAAY,SAAS,OAAO;AACjC,WAAK,QAAQ,MAAM;AACnB,WAAK,WAAW;AAChB,WAAK,cAAc;AAAA,IACvB;AAEA,QAAI,cAAc;AAClB,QAAI,cAAc,CAAC;AACnB,SAAS,IAAI,GAAG,IAAI,KAAK;AACrB,kBAAY,KAAK,YAAY,KAAK,OAAO,aAAa,CAAC,CAAC;AADnD;AAGT,QAAI,WAAW,IAAI,WAAW,CAAC;AAA/B,QACI,YAAY,IAAI,WAAW,CAAC;AADhC,QAEI,UAAU,IAAI,WAAW,CAAC;AAE9B,gBAAY,UAAU,QAAQ,SAAS,KAAK;AACxC,UAAI,MAAM,IAAI,QAAQ,GAClB,WAAW,KAAK,UAChB,cAAc,KAAK;AAIvB,eAASC,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACjC,YAAI,CAAC,UAAU;AAEX,cAAI,IAAIA,OAAM,UAAU;AACpB,mBAAO,KAAK,MAAM,OAAO,IAAI,MAAM,OAAOA,EAAC,GAAG,OAAO;AACrD,oBAAQA,KAAE;AACV,uBAAW;AAAA,UACf;AAAA,QACJ,OAAO;AACH,cAAI,CAAC,YAAY,IAAIA,MAAK;AACtB,gBAAIA,MAAK,SAAS,IAAIA,OAAM,WAAW;AACnC,qBAAO;AAAA,YACX,OAAO;AACH,kBAAI,SAAS,cAAc,IAAI,MAAM,OAAOA,EAAC,EAAE,SAAS;AACxD,qBAAO,KAAK,MAAM,OAAOD,QAAO,KAAK,QAAQ,QAAQ,GAAG,UAAU;AAAA,YACtE;AAEA,gBAAI,IAAIC,OAAM;AACV,cAAAA;AAEJ,oBAAQA,KAAE;AACV,uBAAW;AACX,0BAAc;AAAA,UAClB;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,CAAC,UAAU;AACX,eAAO,KAAK,MAAM,OAAO,IAAI,MAAM,KAAK,GAAG,OAAO;AAAA,MACtD,OAAO;AACH,YAAI,SAAS,cAAc,IAAI,MAAM,KAAK,EAAE,SAAS;AAErD,YAAI,eAAe,OAAO,SAAU,OAAO,SAAS;AACpD,sBAAc,OAAO,MAAM,YAAY;AACvC,iBAAS,OAAO,MAAM,GAAG,YAAY;AAErC,eAAO,KAAK,MAAM,OAAOD,QAAO,KAAK,QAAQ,QAAQ,GAAG,UAAU;AAAA,MACtE;AAEA,WAAK,WAAW;AAChB,WAAK,cAAc;AAEnB,aAAO;AAAA,IACX;AAEA,gBAAY,UAAU,MAAM,WAAW;AACnC,UAAI,MAAM;AACV,UAAI,KAAK,YAAY,KAAK,YAAY,SAAS;AAC3C,cAAM,KAAK,MAAM,OAAOA,QAAO,KAAK,KAAK,aAAa,QAAQ,GAAG,UAAU;AAE/E,WAAK,WAAW;AAChB,WAAK,cAAc;AACnB,aAAO;AAAA,IACX;AAeA,YAAQ,WAAW;AACnB,aAAS,cAAc,cAAc,OAAO;AACxC,WAAK,QAAQ;AAAA,IACjB;AAEA,kBAAc,UAAU,UAAU;AAClC,kBAAc,UAAU,UAAU;AAClC,kBAAc,UAAU,WAAW;AAKnC,aAAS,gBAAgB,SAAS,OAAO;AACrC,WAAK,QAAQ,MAAM;AACnB,WAAK,WAAW;AAChB,WAAK,cAAcA,QAAO,MAAM,CAAC;AACjC,WAAK,iBAAiB;AAAA,IAC1B;AAEA,oBAAgB,UAAU,QAAQ,SAAS,KAAK;AAC5C,UAAI,WAAW,KAAK,UAChB,cAAc,KAAK,aACnB,iBAAiB,KAAK,gBACtB,MAAMA,QAAO,MAAM,IAAI,SAAO,IAAI,EAAE,GAAG,SAAS;AAEpD,eAASC,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACjC,YAAI,QAAQ,IAAI,WAAWA,EAAC;AAC5B,YAAI,MAAQ,SAAS,SAAS,KAAM;AAChC,cAAI,UAAU;AACV,gBAAI,iBAAiB,GAAG;AACpB,wBAAU,IAAI,MAAM,YAAY,MAAM,GAAG,cAAc,EAAE,SAAS,QAAQ,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE,GAAG,MAAM;AAC1H,+BAAiB;AAAA,YACrB;AAEA,gBAAI,YAAY;AAChB,uBAAW;AAAA,UACf;AAEA,cAAI,CAAC,UAAU;AACX,gBAAI,YAAY;AAEhB,gBAAI,UAAU;AACV,kBAAI,YAAY;AAAA,UACxB;AAAA,QAEJ,OAAO;AACH,cAAI,CAAC,UAAU;AACX,gBAAI,YAAY;AAChB,uBAAW;AAAA,UACf;AACA,cAAI,UAAU;AACV,wBAAY,oBAAoB,SAAS;AACzC,wBAAY,oBAAoB,QAAQ;AAExC,gBAAI,kBAAkB,YAAY,QAAQ;AACtC,wBAAU,IAAI,MAAM,YAAY,SAAS,QAAQ,EAAE,QAAQ,OAAO,GAAG,GAAG,MAAM;AAC9E,+BAAiB;AAAA,YACrB;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAEA,WAAK,WAAW;AAChB,WAAK,iBAAiB;AAEtB,aAAO,IAAI,MAAM,GAAG,MAAM;AAAA,IAC9B;AAEA,oBAAgB,UAAU,MAAM,WAAW;AACvC,UAAI,MAAMD,QAAO,MAAM,EAAE,GAAG,SAAS;AACrC,UAAI,KAAK,UAAU;AACf,YAAI,KAAK,iBAAiB,GAAG;AACzB,oBAAU,IAAI,MAAM,KAAK,YAAY,MAAM,GAAG,KAAK,cAAc,EAAE,SAAS,QAAQ,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE,GAAG,MAAM;AACpI,eAAK,iBAAiB;AAAA,QAC1B;AAEA,YAAI,YAAY;AAChB,aAAK,WAAW;AAAA,MACpB;AAEA,aAAO,IAAI,MAAM,GAAG,MAAM;AAAA,IAC9B;AAKA,aAAS,gBAAgB,SAAS,OAAO;AACrC,WAAK,QAAQ,MAAM;AACnB,WAAK,WAAW;AAChB,WAAK,cAAc;AAAA,IACvB;AAEA,QAAI,kBAAkB,YAAY,MAAM;AACxC,oBAAgB,IAAI,WAAW,CAAC,KAAK;AAErC,oBAAgB,UAAU,QAAQ,SAAS,KAAK;AAC5C,UAAI,MAAM,IAAI,QAAQ,GAClB,WAAW,KAAK,UAChB,cAAc,KAAK;AAKvB,eAASC,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACjC,YAAI,CAAC,UAAU;AAEX,cAAI,IAAIA,OAAM,SAAS;AACnB,mBAAO,KAAK,MAAM,OAAO,IAAI,MAAM,OAAOA,EAAC,GAAG,OAAO;AACrD,oBAAQA,KAAE;AACV,uBAAW;AAAA,UACf;AAAA,QACJ,OAAO;AACH,cAAI,CAAC,gBAAgB,IAAIA,MAAK;AAC1B,gBAAIA,MAAK,SAAS,IAAIA,OAAM,WAAW;AACnC,qBAAO;AAAA,YACX,OAAO;AACH,kBAAI,SAAS,cAAc,IAAI,MAAM,OAAOA,EAAC,EAAE,SAAS,EAAE,QAAQ,MAAM,GAAG;AAC3E,qBAAO,KAAK,MAAM,OAAOD,QAAO,KAAK,QAAQ,QAAQ,GAAG,UAAU;AAAA,YACtE;AAEA,gBAAI,IAAIC,OAAM;AACV,cAAAA;AAEJ,oBAAQA,KAAE;AACV,uBAAW;AACX,0BAAc;AAAA,UAClB;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,CAAC,UAAU;AACX,eAAO,KAAK,MAAM,OAAO,IAAI,MAAM,KAAK,GAAG,OAAO;AAAA,MACtD,OAAO;AACH,YAAI,SAAS,cAAc,IAAI,MAAM,KAAK,EAAE,SAAS,EAAE,QAAQ,MAAM,GAAG;AAExE,YAAI,eAAe,OAAO,SAAU,OAAO,SAAS;AACpD,sBAAc,OAAO,MAAM,YAAY;AACvC,iBAAS,OAAO,MAAM,GAAG,YAAY;AAErC,eAAO,KAAK,MAAM,OAAOD,QAAO,KAAK,QAAQ,QAAQ,GAAG,UAAU;AAAA,MACtE;AAEA,WAAK,WAAW;AAChB,WAAK,cAAc;AAEnB,aAAO;AAAA,IACX;AAEA,oBAAgB,UAAU,MAAM,WAAW;AACvC,UAAI,MAAM;AACV,UAAI,KAAK,YAAY,KAAK,YAAY,SAAS;AAC3C,cAAM,KAAK,MAAM,OAAOA,QAAO,KAAK,KAAK,aAAa,QAAQ,GAAG,UAAU;AAE/E,WAAK,WAAW;AAChB,WAAK,cAAc;AACnB,aAAO;AAAA,IACX;AAAA;AAAA;;;AC/RA;AAAA;AAAA;AACA,QAAIE,UAAS,gBAAwB;AAKrC,YAAQ,QAAQ;AAChB,aAAS,UAAU,cAAc,OAAO;AACpC,UAAI,CAAC;AACD,cAAM,IAAI,MAAM,wCAAwC;AAG5D,UAAI,CAAC,aAAa,SAAU,aAAa,MAAM,WAAW,OAAO,aAAa,MAAM,WAAW;AAC3F,cAAM,IAAI,MAAM,eAAa,aAAa,OAAK,qDAAqD;AAExG,UAAI,aAAa,MAAM,WAAW,KAAK;AACnC,YAAI,cAAc;AAClB,iBAAS,IAAI,GAAG,IAAI,KAAK;AACrB,yBAAe,OAAO,aAAa,CAAC;AACxC,qBAAa,QAAQ,cAAc,aAAa;AAAA,MACpD;AAEA,WAAK,YAAYA,QAAO,KAAK,aAAa,OAAO,MAAM;AAGvD,UAAI,YAAYA,QAAO,MAAM,OAAO,MAAM,sBAAsB,WAAW,CAAC,CAAC;AAE7E,eAAS,IAAI,GAAG,IAAI,aAAa,MAAM,QAAQ;AAC3C,kBAAU,aAAa,MAAM,WAAW,CAAC,KAAK;AAElD,WAAK,YAAY;AAAA,IACrB;AAEA,cAAU,UAAU,UAAU;AAC9B,cAAU,UAAU,UAAU;AAG9B,aAAS,YAAY,SAAS,OAAO;AACjC,WAAK,YAAY,MAAM;AAAA,IAC3B;AAEA,gBAAY,UAAU,QAAQ,SAAS,KAAK;AACxC,UAAI,MAAMA,QAAO,MAAM,IAAI,MAAM;AACjC,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC5B,YAAI,KAAK,KAAK,UAAU,IAAI,WAAW,CAAC;AAE5C,aAAO;AAAA,IACX;AAEA,gBAAY,UAAU,MAAM,WAAW;AAAA,IACvC;AAGA,aAAS,YAAY,SAAS,OAAO;AACjC,WAAK,YAAY,MAAM;AAAA,IAC3B;AAEA,gBAAY,UAAU,QAAQ,SAAS,KAAK;AAExC,UAAI,YAAY,KAAK;AACrB,UAAI,SAASA,QAAO,MAAM,IAAI,SAAO,CAAC;AACtC,UAAI,OAAO,GAAG,OAAO;AACrB,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,eAAO,IAAI,KAAG;AAAG,eAAO,IAAE;AAC1B,eAAO,QAAQ,UAAU;AACzB,eAAO,OAAK,KAAK,UAAU,OAAK;AAAA,MACpC;AACA,aAAO,OAAO,SAAS,MAAM;AAAA,IACjC;AAEA,gBAAY,UAAU,MAAM,WAAW;AAAA,IACvC;AAAA;AAAA;;;ACvEA;AAAA;AAAA;AAIA,WAAO,UAAU;AAAA,MAEb,SAAS;AAAA,MACT,eAAe;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,MACb;AAAA,MAEA,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,QACL,QAAQ;AAAA,QACR,SAAS;AAAA,MACb;AAAA,MAEA,OAAO;AAAA,QACH,QAAQ;AAAA,QACR,SAAS;AAAA,MACb;AAAA,MAGA,aAAa;AAAA,MACb,WAAW;AAAA,MACX,WAAW;AAAA,MACX,eAAe;AAAA,MACf,eAAe;AAAA,MACf,WAAW;AAAA,MACX,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,MAAM;AAAA,MAEN,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MAEX,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,MACf,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,MACpB,mBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,eAAe;AAAA,MACf,eAAe;AAAA,MAEf,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MAEP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MAEZ,SAAS;AAAA,MACT,UAAU;AAAA,MAEV,YAAY;AAAA,MAEZ,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MAEX,SAAU;AAAA,MACV,UAAW;AAAA,MACX,WAAY;AAAA,MACZ,WAAY;AAAA,MAEZ,UAAU;AAAA,MACV,WAAW;AAAA,MAEX,WAAW;AAAA,MACX,YAAY;AAAA,MAEZ,QAAQ;AAAA,MACR,SAAS;AAAA,MAET,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,MAEb,WAAW;AAAA,MACX,eAAe;AAAA,MACf,eAAe;AAAA,MAEf,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MAET,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB,uBAAuB;AAAA,MACvB,YAAY;AAAA,MACZ,sBAAsB;AAAA,MACtB,QAAQ;AAAA,MAER,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MACX,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA,MAEd,WAAW;AAAA,MACX,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,MAEX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,MAEX,gBAAgB;AAAA,MAEhB,YAAY;AAAA,MACZ,aAAa;AAAA,MAEb,YAAY;AAAA,MACZ,MAAM;AAAA,MAEN,qBAAqB;AAAA,MACrB,kBAAkB;AAAA,MAClB,MAAM;AAAA,MAEN,cAAc;AAAA,MACd,MAAM;AAAA,MACN,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MAEX,OAAO;AAAA,MACP,eAAe;AAAA,IACnB;AAAA;AAAA;;;AC5KA;AAAA;AAAA;AAGA,WAAO,UAAU;AAAA,MACf,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,cAAc;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,SAAS;AAAA,MACT,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,MACX,aAAa;AAAA,MACb,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,eAAe;AAAA,QACb,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,cAAc;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,cAAc;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,cAAc;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,cAAc;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,mBAAmB;AAAA,QACjB,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,cAAc;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;;;AClcA;AAAA;AAAA;AACA,QAAIC,UAAS,gBAAwB;AAMrC,YAAQ,QAAQ;AAEhB,QAAI,aAAa;AAAjB,QACI,eAAe;AADnB,QAEI,YAAa;AAFjB,QAGI,aAAa;AAHjB,QAII,kBAAkB,IAAI,MAAM,GAAK;AAJrC,QAKI,WAAW;AAEf,SAAS,IAAI,GAAG,IAAI,KAAO;AACvB,sBAAgB,KAAK;AADhB;AAKT,aAAS,UAAU,cAAc,OAAO;AACpC,WAAK,eAAe,aAAa;AACjC,UAAI,CAAC;AACD,cAAM,IAAI,MAAM,wCAAwC;AAC5D,UAAI,CAAC,aAAa;AACd,cAAM,IAAI,MAAM,eAAe,KAAK,eAAe,gBAAgB;AAGvE,UAAI,eAAe,aAAa,MAAM;AAYtC,WAAK,eAAe,CAAC;AACrB,WAAK,aAAa,KAAK,gBAAgB,MAAM,CAAC;AAG9C,WAAK,iBAAiB,CAAC;AAGvB,eAASC,KAAI,GAAGA,KAAI,aAAa,QAAQA;AACrC,aAAK,gBAAgB,aAAaA,GAAE;AAExC,WAAK,qBAAqB,MAAM;AAUhC,WAAK,cAAc,CAAC;AAMpB,WAAK,iBAAiB,CAAC;AAGvB,UAAI,kBAAkB,CAAC;AACvB,UAAI,aAAa;AACb,iBAASA,KAAI,GAAGA,KAAI,aAAa,eAAe,QAAQA,MAAK;AACzD,cAAI,MAAM,aAAa,eAAeA;AACtC,cAAI,OAAO,QAAQ;AACf,4BAAgB,OAAO;AAAA;AAEvB,qBAAS,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI;AAChC,8BAAgB,KAAK;AAAA,QACjC;AAGJ,WAAK,iBAAiB,GAAG,GAAG,eAAe;AAG3C,UAAI,aAAa,WAAW;AACxB,iBAAS,SAAS,aAAa;AAC3B,cAAI,OAAO,UAAU,eAAe,KAAK,aAAa,WAAW,KAAK;AAClE,iBAAK,eAAe,MAAM,WAAW,CAAC,GAAG,aAAa,UAAU,MAAM;AAAA,MAClF;AAEA,WAAK,YAAa,KAAK,YAAY,GAAG,MAAM,sBAAsB,WAAW,CAAC;AAC9E,UAAI,KAAK,cAAc;AAAY,aAAK,YAAY,KAAK,YAAY,GAAG;AACxE,UAAI,KAAK,cAAc;AAAY,aAAK,YAAY,IAAI,WAAW,CAAC;AAIpE,UAAI,OAAO,aAAa,YAAY,YAAY;AAC5C,aAAK,UAAU,aAAa,QAAQ;AAGpC,YAAI,mBAAmB,KAAK,aAAa;AACzC,YAAI,gBAAgB,KAAK,aAAa,oBAAoB,gBAAgB,MAAM,CAAC;AAEjF,YAAI,oBAAoB,KAAK,aAAa;AAC1C,YAAI,iBAAiB,KAAK,aAAa,qBAAqB,gBAAgB,MAAM,CAAC;AAEnF,iBAASA,KAAI,KAAMA,MAAK,KAAMA,MAAK;AAC/B,cAAI,oBAAoB,aAAa,KAAK,aAAa,GAAGA;AAC1D,cAAI,iBAAiB,KAAK,aAAa;AACvC,mBAAS,IAAI,IAAM,KAAK,IAAM;AAC1B,2BAAe,KAAK,aAAa;AAAA,QACzC;AACA,iBAASA,KAAI,KAAMA,MAAK,KAAMA;AAC1B,wBAAcA,MAAK,aAAa;AACpC,iBAASA,KAAI,IAAMA,MAAK,IAAMA;AAC1B,yBAAeA,MAAK;AAAA,MAC5B;AAAA,IACJ;AAEA,cAAU,UAAU,UAAU;AAC9B,cAAU,UAAU,UAAU;AAG9B,cAAU,UAAU,qBAAqB,SAAS,MAAM;AACpD,UAAI,QAAQ,CAAC;AACb,aAAO,OAAO,GAAG,SAAS;AACtB,cAAM,KAAK,OAAO,GAAI;AAC1B,UAAI,MAAM,UAAU;AAChB,cAAM,KAAK,CAAC;AAEhB,UAAI,OAAO,KAAK,aAAa;AAC7B,eAASA,KAAI,MAAM,SAAO,GAAGA,KAAI,GAAGA,MAAK;AACrC,YAAI,MAAM,KAAK,MAAMA;AAErB,YAAI,OAAO,YAAY;AACnB,eAAK,MAAMA,OAAM,aAAa,KAAK,aAAa;AAChD,eAAK,aAAa,KAAK,OAAO,gBAAgB,MAAM,CAAC,CAAC;AAAA,QAC1D,WACS,OAAO,YAAY;AACxB,iBAAO,KAAK,aAAa,aAAa;AAAA,QAC1C;AAEI,gBAAM,IAAI,MAAM,uBAAuB,KAAK,eAAe,aAAa,KAAK,SAAS,EAAE,CAAC;AAAA,MACjG;AACA,aAAO;AAAA,IACX;AAGA,cAAU,UAAU,kBAAkB,SAAS,OAAO;AAElD,UAAI,UAAU,SAAS,MAAM,IAAI,EAAE;AAGnC,UAAI,aAAa,KAAK,mBAAmB,OAAO;AAChD,gBAAU,UAAU;AAGpB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,YAAI,OAAO,MAAM;AACjB,YAAI,OAAO,SAAS,UAAU;AAC1B,mBAAS,IAAI,GAAG,IAAI,KAAK,UAAS;AAC9B,gBAAI,OAAO,KAAK,WAAW,GAAG;AAC9B,gBAAI,SAAU,QAAQ,OAAO,OAAQ;AACjC,kBAAI,YAAY,KAAK,WAAW,GAAG;AACnC,kBAAI,SAAU,aAAa,YAAY;AACnC,2BAAW,aAAa,SAAW,OAAO,SAAU,QAAS,YAAY;AAAA;AAEzE,sBAAM,IAAI,MAAM,iCAAkC,KAAK,eAAe,eAAe,MAAM,EAAE;AAAA,YACrG,WACS,OAAS,QAAQ,QAAQ,MAAQ;AACtC,kBAAI,MAAM,OAAQ,OAAO;AACzB,kBAAI,MAAM,CAAC;AACX,uBAAS,IAAI,GAAG,IAAI,KAAK;AACrB,oBAAI,KAAK,KAAK,WAAW,GAAG,CAAC;AAEjC,yBAAW,aAAa,YAAY,KAAK,eAAe;AACxD,mBAAK,eAAe,KAAK,GAAG;AAAA,YAChC;AAEI,yBAAW,aAAa;AAAA,UAChC;AAAA,QACJ,WACS,OAAO,SAAS,UAAU;AAC/B,cAAI,WAAW,WAAW,UAAU,KAAK;AACzC,mBAAS,IAAI,GAAG,IAAI,MAAM;AACtB,uBAAW,aAAa;AAAA,QAChC;AAEI,gBAAM,IAAI,MAAM,qBAAqB,OAAO,OAAO,gBAAiB,KAAK,eAAe,eAAe,MAAM,EAAE;AAAA,MACvH;AACA,UAAI,UAAU;AACV,cAAM,IAAI,MAAM,wBAAyB,KAAK,eAAe,cAAc,MAAM,KAAK,eAAe,OAAO;AAAA,IACpH;AAGA,cAAU,UAAU,mBAAmB,SAAS,OAAO;AACnD,UAAI,OAAO,SAAS;AACpB,UAAI,KAAK,YAAY,UAAU;AAC3B,aAAK,YAAY,QAAQ,gBAAgB,MAAM,CAAC;AACpD,aAAO,KAAK,YAAY;AAAA,IAC5B;AAEA,cAAU,UAAU,iBAAiB,SAAS,OAAO,UAAU;AAC3D,UAAI,SAAS,KAAK,iBAAiB,KAAK;AACxC,UAAI,MAAM,QAAQ;AAClB,UAAI,OAAO,QAAQ;AACf,aAAK,eAAe,YAAU,OAAO,MAAM,YAAY;AAAA,eAClD,OAAO,QAAQ;AACpB,eAAO,OAAO;AAAA,IACtB;AAEA,cAAU,UAAU,qBAAqB,SAAS,KAAK,UAAU;AAG7D,UAAI,QAAQ,IAAI;AAChB,UAAI,SAAS,KAAK,iBAAiB,KAAK;AACxC,UAAI,MAAM,QAAQ;AAElB,UAAI;AACJ,UAAI,OAAO,QAAQ,WAAW;AAE1B,eAAO,KAAK,eAAe,YAAU,OAAO;AAAA,MAChD,OACK;AAED,eAAO,CAAC;AACR,YAAI,OAAO,SAAS;AAAY,eAAK,YAAY,OAAO;AACxD,eAAO,OAAO,YAAY,KAAK,eAAe;AAC9C,aAAK,eAAe,KAAK,IAAI;AAAA,MACjC;AAGA,eAAS,IAAI,GAAG,IAAI,IAAI,SAAO,GAAG,KAAK;AACnC,YAAI,SAAS,KAAK;AAClB,YAAI,OAAO,WAAW;AAClB,iBAAO;AAAA,aACN;AACD,iBAAO,KAAK,SAAS,CAAC;AACtB,cAAI,WAAW;AACX,iBAAK,YAAY;AAAA,QACzB;AAAA,MACJ;AAGA,cAAQ,IAAI,IAAI,SAAO;AACvB,WAAK,SAAS;AAAA,IAClB;AAEA,cAAU,UAAU,mBAAmB,SAAS,SAAS,QAAQ,iBAAiB;AAC9E,UAAI,OAAO,KAAK,aAAa;AAC7B,eAASA,KAAI,GAAGA,KAAI,KAAOA,MAAK;AAC5B,YAAI,QAAQ,KAAKA;AACjB,YAAI,SAAS,SAASA;AACtB,YAAI,gBAAgB;AAChB;AAEJ,YAAI,SAAS;AACT,eAAK,eAAe,OAAO,MAAM;AAAA,iBAC5B,SAAS;AACd,eAAK,iBAAiB,aAAa,OAAO,UAAU,GAAG,eAAe;AAAA,iBACjE,SAAS;AACd,eAAK,mBAAmB,KAAK,eAAe,YAAY,QAAQ,MAAM;AAAA,MAC9E;AAAA,IACJ;AAMA,aAAS,YAAY,SAAS,OAAO;AAEjC,WAAK,gBAAgB;AACrB,WAAK,SAAS;AAGd,WAAK,cAAc,MAAM;AACzB,WAAK,iBAAiB,MAAM;AAC5B,WAAK,wBAAwB,MAAM;AACnC,WAAK,UAAU,MAAM;AAAA,IACzB;AAEA,gBAAY,UAAU,QAAQ,SAAS,KAAK;AACxC,UAAI,SAASD,QAAO,MAAM,IAAI,UAAU,KAAK,UAAU,IAAI,EAAE,GACzD,gBAAgB,KAAK,eACrB,SAAS,KAAK,QAAQ,WAAW,IACjCC,KAAI,GAAG,IAAI;AAEf,aAAO,MAAM;AAET,YAAI,aAAa,IAAI;AACjB,cAAIA,MAAK,IAAI;AAAQ;AACrB,cAAI,QAAQ,IAAI,WAAWA,IAAG;AAAA,QAClC,OACK;AACD,cAAI,QAAQ;AACZ,qBAAW;AAAA,QACf;AAGA,YAAI,SAAU,SAAS,QAAQ,OAAQ;AACnC,cAAI,QAAQ,OAAQ;AAChB,gBAAI,kBAAkB,IAAI;AACtB,8BAAgB;AAChB;AAAA,YACJ,OAAO;AACH,8BAAgB;AAEhB,sBAAQ;AAAA,YACZ;AAAA,UACJ,OAAO;AACH,gBAAI,kBAAkB,IAAI;AACtB,sBAAQ,SAAW,gBAAgB,SAAU,QAAS,QAAQ;AAC9D,8BAAgB;AAAA,YACpB,OAAO;AAEH,sBAAQ;AAAA,YACZ;AAAA,UAEJ;AAAA,QACJ,WACS,kBAAkB,IAAI;AAE3B,qBAAW;AAAO,kBAAQ;AAC1B,0BAAgB;AAAA,QACpB;AAGA,YAAI,WAAW;AACf,YAAI,WAAW,UAAa,SAAS,YAAY;AAC7C,cAAI,UAAU,OAAO;AACrB,cAAI,OAAO,YAAY,UAAU;AAC7B,qBAAS;AACT;AAAA,UAEJ,WAAW,OAAO,WAAW,UAAU;AACnC,uBAAW;AAAA,UAEf,WAAW,WAAW,QAAW;AAG7B,sBAAU,OAAO;AACjB,gBAAI,YAAY,QAAW;AACvB,yBAAW;AACX,yBAAW;AAAA,YAEf,OAAO;AAAA,YAKP;AAAA,UACJ;AACA,mBAAS;AAAA,QACb,WACS,SAAS,GAAG;AACjB,cAAI,WAAW,KAAK,YAAY,SAAS;AACzC,cAAI,aAAa;AACb,uBAAW,SAAS,QAAQ;AAEhC,cAAI,YAAY,WAAW;AACvB,qBAAS,KAAK,eAAe,YAAU;AACvC;AAAA,UACJ;AAEA,cAAI,YAAY,cAAc,KAAK,SAAS;AAExC,gBAAI,MAAM,QAAQ,KAAK,QAAQ,QAAQ,KAAK;AAC5C,gBAAI,OAAO,IAAI;AACX,kBAAI,WAAW,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACxE,qBAAO,OAAO,MAAO,KAAK,MAAM,WAAW,KAAK;AAAG,yBAAW,WAAW;AACzE,qBAAO,OAAO,KAAO,KAAK,MAAM,WAAW,IAAI;AAAG,yBAAW,WAAW;AACxE,qBAAO,OAAO,MAAO,KAAK,MAAM,WAAW,EAAE;AAAG,yBAAW,WAAW;AACtE,qBAAO,OAAO,KAAO;AACrB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAGA,YAAI,aAAa;AACb,qBAAW,KAAK;AAEpB,YAAI,WAAW,KAAO;AAClB,iBAAO,OAAO;AAAA,QAClB,WACS,WAAW,OAAS;AACzB,iBAAO,OAAO,YAAY;AAC1B,iBAAO,OAAO,WAAW;AAAA,QAC7B,OACK;AACD,iBAAO,OAAO,YAAY;AAC1B,iBAAO,OAAQ,YAAY,IAAK;AAChC,iBAAO,OAAO,WAAW;AAAA,QAC7B;AAAA,MACJ;AAEA,WAAK,SAAS;AACd,WAAK,gBAAgB;AACrB,aAAO,OAAO,MAAM,GAAG,CAAC;AAAA,IAC5B;AAEA,gBAAY,UAAU,MAAM,WAAW;AACnC,UAAI,KAAK,kBAAkB,MAAM,KAAK,WAAW;AAC7C;AAEJ,UAAI,SAASD,QAAO,MAAM,EAAE,GAAG,IAAI;AAEnC,UAAI,KAAK,QAAQ;AACb,YAAI,WAAW,KAAK,OAAO;AAC3B,YAAI,aAAa,QAAW;AACxB,cAAI,WAAW,KAAO;AAClB,mBAAO,OAAO;AAAA,UAClB,OACK;AACD,mBAAO,OAAO,YAAY;AAC1B,mBAAO,OAAO,WAAW;AAAA,UAC7B;AAAA,QACJ,OAAO;AAAA,QAEP;AACA,aAAK,SAAS;AAAA,MAClB;AAEA,UAAI,KAAK,kBAAkB,IAAI;AAE3B,eAAO,OAAO,KAAK;AACnB,aAAK,gBAAgB;AAAA,MACzB;AAEA,aAAO,OAAO,MAAM,GAAG,CAAC;AAAA,IAC5B;AAGA,gBAAY,UAAU,UAAU;AAKhC,aAAS,YAAY,SAAS,OAAO;AAEjC,WAAK,UAAU;AACf,WAAK,UAAUA,QAAO,MAAM,CAAC;AAG7B,WAAK,eAAe,MAAM;AAC1B,WAAK,iBAAiB,MAAM;AAC5B,WAAK,qBAAqB,MAAM;AAChC,WAAK,UAAU,MAAM;AAAA,IACzB;AAEA,gBAAY,UAAU,QAAQ,SAAS,KAAK;AACxC,UAAI,SAASA,QAAO,MAAM,IAAI,SAAO,CAAC,GAClC,UAAU,KAAK,SACf,UAAU,KAAK,SAAS,gBAAgB,KAAK,QAAQ,QACrD,WAAW,CAAC,KAAK,QAAQ,QACzB;AAEJ,UAAI,gBAAgB;AAChB,kBAAUA,QAAO,OAAO,CAAC,SAAS,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AAEvD,eAASC,KAAI,GAAG,IAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACxC,YAAI,UAAWA,MAAK,IAAK,IAAIA,MAAK,QAAQA,KAAI;AAG9C,YAAI,QAAQ,KAAK,aAAa,SAAS;AAEvC,YAAI,SAAS,GAAG;AAAA,QAEhB,WACS,UAAU,YAAY;AAG3B,UAAAA,KAAI;AACJ,kBAAQ,KAAK,mBAAmB,WAAW,CAAC;AAAA,QAChD,WACS,UAAU,cAAc;AAC7B,cAAI,SAAU,YAAY,IAAK,IAAI,MAAM,UAAUA,KAAE,CAAC,IAAI,QAAQ,MAAM,WAAW,eAAeA,KAAE,IAAI,aAAa;AACrH,cAAI,OAAO,OAAO,KAAG,OAAM,SAAS,OAAO,KAAG,MAAM,QAAQ,OAAO,KAAG,OAAM,MAAM,OAAO,KAAG;AAC5F,cAAI,MAAM,QAAQ,KAAK,QAAQ,SAAS,GAAG;AAC3C,kBAAQ,KAAK,QAAQ,OAAO,OAAO,MAAM,KAAK,QAAQ,QAAQ;AAAA,QAClE,WACS,SAAS,YAAY;AAC1B,oBAAU,aAAa;AACvB;AAAA,QACJ,WACS,SAAS,WAAW;AACzB,cAAI,MAAM,KAAK,eAAe,YAAY;AAC1C,mBAAS,IAAI,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK;AACrC,oBAAQ,IAAI;AACZ,mBAAO,OAAO,QAAQ;AACtB,mBAAO,OAAO,SAAS;AAAA,UAC3B;AACA,kBAAQ,IAAI,IAAI,SAAO;AAAA,QAC3B;AAEI,gBAAM,IAAI,MAAM,6DAA6D,QAAQ,SAAS,UAAU,MAAM,OAAO;AAGzH,YAAI,QAAQ,OAAQ;AAChB,mBAAS;AACT,cAAI,YAAY,QAAS,KAAK,MAAM,QAAQ,IAAK;AACjD,iBAAO,OAAO,YAAY;AAC1B,iBAAO,OAAO,aAAa;AAE3B,kBAAQ,QAAS,QAAQ;AAAA,QAC7B;AACA,eAAO,OAAO,QAAQ;AACtB,eAAO,OAAO,SAAS;AAGvB,kBAAU;AAAG,mBAAWA,KAAE;AAAA,MAC9B;AAEA,WAAK,UAAU;AACf,WAAK,UAAW,YAAY,IAAK,IAAI,MAAM,QAAQ,IAAI,QAAQ,MAAM,WAAW,aAAa;AAC7F,aAAO,OAAO,MAAM,GAAG,CAAC,EAAE,SAAS,MAAM;AAAA,IAC7C;AAEA,gBAAY,UAAU,MAAM,WAAW;AACnC,UAAI,MAAM;AAGV,aAAO,KAAK,QAAQ,SAAS,GAAG;AAE5B,eAAO,KAAK;AACZ,YAAI,MAAM,KAAK,QAAQ,MAAM,CAAC;AAG9B,aAAK,UAAUD,QAAO,MAAM,CAAC;AAC7B,aAAK,UAAU;AACf,YAAI,IAAI,SAAS;AACb,iBAAO,KAAK,MAAM,GAAG;AAAA,MAC7B;AAEA,WAAK,UAAU;AACf,aAAO;AAAA,IACX;AAGA,aAAS,QAAQ,OAAO,KAAK;AACzB,UAAI,MAAM,KAAK;AACX,eAAO;AAEX,UAAI,IAAI,GAAG,IAAI,MAAM;AACrB,aAAO,IAAI,IAAE,GAAG;AACZ,YAAI,MAAM,IAAI,KAAK,OAAO,IAAE,IAAE,KAAG,CAAC;AAClC,YAAI,MAAM,QAAQ;AACd,cAAI;AAAA;AAEJ,cAAI;AAAA,MACZ;AACA,aAAO;AAAA,IACX;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACziBA;AAAA;AAAA;AAMA,WAAO,UAAU;AAAA,MAkCb,YAAY;AAAA,QACR,MAAM;AAAA,QACN,OAAO,WAAW;AAAE,iBAAO;AAAA,QAAkC;AAAA,QAC7D,WAAW,EAAC,QAAU,IAAM,UAAU,IAAI;AAAA,QAC1C,gBAAgB,CAAC,EAAC,MAAM,OAAQ,IAAI,MAAM,CAAC;AAAA,MAC/C;AAAA,MACA,cAAc;AAAA,MACd,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,SAAS;AAAA,MACT,SAAS;AAAA,MACT,cAAc;AAAA,MACd,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MAET,SAAS;AAAA,QACL,MAAM;AAAA,QACN,OAAO,WAAW;AAAE,iBAAO;AAAA,QAA+B;AAAA,QAC1D,WAAW,EAAC,QAAU,IAAM,UAAU,IAAI;AAAA,MAC9C;AAAA,MAYA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,SAAS;AAAA,MAGT,cAAc;AAAA,MACd,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,QACL,MAAM;AAAA,QACN,OAAO,WAAW;AAAE,iBAAO;AAAA,QAA+B;AAAA,MAC9D;AAAA,MAGA,OAAO;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW;AAAE,iBAAO,gBAA+B,OAAO,mBAAkC;AAAA,QAAE;AAAA,MACzG;AAAA,MACA,QAAQ;AAAA,MACR,WAAW;AAAA,MAOX,WAAW;AAAA,QACP,MAAM;AAAA,QACN,OAAO,WAAW;AAAE,iBAAO,gBAA+B,OAAO,mBAAkC;AAAA,QAAE;AAAA,QACrG,SAAS,WAAW;AAAE,iBAAO;AAAA,QAAwC;AAAA,QACrE,gBAAgB,CAAC,GAAI;AAAA,QACrB,WAAW,EAAC,UAAK,MAAM;AAAA,MAC3B;AAAA,MAEA,WAAW;AAAA,MAKX,cAAc;AAAA,MACd,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,QACL,MAAM;AAAA,QACN,OAAO,WAAW;AAAE,iBAAO;AAAA,QAA+B;AAAA,MAC9D;AAAA,MAEA,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,eAAe;AAAA,MACf,eAAe;AAAA,MACf,WAAW;AAAA,MA0BX,cAAc;AAAA,MACd,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,QACL,MAAM;AAAA,QACN,OAAO,WAAW;AAAE,iBAAO;AAAA,QAA+B;AAAA,MAC9D;AAAA,MAGA,QAAQ;AAAA,MACR,aAAa;AAAA,QACT,MAAM;AAAA,QACN,OAAO,WAAW;AAAE,iBAAO,gBAA+B,OAAO,oBAAmC;AAAA,QAAE;AAAA,QACtG,gBAAgB,CAAC,KAAM;AAAA,MAC3B;AAAA,MAEA,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,IACd;AAAA;AAAA;;;AC/KA;AAAA;AAAA;AAIA,QAAI,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAGA,SAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACjC,eAAS,QAAQ;AACrB,WAAS,OAAO;AACZ,YAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG;AAChD,kBAAQ,OAAO,OAAO;AAAA,IAClC;AAJQ;AACK;AAFJ;AAAA;AAAA;;;AChBT;AAAA;AAAA;AAEA,QAAIE,UAAS,UAAQ,UAAU;AAA/B,QACI,YAAY,UAAQ,UAAU;AAIlC,WAAO,UAAU,SAAS,OAAO;AAG7B,YAAM,eAAe,SAAS,aAAa,UAAU,SAAS;AAC1D,eAAO,IAAI,uBAAuB,MAAM,WAAW,UAAU,OAAO,GAAG,OAAO;AAAA,MAClF;AAEA,YAAM,eAAe,SAAS,aAAa,UAAU,SAAS;AAC1D,eAAO,IAAI,uBAAuB,MAAM,WAAW,UAAU,OAAO,GAAG,OAAO;AAAA,MAClF;AAEA,YAAM,kBAAkB;AAIxB,YAAM,yBAAyB;AAC/B,YAAM,yBAAyB;AAC/B,YAAM,WAAW,uBAAuB,UAAU;AAAA,IACtD;AAIA,aAAS,uBAAuB,MAAM,SAAS;AAC3C,WAAK,OAAO;AACZ,gBAAU,WAAW,CAAC;AACtB,cAAQ,gBAAgB;AACxB,gBAAU,KAAK,MAAM,OAAO;AAAA,IAChC;AAEA,2BAAuB,YAAY,OAAO,OAAO,UAAU,WAAW;AAAA,MAClE,aAAa,EAAE,OAAO,uBAAuB;AAAA,IACjD,CAAC;AAED,2BAAuB,UAAU,aAAa,SAAS,OAAO,UAAU,MAAM;AAC1E,UAAI,OAAO,SAAS;AAChB,eAAO,KAAK,IAAI,MAAM,mDAAmD,CAAC;AAC9E,UAAI;AACA,YAAI,MAAM,KAAK,KAAK,MAAM,KAAK;AAC/B,YAAI,OAAO,IAAI;AAAQ,eAAK,KAAK,GAAG;AACpC,aAAK;AAAA,MACT,SACO,GAAP;AACI,aAAK,CAAC;AAAA,MACV;AAAA,IACJ;AAEA,2BAAuB,UAAU,SAAS,SAAS,MAAM;AACrD,UAAI;AACA,YAAI,MAAM,KAAK,KAAK,IAAI;AACxB,YAAI,OAAO,IAAI;AAAQ,eAAK,KAAK,GAAG;AACpC,aAAK;AAAA,MACT,SACO,GAAP;AACI,aAAK,CAAC;AAAA,MACV;AAAA,IACJ;AAEA,2BAAuB,UAAU,UAAU,SAAS,IAAI;AACpD,UAAI,SAAS,CAAC;AACd,WAAK,GAAG,SAAS,EAAE;AACnB,WAAK,GAAG,QAAQ,SAAS,OAAO;AAAE,eAAO,KAAK,KAAK;AAAA,MAAG,CAAC;AACvD,WAAK,GAAG,OAAO,WAAW;AACtB,WAAG,MAAMA,QAAO,OAAO,MAAM,CAAC;AAAA,MAClC,CAAC;AACD,aAAO;AAAA,IACX;AAIA,aAAS,uBAAuB,MAAM,SAAS;AAC3C,WAAK,OAAO;AACZ,gBAAU,WAAW,CAAC;AACtB,cAAQ,WAAW,KAAK,WAAW;AACnC,gBAAU,KAAK,MAAM,OAAO;AAAA,IAChC;AAEA,2BAAuB,YAAY,OAAO,OAAO,UAAU,WAAW;AAAA,MAClE,aAAa,EAAE,OAAO,uBAAuB;AAAA,IACjD,CAAC;AAED,2BAAuB,UAAU,aAAa,SAAS,OAAO,UAAU,MAAM;AAC1E,UAAI,CAACA,QAAO,SAAS,KAAK;AACtB,eAAO,KAAK,IAAI,MAAM,mDAAmD,CAAC;AAC9E,UAAI;AACA,YAAI,MAAM,KAAK,KAAK,MAAM,KAAK;AAC/B,YAAI,OAAO,IAAI;AAAQ,eAAK,KAAK,KAAK,KAAK,QAAQ;AACnD,aAAK;AAAA,MACT,SACO,GAAP;AACI,aAAK,CAAC;AAAA,MACV;AAAA,IACJ;AAEA,2BAAuB,UAAU,SAAS,SAAS,MAAM;AACrD,UAAI;AACA,YAAI,MAAM,KAAK,KAAK,IAAI;AACxB,YAAI,OAAO,IAAI;AAAQ,eAAK,KAAK,KAAK,KAAK,QAAQ;AACnD,aAAK;AAAA,MACT,SACO,GAAP;AACI,aAAK,CAAC;AAAA,MACV;AAAA,IACJ;AAEA,2BAAuB,UAAU,UAAU,SAAS,IAAI;AACpD,UAAI,MAAM;AACV,WAAK,GAAG,SAAS,EAAE;AACnB,WAAK,GAAG,QAAQ,SAAS,OAAO;AAAE,eAAO;AAAA,MAAO,CAAC;AACjD,WAAK,GAAG,OAAO,WAAW;AACtB,WAAG,MAAM,GAAG;AAAA,MAChB,CAAC;AACD,aAAO;AAAA,IACX;AAAA;AAAA;;;ACvHA;AAAA;AAAA;AACA,QAAIC,UAAS,UAAQ,UAAU;AAK/B,WAAO,UAAU,SAAU,OAAO;AAC9B,UAAI,WAAW;AAKf,YAAM,iCAAiC,EAAEA,QAAO,QAAQ,IAAIA,QAAO,CAAC,aAAa;AAEjF,YAAM,sBAAsB,SAAS,sBAAsB;AACvD,YAAI;AAAU;AACd,mBAAW,CAAC;AAEZ,YAAI,CAAC,MAAM,gCAAgC;AACvC,kBAAQ,MAAM,qGAAqG;AACnH,kBAAQ,MAAM,sFAAsF;AACpG;AAAA,QACJ;AAEA,YAAI,sBAAsB;AAAA,UACtB,OAAO;AAAA,UAAM,QAAQ;AAAA,UAAM,SAAS;AAAA,UAAM,SAAS;AAAA,UAAM,UAAU;AAAA,UACnE,UAAU;AAAA,UAAM,QAAQ;AAAA,UAAM,SAAS;AAAA,UAAM,WAAW;AAAA,UAAM,YAAY;AAAA,QAC9E;AAEA,QAAAA,QAAO,mBAAmB,SAAS,KAAK;AACpC,iBAAO,OAAO,oBAAoB,IAAI,YAAY;AAAA,QACtD;AAGA,YAAI,aAAa,UAAQ,UAAU;AAEnC,iBAAS,qBAAqB,WAAW,UAAU;AACnD,mBAAW,UAAU,WAAW,SAAS,UAAU,OAAO,KAAK;AAC3D,qBAAW,OAAO,YAAY,MAAM,EAAE,YAAY;AAGlD,cAAIA,QAAO,iBAAiB,QAAQ;AAChC,mBAAO,SAAS,mBAAmB,KAAK,MAAM,UAAU,OAAO,GAAG;AAGtE,cAAI,OAAO,SAAS;AAAa,oBAAQ;AACzC,cAAI,OAAO,OAAO;AAAa,kBAAM,KAAK;AAC1C,iBAAO,MAAM,OAAO,KAAK,MAAM,OAAO,GAAG,GAAG,QAAQ;AAAA,QACxD;AAEA,iBAAS,kBAAkB,WAAW,UAAU;AAChD,mBAAW,UAAU,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,UAAU;AAGpE,cAAI,SAAS,MAAM,GAAG;AAClB,gBAAI,CAAC,SAAS,MAAM,GAAG;AACnB,yBAAW;AACX,uBAAS;AAAA,YACb;AAAA,UACJ,OAAO;AACH,gBAAI,OAAO;AACX,uBAAW;AACX,qBAAS;AACT,qBAAS;AAAA,UACb;AAEA,mBAAS,CAAC,UAAU;AACpB,cAAI,YAAY,KAAK,SAAS;AAC9B,cAAI,CAAC,QAAQ;AACT,qBAAS;AAAA,UACb,OAAO;AACH,qBAAS,CAAC;AACV,gBAAI,SAAS,WAAW;AACpB,uBAAS;AAAA,YACb;AAAA,UACJ;AACA,qBAAW,OAAO,YAAY,MAAM,EAAE,YAAY;AAGlD,cAAIA,QAAO,iBAAiB,QAAQ;AAChC,mBAAO,SAAS,gBAAgB,KAAK,MAAM,QAAQ,QAAQ,QAAQ,QAAQ;AAE/E,cAAI,OAAO,SAAS,MAAM,SAAS,KAAK,SAAS;AAC7C,kBAAM,IAAI,WAAW,uCAAuC;AAGhE,cAAI,MAAM,MAAM,OAAO,QAAQ,QAAQ;AACvC,cAAI,IAAI,SAAS;AAAQ,qBAAS,IAAI;AACtC,cAAI,KAAK,MAAM,QAAQ,GAAG,MAAM;AAChC,iBAAO;AAAA,QACX;AAIA,iBAAS,mBAAmBA,QAAO;AACnC,QAAAA,QAAO,aAAa,SAAS,UAAU;AACnC,iBAAOA,QAAO,iBAAiB,QAAQ,KAAK,MAAM,eAAe,QAAQ;AAAA,QAC7E;AAEA,iBAAS,mBAAmBA,QAAO;AACnC,QAAAA,QAAO,aAAa,WAAW,aAAa,SAAS,KAAK,UAAU;AAChE,qBAAW,OAAO,YAAY,MAAM,EAAE,YAAY;AAGlD,cAAIA,QAAO,iBAAiB,QAAQ;AAChC,mBAAO,SAAS,iBAAiB,KAAK,MAAM,KAAK,QAAQ;AAG7D,iBAAO,MAAM,OAAO,KAAK,QAAQ,EAAE;AAAA,QACvC;AAEA,iBAAS,iBAAiBA,QAAO,UAAU;AAC3C,QAAAA,QAAO,UAAU,WAAW,SAAS,UAAU,OAAO,KAAK;AACvD,qBAAW,OAAO,YAAY,MAAM,EAAE,YAAY;AAGlD,cAAIA,QAAO,iBAAiB,QAAQ;AAChC,mBAAO,SAAS,eAAe,KAAK,MAAM,UAAU,OAAO,GAAG;AAGlE,cAAI,OAAO,SAAS;AAAa,oBAAQ;AACzC,cAAI,OAAO,OAAO;AAAa,kBAAM,KAAK;AAC1C,iBAAO,MAAM,OAAO,KAAK,MAAM,OAAO,GAAG,GAAG,QAAQ;AAAA,QACxD;AAEA,iBAAS,cAAcA,QAAO,UAAU;AACxC,QAAAA,QAAO,UAAU,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,UAAU;AAChE,cAAI,UAAU,QAAQ,UAAU,QAAQ,YAAY;AAGpD,cAAI,SAAS,MAAM,GAAG;AAClB,gBAAI,CAAC,SAAS,MAAM,GAAG;AACnB,yBAAW;AACX,uBAAS;AAAA,YACb;AAAA,UACJ,OAAO;AACH,gBAAI,OAAO;AACX,uBAAW;AACX,qBAAS;AACT,qBAAS;AAAA,UACb;AAEA,qBAAW,OAAO,YAAY,MAAM,EAAE,YAAY;AAGlD,cAAIA,QAAO,iBAAiB,QAAQ;AAChC,mBAAO,SAAS,YAAY,KAAK,MAAM,QAAQ,SAAS,SAAS,SAAS;AAE9E,mBAAS,CAAC,UAAU;AACpB,cAAI,YAAY,KAAK,SAAS;AAC9B,cAAI,CAAC,QAAQ;AACT,qBAAS;AAAA,UACb,OAAO;AACH,qBAAS,CAAC;AACV,gBAAI,SAAS,WAAW;AACpB,uBAAS;AAAA,YACb;AAAA,UACJ;AAEA,cAAI,OAAO,SAAS,MAAM,SAAS,KAAK,SAAS;AAC7C,kBAAM,IAAI,WAAW,uCAAuC;AAGhE,cAAI,MAAM,MAAM,OAAO,QAAQ,QAAQ;AACvC,cAAI,IAAI,SAAS;AAAQ,qBAAS,IAAI;AACtC,cAAI,KAAK,MAAM,QAAQ,GAAG,MAAM;AAChC,iBAAO;AAAA,QAGX;AAIA,YAAI,MAAM,iBAAiB;AACvB,cAAI,WAAW,UAAQ,UAAU;AAEjC,mBAAS,sBAAsB,SAAS,UAAU;AAClD,mBAAS,UAAU,cAAc,SAAS,YAAY,KAAK,SAAS;AAGhE,iBAAK,eAAe,UAAU,MAAM,WAAW,KAAK,OAAO;AAC3D,iBAAK,eAAe,WAAW;AAAA,UACnC;AAEA,mBAAS,UAAU,UAAU,MAAM;AAAA,QACvC;AAAA,MACJ;AAGA,YAAM,0BAA0B,SAAS,0BAA0B;AAC/D,YAAI,CAAC,MAAM;AACP;AACJ,YAAI,CAAC;AACD,gBAAM,IAAI,MAAM,wGAAwG;AAE5H,eAAOA,QAAO;AAEd,YAAI,aAAa,UAAQ,UAAU;AAEnC,mBAAW,UAAU,WAAW,SAAS;AACzC,mBAAW,UAAU,QAAQ,SAAS;AAEtC,QAAAA,QAAO,aAAa,SAAS;AAC7B,QAAAA,QAAO,aAAa,SAAS;AAC7B,QAAAA,QAAO,UAAU,WAAW,SAAS;AACrC,QAAAA,QAAO,UAAU,QAAQ,SAAS;AAElC,YAAI,MAAM,iBAAiB;AACvB,cAAI,WAAW,UAAQ,UAAU;AAEjC,mBAAS,UAAU,cAAc,SAAS;AAC1C,iBAAO,SAAS,UAAU;AAAA,QAC9B;AAEA,mBAAW;AAAA,MACf;AAAA,IACJ;AAAA;AAAA;;;ACxNA,IAAAC,eAAA;AAAA;AAAA;AAIA,QAAIC,UAAS,gBAAwB;AAErC,QAAI,cAAc;AAAlB,QACI,QAAQ,OAAO;AAInB,UAAM,YAAY;AAGlB,UAAM,qBAAqB;AAC3B,UAAM,wBAAwB;AAG9B,UAAM,SAAS,SAAS,OAAO,KAAK,UAAU,SAAS;AACnD,YAAM,MAAM,OAAO;AAEnB,UAAI,UAAU,MAAM,WAAW,UAAU,OAAO;AAEhD,UAAI,MAAM,QAAQ,MAAM,GAAG;AAC3B,UAAI,QAAQ,QAAQ,IAAI;AAExB,aAAQ,SAAS,MAAM,SAAS,IAAKA,QAAO,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI;AAAA,IACvE;AAEA,UAAM,SAAS,SAAS,OAAO,KAAK,UAAU,SAAS;AACnD,UAAI,OAAO,QAAQ,UAAU;AACzB,YAAI,CAAC,MAAM,mBAAmB;AAC1B,kBAAQ,MAAM,0IAA0I;AACxJ,gBAAM,oBAAoB;AAAA,QAC9B;AAEA,cAAMA,QAAO,KAAK,MAAM,OAAO,KAAK,QAAQ;AAAA,MAChD;AAEA,UAAI,UAAU,MAAM,WAAW,UAAU,OAAO;AAEhD,UAAI,MAAM,QAAQ,MAAM,GAAG;AAC3B,UAAI,QAAQ,QAAQ,IAAI;AAExB,aAAO,QAAS,MAAM,QAAS;AAAA,IACnC;AAEA,UAAM,iBAAiB,SAAS,eAAe,KAAK;AAChD,UAAI;AACA,cAAM,SAAS,GAAG;AAClB,eAAO;AAAA,MACX,SAAS,GAAP;AACE,eAAO;AAAA,MACX;AAAA,IACJ;AAGA,UAAM,aAAa,MAAM;AACzB,UAAM,eAAe,MAAM;AAG3B,UAAM,kBAAkB,CAAC;AACzB,UAAM,WAAW,SAAS,SAAS,UAAU;AACzC,UAAI,CAAC,MAAM;AACP,cAAM,YAAY;AAGtB,UAAI,MAAM,MAAM,sBAAsB,QAAQ;AAG9C,UAAI,eAAe,CAAC;AACpB,aAAO,MAAM;AACT,YAAI,QAAQ,MAAM,gBAAgB;AAClC,YAAI;AACA,iBAAO;AAEX,YAAI,WAAW,MAAM,UAAU;AAE/B,gBAAQ,OAAO,UAAU;AAAA,UACrB,KAAK;AACD,kBAAM;AACN;AAAA,UAEJ,KAAK;AACD,qBAAS,OAAO;AACZ,2BAAa,OAAO,SAAS;AAEjC,gBAAI,CAAC,aAAa;AACd,2BAAa,eAAe;AAEhC,kBAAM,SAAS;AACf;AAAA,UAEJ,KAAK;AACD,gBAAI,CAAC,aAAa;AACd,2BAAa,eAAe;AAIhC,oBAAQ,IAAI,SAAS,cAAc,KAAK;AAExC,kBAAM,gBAAgB,aAAa,gBAAgB;AACnD,mBAAO;AAAA,UAEX;AACI,kBAAM,IAAI,MAAM,+BAA+B,WAAW,sBAAoB,MAAI,IAAI;AAAA,QAC9F;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,wBAAwB,SAAS,UAAU;AAE7C,cAAQ,KAAG,UAAU,YAAY,EAAE,QAAQ,sBAAsB,EAAE;AAAA,IACvE;AAEA,UAAM,aAAa,SAAS,WAAW,UAAU,SAAS;AACtD,UAAI,QAAQ,MAAM,SAAS,QAAQ,GAC/B,UAAU,IAAI,MAAM,QAAQ,SAAS,KAAK;AAE9C,UAAI,MAAM,YAAY,WAAW,QAAQ;AACrC,kBAAU,IAAI,YAAY,WAAW,SAAS,OAAO;AAEzD,aAAO;AAAA,IACX;AAEA,UAAM,aAAa,SAAS,WAAW,UAAU,SAAS;AACtD,UAAI,QAAQ,MAAM,SAAS,QAAQ,GAC/B,UAAU,IAAI,MAAM,QAAQ,SAAS,KAAK;AAE9C,UAAI,MAAM,YAAY,EAAE,WAAW,QAAQ,aAAa;AACpD,kBAAU,IAAI,YAAY,SAAS,SAAS,OAAO;AAEvD,aAAO;AAAA,IACX;AAIA,QAAI,UAAU,OAAO,YAAY,eAAe,QAAQ,YAAY,QAAQ,SAAS;AACrF,QAAI,SAAS;AAGL,mBAAa,QAAQ,MAAM,GAAG,EAAE,IAAI,MAAM;AAC9C,UAAI,WAAW,KAAK,KAAK,WAAW,MAAM,IAAI;AAC1C,0BAAqB,KAAK;AAAA,MAC9B;AAGA,4BAAyB,KAAK;AAAA,IAClC;AAPQ;AASR,QAAI,OAAiB;AACjB,cAAQ,MAAM,2KAA2K;AAAA,IAC7L;AAAA;AAAA;;;ACxJA;AAAA;AAAA;AACA,QAAI,YAAY,QAAQ,aAAa;AACrC,QAAI,kBAAkB,YAAY,YAAY;AAG9C,WAAO,UAAU,WAAY;AAC5B,UAAIC;AAEJ,UAAI,WAAW;AACd,QAAAA,QAAO,QAAQ,IAAI,QAClB,QAAQ,IAAI,QACX,QAAQ,IAAI,cAAc,QAAQ,IAAI,UAAU;AAAA,MACnD,OAAO;AACN,QAAAA,QAAO,QAAQ,IAAI,UAClB,QAAQ,IAAI,OACZ,QAAQ,IAAI,QACZ;AAAA,MACF;AAEA,UAAI,gBAAgB,KAAKA,KAAI,GAAG;AAC/B,QAAAA,QAAOA,MAAK,MAAM,GAAG,EAAE;AAAA,MACxB;AAEA,aAAOA;AAAA,IACR;AAAA;AAAA;;;ACxBA;AAAA;AAWA,QAAMC,MAAK,UAAQ;AACnB,QAAMC,QAAO,UAAQ;AACrB,QAAM,SAAS,UAAQ;AACvB,QAAM,WAAW;AACjB,QAAMC,MAAK,QAAQ,QAAQ,WAAW;AAKtC,QAKE,SAAS,SAAS;AALpB,QAQE,eAAe;AARjB,QAUE,mBAAmB;AAVrB,QAYE,gBAAgB;AAZlB,QAcE,gBAAgBA,IAAG,WAAWA,IAAG,GAAG,YAAYA,IAAG,UAAUA,IAAG,GAAG,WAAWA,IAAG,UAAUA,IAAG,GAAG;AAdnG,QAgBE,QAAQA,IAAG,SAASA,IAAG,GAAG,MAAM;AAhBlC,QAiBE,SAASA,IAAG,UAAUA,IAAG,GAAG,MAAM;AAjBpC,QAmBE,WAAW;AAnBb,QAoBE,YAAY;AApBd,QAuBE,iBAAiB,CAAC;AAEpB,QACE,mBAAmB;AADrB,QAEE,qBAAqB;AAUvB,aAAS,aAAa,SAAS;AAC7B,UACE,QAAQ,CAAC,GACT,MAAM;AAGR,UAAI;AACF,cAAM,OAAO,YAAY,OAAO;AAAA,MAClC,SAAS,GAAP;AACA,cAAM,OAAO,kBAAkB,OAAO;AAAA,MACxC;AAEA,eAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,cAAM,KAAK,aAAa,IAAI,KAAK,aAAa,OAAO;AAAA,MACvD;AAEA,aAAO,MAAM,KAAK,EAAE;AAAA,IACtB;AASA,aAAS,aAAa,KAAK;AACzB,aAAO,OAAO,QAAQ;AAAA,IACxB;AAYA,aAAS,gBAAgB,SAAS,UAAU;AAC1C,UAAI,OAAO,WAAW,YAAY;AAChC,eAAO,CAAC,YAAY,CAAC,GAAG,OAAO;AAAA,MACjC;AAEA,UAAI,aAAa,OAAO,GAAG;AACzB,eAAO,CAAC,CAAC,GAAG,QAAQ;AAAA,MACtB;AAEA,aAAO,CAAC,SAAS,QAAQ;AAAA,IAC3B;AASA,aAAS,iBAAiB,MAAM;AAC9B,UAAI,KAAK,MAAM;AACb,eAAOD,MAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,IAAI;AAAA,MAChD;AAGA,UAAI,KAAK,UAAU;AACjB,eAAO,KAAK,SAAS,QAAQ,kBAAkB,aAAa,CAAC,CAAC;AAAA,MAChE;AAGA,YAAM,OAAO;AAAA,QACX,KAAK,UAAU;AAAA,QACf,QAAQ;AAAA,QACR,aAAa,EAAE;AAAA,QACf,KAAK,WAAW;AAAA,MAClB,EAAE,KAAK,EAAE;AAET,aAAOA,MAAK,KAAK,KAAK,OAAO,QAAQ,IAAI;AAAA,IAC3C;AAQA,aAAS,QAAQ,SAAS,UAAU;AAClC,UACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,IACZ,KAAK,KAAK,IACV,QAAQ,KAAK,OAAO,IAAI,KAAK,SAAS;AAExC,UAAI,MAAM,KAAK,KAAK,QAAQ;AAC1B,eAAO,GAAG,IAAI,MAAM,eAAe,CAAC;AAEtC,UAAI,KAAK,YAAY,CAAC,KAAK,SAAS,MAAM,gBAAgB;AACxD,eAAO,GAAG,IAAI,MAAM,2BAA2B,CAAC;AAElD,OAAC,SAAS,iBAAiB;AACzB,cAAM,OAAO,iBAAiB,IAAI;AAGlC,QAAAD,IAAG,KAAK,MAAM,SAAU,KAAK;AAC3B,cAAI,CAAC,KAAK;AACR,gBAAI,UAAU;AAAG,qBAAO,eAAe;AAEvC,mBAAO,GAAG,IAAI,MAAM,4DAA4D,IAAI,CAAC;AAAA,UACvF;AAEA,aAAG,MAAM,IAAI;AAAA,QACf,CAAC;AAAA,MACH,GAAE;AAAA,IACJ;AASA,aAAS,YAAY,SAAS;AAC5B,UACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK,IACZ,QAAQ,KAAK,OAAO,IAAI,KAAK,SAAS;AAExC,UAAI,MAAM,KAAK,KAAK,QAAQ;AAC1B,cAAM,IAAI,MAAM,eAAe;AAEjC,UAAI,KAAK,YAAY,CAAC,KAAK,SAAS,MAAM,gBAAgB;AACxD,cAAM,IAAI,MAAM,2BAA2B;AAE7C,SAAG;AACD,cAAM,OAAO,iBAAiB,IAAI;AAClC,YAAI;AACF,UAAAA,IAAG,SAAS,IAAI;AAAA,QAClB,SAAS,GAAP;AACA,iBAAO;AAAA,QACT;AAAA,MACF,SAAS,UAAU;AAEnB,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAQA,aAAS,KAAK,SAAS,UAAU;AAC/B,UACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,IACZ,KAAK,KAAK;AAEZ,WAAK,UAAW,aAAa,KAAK,OAAO,IAAK,SAAS,KAAK;AAG5D,cAAQ,MAAM,SAAS,gBAAgB,KAAK,MAAM;AAChD,YAAI;AAAK,iBAAO,GAAG,GAAG;AAGtB,QAAAA,IAAG,KAAK,MAAM,cAAc,KAAK,QAAQ,WAAW,SAAS,aAAaG,MAAK,IAAI;AACjF,cAAIA;AAAK,mBAAO,GAAGA,IAAG;AAEtB,cAAI,KAAK,mBAAmB;AAC1B,mBAAOH,IAAG,MAAM,IAAI,SAAS,iBAAiBG,MAAK;AACjD,kBAAIA,MAAK;AAKP,oBAAI;AACF,kBAAAH,IAAG,WAAW,IAAI;AAAA,gBACpB,SAAS,GAAP;AACA,sBAAI,CAAC,SAAS,CAAC,GAAG;AAChB,oBAAAG,OAAM;AAAA,kBACR;AAAA,gBACF;AACA,uBAAO,GAAGA,IAAG;AAAA,cACf;AACA,iBAAG,MAAM,MAAM,QAAW,8BAA8B,MAAM,IAAI,IAAI,CAAC;AAAA,YACzE,CAAC;AAAA,UACH;AACA,cAAI,KAAK,kBAAkB;AACzB,mBAAO,GAAG,MAAM,MAAM,IAAI,8BAA8B,MAAM,IAAI,IAAI,CAAC;AAAA,UACzE;AACA,aAAG,MAAM,MAAM,IAAI,8BAA8B,MAAM,IAAI,IAAI,CAAC;AAAA,QAClE,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AASA,aAAS,SAAS,SAAS;AACzB,UACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK;AAEd,WAAK,UAAU,KAAK,WAAW;AAE/B,YAAM,4BAA4B,KAAK,qBAAqB,KAAK;AACjE,YAAM,OAAO,YAAY,IAAI;AAC7B,UAAI,KAAKH,IAAG,SAAS,MAAM,cAAc,KAAK,QAAQ,SAAS;AAC/D,UAAI,KAAK,mBAAmB;AAC1B,QAAAA,IAAG,UAAU,EAAE;AACf,aAAK;AAAA,MACP;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,gBAAgB,8BAA8B,MAAM,4BAA4B,KAAK,IAAI,IAAI;AAAA,MAC/F;AAAA,IACF;AAQA,aAAS,oBAAoB,MAAM;AACjC,YAAM,OAAO,CAAC,IAAI;AAElB,SAAG;AACD,YACEI,OAAM,KAAK,IAAI,GACf,WAAW,OACX,QAAQJ,IAAG,YAAYI,IAAG;AAE5B,iBAAS,IAAI,GAAG,SAAS,MAAM,QAAQ,IAAI,QAAQ,KAAK;AACtD,cACEC,QAAOJ,MAAK,KAAKG,MAAK,MAAM,EAAE,GAC9B,OAAOJ,IAAG,UAAUK,KAAI;AAE1B,cAAI,KAAK,YAAY,GAAG;AACtB,gBAAI,CAAC,UAAU;AACb,yBAAW;AACX,mBAAK,KAAKD,IAAG;AAAA,YACf;AACA,iBAAK,KAAKC,KAAI;AAAA,UAChB,OAAO;AACL,YAAAL,IAAG,WAAWK,KAAI;AAAA,UACpB;AAAA,QACF;AAEA,YAAI,CAAC,UAAU;AACb,UAAAL,IAAG,UAAUI,IAAG;AAAA,QAClB;AAAA,MACF,SAAS,KAAK,WAAW;AAAA,IAC3B;AAQA,aAAS,IAAI,SAAS,UAAU;AAC9B,UACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,IACZ,KAAK,KAAK;AAGZ,cAAQ,MAAM,SAAS,gBAAgB,KAAK,MAAM;AAChD,YAAI;AAAK,iBAAO,GAAG,GAAG;AAGtB,QAAAJ,IAAG,MAAM,MAAM,KAAK,QAAQ,UAAU,SAAS,YAAYG,MAAK;AAC9D,cAAIA;AAAK,mBAAO,GAAGA,IAAG;AAEtB,aAAG,MAAM,MAAM,6BAA6B,MAAM,IAAI,CAAC;AAAA,QACzD,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AASA,aAAS,QAAQ,SAAS;AACxB,UACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK;AAEd,YAAM,OAAO,YAAY,IAAI;AAC7B,MAAAH,IAAG,UAAU,MAAM,KAAK,QAAQ,QAAQ;AAExC,aAAO;AAAA,QACL;AAAA,QACA,gBAAgB,6BAA6B,MAAM,IAAI;AAAA,MACzD;AAAA,IACF;AAWA,aAAS,8BAA8B,MAAM,IAAI,MAAM;AACrD,YAAM,iBAAiB,uBAAuB,SAAS,gBAAgB,QAAQ;AAC7E,YAAI;AACF,cAAI,KAAK,OAAO,IAAI;AAClB,YAAAA,IAAG,UAAU,OAAO,EAAE;AAAA,UACxB;AAAA,QACF,SACO,GAAP;AAIE,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;AAE/B,kBAAM;AAAA,UACR;AAAA,QACF;AACA,YAAI;AACF,UAAAA,IAAG,WAAW,OAAO,EAAE;AAAA,QACzB,SACO,GAAP;AACE,cAAI,CAAC,SAAS,CAAC,GAAG;AAEhB,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF,GAAG,CAAC,IAAI,IAAI,CAAC;AAEb,UAAI,CAAC,KAAK,MAAM;AACd,uBAAe,QAAQ,cAAc;AAAA,MACvC;AAEA,aAAO;AAAA,IACT;AAUA,aAAS,6BAA6B,MAAM,MAAM;AAChD,YAAM,iBAAiB,KAAK,gBAAgB,sBAAsBA,IAAG,UAAU,KAAKA,GAAE;AACtF,YAAM,iBAAiB,uBAAuB,gBAAgB,IAAI;AAElE,UAAI,CAAC,KAAK,MAAM;AACd,uBAAe,QAAQ,cAAc;AAAA,MACvC;AAEA,aAAO;AAAA,IACT;AAUA,aAAS,uBAAuB,gBAAgB,KAAK;AACnD,UAAI,SAAS;AAEb,aAAO,SAAS,iBAAiB,MAAM;AACrC,YAAI,CAAC,QAAQ;AACX,gBAAM,QAAQ,eAAe,QAAQ,gBAAgB;AACrD,cAAI,SAAS,GAAG;AACd,2BAAe,OAAO,OAAO,CAAC;AAAA,UAChC;AAEA,mBAAS;AACT,yBAAe,GAAG;AAAA,QACpB;AAEA,YAAI;AAAM,eAAK,IAAI;AAAA,MACrB;AAAA,IACF;AAOA,aAAS,oBAAoB;AAC3B,UAAI,sBAAsB,CAAC,kBAAkB;AAC3C;AAAA,MACF;AAIA,aAAO,eAAe,QAAQ;AAC5B,YAAI;AACF,yBAAe,GAAG,KAAK,IAAI;AAAA,QAC7B,SAAS,GAAP;AAAA,QAEF;AAAA,MACF;AAAA,IACF;AAKA,aAAS,QAAQ,OAAO;AACtB,aAAO,gBAAgB,OAAO,CAAC,OAAO,OAAO;AAAA,IAC/C;AAKA,aAAS,SAAS,OAAO;AACvB,aAAO,gBAAgB,OAAO,CAAC,QAAQ,QAAQ;AAAA,IACjD;AAsBA,aAAS,gBAAgB,OAAO,MAAM,OAAO;AAC3C,aAAO,MAAM,QAAQ,QAAQ,MAAM,QAAQ;AAAA,IAC7C;AAOA,aAAS,qBAAqB;AAC5B,yBAAmB;AAAA,IACrB;AAEA,QAAM,UAAU,QAAQ,SAAS,KAAK,MAAM,GAAG,EAAE,IAAI,SAAU,OAAO;AACpE,aAAO,SAAS,OAAO,EAAE;AAAA,IAC3B,CAAC;AAED,QAAI,QAAQ,OAAO,MAAM,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAAK,QAAQ,KAAK,IAAI;AAC9E,cAAQ,YAAY,qBAAqB,SAAS,yBAAyB,KAAK;AAC9E,6BAAqB;AACrB,0BAAkB;AAElB,cAAM;AAAA,MACR,CAAC;AAAA,IACH;AAEA,YAAQ,YAAY,QAAQ,SAAS,MAAM,MAAM;AAC/C,UAAI;AAAM,6BAAqB;AAC/B,wBAAkB;AAAA,IACpB,CAAC;AA+DD,WAAO,QAAQ,SAAS;AAExB,WAAO,QAAQ,MAAM;AACrB,WAAO,QAAQ,UAAU;AAEzB,WAAO,QAAQ,OAAO;AACtB,WAAO,QAAQ,WAAW;AAE1B,WAAO,QAAQ,UAAU;AACzB,WAAO,QAAQ,cAAc;AAE7B,WAAO,QAAQ,qBAAqB;AAAA;AAAA;;;AClmBpC;AAAA;AAAA;AAOA,QAAI,YAAa,WAAQ,QAAK,aAAe,WAAY;AACrD,UAAI,gBAAgB,SAAU,GAAG,GAAG;AAChC,wBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUM,IAAGC,IAAG;AAAE,UAAAD,GAAE,YAAYC;AAAA,QAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,mBAAS,KAAKA;AAAG,gBAAIA,GAAE,eAAe,CAAC;AAAG,cAAAD,GAAE,KAAKC,GAAE;AAAA,QAAI;AAC7E,eAAO,cAAc,GAAG,CAAC;AAAA,MAC7B;AACA,aAAO,SAAU,GAAG,GAAG;AACnB,sBAAc,GAAG,CAAC;AAClB,iBAAS,KAAK;AAAE,eAAK,cAAc;AAAA,QAAG;AACtC,UAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG;AAAA,MACtF;AAAA,IACJ,EAAG;AACH,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAI,kBAAiC,SAAU,QAAQ;AACnD,gBAAUC,kBAAiB,MAAM;AACjC,eAASA,iBAAgB,eAAe;AACpC,YAAI,aAAa,KAAK;AACtB,YAAI,QAAQ,OAAO,KAAK,MAAM,4CAA4C,KAAK;AAC/E,cAAM,gBAAgB;AACtB,YAAI,QAAQ,WAAW;AACvB,YAAI,OAAO,gBAAgB;AACvB,iBAAO,eAAe,OAAO,KAAK;AAAA,QACtC,OACK;AACD,gBAAM,YAAY,WAAW;AAAA,QACjC;AACA,eAAO;AAAA,MACX;AACA,aAAOA;AAAA,IACX,EAAE,KAAK;AACP,YAAQ,kBAAkB;AAAA;AAAA;;;ACtC1B;AAAA;AAAA;AAOA,QAAI,YAAa,WAAQ,QAAK,aAAe,WAAY;AACrD,UAAI,gBAAgB,SAAU,GAAG,GAAG;AAChC,wBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUC,IAAGC,IAAG;AAAE,UAAAD,GAAE,YAAYC;AAAA,QAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,mBAAS,KAAKA;AAAG,gBAAIA,GAAE,eAAe,CAAC;AAAG,cAAAD,GAAE,KAAKC,GAAE;AAAA,QAAI;AAC7E,eAAO,cAAc,GAAG,CAAC;AAAA,MAC7B;AACA,aAAO,SAAU,GAAG,GAAG;AACnB,sBAAc,GAAG,CAAC;AAClB,iBAAS,KAAK;AAAE,eAAK,cAAc;AAAA,QAAG;AACtC,UAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG;AAAA,MACtF;AAAA,IACJ,EAAG;AACH,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAI,oBAAmC,SAAU,QAAQ;AACrD,gBAAUC,oBAAmB,MAAM;AACnC,eAASA,mBAAkB,eAAe;AACtC,YAAI,aAAa,KAAK;AACtB,YAAI,QAAQ,OAAO,KAAK,MAAM,sBAAsB,KAAK;AACzD,cAAM,gBAAgB;AACtB,YAAI,QAAQ,WAAW;AACvB,YAAI,OAAO,gBAAgB;AACvB,iBAAO,eAAe,OAAO,KAAK;AAAA,QACtC,OACK;AACD,gBAAM,YAAY,WAAW;AAAA,QACjC;AACA,eAAO;AAAA,MACX;AACA,aAAOA;AAAA,IACX,EAAE,KAAK;AACP,YAAQ,oBAAoB;AAAA;AAAA;;;ACtC5B;AAAA;AAAA;AAOA,QAAI,YAAa,WAAQ,QAAK,aAAe,WAAY;AACrD,UAAI,gBAAgB,SAAU,GAAG,GAAG;AAChC,wBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUC,IAAGC,IAAG;AAAE,UAAAD,GAAE,YAAYC;AAAA,QAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,mBAAS,KAAKA;AAAG,gBAAIA,GAAE,eAAe,CAAC;AAAG,cAAAD,GAAE,KAAKC,GAAE;AAAA,QAAI;AAC7E,eAAO,cAAc,GAAG,CAAC;AAAA,MAC7B;AACA,aAAO,SAAU,GAAG,GAAG;AACnB,sBAAc,GAAG,CAAC;AAClB,iBAAS,KAAK;AAAE,eAAK,cAAc;AAAA,QAAG;AACtC,UAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG;AAAA,MACtF;AAAA,IACJ,EAAG;AACH,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAI,gBAA+B,SAAU,QAAQ;AACjD,gBAAUC,gBAAe,MAAM;AAC/B,eAASA,eAAc,eAAe;AAClC,YAAI,aAAa,KAAK;AACtB,YAAI,QAAQ,OAAO,KAAK,MAAM,+BAA+B,KAAK;AAClE,cAAM,gBAAgB;AACtB,YAAI,QAAQ,WAAW;AACvB,YAAI,OAAO,gBAAgB;AACvB,iBAAO,eAAe,OAAO,KAAK;AAAA,QACtC,OACK;AACD,gBAAM,YAAY,WAAW;AAAA,QACjC;AACA,eAAO;AAAA,MACX;AACA,aAAOA;AAAA,IACX,EAAE,KAAK;AACP,YAAQ,gBAAgB;AAAA;AAAA;;;ACtCxB;AAAA;AAAA;AAOA,QAAI,YAAa,WAAQ,QAAK,aAAe,WAAY;AACrD,UAAI,gBAAgB,SAAU,GAAG,GAAG;AAChC,wBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUC,IAAGC,IAAG;AAAE,UAAAD,GAAE,YAAYC;AAAA,QAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,mBAAS,KAAKA;AAAG,gBAAIA,GAAE,eAAe,CAAC;AAAG,cAAAD,GAAE,KAAKC,GAAE;AAAA,QAAI;AAC7E,eAAO,cAAc,GAAG,CAAC;AAAA,MAC7B;AACA,aAAO,SAAU,GAAG,GAAG;AACnB,sBAAc,GAAG,CAAC;AAClB,iBAAS,KAAK;AAAE,eAAK,cAAc;AAAA,QAAG;AACtC,UAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG;AAAA,MACtF;AAAA,IACJ,EAAG;AACH,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAI,kBAAiC,SAAU,QAAQ;AACnD,gBAAUC,kBAAiB,MAAM;AACjC,eAASA,iBAAgB,eAAe;AACpC,YAAI,aAAa,KAAK;AACtB,YAAI,QAAQ,OAAO,KAAK,MAAM,kCAAkC,KAAK;AACrE,cAAM,gBAAgB;AACtB,YAAI,QAAQ,WAAW;AACvB,YAAI,OAAO,gBAAgB;AACvB,iBAAO,eAAe,OAAO,KAAK;AAAA,QACtC,OACK;AACD,gBAAM,YAAY,WAAW;AAAA,QACjC;AACA,eAAO;AAAA,MACX;AACA,aAAOA;AAAA,IACX,EAAE,KAAK;AACP,YAAQ,kBAAkB;AAAA;AAAA;;;ACtC1B;AAAA;AAAA;AAOA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAI,YAAY;AAChB,QAAI,kBAAkB,UAAQ;AAC9B,QAAI,OAAO,UAAQ;AACnB,QAAI,eAAe;AACnB,QAAI,QAAQ;AACZ,QAAI,oBAAoB;AACxB,YAAQ,kBAAkB,kBAAkB;AAC5C,QAAI,sBAAsB;AAC1B,YAAQ,oBAAoB,oBAAoB;AAChD,QAAI,kBAAkB;AACtB,YAAQ,gBAAgB,gBAAgB;AACxC,QAAI,oBAAoB;AACxB,YAAQ,kBAAkB,kBAAkB;AAC5C,aAAS,KAAK,MAAM,aAAa;AAC7B,UAAI,SAAS,QAAQ;AAAE,eAAO;AAAA,MAAI;AAClC,UAAI,SAAS,IAAI,eAAe,MAAM,WAAW;AACjD,aAAO,IAAI;AACX,aAAO,QAAQ;AACf,aAAO,OAAO;AAAA,IAClB;AACA,YAAQ,OAAO;AACf,aAASC,WAAU,MAAM,UAAU,aAAa;AAC5C,UAAI,SAAS,QAAQ;AAAE,eAAO;AAAA,MAAI;AAClC,UAAI,SAAS,IAAI,eAAe,MAAM,WAAW;AACjD,aAAO,SAAS,SAAU,KAAK,QAAQ;AACnC,YAAI,KAAK;AACL,uBAAa,UAAU,KAAK,IAAI;AAAA,QACpC,OACK;AACD,cAAI;AACA,mBAAO,QAAQ;AACf,yBAAa,UAAU,MAAM,MAAM;AAAA,UACvC,SACO,cAAP;AACI,yBAAa,UAAU,cAAc,IAAI;AAAA,UAC7C;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AACA,YAAQ,YAAYA;AACpB,QAAI,iBAAgC,WAAY;AAC5C,eAASC,gBAAe,MAAM,aAAa;AACvC,YAAI,SAAS,QAAQ;AAAE,iBAAO;AAAA,QAAI;AAClC,aAAK,OAAO;AACZ,aAAK,cAAc,CAAC;AACpB,aAAK,OAAO;AACZ,YAAI,aAAa;AACb,eAAK,cAAc;AAAA,QACvB;AACA,aAAK,gBAAgB;AACrB,aAAK,oBAAoB;AAAA,MAC7B;AACA,MAAAA,gBAAe,qBAAqB,SAAU,KAAK;AAC/C,YAAI,SAAS,CAAC;AACd,YAAI,gBAAgB;AACpB,iBAAS,WAAW,GAAG,WAAW,IAAI,QAAQ,YAAY;AACtD,cAAI,gBAAgB,IAAI;AACxB,cAAI,WAAW,KAAK,kBAAkB,OAAO,IAAI,WAAW,OAAO,QAAQ,cAAc,SAAS,GAAG;AACjG,mBAAO,KAAK,aAAa;AACzB,4BAAgB;AAAA,UACpB,OACK;AACD,6BAAiB;AAAA,UACrB;AAAA,QACJ;AACA,YAAI,cAAc,SAAS,GAAG;AAC1B,iBAAO,KAAK,aAAa;AAAA,QAC7B;AACA,eAAO;AAAA,MACX;AACA,aAAO,eAAeA,gBAAe,WAAW,aAAa;AAAA,QACzD,KAAK,WAAY;AACb,kBAAQ,IAAI,qDAAqD;AACjE,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,MAClB,CAAC;AACD,aAAO,eAAeA,gBAAe,WAAW,oBAAoB;AAAA,QAChE,KAAK,WAAY;AACb,kBAAQ,IAAI,kEAAkE;AAC9E,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,MAClB,CAAC;AACD,MAAAA,gBAAe,UAAU,MAAM,WAAY;AACvC,aAAK,aAAa;AAClB,aAAK,kBAAkB;AACvB,eAAO,KAAK;AAAA,MAChB;AACA,MAAAA,gBAAe,UAAU,WAAW,SAAU,UAAU;AACpD,YAAI,QAAQ;AACZ,YAAI;AACA,eAAK,kBAAkB,WAAY;AAC/B,gBAAI;AACA,oBAAM,kBAAkB;AACxB,2BAAa,UAAU,MAAM,MAAM,IAAI;AAAA,YAC3C,SACO,WAAP;AACI,2BAAa,UAAU,WAAW,IAAI;AAAA,YAC1C;AAAA,UACJ,CAAC;AAAA,QACL,SACO,aAAP;AACI,uBAAa,UAAU,aAAa,IAAI;AAAA,QAC5C;AAAA,MACJ;AACA,MAAAA,gBAAe,UAAU,UAAU,WAAY;AAC3C,aAAK,oBAAoB;AAAA,MAC7B;AACA,MAAAA,gBAAe,UAAU,kBAAkB,WAAY;AACnD,YAAI,SAAS,QAAQ,IAAI,SAAS,QAAQ,IAAI,SAC1C,QAAQ,IAAI,SAAS,QAAQ,IAAI,SAC7B,OAAO,KAAK,QAAQ,QAAQ,IAAI,YAC5B;AACZ,YAAI,aAAaA,gBAAe,mBAAmB,MAAM,EAAE,IAAI,SAAU,OAAO;AAAE,iBAAO,MAAM,QAAQ,OAAO,GAAG;AAAA,QAAG,CAAC;AACrH,YAAI,MAAM,WAAW,MAAM;AAC3B,aAAK,SAAS,EAAE,MAAM,YAAY,IAAS;AAAA,MAC/C;AACA,MAAAA,gBAAe,UAAU,sBAAsB,WAAY;AACvD,YAAI;AACA,eAAK,WAAW,MAAM,YAAY,KAAK,WAAW;AAClD,cAAI,MAAM,EAAE,UAAU,OAAO;AAC7B,cAAI,KAAK,YAAY,eAAe,MAAM,GAAG;AACzC,gBAAI,OAAO,KAAK,YAAY;AAAA,UAChC;AACA,eAAK,cAAc,KAAK,UAAU,KAAK,MAAM,GAAG;AAAA,QACpD,SACO,iBAAP;AACI,gBAAM,IAAI,kBAAkB,gBAAgB,eAAe;AAAA,QAC/D;AAAA,MACJ;AACA,MAAAA,gBAAe,UAAU,oBAAoB,WAAY;AACrD,YAAI;AACA,cAAI,iBAAiB,KAAK,aAAa,KAAK,QAAQ;AACpD,cAAI,eAAe,WAAW,GAAG;AAC7B,iBAAK,OAAO;AAAA,UAChB,OACK;AACD,gBAAI,WAAW,UAAU,OAAO,cAAc,EAAE,SAAS;AACzD,gBAAI,CAAC,aAAa,eAAe,QAAQ,GAAG;AAExC,yBAAW;AAAA,YACf;AACA,iBAAK,OAAO,aAAa,OAAO,gBAAgB,QAAQ;AAAA,UAC5D;AAAA,QACJ,SACO,eAAP;AACI,gBAAM,IAAI,gBAAgB,cAAc,aAAa;AAAA,QACzD;AAAA,MACJ;AACA,MAAAA,gBAAe,UAAU,sBAAsB,WAAY;AACvD,YAAI;AACA,eAAK,WAAW,KAAK,QAAQ;AAAA,QACjC,SACO,iBAAP;AACI,gBAAM,IAAI,kBAAkB,gBAAgB,eAAe;AAAA,QAC/D;AAAA,MACJ;AACA,MAAAA,gBAAe,UAAU,eAAe,WAAY;AAChD,YAAI;AACA,cAAI,gBAAgB,gBAAgB,UAAU,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,GAAG,EAAE,OAAO,UAAU,CAAC;AAC7H,eAAK,iBAAiB,cAAc;AAAA,QACxC,SACO,aAAP;AACI,gBAAM,IAAI,oBAAoB,kBAAkB,WAAW;AAAA,QAC/D;AAAA,MACJ;AACA,MAAAA,gBAAe,UAAU,oBAAoB,SAAU,UAAU;AAC7D,YAAI,QAAQ;AACZ,YAAI;AACA,cAAI,gBAAgB,gBAAgB,MAAM,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,GAAG,EAAE,OAAO,UAAU,CAAC;AACzH,wBAAc,GAAG,QAAQ,SAAU,MAAM;AACrC,kBAAM,iBAAiB;AACvB,yBAAa,QAAQ;AAAA,UACzB,CAAC;AAAA,QACL,SACO,aAAP;AACI,gBAAM,IAAI,oBAAoB,kBAAkB,WAAW;AAAA,QAC/D;AAAA,MACJ;AACA,aAAOA;AAAA,IACX,EAAE;AACF,YAAQ,iBAAiB;AAAA;AAAA;;;AChMzB;AAAA;AAAA;AAEA,QAAM,YAAY;AAClB,QAAM,UAAU;AAEhB,aAAS,gBAAiB,OAAO;AAC/B,YAAM,SAAS,MAAM,MAAM,SAAS;AACpC,UAAI,CAAC,QAAQ;AACX,eAAO;AAAA,MACT;AACA,YAAM,aAAa,OAAO;AAC1B,UAAI,YAAY,MAAM,SAAS;AAC/B,aAAO,MAAM,eAAe,QAAQ,MAAM,eAAe,MAAM;AAC7D;AAAA,MACF;AACA,aAAO,MAAM,UAAU,YAAY,YAAY,CAAC;AAAA,IAClD;AAEA,aAAS,OAAQ,KAAK,MAAM;AAC1B,UAAI,KAAK;AACP,eAAO,OAAO;AAAA,MAChB,OAAO;AACL,cAAM;AAAA,MACR;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,iBAAkB,MAAM;AAC/B,aAAO,SAAU,MAAM;AACrB,eAAO,KAAK,OAAO,CAAC,MAAM;AAAA,MAC5B;AAAA,IACF;AAEA,aAAS,kBAAmBC,QAAO;AACjC,YAAM,eAAeA,OAAM,QAAQ,OAAO;AAE1C,UAAI,iBAAiB,IAAI;AACvB,eAAOA;AAAA,MACT;AAEA,aAAOA,OAAM,MAAM,GAAG,YAAY;AAAA,IACpC;AAEA,aAAS,cAAe,OAAO,OAAO;AACpC,YAAM,aAAa,CAAC;AACpB,UAAI;AACJ,UAAI;AAEJ,YAAM,eAAe,MAAM,MAAM,MAAM,UAAU,MAAM,OACnD,MAAM,aACN;AAEJ,aAAQ,qBAAqB,aAAa,KAAK,KAAK,GAAI;AACtD,cAAM,SAAS,mBAAmB,MAAM;AACxC,cAAM,WAAW,mBAAmB;AAEpC,eAAQ,iBAAiB,MAAM,eAAe,KAAK,QAAQ,GAAI;AAC7D,cAAI,QAAQ;AACZ,cAAI,aAAa,eAAe,MAAM;AACtC,gBAAM,YAAY,WAAW,MAAM,GAAG;AAEtC,cAAI,UAAU,SAAS,GAAG;AACxB,oBAAQ,UAAU,MAAM;AACxB,yBAAa,UAAU,KAAK,GAAG;AAAA,UACjC;AAEA,gBAAM,YAAY;AAAA,YAChB;AAAA,YACA;AAAA,YACA,YAAY,cAAc;AAAA,YAC1B,OAAO,eAAe;AAAA,YACtB,KAAK,eAAe;AAAA,YACpB,QAAQ,eAAe;AAAA,UACzB;AAEA,qBAAW,KAAK,SAAS;AAAA,QAC3B;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,aAAc;AACrB,aAAO;AAAA,IACT;AAEA,aAASC,QAAQ,KAAK,SAAS,OAAO;AAvFtC,UAAAC,KAAAC,KAAAC;AAwFE,UAAI,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG;AACvB,cAAM,IAAI,UAAU,uBAAuB;AAAA,MAC7C;AAEA,UAAI,CAAC,WAAY,OAAO,YAAY,YAAY,CAAC,OAAO,KAAK,OAAO,EAAE,QAAS;AAC7E,cAAM,IAAI,UAAU,kBAAkB;AAAA,MACxC;AAEA,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,UAAU,gBAAgB;AAAA,MACtC;AAEA,UAAI;AACJ,UAAI;AACJ,YAAM,cAAc,CAAC;AACrB,YAAM,gBAAgB,OAAO,QAAQ,gBAAgB,WACjD,iBAAiB,QAAQ,WAAW,IACpC;AACJ,YAAM,YAAY,UAAQ,CAAC,KAAK,MAAM,UAAU;AAEhD,YAAM,WAAW,gBAAgB,GAAG,EAAE,MAAM,OAAO;AACnD,YAAMJ,SAAQ,kBAAkB,QAAQ,EAAE,OAAO,aAAa,EAAE,OAAO,SAAS;AAEhF,UAAI,eAAe;AACnB,UAAI,SAAS;AACb,YAAMK,0BAAuBH,MAAA,QAAQ,yBAAR,gBAAAA,IAA8B,IAAI,SAAU,MAAM;AAC7E,eAAO,KAAK,KAAK;AAAA,MACnB,OAAM,CAAC;AACP,YAAM,yBAAuBC,MAAA,QAAQ,yBAAR,gBAAAA,IAA8B,IAAI,SAAU,OAAO;AAC9E,eAAO,MAAM,KAAK;AAAA,MACpB,OAAM,CAAC;AACP,YAAM,wBAAsBC,MAAA,QAAQ,wBAAR,gBAAAA,IAA6B,IAAI,SAAU,OAAO;AAC5E,eAAO,MAAM,KAAK;AAAA,MACpB,OAAM,CAAC;AAEP,UAAI,OAAO;AACX,UAAI,SAAS;AACb,UAAI,SAAS;AACb,YAAM,WAAW,CAAC;AAClB,UAAI,QAAQ;AACZ,YAAM,QAAQ,CAAC;AACf,YAAM,aAAa,CAAC;AACpB,UAAI,SAAS;AAEb,UAAIJ,OAAM,WAAW,GAAG;AACtB,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT,MAAM;AAAA,QACR;AAAA,MACF;AAGA,cAAQA,OAAM,MAAM;AACpB,YAAM,aAAa,CAAC;AACpB,YAAM,cAAc,CAAC;AACrB,aAAO;AACP,eAAS;AAET,YAAM,aAAa,MAAM,MAAM,QAAQ,YAAY;AACnD,UAAI,cAAc,QAAQ,cAAc;AACtC,gBAAQ,WAAW;AAEnB,iBAASA,OAAM,MAAM;AACrB,eAAO,WAAW,UAAa,CAAC,OAAO,KAAK,GAAG;AAC7C,mBAASA,OAAM,MAAM;AAAA,QACvB;AACA,YAAI,CAAC,QAAQ;AACX,mBAAS;AAAA,QACX;AAEA,4BAAoB,QAAQ,SAAU,UAAU,OAAO;AACrD,gBAAM,YAAY,WAAW,QAAQ,MAAM;AAC3C,qBAAW,YAAY;AAAA,QACzB,CAAC;AAAA,MACH,OAAO;AACL,iBAAS;AACT,gBAAQ;AAER,4BAAoB,QAAQ,SAAU,UAAU;AAC9C,qBAAW,YAAY;AAAA,QACzB,CAAC;AAAA,MACH;AAEA,YAAM,cAAc,OAAO,MAAM,QAAQ,aAAa;AACtD,UAAI,aAAa;AACf,QAAAK,sBAAqB,QAAQ,SAAU,UAAU,OAAO;AACtD,gBAAM,YAAY,YAAY,QAAQ,MAAM;AAC5C,sBAAY,YAAY;AAAA,QAC1B,CAAC;AAAA,MACH,OAAO;AACL,QAAAA,sBAAqB,QAAQ,SAAU,UAAU;AAC/C,sBAAY,YAAY;AAAA,QAC1B,CAAC;AAAA,MACH;AAEA,iBAAW,KAAK,GAAG,cAAc,QAAQ;AAAA,QACvC,YAAY,MAAM;AAAA,QAClB,gBAAgB,MAAM;AAAA,MACxB,CAAC,CAAC;AAGF,MAAAL,OAAM,QAAQ,SAAU,MAAM;AAC5B,YAAI,QAAQ,cAAc;AACxB,gBAAM,aAAa,QAAQ,aAAa,KAAK,IAAI;AAEjD,cAAI,YAAY;AACd,oCAAwB,WAAW;AAEnC;AAAA,UACF;AAEA,cAAI,uBAAuB;AACzB,wBAAY,yBAAyB,OAAO,YAAY,wBAAwB,IAAI;AAEpF;AAAA,UACF;AAAA,QACF;AAEA,YAAI;AAGJ,cAAM,aAAa,KAAK,MAAM,MAAM,KAAK;AACzC,YAAI,YAAY;AACd,yBAAe;AACf,mBAAS;AACT,mBAAS,OAAO,QAAQ,IAAI;AAE5B,gBAAM,OAAO;AAAA,YACX,OAAO,WAAW;AAAA,YAClB,MAAM,WAAW;AAAA,UACnB;AAEA,gBAAM,KAAK,IAAI;AAEf;AAAA,QACF;AAEA,cAAM,iBAAiB,cAAc,MAAM;AAAA,UACzC,YAAY,MAAM;AAAA,UAClB,gBAAgB,MAAM;AAAA,QACxB,CAAC;AAED,YAAI,eAAe,SAAS,GAAG;AAC7B,mBAAS;AACT,6BAAmB;AACnB,yBAAe;AAAA,QACjB;AAEA,cAAM,UAAU,KAAK,MAAM,YAAY,cAAc;AAErD,YAAI,kBAAkB;AACpB,mBAAS,OAAO,QAAQ,IAAI;AAE5B;AAAA,QACF;AAEA,YAAI,cAAc;AAChB,gBAAM,MAAM,SAAS,GAAG,OAAO,OAAO,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI;AACxE,mBAAS,OAAO,QAAQ,IAAI;AAE5B;AAAA,QACF;AAEA,YAAI,QAAQ;AACV,iBAAO,OAAO,MAAM,IAAI;AAAA,QAC1B,OAAO;AACL,mBAAS,OAAO,QAAQ,IAAI;AAAA,QAC9B;AAAA,MACF,CAAC;AAED,UAAI,QAAQ,yBAAyB,MAAM,WAAW,GAAG;AACvD,cAAM,iBAAiB,OAAO,MAAM,QAAQ,qBAAqB;AACjE,YAAI,gBAAgB;AAClB,gBAAM,WAAW,eAAe;AAChC,gBAAM,KAAK;AAAA,YACT,OAAO;AAAA,YACP,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAEA,aAAQ,gBAAgB,MAAM,SAAS,KAAK,GAAG,GAAI;AACjD,iBAAS,KAAK,cAAc,EAAE;AAAA,MAChC;AAGA,YAAM,cAAc,IAAI,MAAM,QAAQ,aAAa;AACnD,UAAI,aAAa;AACf,iBAAS,CAAC;AACV,6BAAqB,QAAQ,SAAU,UAAU,OAAO;AACtD,gBAAM,YAAY,YAAY,QAAQ,MAAM;AAC5C,iBAAO,YAAY;AAAA,QACrB,CAAC;AAAA,MACH,OAAO;AACL,iBAAS;AAAA,MACX;AAEA,YAAM,QAAQ,SAAU,MAAM;AAC5B,aAAK,OAAO,gBAAgB,KAAK,IAAI;AAAA,MACvC,CAAC;AAED,YAAM,MAAM;AAAA,QACV,GAAG;AAAA,QACH,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA,MAAM,OAAO,gBAAgB,IAAI,IAAI;AAAA,QACrC,QAAQ,SAAS,gBAAgB,MAAM,IAAI;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL;AAEA,aAAO;AAAA,IACT;AAEA,WAAO,UAAUC;AAAA;AAAA;;;AC3TjB;AAAA;AAAA;AAEA,QAAM,YAAY;AAElB,aAASK,OAAM,OAAO,QAAQ;AAC5B,aAAO,MACJ,IAAI,SAAU,KAAK;AAClB,eAAO,IAAI,KAAK;AAAA,MAClB,CAAC,EACA,OAAO,SAAU,KAAK;AACrB,eAAO,IAAI;AAAA,MACb,CAAC,EACA,KAAK,MAAM;AAAA,IAChB;AAEA,aAAS,cAAe,cAAc,cAAc;AAClD,UAAI,CAAC,cAAc;AACjB,eAAO;AAAA,MACT;AAEA,YAAM,wBAAwBA,OAAK,cAAc,GAAG;AAEpD,UAAI,CAAC,cAAc;AACjB,eAAO,IAAI,OAAO,eAAe,wBAAwB,gBAAgB,GAAG;AAAA,MAC9E;AAEA,aAAO,aAAa,qBAAqB;AAAA,IAC3C;AAEA,aAAS,uBAAwB,eAAe,4BAA4B;AAC1E,UAAI,CAAC,eAAe;AAClB,eAAO;AAAA,MACT;AAEA,YAAM,QAAQ,6BAA6B,MAAM;AACjD,aAAO,IAAI,OAAO,qCAAqCA,OAAK,eAAe,GAAG,IAAI,kBAAkB,KAAK;AAAA,IAC3G;AAEA,aAAS,mBAAoB,kBAAkB;AAC7C,UAAI,CAAC,kBAAkB;AAErB,eAAO;AAAA,MACT;AAEA,YAAM,iBAAiBA,OAAK,kBAAkB,GAAG;AACjD,aAAO,IAAI,OAAO,MAAM,iBAAiB,yBAAyB,iBAAiB,QAAQ,IAAI;AAAA,IACjG;AAEA,WAAO,UAAU,SAAU,SAAS;AAClC,gBAAU,WAAW,CAAC;AACtB,YAAM,UAAU,cAAc,QAAQ,cAAc,QAAQ,YAAY;AACxE,YAAM,mBAAmB,uBAAuB,QAAQ,eAAe,QAAQ,0BAA0B;AACzG,YAAM,eAAe,mBAAmB,QAAQ,gBAAgB;AAEhE,aAAO;AAAA,QACL,OAAO;AAAA,QACP,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ;AAAA,IACF;AAAA;AAAA;;;AC5DA;AAAA;AAAA;AAEA,QAAM,EAAE,UAAU,IAAI,UAAQ;AAC9B,QAAMC,UAAS;AACf,QAAM,QAAQ;AAEd,aAAS,WAAY,SAAS;AAC5B,gBAAU;AAAA,QACR,eAAe;AAAA,QACf,sBAAsB,CAAC,QAAQ,SAAS,SAAS;AAAA,QACjD,kBAAkB;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,eAAe,CAAC,GAAG;AAAA,QACnB,cAAc,CAAC,mBAAmB,iBAAiB;AAAA,QACnD,cAAc;AAAA,QACd,eAAe;AAAA,QACf,sBAAsB,CAAC,UAAU,MAAM;AAAA,QACvC,MAAM,WAAY;AAAA,QAAC;AAAA,QACnB,cAAc;AAAA,QACd,qBAAqB;AAAA,QACrB,GAAG;AAAA,MACL;AAEA,UAAI,OAAO,QAAQ,kBAAkB,UAAU;AAC7C,gBAAQ,gBAAgB,IAAI,OAAO,QAAQ,aAAa;AAAA,MAC1D;AAEA,UAAI,OAAO,QAAQ,yBAAyB,UAAU;AACpD,gBAAQ,uBAAuB,QAAQ,qBAAqB,MAAM,GAAG;AAAA,MACvE;AAEA,UAAI,OAAO,QAAQ,qBAAqB,UAAU;AAChD,gBAAQ,mBAAmB,QAAQ,iBAAiB,MAAM,GAAG;AAAA,MAC/D;AAEA,UAAI,OAAO,QAAQ,kBAAkB,UAAU;AAC7C,gBAAQ,gBAAgB,QAAQ,cAAc,MAAM,GAAG;AAAA,MACzD;AAEA,UAAI,OAAO,QAAQ,iBAAiB,UAAU;AAC5C,gBAAQ,eAAe,QAAQ,aAAa,MAAM,GAAG;AAAA,MACvD;AAEA,UAAI,OAAO,QAAQ,iBAAiB,UAAU;AAC5C,gBAAQ,eAAe,IAAI,OAAO,QAAQ,YAAY;AAAA,MACxD;AAEA,UAAI,OAAO,QAAQ,kBAAkB,UAAU;AAC7C,gBAAQ,gBAAgB,IAAI,OAAO,QAAQ,aAAa;AAAA,MAC1D;AAEA,UAAI,OAAO,QAAQ,yBAAyB,UAAU;AACpD,gBAAQ,uBAAuB,QAAQ,qBAAqB,MAAM,GAAG;AAAA,MACvE;AAEA,UAAI,OAAO,QAAQ,iBAAiB,UAAU;AAC5C,gBAAQ,eAAe,IAAI,OAAO,QAAQ,YAAY;AAAA,MACxD;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,0BAA2B,SAAS;AAC3C,gBAAU,WAAW,OAAO;AAC5B,YAAM,MAAM,MAAM,OAAO;AAEzB,aAAO,IAAI,UAAU;AAAA,QACnB,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,UAAW,MAAM,KAAK,IAAI;AACxB,cAAI;AAEJ,cAAI;AACF,qBAASA,QAAO,KAAK,SAAS,GAAG,SAAS,GAAG;AAC7C,eAAG,MAAM,MAAM;AAAA,UACjB,SAAS,KAAP;AACA,gBAAI,QAAQ,SAAS,MAAM;AACzB,iBAAG,GAAG;AAAA,YACR,OAAO;AACL,sBAAQ,KAAK,IAAI,SAAS,CAAC;AAC3B,iBAAG,MAAM,EAAE;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,aAAS,KAAM,QAAQ,SAAS;AAC9B,gBAAU,WAAW,OAAO;AAC5B,YAAM,MAAM,MAAM,OAAO;AAEzB,aAAOA,QAAO,QAAQ,SAAS,GAAG;AAAA,IACpC;AAEA,WAAO,UAAU;AACjB,WAAO,QAAQ,OAAO;AAAA;AAAA;;;ACxGtB;AAAA;AAAA;AAkBA,QAAM,EAAE,UAAU,IAAI,UAAQ;AAC9B,QAAM,EAAE,cAAc,IAAI,UAAQ;AAClC,QAAM,QAAQ,OAAO,MAAM;AAC3B,QAAM,WAAW,OAAO,SAAS;AAEjC,aAAS,UAAW,OAAO,KAAK,IAAI;AAClC,UAAI;AACJ,UAAI,KAAK,UAAU;AACjB,cAAM,MAAM,KAAK,UAAU,MAAM,KAAK;AACtC,eAAO,IAAI,MAAM,KAAK,OAAO;AAE7B,YAAI,KAAK,WAAW;AAAG,iBAAO,GAAG;AAGjC,aAAK,MAAM;AACX,aAAK,WAAW;AAAA,MAClB,OAAO;AACL,aAAK,UAAU,KAAK,UAAU,MAAM,KAAK;AACzC,eAAO,KAAK,OAAO,MAAM,KAAK,OAAO;AAAA,MACvC;AAEA,WAAK,SAAS,KAAK,IAAI;AAEvB,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAI;AACF,eAAK,MAAM,KAAK,OAAO,KAAK,EAAE,CAAC;AAAA,QACjC,SAAS,OAAP;AACA,iBAAO,GAAG,KAAK;AAAA,QACjB;AAAA,MACF;AAEA,WAAK,WAAW,KAAK,OAAO,SAAS,KAAK;AAC1C,UAAI,KAAK,YAAY,CAAC,KAAK,cAAc;AACvC,WAAG,IAAI,MAAM,wBAAwB,CAAC;AACtC;AAAA,MACF;AAEA,SAAG;AAAA,IACL;AAEA,aAAS,MAAO,IAAI;AAElB,WAAK,UAAU,KAAK,UAAU,IAAI;AAElC,UAAI,KAAK,QAAQ;AACf,YAAI;AACF,eAAK,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC;AAAA,QACrC,SAAS,OAAP;AACA,iBAAO,GAAG,KAAK;AAAA,QACjB;AAAA,MACF;AAEA,SAAG;AAAA,IACL;AAEA,aAAS,KAAM,MAAM,KAAK;AACxB,UAAI,QAAQ,QAAW;AACrB,aAAK,KAAK,GAAG;AAAA,MACf;AAAA,IACF;AAEA,aAAS,KAAM,UAAU;AACvB,aAAO;AAAA,IACT;AAEA,aAASC,OAAO,SAAS,QAAQ,SAAS;AAExC,gBAAU,WAAW;AACrB,eAAS,UAAU;AACnB,gBAAU,WAAW,CAAC;AAGtB,cAAQ,UAAU,QAAQ;AAAA,QACxB,KAAK;AAEH,cAAI,OAAO,YAAY,YAAY;AACjC,qBAAS;AACT,sBAAU;AAAA,UAEZ,WAAW,OAAO,YAAY,YAAY,EAAE,mBAAmB,WAAW,CAAC,QAAQ,OAAO,QAAQ;AAChG,sBAAU;AACV,sBAAU;AAAA,UACZ;AACA;AAAA,QAEF,KAAK;AAEH,cAAI,OAAO,YAAY,YAAY;AACjC,sBAAU;AACV,qBAAS;AACT,sBAAU;AAAA,UAEZ,WAAW,OAAO,WAAW,UAAU;AACrC,sBAAU;AACV,qBAAS;AAAA,UACX;AAAA,MACJ;AAEA,gBAAU,OAAO,OAAO,CAAC,GAAG,OAAO;AACnC,cAAQ,cAAc;AACtB,cAAQ,YAAY;AACpB,cAAQ,QAAQ;AAChB,cAAQ,qBAAqB;AAE7B,YAAM,SAAS,IAAI,UAAU,OAAO;AAEpC,aAAO,SAAS;AAChB,aAAO,YAAY,IAAI,cAAc,MAAM;AAC3C,aAAO,UAAU;AACjB,aAAO,SAAS;AAChB,aAAO,YAAY,QAAQ;AAC3B,aAAO,eAAe,QAAQ,gBAAgB;AAC9C,aAAO,WAAW;AAClB,aAAO,WAAW,SAAU,KAAK,IAAI;AAEnC,aAAK,eAAe,eAAe;AACnC,WAAG,GAAG;AAAA,MACR;AAEA,aAAO;AAAA,IACT;AAEA,WAAO,UAAUA;AAAA;AAAA;;;AC5IjB;AAAA;AACA,QAAM,EAAE,UAAU,UAAU,IAAI,UAAQ;AACxC,QAAM,EAAE,SAAS,IAAI,UAAQ;AAC7B,QAAMC,SAAQ;AAEd,QAAM,YAAY;AAElB,aAAS,kBAAmB,UAAU;AACpC,iBAAW,YAAY,CAAC;AACxB,eAAS,MAAM,SAAS,OAAO,QAAQ,IAAI;AAE3C,aAAO;AAAA,IACT;AAEA,aAAS,iBAAkB,SAAS;AAClC,gBAAU,WAAW,CAAC;AACtB,cAAQ,SAAS,QAAQ,UAAU;AACnC,cAAQ,OAAO,QAAQ,QAAQ;AAC/B,cAAQ,KAAK,QAAQ,MAAM;AAE3B,aAAO;AAAA,IACT;AAEA,mBAAe,WAAY,SAAS;AAClC,YAAM,EAAE,SAAS,MAAM,IAAI,MAAM,OAAO;AACxC,YAAM,YAAY,YAAY,QAAQ,UAAU,OAAO;AACvD,YAAM,YAAY,CAAC,QAAQ,MAAM,QAAQ,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AACtE,YAAM,UAAU,CAAC,OAAO,WAAW,SAAS,EACzC,OAAO,MAAM,SAAS;AAAA,QACrB,UAAU,CAAC,SAAS,QAAQ,MAAM,UAAU,QAAQ,QAAQ;AAAA,MAC9D,CAAC,CAAC;AAIJ,UAAI,QAAQ,MAAM;AAChB,gBAAQ,KAAK,MAAM,GAAG,MAAM,QAAQ,QAAQ,IAAI,IAAI,QAAQ,OAAO,CAAC,QAAQ,IAAI,CAAC;AAAA,MACnF;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,cAAe,YAAY,aAAa;AAC/C,YAAM,WAAW,IAAI,SAAS;AAC9B,eAAS,QAAQ,MAAM;AAAA,MAAC;AAExB,YAAM,UAAU,iBAAiB,UAAU;AAC3C,YAAM,WAAW,kBAAkB,WAAW;AAC9C,UAAI,UAAU;AAEd,iBAAW,OAAO,EAAE,KAAK,CAAC,SAAS;AACjC,YAAI,QAAQ,OAAO;AACjB,kBAAQ,MAAM,mCAAmC,KAAK,KAAK,GAAG,CAAC;AAAA,QACjE;AAEA,cAAM,cAAc,OAAO,QAAQ,WAAW,WAC1C,IAAI,OAAO,QAAQ,MAAM,IACzB,QAAQ;AACZ,cAAM,kBAAkB,cACpB,WAAS,CAAC,YAAY,KAAK,MAAM,SAAS,CAAC,IAC3C,MAAM;AAEV,cAAM,QAAQ,SAAS,OAAO,MAAM;AAAA,UAClC,KAAK,SAAS;AAAA,UACd,WAAW;AAAA,QACb,CAAC;AAED,cAAM,OACH,KAAKA,OAAM,YAAY,IAAI,CAAC,EAC5B;AAAA,UACC,IAAI,UAAU;AAAA,YACZ,UAAW,OAAO,KAAK,IAAI;AACzB,wBAAU;AACV,2BAAa,MAAM;AACjB,oBAAI,gBAAgB,KAAK,GAAG;AAC1B,2BAAS,KAAK,KAAK;AAAA,gBACrB;AACA,mBAAG;AAAA,cACL,CAAC;AAAA,YACH;AAAA,YACA,MAAO,IAAI;AACT,2BAAa,MAAM;AACjB,oBAAI,CAAC,SAAS;AACZ,2BAAS,KAAK,IAAI;AAClB,2BAAS,KAAK,OAAO;AAAA,gBACvB;AAEA,mBAAG;AAAA,cACL,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAEF,cAAM,OACH;AAAA,UACC,IAAI,UAAU;AAAA,YACZ,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,UAAW,OAAO;AAChB,wBAAU;AACV,uBAAS,KAAK,SAAS,IAAI,MAAM,KAAK,CAAC;AACvC,uBAAS,KAAK,OAAO;AAAA,YACvB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACJ,CAAC;AAED,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC7GjB;AAAA;AAEA,QAAM,MAAN,MAAS;AAAA,MAEL,YAAY,QAAQ,UAAU,WAAU;AAEpC,aAAK,kBAAkB,UAAU;AAGjC,aAAK,cAAc,CAAC,SAAS;AAC7B,aAAK,aAAa,CAAC,QAAQ;AAG3B,aAAK,MAAM;AAAA,MACf;AAAA,MAGA,OAAO,MAAM,OAAO,OAAM;AACtB,aAAK,YAAY,KAAK,KAAK;AAC3B,aAAK,WAAW,KAAK,IAAI;AAGzB,aAAK,UAAU,QAAM,KAAK;AAAA,MAC9B;AAAA,MAGA,UAAS;AACL,eAAO,KAAK;AAAA,MAChB;AAAA,MAGA,UAAU,WAAU;AAEhB,cAAM,oBAAoB,KAAK,YAAY;AAC3C,cAAM,SAAS,KAAK,IAAI,KAAK,iBAAiB,iBAAiB;AAE/D,cAAM,SAAS,KAAK,YAAY,oBAAoB,KAAK,KAAK,YAAY,oBAAoB;AAC9F,cAAM,SAAS,KAAK,WAAW,oBAAoB,KAAK,KAAK,WAAW,oBAAoB;AAG5F,cAAM,UAAU,SAAO;AAGvB,aAAK,cAAc,KAAK,YAAY,MAAM,CAAC,KAAK,eAAe;AAC/D,aAAK,aAAc,KAAK,WAAW,MAAM,CAAC,KAAK,eAAe;AAG9D,cAAM,MAAM,KAAK,KAAK,YAAU,UAAQ,GAAI;AAG5C,YAAI,MAAM,GAAG,GAAE;AACX,eAAK,MAAM;AAAA,QAGf,WAAU,CAAC,SAAS,GAAG,GAAE;AACrB,eAAK,MAAM;AAAA,QAGf,WAAU,MAAM,KAAI;AAChB,eAAK,MAAM;AAAA,QAGf,WAAU,MAAM,GAAE;AACd,eAAK,MAAM;AAAA,QAEf,OAAK;AAED,eAAK,MAAM;AAAA,QACf;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACxEjB;AAAA;AAAA,QAAM,YAAY,UAAQ;AAG1B,QAAM,WAAN,MAAc;AAAA,MAEV,YAAY,cAAa;AACrB,aAAK,SAAS;AAGd,aAAK,WAAW;AAGhB,aAAK,KAAK;AAAA,MACd;AAAA,MAGA,aAAY;AACR,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAGA,aAAK,OAAO,MAAM,OAAO;AAAA,MAC7B;AAAA,MAGA,gBAAe;AACX,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAGA,aAAK,OAAO,MAAM,OAAO;AAAA,MAC7B;AAAA,MAGA,OAAO,SAAQ;AACX,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAEA,YAAI,SAAQ;AACR,eAAK,OAAO,MAAM,WAAW;AAAA,QACjC,OAAK;AACD,eAAK,OAAO,MAAM,WAAW;AAAA,QACjC;AAAA,MACJ;AAAA,MAGA,SAAS,IAAE,MAAM,IAAE,MAAK;AACpB,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAGA,kBAAU,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,MACxC;AAAA,MAGA,eAAe,KAAG,MAAM,KAAG,MAAK;AAC5B,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAGA,aAAK,KAAK,KAAK,KAAK;AAGpB,kBAAU,WAAW,KAAK,QAAQ,IAAI,EAAE;AAAA,MAC5C;AAAA,MAGA,sBAAqB;AACjB,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAGA,kBAAU,WAAW,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE;AAG7C,kBAAU,SAAS,KAAK,QAAQ,GAAG,IAAI;AAGvC,aAAK,KAAK;AAAA,MACd;AAAA,MAGA,aAAY;AACR,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAEA,kBAAU,UAAU,KAAK,QAAQ,CAAC;AAAA,MACtC;AAAA,MAGA,YAAW;AACP,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAEA,kBAAU,UAAU,KAAK,QAAQ,CAAC;AAAA,MACtC;AAAA,MAGA,cAAa;AACT,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAEA,kBAAU,gBAAgB,KAAK,MAAM;AAAA,MACzC;AAAA,MAGA,UAAS;AACL,aAAK,OAAO,MAAM,IAAI;AACtB,aAAK;AAAA,MACT;AAAA,MAIA,MAAM,GAAG,WAAS,OAAM;AAGpB,YAAI,KAAK,aAAa,QAAQ,aAAa,OAAM;AAC7C,eAAK,OAAO,MAAM,EAAE,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC;AAAA,QAGlD,OAAK;AACD,eAAK,OAAO,MAAM,CAAC;AAAA,QACvB;AAAA,MACJ;AAAA,MAGA,aAAa,SAAQ;AACjB,YAAI,CAAC,KAAK,OAAO,OAAM;AACnB;AAAA,QACJ;AAGA,aAAK,WAAW;AAChB,YAAI,SAAQ;AACR,eAAK,OAAO,MAAM,UAAU;AAAA,QAChC,OAAK;AACD,eAAK,OAAO,MAAM,UAAU;AAAA,QAChC;AAAA,MACJ;AAAA,MAGA,QAAO;AACH,eAAQ,KAAK,OAAO,UAAU;AAAA,MAClC;AAAA,MAGA,WAAU;AAEN,eAAO,KAAK,OAAO,YAAY,KAAK,OAAO,QAAQ,KAAK;AAAA,MAC5D;AAAA,IACJ;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACjKjB;AAAA;AAGA,WAAO,UAAU,SAAS,YAAY,GAAG,SAAS,MAAK;AAEnD,UAAI,QAAQ,gBAAgB,MAAK;AAC7B,eAAO;AAAA,MACX;AAGA,eAAS,YAAY,OAAO,QAAO;AAC/B,gBAAQ,QAAQ,kBAAkB,OAAO,MAAM,CAAC,MAAM;AAAA,MAC1D;AAEA,cAAQ,MAAK;AAAA,QACT,KAAK;AACD,iBAAO,YAAY,GAAG,CAAC;AAAA,QAE3B;AACI,iBAAO;AAAA,MACf;AAAA,IACJ;AAAA;AAAA;;;ACrBA;AAAA;AACA,WAAO,UAAU,SAAS,UAAU,UAAU,SAAQ;AAElD,YAAM,eAAe,KAAK,MAAM,WAAS,QAAQ,OAAO;AACxD,YAAM,iBAAiB,QAAQ,UAAQ;AAGxC,aAAS,QAAQ,kBAAkB,OAAO,GAAG,YAAY,IAChD,QAAQ,UACR,QAAQ,oBAAoB,OAAO,GAAG,cAAc;AAAA,IAChE;AAAA;AAAA;;;ACVA;AAAA;AAGA,WAAO,UAAU,SAAS,WAAW,GAAG,SAAS,mBAAkB;AAC/D,eAAS,MAAM,OAAO;AAClB,YAAI,mBAAmB;AACnB,iBAAO,oBAAoB,KAAK,MAAM,QAAQ,iBAAiB;AAAA,QACnE,OAAO;AACH,iBAAO;AAAA,QACX;AAAA,MACJ;AAGA,eAAS,YAAY,GAAE;AACnB,gBAAQ,QAAQ,kBAAkB,GAAG,MAAM,EAAE;AAAA,MACjD;AAGA,UAAI,IAAI,MAAM;AACV,eAAO,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,MAAM,YAAY,MAAO,IAAI,OAAQ,EAAE,CAAC,IAAI;AAAA,MAG3F,WAAW,IAAI,IAAI;AACf,eAAO,YAAY,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,MAAM,YAAY,MAAO,IAAI,EAAG,CAAC,IAAI;AAAA,MAGlF,WAAW,IAAI,IAAI;AACf,eAAO,YAAY,MAAM,CAAC,CAAC,IAAI;AAAA,MAGnC,OAAK;AACD,eAAO,YAAY,CAAC,IAAI;AAAA,MAC5B;AAAA,IACJ;AAAA;AAAA;;;ACjCA;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,sBAAsB;AAC5B,QAAM,oBAAoB;AAC1B,QAAM,qBAAqB;AAG3B,WAAO,UAAU,SAAS,iBAAiB,SAASC,SAAQ,SAAQ;AAGhE,UAAI,IAAI,QAAQ;AAGhB,YAAM,aAAa,QAAQ,cAAc;AAGzC,YAAM,cAAc,QAAQ,eAAe;AAG3C,YAAM,YAAY,QAAQ,aAAa;AAGvC,YAAM,aAAc,KAAK,MAAMA,QAAO,WAAS,GAAG,IAAI;AAGtD,YAAM,WAAWA,QAAO,YAAY,KAAK,IAAI;AAG7C,YAAM,cAAc,KAAK,OAAO,WAAWA,QAAO,aAAW,GAAI;AAGjE,YAAM,UAAU,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA,QACvC,KAAwB,UAAUA,QAAO,UAAU,OAAO;AAAA,QAE1D,YAAwB,YAAY,YAAY,SAAS,YAAY;AAAA,QACrE,OAAwB,YAAYA,QAAO,OAAO,SAAS,OAAO;AAAA,QAClE,OAAwB,YAAYA,QAAO,OAAO,SAAS,OAAO;AAAA,QAElE,KAAwB,YAAYA,QAAO,KAAK,SAAS,KAAK;AAAA,QAC9D,eAAwB,WAAWA,QAAO,KAAK,SAAS,CAAC;AAAA,QAEzD,UAAwB,YAAY,aAAa,SAAS,UAAU;AAAA,QACpE,oBAAwB,WAAW,aAAa,SAAS,CAAC;AAAA,MAC9D,CAAC;AAGD,UAAI,EAAE,QAAQ,cAAc,SAASC,QAAO,KAAI;AAE5C,YAAI,OAAO,QAAQ,SAAS,aAAa;AACrC,iBAAO,QAAQ;AAAA,QACnB;AAGA,eAAOA;AAAA,MACX,CAAC;AAGD,YAAM,aAAa,KAAK,IAAI,GAAGD,QAAO,WAAW,aAAa,CAAC,IAAG,CAAC;AACnE,YAAM,aAAa,KAAK,MAAM,aAAa,CAAC;AAG5C,cAAQ,QAAQ,OAAO;AAAA,QAGnB,KAAK;AACD,cAAK,aAAa,IAAK,IAAI,OAAO,UAAU,IAAI,IAAI;AACpD;AAAA,QAGJ,KAAK;AACD,cAAK,aAAa,IAAK,IAAI,OAAO,UAAU,IAAI,IAAI;AACpD;AAAA,QAGJ,KAAK;AAAA,QACL;AACI;AAAA,MACR;AAEA,aAAO;AAAA,IACX;AAAA;AAAA;;;AC/EA;AAAA;AACA,aAAS,YAAY,GAAG,cAAa;AACjC,UAAI,OAAO,MAAM,eAAe,MAAM,MAAK;AACvC,eAAO;AAAA,MACX,OAAK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,WAAO,UAAU;AAAA,MAEb,OAAO,SAASE,OAAM,YAAY,QAAO;AAGrC,cAAM,UAAU,CAAC;AAGjB,cAAM,MAAM,OAAO,OAAO,CAAC,GAAG,QAAQ,UAAU;AAGhD,gBAAQ,eAAe,MAAQ,YAAY,IAAI,KAAK,EAAE;AAGtD,gBAAQ,SAAS,YAAY,IAAI,QAAQ,QAAQ,MAAM;AAGvD,gBAAQ,WAAW,YAAY,IAAI,UAAU,IAAI;AAGjD,gBAAQ,kBAAkB,YAAY,IAAI,iBAAiB,KAAK;AAGhE,gBAAQ,iBAAiB,YAAY,IAAI,gBAAgB,KAAK;AAG9D,gBAAQ,UAAU,YAAY,IAAI,SAAS,EAAE;AAG7C,gBAAQ,QAAQ,YAAY,IAAI,OAAO,MAAM;AAG7C,gBAAQ,aAAa,YAAY,IAAI,YAAY,KAAK;AAGtD,gBAAQ,WAAW,YAAY,IAAI,UAAU,KAAK;AAGlD,gBAAQ,UAAU,YAAY,IAAI,SAAS,EAAE;AAG7C,gBAAQ,kBAAkB,YAAY,IAAI,iBAAiB,GAAG;AAC9D,gBAAQ,oBAAoB,YAAY,IAAI,mBAAmB,GAAG;AAGlE,gBAAQ,SAAS,YAAY,IAAI,QAAQ,gEAAgE;AAGzG,gBAAQ,aAAa,YAAY,IAAI,YAAY,IAAI;AAGrD,gBAAQ,cAAc,YAAY,IAAI,aAAa,IAAI;AAGvD,gBAAQ,YAAY,YAAY,IAAI,WAAW,IAAI;AAGnD,gBAAQ,kBAAkB,YAAY,IAAI,WAAW,EAAE;AAGvD,gBAAQ,wBAAwB,YAAY,IAAI,uBAAuB,KAAK;AAG5E,gBAAQ,8BAA8B,YAAY,IAAI,6BAA6B,KAAK;AAGxF,gBAAQ,oBAAoB,YAAY,IAAI,mBAAmB,IAAI;AAGnE,gBAAQ,cAAc,YAAY,IAAI,aAAa,KAAK;AAGxD,gBAAQ,iBAAiB,YAAY,IAAI,gBAAgB,GAAI;AAG7D,gBAAQ,cAAc,YAAY,IAAI,aAAa,KAAK;AAGxD,gBAAQ,cAAc,YAAY,IAAI,aAAa,KAAK;AAGxD,gBAAQ,cAAc,YAAY,IAAI,aAAa,KAAK;AAGxD,gBAAQ,eAAe,YAAY,IAAI,cAAc,KAAK;AAE1D,eAAO;AAAA,MACX;AAAA,MAGA,sBAAsB,SAAS,qBAAqB,SAAQ;AAExD,gBAAQ,oBAAoB,QAAQ,gBAAgB,OAAO,QAAQ,UAAU,CAAC;AAC9E,gBAAQ,sBAAsB,QAAQ,kBAAkB,OAAO,QAAQ,UAAU,CAAC;AAGlF,gBAAQ,kBAAkB,QAAQ,cAAc,YAAY,QAAQ,iBAAiB,KAAK,IAAI;AAE9F,eAAO;AAAA,MACX;AAAA,IACJ;AAAA;AAAA;;;AC7GA;AAAA;AAAA,QAAM,OAAO;AACb,QAAM,YAAY;AAClB,QAAM,aAAa;AACnB,QAAMC,YAAW;AACjB,QAAM,gBAAgB,UAAQ;AAG9B,WAAO,UAAU,MAAM,mBAAmB,cAAa;AAAA,MAEnD,YAAY,SAAQ;AAChB,cAAM;AAGN,aAAK,UAAUA,UAAS,qBAAqB,OAAO;AAGpD,aAAK,WAAY,KAAK,QAAQ,WAAY,KAAK,QAAQ,WAAW,IAAI,UAAU,KAAK,QAAQ,MAAM;AAGnG,aAAK,QAAQ;AAGb,aAAK,aAAa;AAGlB,aAAK,QAAQ;AAGb,aAAK,kBAAkB;AAGvB,aAAK,YAAY;AAGjB,aAAK,WAAW;AAGhB,aAAK,aAAa,KAAK,IAAI;AAG3B,aAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,iBAAiB,GAAG,CAAC;AAGtD,aAAK,UAAU,CAAC;AAGhB,aAAK,WAAW;AAGhB,aAAK,YAAa,OAAO,KAAK,QAAQ,WAAW,aAAc,KAAK,QAAQ,SAAS;AAAA,MACzF;AAAA,MAGA,OAAO,iBAAe,OAAM;AAGxB,cAAMC,UAAS;AAAA,UACX,UAAU,KAAK,YAAY;AAAA,UAC3B,KAAK,KAAK,IAAI,QAAQ;AAAA,UACtB,WAAW,KAAK;AAAA,UAChB,UAAU,KAAK;AAAA,UACf,OAAO,KAAK;AAAA,UACZ,OAAO,KAAK;AAAA,UACZ,UAAU,KAAK,SAAS,SAAS;AAAA,QACrC;AAGA,YAAI,KAAK,QAAQ,uBAAsB;AACnC,eAAK,UAAU;AAAA,QACnB;AAGA,cAAM,IAAI,KAAK,UAAU,KAAK,SAASA,SAAQ,KAAK,OAAO;AAE3D,cAAM,cAAc,kBAAkB,KAAK,QAAQ,eAE3C,KAAK,QAAQ,eAAe,CAAC,KAAK,SAAS,MAAM;AAGzD,YAAI,eAAe,KAAK,mBAAmB,GAAE;AAEzC,eAAK,KAAK,YAAY;AAGtB,eAAK,SAAS,SAAS,GAAG,IAAI;AAG9B,eAAK,SAAS,MAAM,CAAC;AAGrB,eAAK,SAAS,WAAW;AAGzB,eAAK,kBAAkB;AAGvB,eAAK,aAAa,KAAK,IAAI;AAG3B,eAAK,KAAK,aAAa;AAAA,QAC3B;AAAA,MACJ;AAAA,MAGA,MAAM,OAAO,YAAY,SAAQ;AAE7B,aAAK,QAAQ,cAAc;AAC3B,aAAK,QAAS,OAAO,UAAU,eAAe,SAAS,IAAK,QAAQ;AAGpE,aAAK,aAAc,cAAc;AAGjC,aAAK,UAAU,WAAW,CAAC;AAG3B,aAAK,YAAY,KAAK,IAAI;AAG1B,aAAK,WAAW;AAGhB,aAAK,kBAAkB;AAGvB,aAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,iBAAiB,KAAK,WAAW,KAAK,KAAK;AAG5E,aAAK,WAAW;AAGhB,aAAK,KAAK,SAAS,OAAO,UAAU;AAAA,MACxC;AAAA,MAGA,OAAM;AAEF,aAAK,WAAW;AAGhB,aAAK,WAAW,KAAK,IAAI;AAGzB,aAAK,KAAK,QAAQ,KAAK,OAAO,KAAK,KAAK;AAAA,MAC5C;AAAA,MAKA,OAAO,MAAM,OAAO,CAAC,GAAE;AAGnB,YAAI,OAAO,SAAS,UAAU;AAE1B,eAAK,QAAQ;AAGb,eAAK,IAAI,OAAO,KAAK,IAAI,GAAG,MAAM,KAAK,KAAK;AAAA,QAChD;AAKA,cAAM,eAAgB,OAAO,SAAS,WAAY,OAAO,SAAS,CAAC;AAGnE,aAAK,KAAK,UAAU,KAAK,OAAO,KAAK,KAAK;AAG1C,mBAAW,OAAO,aAAY;AAC1B,eAAK,QAAQ,OAAO,YAAY;AAAA,QACpC;AAGA,YAAI,KAAK,SAAS,KAAK,SAAS,KAAK,KAAK,QAAQ,gBAAgB;AAC9D,eAAK,KAAK;AAAA,QACd;AAAA,MACJ;AAAA,MAGA,cAAa;AAET,YAAI,WAAY,KAAK,QAAM,KAAK;AAIhC,YAAI,KAAK,QAAQ,6BAA4B;AACzC,sBAAY,KAAK,QAAM,KAAK,eAAa,KAAK,QAAM,KAAK;AAAA,QAC7D;AAGA,YAAI,MAAM,QAAQ,GAAE;AAChB,qBAAY,KAAK,WAAW,KAAK,QAAQ,cAAe,IAAM;AAAA,QAClE;AAGA,mBAAW,KAAK,IAAI,KAAK,IAAI,UAAU,CAAG,GAAG,CAAG;AAEhD,eAAO;AAAA,MACX;AAAA,MAKA,UAAU,OAAO,GAAG,OAAO,CAAC,GAAE;AAG1B,YAAI,OAAO,SAAS,UAAU;AAC1B,eAAK,OAAO,KAAK,QAAQ,GAAG,IAAI;AAAA,QAGpC,OAAK;AACD,eAAK,OAAO,KAAK,QAAQ,MAAM,IAAI;AAAA,QACvC;AAAA,MACJ;AAAA,MAGA,WAAU;AACN,eAAO,KAAK;AAAA,MAChB;AAAA,MAGA,SAAS,OAAM;AACX,YAAI,OAAO,UAAU,eAAe,SAAS,GAAE;AAC3C,eAAK,QAAQ;AAAA,QACjB;AAAA,MACJ;AAAA,MAGA,YAAW;AAEP,aAAK,IAAI,OAAO,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,KAAK;AAAA,MACtD;AAAA,IACJ;AAAA;AAAA;;;ACzOA;AAAA;AAAA,QAAM,cAAc;AACpB,QAAMC,YAAW;AAGjB,WAAO,UAAU,MAAM,kBAAkB,YAAW;AAAA,MAEhD,YAAY,SAAS,QAAO;AACxB,cAAMA,UAAS,MAAM,SAAS,MAAM,CAAC;AAGrC,aAAK,QAAQ;AAGb,YAAI,KAAK,QAAQ,eAAe,KAAK,SAAS,MAAM,MAAM,OAAM;AAC5D,eAAK,QAAQ,oBAAoB;AAAA,QACrC;AAGA,aAAK,iBAAkB,KAAK,SAAS,MAAM,IAAI,KAAK,QAAQ,eAAe,KAAK,QAAQ;AAGxF,aAAK,iBAAiB;AAAA,MAC1B;AAAA,MAGA,SAAQ;AAEJ,YAAI,KAAK,OAAM;AACX,uBAAa,KAAK,KAAK;AACvB,eAAK,QAAQ;AAAA,QACjB;AAGA,cAAM,OAAO;AAGb,YAAI,KAAK,QAAQ,eAAe,KAAK,SAAS,MAAM,MAAM,OAAM;AAC5D,eAAK,SAAS,QAAQ;AAAA,QAC1B;AAGA,aAAK,QAAQ,WAAW,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,cAAc;AAAA,MACvE;AAAA,MAEA,OAAO,SAAS,SAAQ;AAEpB,YAAI,CAAC,KAAK,OAAO;AACb;AAAA,QACJ;AAEA,cAAM,OAAO,SAAS,OAAO;AAI7B,YAAI,KAAK,QAAQ,qBAAsB,KAAK,aAAa,KAAK,QAAQ,eAAa,IAAK,KAAK,IAAI,GAAE;AAE/F,eAAK,OAAO;AAAA,QAChB;AAAA,MACJ;AAAA,MAGA,MAAM,OAAO,YAAY,SAAQ;AAE7B,YAAI,KAAK,QAAQ,gBAAgB,SAAS,KAAK,SAAS,MAAM,MAAM,OAAM;AACtE;AAAA,QACJ;AAGA,YAAI,KAAK,mBAAmB,QAAQ,KAAK,QAAQ,cAAa;AAC1D,eAAK,iBAAiB,KAAK,KAAK,KAAK,IAAI;AACzC,kBAAQ,KAAK,UAAU,KAAK,cAAc;AAC1C,kBAAQ,KAAK,WAAW,KAAK,cAAc;AAAA,QAC/C;AAGA,aAAK,SAAS,WAAW;AAGzB,YAAI,KAAK,QAAQ,eAAe,MAAK;AACjC,eAAK,SAAS,OAAO,KAAK;AAAA,QAC9B;AAGA,YAAI,KAAK,QAAQ,aAAa,OAAM;AAChC,eAAK,SAAS,aAAa,KAAK;AAAA,QACpC;AAGA,cAAM,MAAM,OAAO,YAAY,OAAO;AAGtC,aAAK,OAAO;AAAA,MAChB;AAAA,MAGA,OAAM;AAEF,YAAI,CAAC,KAAK,OAAO;AACb;AAAA,QACJ;AAGA,YAAI,KAAK,gBAAe;AACpB,kBAAQ,eAAe,UAAU,KAAK,cAAc;AACpD,kBAAQ,eAAe,WAAW,KAAK,cAAc;AACrD,eAAK,iBAAiB;AAAA,QAC1B;AAGA,aAAK,OAAO;AAGZ,cAAM,KAAK;AAGX,qBAAa,KAAK,KAAK;AACvB,aAAK,QAAQ;AAGb,YAAI,KAAK,QAAQ,eAAe,MAAK;AACjC,eAAK,SAAS,OAAO,IAAI;AAAA,QAC7B;AAGA,YAAI,KAAK,QAAQ,aAAa,OAAM;AAChC,eAAK,SAAS,aAAa,IAAI;AAAA,QACnC;AAGA,aAAK,SAAS,cAAc;AAG5B,YAAI,KAAK,QAAQ,iBAAgB;AAC7B,eAAK,SAAS,SAAS,GAAG,IAAI;AAC9B,eAAK,SAAS,UAAU;AAAA,QAC5B,OAAK;AAED,eAAK,SAAS,QAAQ;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA;;;AC5IA;AAAA;AAAA,QAAM,YAAY;AAClB,QAAM,cAAc;AACpB,QAAMC,YAAW;AACjB,QAAM,gBAAgB,UAAQ;AAG9B,WAAO,UAAU,MAAM,iBAAiB,cAAa;AAAA,MAEjD,YAAY,SAAS,QAAO;AACxB,cAAM;AAGN,aAAK,OAAO,CAAC;AAGb,aAAK,UAAUA,UAAS,MAAM,SAAS,MAAM;AAG7C,aAAK,QAAQ,oBAAoB;AAGjC,aAAK,WAAY,KAAK,QAAQ,WAAY,KAAK,QAAQ,WAAW,IAAI,UAAU,KAAK,QAAQ,MAAM;AAGnG,aAAK,QAAQ;AAGb,aAAK,WAAW;AAGhB,aAAK,iBAAkB,KAAK,SAAS,MAAM,IAAI,KAAK,QAAQ,eAAe,KAAK,QAAQ;AAGxF,aAAK,gBAAgB,CAAC;AAGtB,aAAK,iBAAiB;AAAA,MAC1B;AAAA,MAGA,OAAO,OAAO,YAAY,SAAS,aAAW,CAAC,GAAE;AAG7C,cAAM,MAAM,IAAI,YAAY,OAAO;AAAA,UAC/B,CAAC;AAAA,UAGD,KAAK;AAAA,UAGL;AAAA,YACI,UAAU,KAAK;AAAA,UACnB;AAAA,UAGA;AAAA,QACJ,CAAC;AAGD,aAAK,KAAK,KAAK,GAAG;AAGlB,YAAI,KAAK,QAAQ,gBAAgB,SAAS,KAAK,SAAS,MAAM,MAAM,OAAM;AACtE,iBAAO;AAAA,QACX;AAGA,YAAI,KAAK,mBAAmB,QAAQ,KAAK,QAAQ,cAAa;AAC1D,eAAK,iBAAiB,KAAK,KAAK,KAAK,IAAI;AACzC,kBAAQ,KAAK,UAAU,KAAK,cAAc;AAC1C,kBAAQ,KAAK,WAAW,KAAK,cAAc;AAAA,QAC/C;AAGA,YAAI,CAAC,KAAK,UAAS;AAEf,cAAI,KAAK,QAAQ,eAAe,MAAK;AACjC,iBAAK,SAAS,OAAO,KAAK;AAAA,UAC9B;AAGA,cAAI,KAAK,QAAQ,aAAa,OAAM;AAChC,iBAAK,SAAS,aAAa,KAAK;AAAA,UACpC;AAGA,eAAK,QAAQ,WAAW,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,cAAc;AAAA,QACvE;AAGA,aAAK,WAAW;AAGhB,YAAI,MAAM,OAAO,YAAY,OAAO;AAGpC,aAAK,KAAK,OAAO;AAGjB,eAAO;AAAA,MACX;AAAA,MAGA,OAAO,KAAI;AAEP,cAAM,QAAQ,KAAK,KAAK,QAAQ,GAAG;AAGnC,YAAI,QAAQ,GAAE;AACV,iBAAO;AAAA,QACX;AAGA,aAAK,KAAK,OAAO,OAAO,CAAC;AAGzB,aAAK,OAAO;AAGZ,aAAK,SAAS,QAAQ;AACtB,aAAK,SAAS,YAAY;AAE1B,eAAO;AAAA,MACX;AAAA,MAGA,SAAQ;AAEJ,YAAI,KAAK,OAAM;AACX,uBAAa,KAAK,KAAK;AACvB,eAAK,QAAQ;AAAA,QACjB;AAGA,aAAK,KAAK,YAAY;AAGtB,aAAK,SAAS,oBAAoB;AAGlC,aAAK,KAAK,YAAY;AAGtB,YAAI,KAAK,cAAc,SAAS,GAAE;AAC9B,eAAK,SAAS,UAAU;AAGxB,iBAAO,KAAK,cAAc,SAAS,GAAE;AACjC,iBAAK,SAAS,MAAM,KAAK,cAAc,MAAM,GAAG,IAAI;AAAA,UACxD;AAAA,QACJ;AAGA,iBAAS,IAAE,GAAG,IAAG,KAAK,KAAK,QAAQ,KAAI;AAEnC,cAAI,IAAI,GAAE;AACN,iBAAK,SAAS,QAAQ;AAAA,UAC1B;AAGA,eAAK,KAAK,GAAG,OAAO;AAAA,QACxB;AAGA,aAAK,KAAK,aAAa;AAGvB,YAAI,KAAK,QAAQ,eAAe,KAAK,SAAS,MAAM,MAAM,OAAM;AAC5D,eAAK,SAAS,QAAQ;AACtB,eAAK,SAAS,QAAQ;AAAA,QAC1B;AAGA,aAAK,QAAQ,WAAW,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,cAAc;AAGnE,aAAK,KAAK,aAAa;AAGvB,YAAI,KAAK,QAAQ,kBAAkB,CAAC,KAAK,KAAK,KAAK,SAAO,IAAI,QAAQ,GAAG;AACrE,eAAK,KAAK;AAAA,QACd;AAAA,MACJ;AAAA,MAEA,OAAM;AAGF,qBAAa,KAAK,KAAK;AACvB,aAAK,QAAQ;AAGb,YAAI,KAAK,gBAAe;AACpB,kBAAQ,eAAe,UAAU,KAAK,cAAc;AACpD,kBAAQ,eAAe,WAAW,KAAK,cAAc;AACrD,eAAK,iBAAiB;AAAA,QAC1B;AAGA,aAAK,WAAW;AAGhB,YAAI,KAAK,QAAQ,eAAe,MAAK;AACjC,eAAK,SAAS,OAAO,IAAI;AAAA,QAC7B;AAGA,YAAI,KAAK,QAAQ,aAAa,OAAM;AAChC,eAAK,SAAS,aAAa,IAAI;AAAA,QACnC;AAGA,aAAK,SAAS,oBAAoB;AAGlC,aAAK,KAAK,gBAAgB;AAG1B,YAAI,KAAK,QAAQ,iBAAgB;AAE7B,eAAK,SAAS,YAAY;AAAA,QAG9B,OAAK;AAED,mBAAS,IAAE,GAAG,IAAG,KAAK,KAAK,QAAQ,KAAI;AAEnC,gBAAI,IAAI,GAAE;AACN,mBAAK,SAAS,QAAQ;AAAA,YAC1B;AAGA,iBAAK,KAAK,GAAG,OAAO;AAGpB,iBAAK,KAAK,GAAG,KAAK;AAAA,UACtB;AAGA,eAAK,SAAS,QAAQ;AAAA,QAC1B;AAGA,aAAK,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,IAAI,GAAE;AAEF,aAAK,cAAc,KAAK,CAAC;AAAA,MAC7B;AAAA,IACJ;AAAA;AAAA;;;ACzPA;AAAA;AACA,WAAO,UAAU;AAAA,MACb,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,IACvB;AAAA;AAAA;;;ACLA;AAAA;AACA,WAAO,UAAU;AAAA,MACb,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,IACvB;AAAA;AAAA;;;ACLA;AAAA;AAEA,WAAO,UAAU;AAAA,MACb,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,IACvB;AAAA;AAAA;;;ACNA;AAAA;AAAA,WAAO,UAAU;AAAA,MACb,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,IACvB;AAAA;AAAA;;;ACJA;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,kBAAkB;AACxB,QAAM,eAAe;AACrB,QAAM,QAAQ;AAEd,WAAO,UAAU;AAAA,MACb,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM;AAAA,IACV;AAAA;AAAA;;;ACVA;AAAA;AAAA,QAAM,aAAa;AACnB,QAAM,YAAY;AAClB,QAAM,WAAW;AACjB,QAAM,aAAa;AACnB,QAAM,sBAAsB;AAC5B,QAAM,oBAAoB;AAC1B,QAAM,qBAAqB;AAG3B,WAAO,UAAU;AAAA,MACb,KAAK;AAAA,MACL,WAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,QACJ,WAAW;AAAA,QACX,WAAW;AAAA,QACX,aAAa;AAAA,QACb,YAAY;AAAA,MAChB;AAAA,IACJ;AAAA;AAAA;;;ACpBA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,YAAY,QAAQ,UAAU;AACtC,aAAS,QAAQ,OAAO;AACpB,aAAO,MAAM,OAAO,CAAC,YAAY,SAAS,CAAC,EAAE,OAAO,YAAY,IAAI,GAAG,CAAC,CAAC;AAAA,IAC7E;AACA,YAAQ,UAAU;AAClB,aAAS,UAAU,OAAO,WAAW;AACjC,YAAM,SAAS,CAAC,CAAC,CAAC;AAClB,UAAI,aAAa;AACjB,iBAAW,QAAQ,OAAO;AACtB,YAAI,UAAU,IAAI,GAAG;AACjB;AACA,iBAAO,cAAc,CAAC;AAAA,QAC1B,OACK;AACD,iBAAO,YAAY,KAAK,IAAI;AAAA,QAChC;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,YAAQ,YAAY;AAAA;AAAA;;;ACrBpB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,oBAAoB;AAC5B,aAAS,kBAAkB,OAAO;AAC9B,aAAO,MAAM,SAAS;AAAA,IAC1B;AACA,YAAQ,oBAAoB;AAAA;AAAA;;;ACN5B;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,wBAAwB;AAChC,QAAM,kBAAN,MAAsB;AAAA,MAClB,YAAY,MAAM,OAAO;AACrB,aAAK,OAAO;AACZ,aAAK,gBAAgB,MAAM,cAAc,KAAK,KAAK;AACnD,aAAK,oBAAoB,MAAM,kBAAkB,KAAK,KAAK;AAC3D,aAAK,cAAc,MAAM,YAAY,KAAK,KAAK;AAC/C,aAAK,SAAS,MAAM,OAAO,KAAK,KAAK;AACrC,aAAK,SAAS,MAAM,OAAO,KAAK,KAAK;AACrC,aAAK,WAAW,MAAM,SAAS,KAAK,KAAK;AACzC,aAAK,iBAAiB,MAAM,eAAe,KAAK,KAAK;AAAA,MACzD;AAAA,IACJ;AACA,aAAS,sBAAsB,MAAM,OAAO;AACxC,aAAO,IAAI,gBAAgB,MAAM,KAAK;AAAA,IAC1C;AACA,YAAQ,wBAAwB;AAAA;AAAA;;;AClBhC;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,4BAA4B,QAAQ,8BAA8B,QAAQ,uBAAuB,QAAQ,kBAAkB,QAAQ,oBAAoB,QAAQ,SAAS,QAAQ,0BAA0B,QAAQ,eAAe,QAAQ,UAAU;AAC3P,QAAM,KAAK,UAAQ;AACnB,QAAMC,QAAO,UAAQ;AACrB,QAAM,sBAAsB,GAAG,SAAS,MAAM;AAC9C,QAAM,uCAAuC;AAM7C,QAAM,kCAAkC;AACxC,QAAM,oCAAoC;AAK1C,QAAM,qBAAqB;AAM3B,QAAM,yBAAyB;AAI/B,aAAS,QAAQ,UAAU;AACvB,aAAO,SAAS,QAAQ,OAAO,GAAG;AAAA,IACtC;AACA,YAAQ,UAAU;AAClB,aAAS,aAAa,KAAK,UAAU;AACjC,aAAOA,MAAK,QAAQ,KAAK,QAAQ;AAAA,IACrC;AACA,YAAQ,eAAe;AACvB,aAAS,wBAAwB,OAAO;AAGpC,UAAI,MAAM,OAAO,CAAC,MAAM,KAAK;AACzB,cAAM,mBAAmB,MAAM,OAAO,CAAC;AACvC,YAAI,qBAAqB,OAAO,qBAAqB,MAAM;AACvD,iBAAO,MAAM,MAAM,oCAAoC;AAAA,QAC3D;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,YAAQ,0BAA0B;AAClC,YAAQ,SAAS,sBAAsB,oBAAoB;AAC3D,aAAS,kBAAkB,SAAS;AAChC,aAAO,QAAQ,QAAQ,mCAAmC,MAAM;AAAA,IACpE;AACA,YAAQ,oBAAoB;AAC5B,aAAS,gBAAgB,SAAS;AAC9B,aAAO,QAAQ,QAAQ,iCAAiC,MAAM;AAAA,IAClE;AACA,YAAQ,kBAAkB;AAC1B,YAAQ,uBAAuB,sBAAsB,8BAA8B;AACnF,aAAS,4BAA4B,UAAU;AAC3C,aAAO,kBAAkB,QAAQ,EAC5B,QAAQ,oBAAoB,MAAM,EAClC,QAAQ,wBAAwB,GAAG;AAAA,IAC5C;AACA,YAAQ,8BAA8B;AACtC,aAAS,0BAA0B,UAAU;AACzC,aAAO,gBAAgB,QAAQ;AAAA,IACnC;AACA,YAAQ,4BAA4B;AAAA;AAAA;;;ACnEpC;AAAA;AAOA,WAAO,UAAU,SAAS,UAAU,KAAK;AACvC,UAAI,OAAO,QAAQ,YAAY,QAAQ,IAAI;AACzC,eAAO;AAAA,MACT;AAEA,UAAIC;AACJ,aAAQA,SAAQ,yBAAyB,KAAK,GAAG,GAAI;AACnD,YAAIA,OAAM;AAAI,iBAAO;AACrB,cAAM,IAAI,MAAMA,OAAM,QAAQA,OAAM,GAAG,MAAM;AAAA,MAC/C;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACnBA;AAAA;AAOA,QAAI,YAAY;AAChB,QAAI,QAAQ,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,IAAG;AAC1C,QAAI,cAAc,SAAS,KAAK;AAC9B,UAAI,IAAI,OAAO,KAAK;AAClB,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,UAAI,YAAY;AAChB,UAAI,mBAAmB;AACvB,UAAI,kBAAkB;AACtB,UAAI,kBAAkB;AACtB,UAAI,iBAAiB;AACrB,aAAO,QAAQ,IAAI,QAAQ;AACzB,YAAI,IAAI,WAAW,KAAK;AACtB,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,QAAQ,OAAO,OAAO,UAAU,KAAK,IAAI,MAAM,GAAG;AACxD,iBAAO;AAAA,QACT;AAEA,YAAI,qBAAqB,MAAM,IAAI,WAAW,OAAO,IAAI,QAAQ,OAAO,KAAK;AAC3E,cAAI,mBAAmB,OAAO;AAC5B,+BAAmB,IAAI,QAAQ,KAAK,KAAK;AAAA,UAC3C;AACA,cAAI,mBAAmB,OAAO;AAC5B,gBAAI,mBAAmB,MAAM,iBAAiB,kBAAkB;AAC9D,qBAAO;AAAA,YACT;AACA,6BAAiB,IAAI,QAAQ,MAAM,KAAK;AACxC,gBAAI,mBAAmB,MAAM,iBAAiB,kBAAkB;AAC9D,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,oBAAoB,MAAM,IAAI,WAAW,OAAO,IAAI,QAAQ,OAAO,KAAK;AAC1E,4BAAkB,IAAI,QAAQ,KAAK,KAAK;AACxC,cAAI,kBAAkB,OAAO;AAC3B,6BAAiB,IAAI,QAAQ,MAAM,KAAK;AACxC,gBAAI,mBAAmB,MAAM,iBAAiB,iBAAiB;AAC7D,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,oBAAoB,MAAM,IAAI,WAAW,OAAO,IAAI,QAAQ,OAAO,OAAO,QAAQ,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,QAAQ,OAAO,KAAK;AACpI,4BAAkB,IAAI,QAAQ,KAAK,KAAK;AACxC,cAAI,kBAAkB,OAAO;AAC3B,6BAAiB,IAAI,QAAQ,MAAM,KAAK;AACxC,gBAAI,mBAAmB,MAAM,iBAAiB,iBAAiB;AAC7D,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,cAAc,MAAM,IAAI,WAAW,OAAO,IAAI,QAAQ,OAAO,KAAK;AACpE,cAAI,YAAY,OAAO;AACrB,wBAAY,IAAI,QAAQ,KAAK,KAAK;AAAA,UACpC;AACA,cAAI,cAAc,MAAM,IAAI,YAAY,OAAO,KAAK;AAClD,8BAAkB,IAAI,QAAQ,KAAK,SAAS;AAC5C,gBAAI,kBAAkB,WAAW;AAC/B,+BAAiB,IAAI,QAAQ,MAAM,SAAS;AAC5C,kBAAI,mBAAmB,MAAM,iBAAiB,iBAAiB;AAC7D,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,IAAI,WAAW,MAAM;AACvB,cAAI,OAAO,IAAI,QAAQ;AACvB,mBAAS;AACT,cAAI,QAAQ,MAAM;AAElB,cAAI,OAAO;AACT,gBAAI,IAAI,IAAI,QAAQ,OAAO,KAAK;AAChC,gBAAI,MAAM,IAAI;AACZ,sBAAQ,IAAI;AAAA,YACd;AAAA,UACF;AAEA,cAAI,IAAI,WAAW,KAAK;AACtB,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,eAAe,SAAS,KAAK;AAC/B,UAAI,IAAI,OAAO,KAAK;AAClB,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,aAAO,QAAQ,IAAI,QAAQ;AACzB,YAAI,cAAc,KAAK,IAAI,MAAM,GAAG;AAClC,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,WAAW,MAAM;AACvB,cAAI,OAAO,IAAI,QAAQ;AACvB,mBAAS;AACT,cAAI,QAAQ,MAAM;AAElB,cAAI,OAAO;AACT,gBAAI,IAAI,IAAI,QAAQ,OAAO,KAAK;AAChC,gBAAI,MAAM,IAAI;AACZ,sBAAQ,IAAI;AAAA,YACd;AAAA,UACF;AAEA,cAAI,IAAI,WAAW,KAAK;AACtB,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU,SAAS,OAAO,KAAK,SAAS;AAC7C,UAAI,OAAO,QAAQ,YAAY,QAAQ,IAAI;AACzC,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,GAAG,GAAG;AAClB,eAAO;AAAA,MACT;AAEA,UAAIC,SAAQ;AAGZ,UAAI,WAAW,QAAQ,WAAW,OAAO;AACvC,QAAAA,SAAQ;AAAA,MACV;AAEA,aAAOA,OAAM,GAAG;AAAA,IAClB;AAAA;AAAA;;;ACrJA;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,mBAAmB,UAAQ,QAAQ,MAAM;AAC7C,QAAI,UAAU,UAAQ,MAAM,SAAS,MAAM;AAE3C,QAAI,QAAQ;AACZ,QAAI,YAAY;AAChB,QAAI,YAAY;AAChB,QAAI,SAAS;AACb,QAAI,UAAU;AAQd,WAAO,UAAU,SAAS,WAAW,KAAK,MAAM;AAC9C,UAAI,UAAU,OAAO,OAAO,EAAE,iBAAiB,KAAK,GAAG,IAAI;AAG3D,UAAI,QAAQ,mBAAmB,WAAW,IAAI,QAAQ,KAAK,IAAI,GAAG;AAChE,cAAM,IAAI,QAAQ,WAAW,KAAK;AAAA,MACpC;AAGA,UAAI,UAAU,KAAK,GAAG,GAAG;AACvB,eAAO;AAAA,MACT;AAGA,aAAO;AAGP,SAAG;AACD,cAAM,iBAAiB,GAAG;AAAA,MAC5B,SAAS,OAAO,GAAG,KAAK,OAAO,KAAK,GAAG;AAGvC,aAAO,IAAI,QAAQ,SAAS,IAAI;AAAA,IAClC;AAAA;AAAA;;;ACzCA;AAAA;AAAA;AAEA,YAAQ,YAAY,SAAO;AACzB,UAAI,OAAO,QAAQ,UAAU;AAC3B,eAAO,OAAO,UAAU,GAAG;AAAA,MAC7B;AACA,UAAI,OAAO,QAAQ,YAAY,IAAI,KAAK,MAAM,IAAI;AAChD,eAAO,OAAO,UAAU,OAAO,GAAG,CAAC;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AAMA,YAAQ,OAAO,CAAC,MAAM,SAAS,KAAK,MAAM,KAAK,CAAAC,UAAQA,MAAK,SAAS,IAAI;AAMzE,YAAQ,eAAe,CAAC,KAAK,KAAK,OAAO,GAAG,UAAU;AACpD,UAAI,UAAU;AAAO,eAAO;AAC5B,UAAI,CAAC,QAAQ,UAAU,GAAG,KAAK,CAAC,QAAQ,UAAU,GAAG;AAAG,eAAO;AAC/D,cAAS,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,OAAO,IAAI,KAAM;AAAA,IACzD;AAMA,YAAQ,aAAa,CAAC,OAAO,IAAI,GAAG,SAAS;AAC3C,YAAM,OAAO,MAAM,MAAM;AACzB,UAAI,CAAC;AAAM;AAEX,UAAK,QAAQ,KAAK,SAAS,QAAS,KAAK,SAAS,UAAU,KAAK,SAAS,SAAS;AACjF,YAAI,KAAK,YAAY,MAAM;AACzB,eAAK,QAAQ,OAAO,KAAK;AACzB,eAAK,UAAU;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAMA,YAAQ,eAAe,UAAQ;AAC7B,UAAI,KAAK,SAAS;AAAS,eAAO;AAClC,UAAK,KAAK,UAAU,IAAI,KAAK,UAAU,MAAO,GAAG;AAC/C,aAAK,UAAU;AACf,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAMA,YAAQ,iBAAiB,WAAS;AAChC,UAAI,MAAM,SAAS;AAAS,eAAO;AACnC,UAAI,MAAM,YAAY,QAAQ,MAAM;AAAQ,eAAO;AACnD,UAAK,MAAM,UAAU,IAAI,MAAM,UAAU,MAAO,GAAG;AACjD,cAAM,UAAU;AAChB,eAAO;AAAA,MACT;AACA,UAAI,MAAM,SAAS,QAAQ,MAAM,UAAU,MAAM;AAC/C,cAAM,UAAU;AAChB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAMA,YAAQ,gBAAgB,UAAQ;AAC9B,UAAI,KAAK,SAAS,UAAU,KAAK,SAAS,SAAS;AACjD,eAAO;AAAA,MACT;AACA,aAAO,KAAK,SAAS,QAAQ,KAAK,UAAU;AAAA,IAC9C;AAMA,YAAQ,SAAS,WAAS,MAAM,OAAO,CAAC,KAAK,SAAS;AACpD,UAAI,KAAK,SAAS;AAAQ,YAAI,KAAK,KAAK,KAAK;AAC7C,UAAI,KAAK,SAAS;AAAS,aAAK,OAAO;AACvC,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAML,YAAQ,UAAU,IAAI,SAAS;AAC7B,YAAM,SAAS,CAAC;AAEhB,YAAM,OAAO,SAAO;AAClB,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,gBAAM,MAAM,IAAI;AAEhB,cAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,iBAAK,GAAG;AACR;AAAA,UACF;AAEA,cAAI,QAAQ,QAAW;AACrB,mBAAO,KAAK,GAAG;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,WAAK,IAAI;AACT,aAAO;AAAA,IACT;AAAA;AAAA;;;ACzHA;AAAA;AAAA;AAEA,QAAM,QAAQ;AAEd,WAAO,UAAU,CAAC,KAAK,UAAU,CAAC,MAAM;AACtC,YAAM,YAAY,CAAC,MAAM,SAAS,CAAC,MAAM;AACvC,cAAM,eAAe,QAAQ,iBAAiB,MAAM,eAAe,MAAM;AACzE,cAAM,cAAc,KAAK,YAAY,QAAQ,QAAQ,kBAAkB;AACvE,YAAI,SAAS;AAEb,YAAI,KAAK,OAAO;AACd,eAAK,gBAAgB,gBAAgB,MAAM,cAAc,IAAI,GAAG;AAC9D,mBAAO,OAAO,KAAK;AAAA,UACrB;AACA,iBAAO,KAAK;AAAA,QACd;AAEA,YAAI,KAAK,OAAO;AACd,iBAAO,KAAK;AAAA,QACd;AAEA,YAAI,KAAK,OAAO;AACd,qBAAW,SAAS,KAAK,OAAO;AAC9B,sBAAU,UAAU,KAAK;AAAA,UAC3B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU,GAAG;AAAA,IACtB;AAAA;AAAA;;;AC9BA;AAAA;AAAA;AASA,WAAO,UAAU,SAAS,KAAK;AAC7B,UAAI,OAAO,QAAQ,UAAU;AAC3B,eAAO,MAAM,QAAQ;AAAA,MACvB;AACA,UAAI,OAAO,QAAQ,YAAY,IAAI,KAAK,MAAM,IAAI;AAChD,eAAO,OAAO,WAAW,OAAO,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG;AAAA,MAChE;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACjBA;AAAA;AAAA;AASA,QAAM,WAAW;AAEjB,QAAM,eAAe,CAAC,KAAK,KAAK,YAAY;AAC1C,UAAI,SAAS,GAAG,MAAM,OAAO;AAC3B,cAAM,IAAI,UAAU,0DAA0D;AAAA,MAChF;AAEA,UAAI,QAAQ,UAAU,QAAQ,KAAK;AACjC,eAAO,OAAO,GAAG;AAAA,MACnB;AAEA,UAAI,SAAS,GAAG,MAAM,OAAO;AAC3B,cAAM,IAAI,UAAU,4DAA4D;AAAA,MAClF;AAEA,UAAI,OAAO,EAAE,YAAY,MAAM,GAAG,QAAQ;AAC1C,UAAI,OAAO,KAAK,gBAAgB,WAAW;AACzC,aAAK,aAAa,KAAK,gBAAgB;AAAA,MACzC;AAEA,UAAI,QAAQ,OAAO,KAAK,UAAU;AAClC,UAAI,YAAY,OAAO,KAAK,SAAS;AACrC,UAAI,UAAU,OAAO,KAAK,OAAO;AACjC,UAAIC,QAAO,OAAO,KAAK,IAAI;AAC3B,UAAI,WAAW,MAAM,MAAM,MAAM,MAAM,QAAQ,YAAY,UAAUA;AAErE,UAAI,aAAa,MAAM,eAAe,QAAQ,GAAG;AAC/C,eAAO,aAAa,MAAM,UAAU;AAAA,MACtC;AAEA,UAAI,IAAI,KAAK,IAAI,KAAK,GAAG;AACzB,UAAI,IAAI,KAAK,IAAI,KAAK,GAAG;AAEzB,UAAI,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG;AACzB,YAAI,SAAS,MAAM,MAAM;AACzB,YAAI,KAAK,SAAS;AAChB,iBAAO,IAAI;AAAA,QACb;AACA,YAAI,KAAK,SAAS,OAAO;AACvB,iBAAO;AAAA,QACT;AACA,eAAO,MAAM;AAAA,MACf;AAEA,UAAI,WAAW,WAAW,GAAG,KAAK,WAAW,GAAG;AAChD,UAAI,QAAQ,EAAE,KAAK,KAAK,GAAG,EAAE;AAC7B,UAAI,YAAY,CAAC;AACjB,UAAI,YAAY,CAAC;AAEjB,UAAI,UAAU;AACZ,cAAM,WAAW;AACjB,cAAM,SAAS,OAAO,MAAM,GAAG,EAAE;AAAA,MACnC;AAEA,UAAI,IAAI,GAAG;AACT,YAAI,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI;AACnC,oBAAY,gBAAgB,QAAQ,KAAK,IAAI,CAAC,GAAG,OAAO,IAAI;AAC5D,YAAI,MAAM,IAAI;AAAA,MAChB;AAEA,UAAI,KAAK,GAAG;AACV,oBAAY,gBAAgB,GAAG,GAAG,OAAO,IAAI;AAAA,MAC/C;AAEA,YAAM,YAAY;AAClB,YAAM,YAAY;AAClB,YAAM,SAAS,gBAAgB,WAAW,WAAW,IAAI;AAEzD,UAAI,KAAK,YAAY,MAAM;AACzB,cAAM,SAAS,IAAI,MAAM;AAAA,MAC3B,WAAW,KAAK,SAAS,SAAU,UAAU,SAAS,UAAU,SAAU,GAAG;AAC3E,cAAM,SAAS,MAAM,MAAM;AAAA,MAC7B;AAEA,mBAAa,MAAM,YAAY;AAC/B,aAAO,MAAM;AAAA,IACf;AAEA,aAAS,gBAAgB,KAAK,KAAK,SAAS;AAC1C,UAAI,eAAe,eAAe,KAAK,KAAK,KAAK,OAAO,OAAO,KAAK,CAAC;AACrE,UAAI,eAAe,eAAe,KAAK,KAAK,IAAI,OAAO,OAAO,KAAK,CAAC;AACpE,UAAI,cAAc,eAAe,KAAK,KAAK,MAAM,MAAM,OAAO,KAAK,CAAC;AACpE,UAAI,cAAc,aAAa,OAAO,WAAW,EAAE,OAAO,YAAY;AACtE,aAAO,YAAY,KAAK,GAAG;AAAA,IAC7B;AAEA,aAAS,cAAc,KAAK,KAAK;AAC/B,UAAI,QAAQ;AACZ,UAAI,QAAQ;AAEZ,UAAI,OAAO,WAAW,KAAK,KAAK;AAChC,UAAI,QAAQ,oBAAI,IAAI,CAAC,GAAG,CAAC;AAEzB,aAAO,OAAO,QAAQ,QAAQ,KAAK;AACjC,cAAM,IAAI,IAAI;AACd,iBAAS;AACT,eAAO,WAAW,KAAK,KAAK;AAAA,MAC9B;AAEA,aAAO,WAAW,MAAM,GAAG,KAAK,IAAI;AAEpC,aAAO,MAAM,QAAQ,QAAQ,KAAK;AAChC,cAAM,IAAI,IAAI;AACd,iBAAS;AACT,eAAO,WAAW,MAAM,GAAG,KAAK,IAAI;AAAA,MACtC;AAEA,cAAQ,CAAC,GAAG,KAAK;AACjB,YAAM,KAAK,OAAO;AAClB,aAAO;AAAA,IACT;AASA,aAAS,eAAe,OAAO,MAAM,SAAS;AAC5C,UAAI,UAAU,MAAM;AAClB,eAAO,EAAE,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ,EAAE;AAAA,MAChD;AAEA,UAAI,SAAS,IAAI,OAAO,IAAI;AAC5B,UAAI,SAAS,OAAO;AACpB,UAAI,UAAU;AACd,UAAI,QAAQ;AAEZ,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,YAAI,CAAC,YAAY,SAAS,IAAI,OAAO;AAErC,YAAI,eAAe,WAAW;AAC5B,qBAAW;AAAA,QAEb,WAAW,eAAe,OAAO,cAAc,KAAK;AAClD,qBAAW,iBAAiB,YAAY,WAAW,OAAO;AAAA,QAE5D,OAAO;AACL;AAAA,QACF;AAAA,MACF;AAEA,UAAI,OAAO;AACT,mBAAW,QAAQ,cAAc,OAAO,QAAQ;AAAA,MAClD;AAEA,aAAO,EAAE,SAAS,OAAO,CAAC,KAAK,GAAG,OAAO;AAAA,IAC3C;AAEA,aAAS,gBAAgB,KAAK,KAAK,KAAK,SAAS;AAC/C,UAAI,SAAS,cAAc,KAAK,GAAG;AACnC,UAAI,SAAS,CAAC;AACd,UAAI,QAAQ;AACZ,UAAI;AAEJ,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAIC,OAAM,OAAO;AACjB,YAAI,MAAM,eAAe,OAAO,KAAK,GAAG,OAAOA,IAAG,GAAG,OAAO;AAC5D,YAAI,QAAQ;AAEZ,YAAI,CAAC,IAAI,YAAY,QAAQ,KAAK,YAAY,IAAI,SAAS;AACzD,cAAI,KAAK,MAAM,SAAS,GAAG;AACzB,iBAAK,MAAM,IAAI;AAAA,UACjB;AAEA,eAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC5B,eAAK,SAAS,KAAK,UAAU,aAAa,KAAK,KAAK;AACpD,kBAAQA,OAAM;AACd;AAAA,QACF;AAEA,YAAI,IAAI,UAAU;AAChB,kBAAQ,SAASA,MAAK,KAAK,OAAO;AAAA,QACpC;AAEA,YAAI,SAAS,QAAQ,IAAI,UAAU,aAAa,IAAI,KAAK;AACzD,eAAO,KAAK,GAAG;AACf,gBAAQA,OAAM;AACd,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,eAAe,KAAK,YAAY,QAAQ,cAAc,SAAS;AACtE,UAAI,SAAS,CAAC;AAEd,eAAS,OAAO,KAAK;AACnB,YAAI,EAAE,OAAO,IAAI;AAGjB,YAAI,CAAC,gBAAgB,CAAC,SAAS,YAAY,UAAU,MAAM,GAAG;AAC5D,iBAAO,KAAK,SAAS,MAAM;AAAA,QAC7B;AAGA,YAAI,gBAAgB,SAAS,YAAY,UAAU,MAAM,GAAG;AAC1D,iBAAO,KAAK,SAAS,MAAM;AAAA,QAC7B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAMA,aAAS,IAAI,GAAG,GAAG;AACjB,UAAI,MAAM,CAAC;AACX,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAAK,YAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACxD,aAAO;AAAA,IACT;AAEA,aAAS,QAAQ,GAAG,GAAG;AACrB,aAAO,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK;AAAA,IAClC;AAEA,aAAS,SAAS,KAAK,KAAK,KAAK;AAC/B,aAAO,IAAI,KAAK,SAAO,IAAI,SAAS,GAAG;AAAA,IACzC;AAEA,aAAS,WAAW,KAAK,KAAK;AAC5B,aAAO,OAAO,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,IAAI,OAAO,GAAG,CAAC;AAAA,IAC5D;AAEA,aAAS,WAAW,SAAS,OAAO;AAClC,aAAO,UAAW,UAAU,KAAK,IAAI,IAAI,KAAK;AAAA,IAChD;AAEA,aAAS,aAAa,QAAQ;AAC5B,UAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,IAAI;AAC7B,UAAI,QAAQ,QAAQ,GAAG;AACrB,eAAO,IAAI,SAAS,OAAO,MAAM,OAAO;AAAA,MAC1C;AACA,aAAO;AAAA,IACT;AAEA,aAAS,iBAAiB,GAAG,GAAG,SAAS;AACvC,aAAO,IAAI,IAAK,IAAI,MAAM,IAAK,KAAK,MAAM;AAAA,IAC5C;AAEA,aAAS,WAAW,KAAK;AACvB,aAAO,YAAY,KAAK,GAAG;AAAA,IAC7B;AAEA,aAAS,SAAS,OAAO,KAAK,SAAS;AACrC,UAAI,CAAC,IAAI,UAAU;AACjB,eAAO;AAAA,MACT;AAEA,UAAI,OAAO,KAAK,IAAI,IAAI,SAAS,OAAO,KAAK,EAAE,MAAM;AACrD,UAAI,QAAQ,QAAQ,eAAe;AAEnC,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO,QAAQ,OAAO;AAAA,QACxB,KAAK;AACH,iBAAO,QAAQ,WAAW;AAAA,QAC5B,SAAS;AACP,iBAAO,QAAQ,OAAO,UAAU,KAAK;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAMA,iBAAa,QAAQ,CAAC;AACtB,iBAAa,aAAa,MAAO,aAAa,QAAQ,CAAC;AAMvD,WAAO,UAAU;AAAA;AAAA;;;AC/RjB;AAAA;AAAA;AASA,QAAM,OAAO,UAAQ;AACrB,QAAM,eAAe;AAErB,QAAM,WAAW,SAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAErF,QAAM,YAAY,cAAY;AAC5B,aAAO,WAAS,aAAa,OAAO,OAAO,KAAK,IAAI,OAAO,KAAK;AAAA,IAClE;AAEA,QAAM,eAAe,WAAS;AAC5B,aAAO,OAAO,UAAU,YAAa,OAAO,UAAU,YAAY,UAAU;AAAA,IAC9E;AAEA,QAAM,WAAW,SAAO,OAAO,UAAU,CAAC,GAAG;AAE7C,QAAM,QAAQ,WAAS;AACrB,UAAI,QAAQ,GAAG;AACf,UAAI,QAAQ;AACZ,UAAI,MAAM,OAAO;AAAK,gBAAQ,MAAM,MAAM,CAAC;AAC3C,UAAI,UAAU;AAAK,eAAO;AAC1B,aAAO,MAAM,EAAE,WAAW;AAAI;AAC9B,aAAO,QAAQ;AAAA,IACjB;AAEA,QAAM,YAAY,CAAC,OAAO,KAAK,YAAY;AACzC,UAAI,OAAO,UAAU,YAAY,OAAO,QAAQ,UAAU;AACxD,eAAO;AAAA,MACT;AACA,aAAO,QAAQ,cAAc;AAAA,IAC/B;AAEA,QAAM,MAAM,CAAC,OAAO,WAAW,aAAa;AAC1C,UAAI,YAAY,GAAG;AACjB,YAAI,OAAO,MAAM,OAAO,MAAM,MAAM;AACpC,YAAI;AAAM,kBAAQ,MAAM,MAAM,CAAC;AAC/B,gBAAS,OAAO,MAAM,SAAS,OAAO,YAAY,IAAI,WAAW,GAAG;AAAA,MACtE;AACA,UAAI,aAAa,OAAO;AACtB,eAAO,OAAO,KAAK;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAEA,QAAM,WAAW,CAAC,OAAO,cAAc;AACrC,UAAI,WAAW,MAAM,OAAO,MAAM,MAAM;AACxC,UAAI,UAAU;AACZ,gBAAQ,MAAM,MAAM,CAAC;AACrB;AAAA,MACF;AACA,aAAO,MAAM,SAAS;AAAW,gBAAQ,MAAM;AAC/C,aAAO,WAAY,MAAM,QAAS;AAAA,IACpC;AAEA,QAAM,aAAa,CAAC,OAAO,SAAS,WAAW;AAC7C,YAAM,UAAU,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC;AACzD,YAAM,UAAU,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC;AAEzD,UAAI,SAAS,QAAQ,UAAU,KAAK;AACpC,UAAI,YAAY;AAChB,UAAI,YAAY;AAChB,UAAI;AAEJ,UAAI,MAAM,UAAU,QAAQ;AAC1B,oBAAY,MAAM,UAAU,IAAI,OAAK,SAAS,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,MAC5E;AAEA,UAAI,MAAM,UAAU,QAAQ;AAC1B,oBAAY,KAAK,SAAS,MAAM,UAAU,IAAI,OAAK,SAAS,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,MAC1F;AAEA,UAAI,aAAa,WAAW;AAC1B,iBAAS,GAAG,aAAa;AAAA,MAC3B,OAAO;AACL,iBAAS,aAAa;AAAA,MACxB;AAEA,UAAI,QAAQ,MAAM;AAChB,eAAO,IAAI,SAAS;AAAA,MACtB;AAEA,aAAO;AAAA,IACT;AAEA,QAAM,UAAU,CAAC,GAAG,GAAG,WAAW,YAAY;AAC5C,UAAI,WAAW;AACb,eAAO,aAAa,GAAG,GAAG,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC;AAAA,MACvD;AAEA,UAAI,QAAQ,OAAO,aAAa,CAAC;AACjC,UAAI,MAAM;AAAG,eAAO;AAEpB,UAAI,OAAO,OAAO,aAAa,CAAC;AAChC,aAAO,IAAI,SAAS;AAAA,IACtB;AAEA,QAAM,UAAU,CAAC,OAAO,KAAK,YAAY;AACvC,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,YAAIC,QAAO,QAAQ,SAAS;AAC5B,YAAI,SAAS,QAAQ,UAAU,KAAK;AACpC,eAAOA,QAAO,IAAI,SAAS,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,GAAG;AAAA,MAChE;AACA,aAAO,aAAa,OAAO,KAAK,OAAO;AAAA,IACzC;AAEA,QAAM,aAAa,IAAI,SAAS;AAC9B,aAAO,IAAI,WAAW,8BAA8B,KAAK,QAAQ,GAAG,IAAI,CAAC;AAAA,IAC3E;AAEA,QAAM,eAAe,CAAC,OAAO,KAAK,YAAY;AAC5C,UAAI,QAAQ,iBAAiB;AAAM,cAAM,WAAW,CAAC,OAAO,GAAG,CAAC;AAChE,aAAO,CAAC;AAAA,IACV;AAEA,QAAM,cAAc,CAAC,MAAM,YAAY;AACrC,UAAI,QAAQ,iBAAiB,MAAM;AACjC,cAAM,IAAI,UAAU,kBAAkB,sBAAsB;AAAA,MAC9D;AACA,aAAO,CAAC;AAAA,IACV;AAEA,QAAM,cAAc,CAAC,OAAO,KAAK,OAAO,GAAG,UAAU,CAAC,MAAM;AAC1D,UAAI,IAAI,OAAO,KAAK;AACpB,UAAI,IAAI,OAAO,GAAG;AAElB,UAAI,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,GAAG;AAChD,YAAI,QAAQ,iBAAiB;AAAM,gBAAM,WAAW,CAAC,OAAO,GAAG,CAAC;AAChE,eAAO,CAAC;AAAA,MACV;AAGA,UAAI,MAAM;AAAG,YAAI;AACjB,UAAI,MAAM;AAAG,YAAI;AAEjB,UAAI,aAAa,IAAI;AACrB,UAAI,cAAc,OAAO,KAAK;AAC9B,UAAI,YAAY,OAAO,GAAG;AAC1B,UAAI,aAAa,OAAO,IAAI;AAC5B,aAAO,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAEjC,UAAI,SAAS,MAAM,WAAW,KAAK,MAAM,SAAS,KAAK,MAAM,UAAU;AACvE,UAAI,SAAS,SAAS,KAAK,IAAI,YAAY,QAAQ,UAAU,QAAQ,WAAW,MAAM,IAAI;AAC1F,UAAI,WAAW,WAAW,SAAS,UAAU,OAAO,KAAK,OAAO,MAAM;AACtE,UAAIC,UAAS,QAAQ,aAAa,UAAU,QAAQ;AAEpD,UAAI,QAAQ,WAAW,SAAS,GAAG;AACjC,eAAO,QAAQ,SAAS,OAAO,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,MAAM,OAAO;AAAA,MAC9E;AAEA,UAAI,QAAQ,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,EAAE;AAC3C,UAAI,OAAO,SAAO,MAAM,MAAM,IAAI,cAAc,aAAa,KAAK,KAAK,IAAI,GAAG,CAAC;AAC/E,UAAI,QAAQ,CAAC;AACb,UAAI,QAAQ;AAEZ,aAAO,aAAa,KAAK,IAAI,KAAK,GAAG;AACnC,YAAI,QAAQ,YAAY,QAAQ,OAAO,GAAG;AACxC,eAAK,CAAC;AAAA,QACR,OAAO;AACL,gBAAM,KAAK,IAAIA,QAAO,GAAG,KAAK,GAAG,QAAQ,QAAQ,CAAC;AAAA,QACpD;AACA,YAAI,aAAa,IAAI,OAAO,IAAI;AAChC;AAAA,MACF;AAEA,UAAI,QAAQ,YAAY,MAAM;AAC5B,eAAO,OAAO,IACV,WAAW,OAAO,SAAS,MAAM,IACjC,QAAQ,OAAO,MAAM,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC;AAAA,MACtD;AAEA,aAAO;AAAA,IACT;AAEA,QAAM,cAAc,CAAC,OAAO,KAAK,OAAO,GAAG,UAAU,CAAC,MAAM;AAC1D,UAAK,CAAC,SAAS,KAAK,KAAK,MAAM,SAAS,KAAO,CAAC,SAAS,GAAG,KAAK,IAAI,SAAS,GAAI;AAChF,eAAO,aAAa,OAAO,KAAK,OAAO;AAAA,MACzC;AAEA,UAAIA,UAAS,QAAQ,cAAc,SAAO,OAAO,aAAa,GAAG;AACjE,UAAI,IAAI,GAAG,QAAQ,WAAW,CAAC;AAC/B,UAAI,IAAI,GAAG,MAAM,WAAW,CAAC;AAE7B,UAAI,aAAa,IAAI;AACrB,UAAI,MAAM,KAAK,IAAI,GAAG,CAAC;AACvB,UAAI,MAAM,KAAK,IAAI,GAAG,CAAC;AAEvB,UAAI,QAAQ,WAAW,SAAS,GAAG;AACjC,eAAO,QAAQ,KAAK,KAAK,OAAO,OAAO;AAAA,MACzC;AAEA,UAAI,QAAQ,CAAC;AACb,UAAI,QAAQ;AAEZ,aAAO,aAAa,KAAK,IAAI,KAAK,GAAG;AACnC,cAAM,KAAKA,QAAO,GAAG,KAAK,CAAC;AAC3B,YAAI,aAAa,IAAI,OAAO,IAAI;AAChC;AAAA,MACF;AAEA,UAAI,QAAQ,YAAY,MAAM;AAC5B,eAAO,QAAQ,OAAO,MAAM,EAAE,MAAM,OAAO,QAAQ,CAAC;AAAA,MACtD;AAEA,aAAO;AAAA,IACT;AAEA,QAAM,OAAO,CAAC,OAAO,KAAK,MAAM,UAAU,CAAC,MAAM;AAC/C,UAAI,OAAO,QAAQ,aAAa,KAAK,GAAG;AACtC,eAAO,CAAC,KAAK;AAAA,MACf;AAEA,UAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,GAAG,GAAG;AAC9C,eAAO,aAAa,OAAO,KAAK,OAAO;AAAA,MACzC;AAEA,UAAI,OAAO,SAAS,YAAY;AAC9B,eAAO,KAAK,OAAO,KAAK,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MAChD;AAEA,UAAI,SAAS,IAAI,GAAG;AAClB,eAAO,KAAK,OAAO,KAAK,GAAG,IAAI;AAAA,MACjC;AAEA,UAAI,OAAO,EAAE,GAAG,QAAQ;AACxB,UAAI,KAAK,YAAY;AAAM,aAAK,OAAO;AACvC,aAAO,QAAQ,KAAK,QAAQ;AAE5B,UAAI,CAAC,SAAS,IAAI,GAAG;AACnB,YAAI,QAAQ,QAAQ,CAAC,SAAS,IAAI;AAAG,iBAAO,YAAY,MAAM,IAAI;AAClE,eAAO,KAAK,OAAO,KAAK,GAAG,IAAI;AAAA,MACjC;AAEA,UAAI,SAAS,KAAK,KAAK,SAAS,GAAG,GAAG;AACpC,eAAO,YAAY,OAAO,KAAK,MAAM,IAAI;AAAA,MAC3C;AAEA,aAAO,YAAY,OAAO,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI;AAAA,IAClE;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACvPjB;AAAA;AAAA;AAEA,QAAM,OAAO;AACb,QAAM,QAAQ;AAEd,QAAM,UAAU,CAAC,KAAK,UAAU,CAAC,MAAM;AACrC,YAAM,OAAO,CAAC,MAAM,SAAS,CAAC,MAAM;AAClC,cAAM,eAAe,MAAM,eAAe,MAAM;AAChD,cAAM,cAAc,KAAK,YAAY,QAAQ,QAAQ,kBAAkB;AACvE,cAAM,UAAU,iBAAiB,QAAQ,gBAAgB;AACzD,cAAM,SAAS,QAAQ,kBAAkB,OAAO,OAAO;AACvD,YAAI,SAAS;AAEb,YAAI,KAAK,WAAW,MAAM;AACxB,iBAAO,SAAS,KAAK;AAAA,QACvB;AAEA,YAAI,KAAK,YAAY,MAAM;AACzB,kBAAQ,IAAI,gBAAgB,QAAQ,KAAK,KAAK;AAC9C,iBAAO,SAAS,KAAK;AAAA,QACvB;AAEA,YAAI,KAAK,SAAS,QAAQ;AACxB,iBAAO,UAAU,SAAS,KAAK,QAAQ;AAAA,QACzC;AAEA,YAAI,KAAK,SAAS,SAAS;AACzB,iBAAO,UAAU,SAAS,KAAK,QAAQ;AAAA,QACzC;AAEA,YAAI,KAAK,SAAS,SAAS;AACzB,iBAAO,KAAK,KAAK,SAAS,UAAU,KAAK,UAAU,KAAK,QAAQ;AAAA,QAClE;AAEA,YAAI,KAAK,OAAO;AACd,iBAAO,KAAK;AAAA,QACd;AAEA,YAAI,KAAK,SAAS,KAAK,SAAS,GAAG;AACjC,gBAAM,OAAO,MAAM,OAAO,KAAK,KAAK;AACpC,gBAAM,QAAQ,KAAK,GAAG,MAAM,EAAE,GAAG,SAAS,MAAM,OAAO,SAAS,MAAM,aAAa,KAAK,CAAC;AAEzF,cAAI,MAAM,WAAW,GAAG;AACtB,mBAAO,KAAK,SAAS,KAAK,MAAM,SAAS,IAAI,IAAI,WAAW;AAAA,UAC9D;AAAA,QACF;AAEA,YAAI,KAAK,OAAO;AACd,qBAAW,SAAS,KAAK,OAAO;AAC9B,sBAAU,KAAK,OAAO,IAAI;AAAA,UAC5B;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,aAAO,KAAK,GAAG;AAAA,IACjB;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC3DjB;AAAA;AAAA;AAEA,QAAM,OAAO;AACb,QAAM,YAAY;AAClB,QAAM,QAAQ;AAEd,QAAM,SAAS,CAAC,QAAQ,IAAI,QAAQ,IAAI,UAAU,UAAU;AAC1D,YAAM,SAAS,CAAC;AAEhB,cAAQ,CAAC,EAAE,OAAO,KAAK;AACvB,cAAQ,CAAC,EAAE,OAAO,KAAK;AAEvB,UAAI,CAAC,MAAM;AAAQ,eAAO;AAC1B,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,UAAU,MAAM,QAAQ,KAAK,EAAE,IAAI,SAAO,IAAI,MAAM,IAAI;AAAA,MACjE;AAEA,iBAAW,QAAQ,OAAO;AACxB,YAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,qBAAW,SAAS,MAAM;AACxB,mBAAO,KAAK,OAAO,OAAO,OAAO,OAAO,CAAC;AAAA,UAC3C;AAAA,QACF,OAAO;AACL,mBAAS,OAAO,OAAO;AACrB,gBAAI,YAAY,QAAQ,OAAO,QAAQ;AAAU,oBAAM,IAAI;AAC3D,mBAAO,KAAK,MAAM,QAAQ,GAAG,IAAI,OAAO,MAAM,KAAK,OAAO,IAAI,OAAO,GAAG;AAAA,UAC1E;AAAA,QACF;AAAA,MACF;AACA,aAAO,MAAM,QAAQ,MAAM;AAAA,IAC7B;AAEA,QAAMC,UAAS,CAAC,KAAK,UAAU,CAAC,MAAM;AACpC,YAAM,aAAa,QAAQ,eAAe,SAAY,MAAO,QAAQ;AAErE,YAAM,OAAO,CAAC,MAAM,SAAS,CAAC,MAAM;AAClC,aAAK,QAAQ,CAAC;AAEd,YAAI,IAAI;AACR,YAAI,IAAI,OAAO;AAEf,eAAO,EAAE,SAAS,WAAW,EAAE,SAAS,UAAU,EAAE,QAAQ;AAC1D,cAAI,EAAE;AACN,cAAI,EAAE;AAAA,QACR;AAEA,YAAI,KAAK,WAAW,KAAK,QAAQ;AAC/B,YAAE,KAAK,OAAO,EAAE,IAAI,GAAG,UAAU,MAAM,OAAO,CAAC,CAAC;AAChD;AAAA,QACF;AAEA,YAAI,KAAK,SAAS,WAAW,KAAK,YAAY,QAAQ,KAAK,MAAM,WAAW,GAAG;AAC7E,YAAE,KAAK,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B;AAAA,QACF;AAEA,YAAI,KAAK,SAAS,KAAK,SAAS,GAAG;AACjC,gBAAM,OAAO,MAAM,OAAO,KAAK,KAAK;AAEpC,cAAI,MAAM,aAAa,GAAG,MAAM,QAAQ,MAAM,UAAU,GAAG;AACzD,kBAAM,IAAI,WAAW,qGAAqG;AAAA,UAC5H;AAEA,cAAI,QAAQ,KAAK,GAAG,MAAM,OAAO;AACjC,cAAI,MAAM,WAAW,GAAG;AACtB,oBAAQ,UAAU,MAAM,OAAO;AAAA,UACjC;AAEA,YAAE,KAAK,OAAO,EAAE,IAAI,GAAG,KAAK,CAAC;AAC7B,eAAK,QAAQ,CAAC;AACd;AAAA,QACF;AAEA,cAAM,UAAU,MAAM,aAAa,IAAI;AACvC,YAAI,QAAQ,KAAK;AACjB,YAAI,QAAQ;AAEZ,eAAO,MAAM,SAAS,WAAW,MAAM,SAAS,UAAU,MAAM,QAAQ;AACtE,kBAAQ,MAAM;AACd,kBAAQ,MAAM;AAAA,QAChB;AAEA,iBAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,gBAAM,QAAQ,KAAK,MAAM;AAEzB,cAAI,MAAM,SAAS,WAAW,KAAK,SAAS,SAAS;AACnD,gBAAI,MAAM;AAAG,oBAAM,KAAK,EAAE;AAC1B,kBAAM,KAAK,EAAE;AACb;AAAA,UACF;AAEA,cAAI,MAAM,SAAS,SAAS;AAC1B,cAAE,KAAK,OAAO,EAAE,IAAI,GAAG,OAAO,OAAO,CAAC;AACtC;AAAA,UACF;AAEA,cAAI,MAAM,SAAS,MAAM,SAAS,QAAQ;AACxC,kBAAM,KAAK,OAAO,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;AAC3C;AAAA,UACF;AAEA,cAAI,MAAM,OAAO;AACf,iBAAK,OAAO,IAAI;AAAA,UAClB;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,aAAO,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,IAChC;AAEA,WAAO,UAAUA;AAAA;AAAA;;;AChHjB;AAAA;AAAA;AAEA,WAAO,UAAU;AAAA,MACf,YAAY;AAAA,MAGZ,QAAQ;AAAA,MACR,QAAQ;AAAA,MAGR,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAElB,uBAAuB;AAAA,MACvB,wBAAwB;AAAA,MAExB,eAAe;AAAA,MAGf,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,mBAAmB;AAAA,MACnB,YAAY;AAAA,MACZ,uBAAuB;AAAA,MACvB,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,MACzB,uBAAuB;AAAA,MACvB,0BAA0B;AAAA,MAC1B,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,cAAc;AAAA,MACd,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,0BAA0B;AAAA,MAC1B,wBAAwB;AAAA,MACxB,2BAA2B;AAAA,MAC3B,gBAAgB;AAAA,MAChB,mBAAmB;AAAA,MACnB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,MACpB,+BAA+B;AAAA,IACjC;AAAA;AAAA;;;ACxDA;AAAA;AAAA;AAEA,QAAM,YAAY;AAMlB,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAMJ,QAAMC,SAAQ,CAAC,OAAO,UAAU,CAAC,MAAM;AACrC,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,IAAI,UAAU,mBAAmB;AAAA,MACzC;AAEA,YAAM,OAAO,WAAW,CAAC;AACzB,YAAM,MAAM,OAAO,KAAK,cAAc,WAAW,KAAK,IAAI,YAAY,KAAK,SAAS,IAAI;AACxF,UAAI,MAAM,SAAS,KAAK;AACtB,cAAM,IAAI,YAAY,iBAAiB,MAAM,oCAAoC,MAAM;AAAA,MACzF;AAEA,YAAM,MAAM,EAAE,MAAM,QAAQ,OAAO,OAAO,CAAC,EAAE;AAC7C,YAAM,QAAQ,CAAC,GAAG;AAClB,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,UAAI,WAAW;AACf,YAAM,SAAS,MAAM;AACrB,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,UAAI;AAMJ,YAAM,UAAU,MAAM,MAAM;AAC5B,YAAM,OAAO,UAAQ;AACnB,YAAI,KAAK,SAAS,UAAU,KAAK,SAAS,OAAO;AAC/C,eAAK,OAAO;AAAA,QACd;AAEA,YAAI,QAAQ,KAAK,SAAS,UAAU,KAAK,SAAS,QAAQ;AACxD,eAAK,SAAS,KAAK;AACnB;AAAA,QACF;AAEA,cAAM,MAAM,KAAK,IAAI;AACrB,aAAK,SAAS;AACd,aAAK,OAAO;AACZ,eAAO;AACP,eAAO;AAAA,MACT;AAEA,WAAK,EAAE,MAAM,MAAM,CAAC;AAEpB,aAAO,QAAQ,QAAQ;AACrB,gBAAQ,MAAM,MAAM,SAAS;AAC7B,gBAAQ,QAAQ;AAMhB,YAAI,UAAU,iCAAiC,UAAU,qBAAqB;AAC5E;AAAA,QACF;AAMA,YAAI,UAAU,gBAAgB;AAC5B,eAAK,EAAE,MAAM,QAAQ,QAAQ,QAAQ,eAAe,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAC7E;AAAA,QACF;AAMA,YAAI,UAAU,2BAA2B;AACvC,eAAK,EAAE,MAAM,QAAQ,OAAO,OAAO,MAAM,CAAC;AAC1C;AAAA,QACF;AAMA,YAAI,UAAU,0BAA0B;AACtC;AAEA,cAAI;AAEJ,iBAAO,QAAQ,WAAW,OAAO,QAAQ,IAAI;AAC3C,qBAAS;AAET,gBAAI,SAAS,0BAA0B;AACrC;AACA;AAAA,YACF;AAEA,gBAAI,SAAS,gBAAgB;AAC3B,uBAAS,QAAQ;AACjB;AAAA,YACF;AAEA,gBAAI,SAAS,2BAA2B;AACtC;AAEA,kBAAI,aAAa,GAAG;AAClB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,QACF;AAMA,YAAI,UAAU,uBAAuB;AACnC,kBAAQ,KAAK,EAAE,MAAM,SAAS,OAAO,CAAC,EAAE,CAAC;AACzC,gBAAM,KAAK,KAAK;AAChB,eAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,QACF;AAEA,YAAI,UAAU,wBAAwB;AACpC,cAAI,MAAM,SAAS,SAAS;AAC1B,iBAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,UACF;AACA,kBAAQ,MAAM,IAAI;AAClB,eAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B,kBAAQ,MAAM,MAAM,SAAS;AAC7B;AAAA,QACF;AAMA,YAAI,UAAU,qBAAqB,UAAU,qBAAqB,UAAU,eAAe;AACzF,gBAAM,OAAO;AACb,cAAI;AAEJ,cAAI,QAAQ,eAAe,MAAM;AAC/B,oBAAQ;AAAA,UACV;AAEA,iBAAO,QAAQ,WAAW,OAAO,QAAQ,IAAI;AAC3C,gBAAI,SAAS,gBAAgB;AAC3B,uBAAS,OAAO,QAAQ;AACxB;AAAA,YACF;AAEA,gBAAI,SAAS,MAAM;AACjB,kBAAI,QAAQ,eAAe;AAAM,yBAAS;AAC1C;AAAA,YACF;AAEA,qBAAS;AAAA,UACX;AAEA,eAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,QACF;AAMA,YAAI,UAAU,uBAAuB;AACnC;AAEA,gBAAM,SAAS,KAAK,SAAS,KAAK,MAAM,MAAM,EAAE,MAAM,OAAO,MAAM,WAAW;AAC9E,gBAAM,QAAQ;AAAA,YACZ,MAAM;AAAA,YACN,MAAM;AAAA,YACN,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,OAAO,CAAC;AAAA,UACV;AAEA,kBAAQ,KAAK,KAAK;AAClB,gBAAM,KAAK,KAAK;AAChB,eAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,QACF;AAMA,YAAI,UAAU,wBAAwB;AACpC,cAAI,MAAM,SAAS,SAAS;AAC1B,iBAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,UACF;AAEA,gBAAM,OAAO;AACb,kBAAQ,MAAM,IAAI;AAClB,gBAAM,QAAQ;AAEd,eAAK,EAAE,MAAM,MAAM,CAAC;AACpB;AAEA,kBAAQ,MAAM,MAAM,SAAS;AAC7B;AAAA,QACF;AAMA,YAAI,UAAU,cAAc,QAAQ,GAAG;AACrC,cAAI,MAAM,SAAS,GAAG;AACpB,kBAAM,SAAS;AACf,kBAAM,OAAO,MAAM,MAAM,MAAM;AAC/B,kBAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,QAAQ,OAAO,UAAU,KAAK,EAAE,CAAC;AAAA,UAChE;AAEA,eAAK,EAAE,MAAM,SAAS,MAAM,CAAC;AAC7B,gBAAM;AACN;AAAA,QACF;AAMA,YAAI,UAAU,YAAY,QAAQ,KAAK,MAAM,WAAW,GAAG;AACzD,gBAAM,WAAW,MAAM;AAEvB,cAAI,UAAU,KAAK,SAAS,WAAW,GAAG;AACxC,iBAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,UACF;AAEA,cAAI,KAAK,SAAS,OAAO;AACvB,kBAAM,QAAQ,CAAC;AACf,iBAAK,SAAS;AACd,iBAAK,OAAO;AAEZ,gBAAI,MAAM,MAAM,WAAW,KAAK,MAAM,MAAM,WAAW,GAAG;AACxD,oBAAM,UAAU;AAChB,oBAAM,SAAS;AACf,mBAAK,OAAO;AACZ;AAAA,YACF;AAEA,kBAAM;AACN,kBAAM,OAAO,CAAC;AACd;AAAA,UACF;AAEA,cAAI,KAAK,SAAS,SAAS;AACzB,qBAAS,IAAI;AAEb,kBAAM,SAAS,SAAS,SAAS,SAAS;AAC1C,mBAAO,SAAS,KAAK,QAAQ;AAC7B,mBAAO;AACP,kBAAM;AACN;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,OAAO,MAAM,CAAC;AAC3B;AAAA,QACF;AAMA,aAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAAA,MAC9B;AAGA,SAAG;AACD,gBAAQ,MAAM,IAAI;AAElB,YAAI,MAAM,SAAS,QAAQ;AACzB,gBAAM,MAAM,QAAQ,UAAQ;AAC1B,gBAAI,CAAC,KAAK,OAAO;AACf,kBAAI,KAAK,SAAS;AAAQ,qBAAK,SAAS;AACxC,kBAAI,KAAK,SAAS;AAAS,qBAAK,UAAU;AAC1C,kBAAI,CAAC,KAAK;AAAO,qBAAK,OAAO;AAC7B,mBAAK,UAAU;AAAA,YACjB;AAAA,UACF,CAAC;AAGD,gBAAM,SAAS,MAAM,MAAM,SAAS;AACpC,gBAAMC,SAAQ,OAAO,MAAM,QAAQ,KAAK;AAExC,iBAAO,MAAM,OAAOA,QAAO,GAAG,GAAG,MAAM,KAAK;AAAA,QAC9C;AAAA,MACF,SAAS,MAAM,SAAS;AAExB,WAAK,EAAE,MAAM,MAAM,CAAC;AACpB,aAAO;AAAA,IACT;AAEA,WAAO,UAAUD;AAAA;AAAA;;;AC1UjB;AAAA;AAAA;AAEA,QAAM,YAAY;AAClB,QAAM,UAAU;AAChB,QAAME,UAAS;AACf,QAAMC,SAAQ;AAgBd,QAAM,SAAS,CAAC,OAAO,UAAU,CAAC,MAAM;AACtC,UAAI,SAAS,CAAC;AAEd,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,mBAAW,WAAW,OAAO;AAC3B,gBAAM,SAAS,OAAO,OAAO,SAAS,OAAO;AAC7C,cAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,mBAAO,KAAK,GAAG,MAAM;AAAA,UACvB,OAAO;AACL,mBAAO,KAAK,MAAM;AAAA,UACpB;AAAA,QACF;AAAA,MACF,OAAO;AACL,iBAAS,CAAC,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,CAAC;AAAA,MAClD;AAEA,UAAI,WAAW,QAAQ,WAAW,QAAQ,QAAQ,YAAY,MAAM;AAClE,iBAAS,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC;AAAA,MAC9B;AACA,aAAO;AAAA,IACT;AAgBA,WAAO,QAAQ,CAAC,OAAO,UAAU,CAAC,MAAMA,OAAM,OAAO,OAAO;AAgB5D,WAAO,YAAY,CAAC,OAAO,UAAU,CAAC,MAAM;AAC1C,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO,UAAU,OAAO,MAAM,OAAO,OAAO,GAAG,OAAO;AAAA,MACxD;AACA,aAAO,UAAU,OAAO,OAAO;AAAA,IACjC;AAiBA,WAAO,UAAU,CAAC,OAAO,UAAU,CAAC,MAAM;AACxC,UAAI,OAAO,UAAU,UAAU;AAC7B,gBAAQ,OAAO,MAAM,OAAO,OAAO;AAAA,MACrC;AACA,aAAO,QAAQ,OAAO,OAAO;AAAA,IAC/B;AAmBA,WAAO,SAAS,CAAC,OAAO,UAAU,CAAC,MAAM;AACvC,UAAI,OAAO,UAAU,UAAU;AAC7B,gBAAQ,OAAO,MAAM,OAAO,OAAO;AAAA,MACrC;AAEA,UAAI,SAASD,QAAO,OAAO,OAAO;AAGlC,UAAI,QAAQ,YAAY,MAAM;AAC5B,iBAAS,OAAO,OAAO,OAAO;AAAA,MAChC;AAGA,UAAI,QAAQ,YAAY,MAAM;AAC5B,iBAAS,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC;AAAA,MAC9B;AAEA,aAAO;AAAA,IACT;AAkBA,WAAO,SAAS,CAAC,OAAO,UAAU,CAAC,MAAM;AACvC,UAAI,UAAU,MAAM,MAAM,SAAS,GAAG;AACpC,eAAO,CAAC,KAAK;AAAA,MACf;AAEA,aAAO,QAAQ,WAAW,OACtB,OAAO,QAAQ,OAAO,OAAO,IAC7B,OAAO,OAAO,OAAO,OAAO;AAAA,IAClC;AAMA,WAAO,UAAU;AAAA;AAAA;;;ACzKjB,IAAAE,qBAAA;AAAA;AAAA;AAEA,QAAMC,QAAO,UAAQ;AACrB,QAAM,YAAY;AAClB,QAAM,eAAe,KAAK;AAM1B,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,WAAW;AACjB,QAAM,QAAQ;AACd,QAAM,aAAa,MAAM;AACzB,QAAM,eAAe,QAAQ;AAC7B,QAAM,aAAa,GAAG,mBAAmB;AACzC,QAAM,SAAS,MAAM;AACrB,QAAM,UAAU,MAAM,eAAe;AACrC,QAAM,eAAe,MAAM,mBAAmB;AAC9C,QAAM,gBAAgB,MAAM;AAC5B,QAAM,eAAe,MAAM;AAC3B,QAAM,OAAO,GAAG;AAEhB,QAAM,cAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAMA,QAAM,gBAAgB;AAAA,MACpB,GAAG;AAAA,MAEH,eAAe,IAAI;AAAA,MACnB,OAAO;AAAA,MACP,MAAM,GAAG;AAAA,MACT,YAAY,GAAG,uBAAuB;AAAA,MACtC,QAAQ,MAAM;AAAA,MACd,SAAS,YAAY,cAAc,uBAAuB;AAAA,MAC1D,cAAc,MAAM,uBAAuB;AAAA,MAC3C,eAAe,MAAM,uBAAuB;AAAA,MAC5C,cAAc,MAAM;AAAA,MACpB,cAAc,SAAS;AAAA,MACvB,YAAY,OAAO;AAAA,IACrB;AAMA,QAAM,qBAAqB;AAAA,MACzB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAEA,WAAO,UAAU;AAAA,MACf,YAAY,OAAO;AAAA,MACnB;AAAA,MAGA,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,qBAAqB;AAAA,MACrB,6BAA6B;AAAA,MAC7B,4BAA4B;AAAA,MAC5B,wBAAwB;AAAA,MAGxB,cAAc;AAAA,QACZ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,YAAY;AAAA,MACd;AAAA,MAGA,QAAQ;AAAA,MACR,QAAQ;AAAA,MAGR,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAElB,uBAAuB;AAAA,MACvB,wBAAwB;AAAA,MAExB,eAAe;AAAA,MAGf,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,mBAAmB;AAAA,MACnB,YAAY;AAAA,MACZ,uBAAuB;AAAA,MACvB,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,mBAAmB;AAAA,MACnB,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,MACzB,uBAAuB;AAAA,MACvB,0BAA0B;AAAA,MAC1B,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,cAAc;AAAA,MACd,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,0BAA0B;AAAA,MAC1B,wBAAwB;AAAA,MACxB,2BAA2B;AAAA,MAC3B,gBAAgB;AAAA,MAChB,mBAAmB;AAAA,MACnB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,MACpB,+BAA+B;AAAA,MAE/B,KAAKA,MAAK;AAAA,MAMV,aAAa,OAAO;AAClB,eAAO;AAAA,UACL,KAAK,EAAE,MAAM,UAAU,MAAM,aAAa,OAAO,KAAK,MAAM,QAAQ;AAAA,UACpE,KAAK,EAAE,MAAM,SAAS,MAAM,OAAO,OAAO,KAAK;AAAA,UAC/C,KAAK,EAAE,MAAM,QAAQ,MAAM,OAAO,OAAO,KAAK;AAAA,UAC9C,KAAK,EAAE,MAAM,QAAQ,MAAM,OAAO,OAAO,KAAK;AAAA,UAC9C,KAAK,EAAE,MAAM,MAAM,MAAM,OAAO,OAAO,IAAI;AAAA,QAC7C;AAAA,MACF;AAAA,MAMA,UAAU,OAAO;AACf,eAAO,UAAU,OAAO,gBAAgB;AAAA,MAC1C;AAAA,IACF;AAAA;AAAA;;;AClLA,IAAAC,iBAAA;AAAA;AAAA;AAEA,QAAMC,QAAO,UAAQ;AACrB,QAAM,QAAQ,QAAQ,aAAa;AACnC,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,YAAQ,WAAW,SAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AACvF,YAAQ,gBAAgB,SAAO,oBAAoB,KAAK,GAAG;AAC3D,YAAQ,cAAc,SAAO,IAAI,WAAW,KAAK,QAAQ,cAAc,GAAG;AAC1E,YAAQ,cAAc,SAAO,IAAI,QAAQ,4BAA4B,MAAM;AAC3E,YAAQ,iBAAiB,SAAO,IAAI,QAAQ,iBAAiB,GAAG;AAEhE,YAAQ,oBAAoB,SAAO;AACjC,aAAO,IAAI,QAAQ,wBAAwB,CAAAC,WAAS;AAClD,eAAOA,WAAU,OAAO,KAAKA;AAAA,MAC/B,CAAC;AAAA,IACH;AAEA,YAAQ,sBAAsB,MAAM;AAClC,YAAM,OAAO,QAAQ,QAAQ,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM;AAC3D,UAAI,KAAK,WAAW,KAAK,KAAK,MAAM,KAAM,KAAK,OAAO,KAAK,KAAK,MAAM,IAAK;AACzE,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,YAAY,aAAW;AAC7B,UAAI,WAAW,OAAO,QAAQ,YAAY,WAAW;AACnD,eAAO,QAAQ;AAAA,MACjB;AACA,aAAO,UAAU,QAAQD,MAAK,QAAQ;AAAA,IACxC;AAEA,YAAQ,aAAa,CAAC,OAAO,MAAM,YAAY;AAC7C,YAAM,MAAM,MAAM,YAAY,MAAM,OAAO;AAC3C,UAAI,QAAQ;AAAI,eAAO;AACvB,UAAI,MAAM,MAAM,OAAO;AAAM,eAAO,QAAQ,WAAW,OAAO,MAAM,MAAM,CAAC;AAC3E,aAAO,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG;AAAA,IACnD;AAEA,YAAQ,eAAe,CAAC,OAAO,QAAQ,CAAC,MAAM;AAC5C,UAAI,SAAS;AACb,UAAI,OAAO,WAAW,IAAI,GAAG;AAC3B,iBAAS,OAAO,MAAM,CAAC;AACvB,cAAM,SAAS;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,aAAa,CAAC,OAAO,QAAQ,CAAC,GAAG,UAAU,CAAC,MAAM;AACxD,YAAM,UAAU,QAAQ,WAAW,KAAK;AACxC,YAAM,SAAS,QAAQ,WAAW,KAAK;AAEvC,UAAI,SAAS,GAAG,aAAa,SAAS;AACtC,UAAI,MAAM,YAAY,MAAM;AAC1B,iBAAS,UAAU;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC/DA;AAAA;AAAA;AAEA,QAAM,QAAQ;AACd,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,QAAM,kBAAkB,UAAQ;AAC9B,aAAO,SAAS,sBAAsB,SAAS;AAAA,IACjD;AAEA,QAAM,QAAQ,WAAS;AACrB,UAAI,MAAM,aAAa,MAAM;AAC3B,cAAM,QAAQ,MAAM,aAAa,WAAW;AAAA,MAC9C;AAAA,IACF;AAmBA,QAAM,OAAO,CAAC,OAAO,YAAY;AAC/B,YAAM,OAAO,WAAW,CAAC;AAEzB,YAAM,SAAS,MAAM,SAAS;AAC9B,YAAM,YAAY,KAAK,UAAU,QAAQ,KAAK,cAAc;AAC5D,YAAM,UAAU,CAAC;AACjB,YAAM,SAAS,CAAC;AAChB,YAAM,QAAQ,CAAC;AAEf,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,UAAI,YAAY;AAChB,UAAI,UAAU;AACd,UAAI,YAAY;AAChB,UAAI,SAAS;AACb,UAAI,YAAY;AAChB,UAAI,aAAa;AACjB,UAAI,eAAe;AACnB,UAAI,cAAc;AAClB,UAAI,UAAU;AACd,UAAI,iBAAiB;AACrB,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI;AACJ,UAAI;AACJ,UAAI,QAAQ,EAAE,OAAO,IAAI,OAAO,GAAG,QAAQ,MAAM;AAEjD,YAAM,MAAM,MAAM,SAAS;AAC3B,YAAM,OAAO,MAAM,IAAI,WAAW,QAAQ,CAAC;AAC3C,YAAM,UAAU,MAAM;AACpB,eAAO;AACP,eAAO,IAAI,WAAW,EAAE,KAAK;AAAA,MAC/B;AAEA,aAAO,QAAQ,QAAQ;AACrB,eAAO,QAAQ;AACf,YAAI;AAEJ,YAAI,SAAS,qBAAqB;AAChC,wBAAc,MAAM,cAAc;AAClC,iBAAO,QAAQ;AAEf,cAAI,SAAS,uBAAuB;AAClC,2BAAe;AAAA,UACjB;AACA;AAAA,QACF;AAEA,YAAI,iBAAiB,QAAQ,SAAS,uBAAuB;AAC3D;AAEA,iBAAO,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI;AAC3C,gBAAI,SAAS,qBAAqB;AAChC,4BAAc,MAAM,cAAc;AAClC,sBAAQ;AACR;AAAA,YACF;AAEA,gBAAI,SAAS,uBAAuB;AAClC;AACA;AAAA,YACF;AAEA,gBAAI,iBAAiB,QAAQ,SAAS,aAAa,OAAO,QAAQ,OAAO,UAAU;AACjF,wBAAU,MAAM,UAAU;AAC1B,uBAAS,MAAM,SAAS;AACxB,yBAAW;AAEX,kBAAI,cAAc,MAAM;AACtB;AAAA,cACF;AAEA;AAAA,YACF;AAEA,gBAAI,iBAAiB,QAAQ,SAAS,YAAY;AAChD,wBAAU,MAAM,UAAU;AAC1B,uBAAS,MAAM,SAAS;AACxB,yBAAW;AAEX,kBAAI,cAAc,MAAM;AACtB;AAAA,cACF;AAEA;AAAA,YACF;AAEA,gBAAI,SAAS,wBAAwB;AACnC;AAEA,kBAAI,WAAW,GAAG;AAChB,+BAAe;AACf,0BAAU,MAAM,UAAU;AAC1B,2BAAW;AACX;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,cAAc,MAAM;AACtB;AAAA,UACF;AAEA;AAAA,QACF;AAEA,YAAI,SAAS,oBAAoB;AAC/B,kBAAQ,KAAK,KAAK;AAClB,iBAAO,KAAK,KAAK;AACjB,kBAAQ,EAAE,OAAO,IAAI,OAAO,GAAG,QAAQ,MAAM;AAE7C,cAAI,aAAa;AAAM;AACvB,cAAI,SAAS,YAAY,UAAW,QAAQ,GAAI;AAC9C,qBAAS;AACT;AAAA,UACF;AAEA,sBAAY,QAAQ;AACpB;AAAA,QACF;AAEA,YAAI,KAAK,UAAU,MAAM;AACvB,gBAAM,gBAAgB,SAAS,aAC1B,SAAS,WACT,SAAS,iBACT,SAAS,sBACT,SAAS;AAEd,cAAI,kBAAkB,QAAQ,KAAK,MAAM,uBAAuB;AAC9D,qBAAS,MAAM,SAAS;AACxB,wBAAY,MAAM,YAAY;AAC9B,uBAAW;AACX,gBAAI,SAAS,yBAAyB,UAAU,OAAO;AACrD,+BAAiB;AAAA,YACnB;AAEA,gBAAI,cAAc,MAAM;AACtB,qBAAO,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI;AAC3C,oBAAI,SAAS,qBAAqB;AAChC,gCAAc,MAAM,cAAc;AAClC,yBAAO,QAAQ;AACf;AAAA,gBACF;AAEA,oBAAI,SAAS,wBAAwB;AACnC,2BAAS,MAAM,SAAS;AACxB,6BAAW;AACX;AAAA,gBACF;AAAA,cACF;AACA;AAAA,YACF;AACA;AAAA,UACF;AAAA,QACF;AAEA,YAAI,SAAS,eAAe;AAC1B,cAAI,SAAS;AAAe,yBAAa,MAAM,aAAa;AAC5D,mBAAS,MAAM,SAAS;AACxB,qBAAW;AAEX,cAAI,cAAc,MAAM;AACtB;AAAA,UACF;AACA;AAAA,QACF;AAEA,YAAI,SAAS,oBAAoB;AAC/B,mBAAS,MAAM,SAAS;AACxB,qBAAW;AAEX,cAAI,cAAc,MAAM;AACtB;AAAA,UACF;AACA;AAAA,QACF;AAEA,YAAI,SAAS,0BAA0B;AACrC,iBAAO,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI;AAC3C,gBAAI,SAAS,qBAAqB;AAChC,4BAAc,MAAM,cAAc;AAClC,sBAAQ;AACR;AAAA,YACF;AAEA,gBAAI,SAAS,2BAA2B;AACtC,0BAAY,MAAM,YAAY;AAC9B,uBAAS,MAAM,SAAS;AACxB,yBAAW;AACX;AAAA,YACF;AAAA,UACF;AAEA,cAAI,cAAc,MAAM;AACtB;AAAA,UACF;AAEA;AAAA,QACF;AAEA,YAAI,KAAK,aAAa,QAAQ,SAAS,yBAAyB,UAAU,OAAO;AAC/E,oBAAU,MAAM,UAAU;AAC1B;AACA;AAAA,QACF;AAEA,YAAI,KAAK,YAAY,QAAQ,SAAS,uBAAuB;AAC3D,mBAAS,MAAM,SAAS;AAExB,cAAI,cAAc,MAAM;AACtB,mBAAO,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI;AAC3C,kBAAI,SAAS,uBAAuB;AAClC,8BAAc,MAAM,cAAc;AAClC,uBAAO,QAAQ;AACf;AAAA,cACF;AAEA,kBAAI,SAAS,wBAAwB;AACnC,2BAAW;AACX;AAAA,cACF;AAAA,YACF;AACA;AAAA,UACF;AACA;AAAA,QACF;AAEA,YAAI,WAAW,MAAM;AACnB,qBAAW;AAEX,cAAI,cAAc,MAAM;AACtB;AAAA,UACF;AAEA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,KAAK,UAAU,MAAM;AACvB,oBAAY;AACZ,iBAAS;AAAA,MACX;AAEA,UAAI,OAAO;AACX,UAAI,SAAS;AACb,UAAIE,QAAO;AAEX,UAAI,QAAQ,GAAG;AACb,iBAAS,IAAI,MAAM,GAAG,KAAK;AAC3B,cAAM,IAAI,MAAM,KAAK;AACrB,qBAAa;AAAA,MACf;AAEA,UAAI,QAAQ,WAAW,QAAQ,YAAY,GAAG;AAC5C,eAAO,IAAI,MAAM,GAAG,SAAS;AAC7B,QAAAA,QAAO,IAAI,MAAM,SAAS;AAAA,MAC5B,WAAW,WAAW,MAAM;AAC1B,eAAO;AACP,QAAAA,QAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,SAAS,MAAM,SAAS,OAAO,SAAS,KAAK;AACvD,YAAI,gBAAgB,KAAK,WAAW,KAAK,SAAS,CAAC,CAAC,GAAG;AACrD,iBAAO,KAAK,MAAM,GAAG,EAAE;AAAA,QACzB;AAAA,MACF;AAEA,UAAI,KAAK,aAAa,MAAM;AAC1B,YAAIA;AAAM,UAAAA,QAAO,MAAM,kBAAkBA,KAAI;AAE7C,YAAI,QAAQ,gBAAgB,MAAM;AAChC,iBAAO,MAAM,kBAAkB,IAAI;AAAA,QACrC;AAAA,MACF;AAEA,YAAM,QAAQ;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,UAAI,KAAK,WAAW,MAAM;AACxB,cAAM,WAAW;AACjB,YAAI,CAAC,gBAAgB,IAAI,GAAG;AAC1B,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA,cAAM,SAAS;AAAA,MACjB;AAEA,UAAI,KAAK,UAAU,QAAQ,KAAK,WAAW,MAAM;AAC/C,YAAI;AAEJ,iBAAS,MAAM,GAAG,MAAM,QAAQ,QAAQ,OAAO;AAC7C,gBAAM,IAAI,YAAY,YAAY,IAAI;AACtC,gBAAM,IAAI,QAAQ;AAClB,gBAAM,QAAQ,MAAM,MAAM,GAAG,CAAC;AAC9B,cAAI,KAAK,QAAQ;AACf,gBAAI,QAAQ,KAAK,UAAU,GAAG;AAC5B,qBAAO,KAAK,WAAW;AACvB,qBAAO,KAAK,QAAQ;AAAA,YACtB,OAAO;AACL,qBAAO,KAAK,QAAQ;AAAA,YACtB;AACA,kBAAM,OAAO,IAAI;AACjB,kBAAM,YAAY,OAAO,KAAK;AAAA,UAChC;AACA,cAAI,QAAQ,KAAK,UAAU,IAAI;AAC7B,kBAAM,KAAK,KAAK;AAAA,UAClB;AACA,sBAAY;AAAA,QACd;AAEA,YAAI,aAAa,YAAY,IAAI,MAAM,QAAQ;AAC7C,gBAAM,QAAQ,MAAM,MAAM,YAAY,CAAC;AACvC,gBAAM,KAAK,KAAK;AAEhB,cAAI,KAAK,QAAQ;AACf,mBAAO,OAAO,SAAS,GAAG,QAAQ;AAClC,kBAAM,OAAO,OAAO,SAAS,EAAE;AAC/B,kBAAM,YAAY,OAAO,OAAO,SAAS,GAAG;AAAA,UAC9C;AAAA,QACF;AAEA,cAAM,UAAU;AAChB,cAAM,QAAQ;AAAA,MAChB;AAEA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACtYjB,IAAAC,iBAAA;AAAA;AAAA;AAEA,QAAM,YAAY;AAClB,QAAM,QAAQ;AAMd,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAMJ,QAAM,cAAc,CAAC,MAAM,YAAY;AACrC,UAAI,OAAO,QAAQ,gBAAgB,YAAY;AAC7C,eAAO,QAAQ,YAAY,GAAG,MAAM,OAAO;AAAA,MAC7C;AAEA,WAAK,KAAK;AACV,YAAM,QAAQ,IAAI,KAAK,KAAK,GAAG;AAE/B,UAAI;AAEF,YAAI,OAAO,KAAK;AAAA,MAClB,SAAS,IAAP;AACA,eAAO,KAAK,IAAI,OAAK,MAAM,YAAY,CAAC,CAAC,EAAE,KAAK,IAAI;AAAA,MACtD;AAEA,aAAO;AAAA,IACT;AAMA,QAAM,cAAc,CAAC,MAAM,SAAS;AAClC,aAAO,WAAW,UAAU,oBAAoB;AAAA,IAClD;AASA,QAAMC,SAAQ,CAAC,OAAO,YAAY;AAChC,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,IAAI,UAAU,mBAAmB;AAAA,MACzC;AAEA,cAAQ,aAAa,UAAU;AAE/B,YAAM,OAAO,EAAE,GAAG,QAAQ;AAC1B,YAAM,MAAM,OAAO,KAAK,cAAc,WAAW,KAAK,IAAI,YAAY,KAAK,SAAS,IAAI;AAExF,UAAI,MAAM,MAAM;AAChB,UAAI,MAAM,KAAK;AACb,cAAM,IAAI,YAAY,iBAAiB,wCAAwC,KAAK;AAAA,MACtF;AAEA,YAAM,MAAM,EAAE,MAAM,OAAO,OAAO,IAAI,QAAQ,KAAK,WAAW,GAAG;AACjE,YAAM,SAAS,CAAC,GAAG;AAEnB,YAAM,UAAU,KAAK,UAAU,KAAK;AACpC,YAAM,QAAQ,MAAM,UAAU,OAAO;AAGrC,YAAM,iBAAiB,UAAU,UAAU,KAAK;AAChD,YAAM,gBAAgB,UAAU,aAAa,cAAc;AAE3D,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AAEJ,YAAM,WAAW,CAAAC,UAAQ;AACvB,eAAO,IAAI,gBAAgB,eAAeA,MAAK,MAAM,aAAa;AAAA,MACpE;AAEA,YAAM,QAAQ,KAAK,MAAM,KAAK;AAC9B,YAAM,aAAa,KAAK,MAAM,QAAQ;AACtC,UAAIC,QAAO,KAAK,SAAS,OAAO,SAAS,IAAI,IAAI;AAEjD,UAAI,KAAK,SAAS;AAChB,QAAAA,QAAO,IAAIA;AAAA,MACb;AAGA,UAAI,OAAO,KAAK,UAAU,WAAW;AACnC,aAAK,YAAY,KAAK;AAAA,MACxB;AAEA,YAAM,QAAQ;AAAA,QACZ;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP,KAAK,KAAK,QAAQ;AAAA,QAClB,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV;AAAA,MACF;AAEA,cAAQ,MAAM,aAAa,OAAO,KAAK;AACvC,YAAM,MAAM;AAEZ,YAAM,WAAW,CAAC;AAClB,YAAM,SAAS,CAAC;AAChB,YAAM,QAAQ,CAAC;AACf,UAAI,OAAO;AACX,UAAI;AAMJ,YAAM,MAAM,MAAM,MAAM,UAAU,MAAM;AACxC,YAAM,OAAO,MAAM,OAAO,CAAC,IAAI,MAAM,MAAM,MAAM,QAAQ;AACzD,YAAM,UAAU,MAAM,UAAU,MAAM,MAAM,EAAE,MAAM,UAAU;AAC9D,YAAM,YAAY,MAAM,MAAM,MAAM,MAAM,QAAQ,CAAC;AACnD,YAAM,UAAU,CAACC,SAAQ,IAAI,MAAM,MAAM;AACvC,cAAM,YAAYA;AAClB,cAAM,SAAS;AAAA,MACjB;AAEA,YAAM,SAAS,WAAS;AACtB,cAAM,UAAU,MAAM,UAAU,OAAO,MAAM,SAAS,MAAM;AAC5D,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAEA,YAAM,SAAS,MAAM;AACnB,YAAI,QAAQ;AAEZ,eAAO,KAAK,MAAM,QAAQ,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM;AAC7D,kBAAQ;AACR,gBAAM;AACN;AAAA,QACF;AAEA,YAAI,QAAQ,MAAM,GAAG;AACnB,iBAAO;AAAA,QACT;AAEA,cAAM,UAAU;AAChB,cAAM;AACN,eAAO;AAAA,MACT;AAEA,YAAMC,aAAY,UAAQ;AACxB,cAAM;AACN,cAAM,KAAK,IAAI;AAAA,MACjB;AAEA,YAAM,YAAY,UAAQ;AACxB,cAAM;AACN,cAAM,IAAI;AAAA,MACZ;AAUA,YAAM,OAAO,SAAO;AAClB,YAAI,KAAK,SAAS,YAAY;AAC5B,gBAAM,UAAU,MAAM,SAAS,MAAM,IAAI,SAAS,WAAW,IAAI,SAAS;AAC1E,gBAAM,YAAY,IAAI,YAAY,QAAS,SAAS,WAAW,IAAI,SAAS,UAAU,IAAI,SAAS;AAEnG,cAAI,IAAI,SAAS,WAAW,IAAI,SAAS,WAAW,CAAC,WAAW,CAAC,WAAW;AAC1E,kBAAM,SAAS,MAAM,OAAO,MAAM,GAAG,CAAC,KAAK,OAAO,MAAM;AACxD,iBAAK,OAAO;AACZ,iBAAK,QAAQ;AACb,iBAAK,SAASF;AACd,kBAAM,UAAU,KAAK;AAAA,UACvB;AAAA,QACF;AAEA,YAAI,SAAS,UAAU,IAAI,SAAS,SAAS;AAC3C,mBAAS,SAAS,SAAS,GAAG,SAAS,IAAI;AAAA,QAC7C;AAEA,YAAI,IAAI,SAAS,IAAI;AAAQ,iBAAO,GAAG;AACvC,YAAI,QAAQ,KAAK,SAAS,UAAU,IAAI,SAAS,QAAQ;AACvD,eAAK,SAAS,IAAI;AAClB,eAAK,UAAU,KAAK,UAAU,MAAM,IAAI;AACxC;AAAA,QACF;AAEA,YAAI,OAAO;AACX,eAAO,KAAK,GAAG;AACf,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,CAAC,MAAMC,WAAU;AACnC,cAAM,QAAQ,EAAE,GAAG,cAAcA,SAAQ,YAAY,GAAG,OAAO,GAAG;AAElE,cAAM,OAAO;AACb,cAAM,SAAS,MAAM;AACrB,cAAM,SAAS,MAAM;AACrB,cAAM,UAAU,KAAK,UAAU,MAAM,MAAM,MAAM;AAEjD,QAAAC,WAAU,QAAQ;AAClB,aAAK,EAAE,MAAM,OAAAD,QAAO,QAAQ,MAAM,SAAS,KAAK,SAAS,CAAC;AAC1D,aAAK,EAAE,MAAM,SAAS,SAAS,MAAM,OAAO,QAAQ,GAAG,OAAO,CAAC;AAC/D,iBAAS,KAAK,KAAK;AAAA,MACrB;AAEA,YAAM,eAAe,WAAS;AAC5B,YAAI,SAAS,MAAM,SAAS,KAAK,UAAU,MAAM;AACjD,YAAI;AAEJ,YAAI,MAAM,SAAS,UAAU;AAC3B,cAAI,cAAcD;AAElB,cAAI,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,MAAM,MAAM,SAAS,GAAG,GAAG;AACtE,0BAAc,SAAS,IAAI;AAAA,UAC7B;AAEA,cAAI,gBAAgBA,SAAQ,IAAI,KAAK,QAAQ,KAAK,UAAU,CAAC,GAAG;AAC9D,qBAAS,MAAM,QAAQ,OAAO;AAAA,UAChC;AAEA,cAAI,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,MAAM,eAAe,KAAK,IAAI,GAAG;AAMlF,kBAAM,aAAaF,OAAM,MAAM,EAAE,GAAG,SAAS,WAAW,MAAM,CAAC,EAAE;AAEjE,qBAAS,MAAM,QAAQ,IAAI,cAAc;AAAA,UAC3C;AAEA,cAAI,MAAM,KAAK,SAAS,OAAO;AAC7B,kBAAM,iBAAiB;AAAA,UACzB;AAAA,QACF;AAEA,aAAK,EAAE,MAAM,SAAS,SAAS,MAAM,OAAO,OAAO,CAAC;AACpD,kBAAU,QAAQ;AAAA,MACpB;AAMA,UAAI,KAAK,cAAc,SAAS,CAAC,sBAAsB,KAAK,KAAK,GAAG;AAClE,YAAI,cAAc;AAElB,YAAI,SAAS,MAAM,QAAQ,6BAA6B,CAAC,GAAG,KAAK,OAAO,OAAO,MAAM,UAAU;AAC7F,cAAI,UAAU,MAAM;AAClB,0BAAc;AACd,mBAAO;AAAA,UACT;AAEA,cAAI,UAAU,KAAK;AACjB,gBAAI,KAAK;AACP,qBAAO,MAAM,SAAS,OAAO,MAAM,OAAO,KAAK,MAAM,IAAI;AAAA,YAC3D;AACA,gBAAI,UAAU,GAAG;AACf,qBAAO,cAAc,OAAO,MAAM,OAAO,KAAK,MAAM,IAAI;AAAA,YAC1D;AACA,mBAAO,MAAM,OAAO,MAAM,MAAM;AAAA,UAClC;AAEA,cAAI,UAAU,KAAK;AACjB,mBAAO,YAAY,OAAO,MAAM,MAAM;AAAA,UACxC;AAEA,cAAI,UAAU,KAAK;AACjB,gBAAI,KAAK;AACP,qBAAO,MAAM,SAAS,OAAOE,QAAO;AAAA,YACtC;AACA,mBAAOA;AAAA,UACT;AACA,iBAAO,MAAM,IAAI,KAAK;AAAA,QACxB,CAAC;AAED,YAAI,gBAAgB,MAAM;AACxB,cAAI,KAAK,aAAa,MAAM;AAC1B,qBAAS,OAAO,QAAQ,OAAO,EAAE;AAAA,UACnC,OAAO;AACL,qBAAS,OAAO,QAAQ,QAAQ,OAAK;AACnC,qBAAO,EAAE,SAAS,MAAM,IAAI,SAAU,IAAI,OAAO;AAAA,YACnD,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAI,WAAW,SAAS,KAAK,aAAa,MAAM;AAC9C,gBAAM,SAAS;AACf,iBAAO;AAAA,QACT;AAEA,cAAM,SAAS,MAAM,WAAW,QAAQ,OAAO,OAAO;AACtD,eAAO;AAAA,MACT;AAMA,aAAO,CAAC,IAAI,GAAG;AACb,gBAAQ,QAAQ;AAEhB,YAAI,UAAU,MAAU;AACtB;AAAA,QACF;AAMA,YAAI,UAAU,MAAM;AAClB,gBAAM,OAAO,KAAK;AAElB,cAAI,SAAS,OAAO,KAAK,SAAS,MAAM;AACtC;AAAA,UACF;AAEA,cAAI,SAAS,OAAO,SAAS,KAAK;AAChC;AAAA,UACF;AAEA,cAAI,CAAC,MAAM;AACT,qBAAS;AACT,iBAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,UACF;AAGA,gBAAMG,SAAQ,OAAO,KAAK,UAAU,CAAC;AACrC,cAAI,UAAU;AAEd,cAAIA,UAASA,OAAM,GAAG,SAAS,GAAG;AAChC,sBAAUA,OAAM,GAAG;AACnB,kBAAM,SAAS;AACf,gBAAI,UAAU,MAAM,GAAG;AACrB,uBAAS;AAAA,YACX;AAAA,UACF;AAEA,cAAI,KAAK,aAAa,MAAM;AAC1B,oBAAQ,QAAQ;AAAA,UAClB,OAAO;AACL,qBAAS,QAAQ;AAAA,UACnB;AAEA,cAAI,MAAM,aAAa,GAAG;AACxB,iBAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,UACF;AAAA,QACF;AAOA,YAAI,MAAM,WAAW,MAAM,UAAU,OAAO,KAAK,UAAU,OAAO,KAAK,UAAU,OAAO;AACtF,cAAI,KAAK,UAAU,SAAS,UAAU,KAAK;AACzC,kBAAM,QAAQ,KAAK,MAAM,MAAM,CAAC;AAChC,gBAAI,MAAM,SAAS,GAAG,GAAG;AACvB,mBAAK,QAAQ;AAEb,kBAAI,MAAM,SAAS,GAAG,GAAG;AACvB,sBAAM,MAAM,KAAK,MAAM,YAAY,GAAG;AACtC,sBAAM,MAAM,KAAK,MAAM,MAAM,GAAG,GAAG;AACnC,sBAAMC,QAAO,KAAK,MAAM,MAAM,MAAM,CAAC;AACrC,sBAAM,QAAQ,mBAAmBA;AACjC,oBAAI,OAAO;AACT,uBAAK,QAAQ,MAAM;AACnB,wBAAM,YAAY;AAClB,0BAAQ;AAER,sBAAI,CAAC,IAAI,UAAU,OAAO,QAAQ,IAAI,MAAM,GAAG;AAC7C,wBAAI,SAAS;AAAA,kBACf;AACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAK,UAAU,OAAO,KAAK,MAAM,OAAS,UAAU,OAAO,KAAK,MAAM,KAAM;AAC1E,oBAAQ,KAAK;AAAA,UACf;AAEA,cAAI,UAAU,QAAQ,KAAK,UAAU,OAAO,KAAK,UAAU,OAAO;AAChE,oBAAQ,KAAK;AAAA,UACf;AAEA,cAAI,KAAK,UAAU,QAAQ,UAAU,OAAO,KAAK,UAAU,KAAK;AAC9D,oBAAQ;AAAA,UACV;AAEA,eAAK,SAAS;AACd,iBAAO,EAAE,MAAM,CAAC;AAChB;AAAA,QACF;AAOA,YAAI,MAAM,WAAW,KAAK,UAAU,KAAK;AACvC,kBAAQ,MAAM,YAAY,KAAK;AAC/B,eAAK,SAAS;AACd,iBAAO,EAAE,MAAM,CAAC;AAChB;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,gBAAM,SAAS,MAAM,WAAW,IAAI,IAAI;AACxC,cAAI,KAAK,eAAe,MAAM;AAC5B,iBAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAAA,UAC9B;AACA;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,UAAAF,WAAU,QAAQ;AAClB,eAAK,EAAE,MAAM,SAAS,MAAM,CAAC;AAC7B;AAAA,QACF;AAEA,YAAI,UAAU,KAAK;AACjB,cAAI,MAAM,WAAW,KAAK,KAAK,mBAAmB,MAAM;AACtD,kBAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;AAAA,UACnD;AAEA,gBAAM,UAAU,SAAS,SAAS,SAAS;AAC3C,cAAI,WAAW,MAAM,WAAW,QAAQ,SAAS,GAAG;AAClD,yBAAa,SAAS,IAAI,CAAC;AAC3B;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,SAAS,OAAO,QAAQ,MAAM,SAAS,MAAM,MAAM,CAAC;AACjE,oBAAU,QAAQ;AAClB;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,cAAI,KAAK,cAAc,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,GAAG;AACzD,gBAAI,KAAK,cAAc,QAAQ,KAAK,mBAAmB,MAAM;AAC3D,oBAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;AAAA,YACnD;AAEA,oBAAQ,KAAK;AAAA,UACf,OAAO;AACL,YAAAA,WAAU,UAAU;AAAA,UACtB;AAEA,eAAK,EAAE,MAAM,WAAW,MAAM,CAAC;AAC/B;AAAA,QACF;AAEA,YAAI,UAAU,KAAK;AACjB,cAAI,KAAK,cAAc,QAAS,QAAQ,KAAK,SAAS,aAAa,KAAK,MAAM,WAAW,GAAI;AAC3F,iBAAK,EAAE,MAAM,QAAQ,OAAO,QAAQ,KAAK,QAAQ,CAAC;AAClD;AAAA,UACF;AAEA,cAAI,MAAM,aAAa,GAAG;AACxB,gBAAI,KAAK,mBAAmB,MAAM;AAChC,oBAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;AAAA,YACnD;AAEA,iBAAK,EAAE,MAAM,QAAQ,OAAO,QAAQ,KAAK,QAAQ,CAAC;AAClD;AAAA,UACF;AAEA,oBAAU,UAAU;AAEpB,gBAAM,YAAY,KAAK,MAAM,MAAM,CAAC;AACpC,cAAI,KAAK,UAAU,QAAQ,UAAU,OAAO,OAAO,CAAC,UAAU,SAAS,GAAG,GAAG;AAC3E,oBAAQ,IAAI;AAAA,UACd;AAEA,eAAK,SAAS;AACd,iBAAO,EAAE,MAAM,CAAC;AAIhB,cAAI,KAAK,oBAAoB,SAAS,MAAM,cAAc,SAAS,GAAG;AACpE;AAAA,UACF;AAEA,gBAAM,UAAU,MAAM,YAAY,KAAK,KAAK;AAC5C,gBAAM,SAAS,MAAM,OAAO,MAAM,GAAG,CAAC,KAAK,MAAM,MAAM;AAIvD,cAAI,KAAK,oBAAoB,MAAM;AACjC,kBAAM,UAAU;AAChB,iBAAK,QAAQ;AACb;AAAA,UACF;AAGA,eAAK,QAAQ,IAAI,UAAU,WAAW,KAAK;AAC3C,gBAAM,UAAU,KAAK;AACrB;AAAA,QACF;AAMA,YAAI,UAAU,OAAO,KAAK,YAAY,MAAM;AAC1C,UAAAA,WAAU,QAAQ;AAElB,gBAAM,OAAO;AAAA,YACX,MAAM;AAAA,YACN;AAAA,YACA,QAAQ;AAAA,YACR,aAAa,MAAM,OAAO;AAAA,YAC1B,aAAa,MAAM,OAAO;AAAA,UAC5B;AAEA,iBAAO,KAAK,IAAI;AAChB,eAAK,IAAI;AACT;AAAA,QACF;AAEA,YAAI,UAAU,KAAK;AACjB,gBAAM,QAAQ,OAAO,OAAO,SAAS;AAErC,cAAI,KAAK,YAAY,QAAQ,CAAC,OAAO;AACnC,iBAAK,EAAE,MAAM,QAAQ,OAAO,QAAQ,MAAM,CAAC;AAC3C;AAAA,UACF;AAEA,cAAI,SAAS;AAEb,cAAI,MAAM,SAAS,MAAM;AACvB,kBAAM,MAAM,OAAO,MAAM;AACzB,kBAAM,QAAQ,CAAC;AAEf,qBAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,qBAAO,IAAI;AACX,kBAAI,IAAI,GAAG,SAAS,SAAS;AAC3B;AAAA,cACF;AACA,kBAAI,IAAI,GAAG,SAAS,QAAQ;AAC1B,sBAAM,QAAQ,IAAI,GAAG,KAAK;AAAA,cAC5B;AAAA,YACF;AAEA,qBAAS,YAAY,OAAO,IAAI;AAChC,kBAAM,YAAY;AAAA,UACpB;AAEA,cAAI,MAAM,UAAU,QAAQ,MAAM,SAAS,MAAM;AAC/C,kBAAM,MAAM,MAAM,OAAO,MAAM,GAAG,MAAM,WAAW;AACnD,kBAAM,OAAO,MAAM,OAAO,MAAM,MAAM,WAAW;AACjD,kBAAM,QAAQ,MAAM,SAAS;AAC7B,oBAAQ,SAAS;AACjB,kBAAM,SAAS;AACf,uBAAW,KAAK,MAAM;AACpB,oBAAM,UAAW,EAAE,UAAU,EAAE;AAAA,YACjC;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,SAAS,OAAO,OAAO,CAAC;AACrC,oBAAU,QAAQ;AAClB,iBAAO,IAAI;AACX;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,cAAI,SAAS,SAAS,GAAG;AACvB,qBAAS,SAAS,SAAS,GAAG;AAAA,UAChC;AACA,eAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,cAAI,SAAS;AAEb,gBAAM,QAAQ,OAAO,OAAO,SAAS;AACrC,cAAI,SAAS,MAAM,MAAM,SAAS,OAAO,UAAU;AACjD,kBAAM,QAAQ;AACd,qBAAS;AAAA,UACX;AAEA,eAAK,EAAE,MAAM,SAAS,OAAO,OAAO,CAAC;AACrC;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AAKjB,cAAI,KAAK,SAAS,SAAS,MAAM,UAAU,MAAM,QAAQ,GAAG;AAC1D,kBAAM,QAAQ,MAAM,QAAQ;AAC5B,kBAAM,WAAW;AACjB,kBAAM,SAAS;AACf,mBAAO,IAAI;AACX,mBAAO;AACP;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,SAAS,OAAO,QAAQ,cAAc,CAAC;AACpD;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,cAAI,MAAM,SAAS,KAAK,KAAK,SAAS,OAAO;AAC3C,gBAAI,KAAK,UAAU;AAAK,mBAAK,SAAS;AACtC,kBAAM,QAAQ,OAAO,OAAO,SAAS;AACrC,iBAAK,OAAO;AACZ,iBAAK,UAAU;AACf,iBAAK,SAAS;AACd,kBAAM,OAAO;AACb;AAAA,UACF;AAEA,cAAK,MAAM,SAAS,MAAM,WAAY,KAAK,KAAK,SAAS,SAAS,KAAK,SAAS,SAAS;AACvF,iBAAK,EAAE,MAAM,QAAQ,OAAO,QAAQ,YAAY,CAAC;AACjD;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,OAAO,OAAO,QAAQ,YAAY,CAAC;AAChD;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,gBAAM,UAAU,QAAQ,KAAK,UAAU;AACvC,cAAI,CAAC,WAAW,KAAK,cAAc,QAAQ,KAAK,MAAM,OAAO,KAAK,CAAC,MAAM,KAAK;AAC5E,wBAAY,SAAS,KAAK;AAC1B;AAAA,UACF;AAEA,cAAI,QAAQ,KAAK,SAAS,SAAS;AACjC,kBAAM,OAAO,KAAK;AAClB,gBAAI,SAAS;AAEb,gBAAI,SAAS,OAAO,CAAC,MAAM,oBAAoB,GAAG;AAChD,oBAAM,IAAI,MAAM,yDAAyD;AAAA,YAC3E;AAEA,gBAAK,KAAK,UAAU,OAAO,CAAC,SAAS,KAAK,IAAI,KAAO,SAAS,OAAO,CAAC,eAAe,KAAK,UAAU,CAAC,GAAI;AACvG,uBAAS,KAAK;AAAA,YAChB;AAEA,iBAAK,EAAE,MAAM,QAAQ,OAAO,OAAO,CAAC;AACpC;AAAA,UACF;AAEA,cAAI,KAAK,QAAQ,SAAS,KAAK,SAAS,WAAW,KAAK,SAAS,QAAQ;AACvE,iBAAK,EAAE,MAAM,SAAS,OAAO,QAAQ,aAAa,CAAC;AACnD;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,SAAS,OAAO,QAAQ,MAAM,CAAC;AAC5C;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,cAAI,KAAK,cAAc,QAAQ,KAAK,MAAM,KAAK;AAC7C,gBAAI,KAAK,CAAC,MAAM,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,GAAG;AAC9C,0BAAY,UAAU,KAAK;AAC3B;AAAA,YACF;AAAA,UACF;AAEA,cAAI,KAAK,aAAa,QAAQ,MAAM,UAAU,GAAG;AAC/C,mBAAO;AACP;AAAA,UACF;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,cAAI,KAAK,cAAc,QAAQ,KAAK,MAAM,OAAO,KAAK,CAAC,MAAM,KAAK;AAChE,wBAAY,QAAQ,KAAK;AACzB;AAAA,UACF;AAEA,cAAK,QAAQ,KAAK,UAAU,OAAQ,KAAK,UAAU,OAAO;AACxD,iBAAK,EAAE,MAAM,QAAQ,OAAO,QAAQ,aAAa,CAAC;AAClD;AAAA,UACF;AAEA,cAAK,SAAS,KAAK,SAAS,aAAa,KAAK,SAAS,WAAW,KAAK,SAAS,YAAa,MAAM,SAAS,GAAG;AAC7G,iBAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,QAAQ,OAAO,aAAa,CAAC;AAC1C;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,cAAI,KAAK,cAAc,QAAQ,KAAK,MAAM,OAAO,KAAK,CAAC,MAAM,KAAK;AAChE,iBAAK,EAAE,MAAM,MAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,CAAC;AACrD;AAAA,UACF;AAEA,eAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,QACF;AAMA,YAAI,UAAU,KAAK;AACjB,cAAI,UAAU,OAAO,UAAU,KAAK;AAClC,oBAAQ,KAAK;AAAA,UACf;AAEA,gBAAMC,SAAQ,wBAAwB,KAAK,UAAU,CAAC;AACtD,cAAIA,QAAO;AACT,qBAASA,OAAM;AACf,kBAAM,SAASA,OAAM,GAAG;AAAA,UAC1B;AAEA,eAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAC5B;AAAA,QACF;AAMA,YAAI,SAAS,KAAK,SAAS,cAAc,KAAK,SAAS,OAAO;AAC5D,eAAK,OAAO;AACZ,eAAK,OAAO;AACZ,eAAK,SAAS;AACd,eAAK,SAASH;AACd,gBAAM,YAAY;AAClB,gBAAM,WAAW;AACjB,kBAAQ,KAAK;AACb;AAAA,QACF;AAEA,YAAI,OAAO,UAAU;AACrB,YAAI,KAAK,cAAc,QAAQ,UAAU,KAAK,IAAI,GAAG;AACnD,sBAAY,QAAQ,KAAK;AACzB;AAAA,QACF;AAEA,YAAI,KAAK,SAAS,QAAQ;AACxB,cAAI,KAAK,eAAe,MAAM;AAC5B,oBAAQ,KAAK;AACb;AAAA,UACF;AAEA,gBAAM,QAAQ,KAAK;AACnB,gBAAM,SAAS,MAAM;AACrB,gBAAM,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS;AACzD,gBAAM,YAAY,WAAW,OAAO,SAAS,UAAU,OAAO,SAAS;AAEvE,cAAI,KAAK,SAAS,SAAS,CAAC,WAAY,KAAK,MAAM,KAAK,OAAO,MAAO;AACpE,iBAAK,EAAE,MAAM,QAAQ,OAAO,QAAQ,GAAG,CAAC;AACxC;AAAA,UACF;AAEA,gBAAM,UAAU,MAAM,SAAS,MAAM,MAAM,SAAS,WAAW,MAAM,SAAS;AAC9E,gBAAM,YAAY,SAAS,WAAW,MAAM,SAAS,UAAU,MAAM,SAAS;AAC9E,cAAI,CAAC,WAAW,MAAM,SAAS,WAAW,CAAC,WAAW,CAAC,WAAW;AAChE,iBAAK,EAAE,MAAM,QAAQ,OAAO,QAAQ,GAAG,CAAC;AACxC;AAAA,UACF;AAGA,iBAAO,KAAK,MAAM,GAAG,CAAC,MAAM,OAAO;AACjC,kBAAM,QAAQ,MAAM,MAAM,QAAQ;AAClC,gBAAI,SAAS,UAAU,KAAK;AAC1B;AAAA,YACF;AACA,mBAAO,KAAK,MAAM,CAAC;AACnB,oBAAQ,OAAO,CAAC;AAAA,UAClB;AAEA,cAAI,MAAM,SAAS,SAAS,IAAI,GAAG;AACjC,iBAAK,OAAO;AACZ,iBAAK,SAAS;AACd,iBAAK,SAAS,SAAS,IAAI;AAC3B,kBAAM,SAAS,KAAK;AACpB,kBAAM,WAAW;AACjB,oBAAQ,KAAK;AACb;AAAA,UACF;AAEA,cAAI,MAAM,SAAS,WAAW,MAAM,KAAK,SAAS,SAAS,CAAC,aAAa,IAAI,GAAG;AAC9E,kBAAM,SAAS,MAAM,OAAO,MAAM,GAAG,EAAE,MAAM,SAAS,KAAK,QAAQ,MAAM;AACzE,kBAAM,SAAS,MAAM,MAAM;AAE3B,iBAAK,OAAO;AACZ,iBAAK,SAAS,SAAS,IAAI,KAAK,KAAK,gBAAgB,MAAM;AAC3D,iBAAK,SAAS;AACd,kBAAM,WAAW;AACjB,kBAAM,UAAU,MAAM,SAAS,KAAK;AACpC,oBAAQ,KAAK;AACb;AAAA,UACF;AAEA,cAAI,MAAM,SAAS,WAAW,MAAM,KAAK,SAAS,SAAS,KAAK,OAAO,KAAK;AAC1E,kBAAM,MAAM,KAAK,OAAO,SAAS,OAAO;AAExC,kBAAM,SAAS,MAAM,OAAO,MAAM,GAAG,EAAE,MAAM,SAAS,KAAK,QAAQ,MAAM;AACzE,kBAAM,SAAS,MAAM,MAAM;AAE3B,iBAAK,OAAO;AACZ,iBAAK,SAAS,GAAG,SAAS,IAAI,IAAI,iBAAiB,gBAAgB;AACnE,iBAAK,SAAS;AAEd,kBAAM,UAAU,MAAM,SAAS,KAAK;AACpC,kBAAM,WAAW;AAEjB,oBAAQ,QAAQ,QAAQ,CAAC;AAEzB,iBAAK,EAAE,MAAM,SAAS,OAAO,KAAK,QAAQ,GAAG,CAAC;AAC9C;AAAA,UACF;AAEA,cAAI,MAAM,SAAS,SAAS,KAAK,OAAO,KAAK;AAC3C,iBAAK,OAAO;AACZ,iBAAK,SAAS;AACd,iBAAK,SAAS,QAAQ,iBAAiB,SAAS,IAAI,IAAI;AACxD,kBAAM,SAAS,KAAK;AACpB,kBAAM,WAAW;AACjB,oBAAQ,QAAQ,QAAQ,CAAC;AACzB,iBAAK,EAAE,MAAM,SAAS,OAAO,KAAK,QAAQ,GAAG,CAAC;AAC9C;AAAA,UACF;AAGA,gBAAM,SAAS,MAAM,OAAO,MAAM,GAAG,CAAC,KAAK,OAAO,MAAM;AAGxD,eAAK,OAAO;AACZ,eAAK,SAAS,SAAS,IAAI;AAC3B,eAAK,SAAS;AAGd,gBAAM,UAAU,KAAK;AACrB,gBAAM,WAAW;AACjB,kBAAQ,KAAK;AACb;AAAA,QACF;AAEA,cAAM,QAAQ,EAAE,MAAM,QAAQ,OAAO,QAAQA,MAAK;AAElD,YAAI,KAAK,SAAS,MAAM;AACtB,gBAAM,SAAS;AACf,cAAI,KAAK,SAAS,SAAS,KAAK,SAAS,SAAS;AAChD,kBAAM,SAAS,QAAQ,MAAM;AAAA,UAC/B;AACA,eAAK,KAAK;AACV;AAAA,QACF;AAEA,YAAI,SAAS,KAAK,SAAS,aAAa,KAAK,SAAS,YAAY,KAAK,UAAU,MAAM;AACrF,gBAAM,SAAS;AACf,eAAK,KAAK;AACV;AAAA,QACF;AAEA,YAAI,MAAM,UAAU,MAAM,SAAS,KAAK,SAAS,WAAW,KAAK,SAAS,OAAO;AAC/E,cAAI,KAAK,SAAS,OAAO;AACvB,kBAAM,UAAU;AAChB,iBAAK,UAAU;AAAA,UAEjB,WAAW,KAAK,QAAQ,MAAM;AAC5B,kBAAM,UAAU;AAChB,iBAAK,UAAU;AAAA,UAEjB,OAAO;AACL,kBAAM,UAAU;AAChB,iBAAK,UAAU;AAAA,UACjB;AAEA,cAAI,KAAK,MAAM,KAAK;AAClB,kBAAM,UAAU;AAChB,iBAAK,UAAU;AAAA,UACjB;AAAA,QACF;AAEA,aAAK,KAAK;AAAA,MACZ;AAEA,aAAO,MAAM,WAAW,GAAG;AACzB,YAAI,KAAK,mBAAmB;AAAM,gBAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;AACnF,cAAM,SAAS,MAAM,WAAW,MAAM,QAAQ,GAAG;AACjD,kBAAU,UAAU;AAAA,MACtB;AAEA,aAAO,MAAM,SAAS,GAAG;AACvB,YAAI,KAAK,mBAAmB;AAAM,gBAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;AACnF,cAAM,SAAS,MAAM,WAAW,MAAM,QAAQ,GAAG;AACjD,kBAAU,QAAQ;AAAA,MACpB;AAEA,aAAO,MAAM,SAAS,GAAG;AACvB,YAAI,KAAK,mBAAmB;AAAM,gBAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;AACnF,cAAM,SAAS,MAAM,WAAW,MAAM,QAAQ,GAAG;AACjD,kBAAU,QAAQ;AAAA,MACpB;AAEA,UAAI,KAAK,kBAAkB,SAAS,KAAK,SAAS,UAAU,KAAK,SAAS,YAAY;AACpF,aAAK,EAAE,MAAM,eAAe,OAAO,IAAI,QAAQ,GAAG,iBAAiB,CAAC;AAAA,MACtE;AAGA,UAAI,MAAM,cAAc,MAAM;AAC5B,cAAM,SAAS;AAEf,mBAAW,SAAS,MAAM,QAAQ;AAChC,gBAAM,UAAU,MAAM,UAAU,OAAO,MAAM,SAAS,MAAM;AAE5D,cAAI,MAAM,QAAQ;AAChB,kBAAM,UAAU,MAAM;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAQA,IAAAF,OAAM,YAAY,CAAC,OAAO,YAAY;AACpC,YAAM,OAAO,EAAE,GAAG,QAAQ;AAC1B,YAAM,MAAM,OAAO,KAAK,cAAc,WAAW,KAAK,IAAI,YAAY,KAAK,SAAS,IAAI;AACxF,YAAM,MAAM,MAAM;AAClB,UAAI,MAAM,KAAK;AACb,cAAM,IAAI,YAAY,iBAAiB,wCAAwC,KAAK;AAAA,MACtF;AAEA,cAAQ,aAAa,UAAU;AAC/B,YAAM,QAAQ,MAAM,UAAU,OAAO;AAGrC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,UAAU,UAAU,KAAK;AAE7B,YAAM,QAAQ,KAAK,MAAM,UAAU;AACnC,YAAM,WAAW,KAAK,MAAM,gBAAgB;AAC5C,YAAM,UAAU,KAAK,UAAU,KAAK;AACpC,YAAM,QAAQ,EAAE,SAAS,OAAO,QAAQ,GAAG;AAC3C,UAAIE,QAAO,KAAK,SAAS,OAAO,QAAQ;AAExC,UAAI,KAAK,SAAS;AAChB,QAAAA,QAAO,IAAIA;AAAA,MACb;AAEA,YAAM,WAAW,CAAAD,UAAQ;AACvB,YAAIA,MAAK,eAAe;AAAM,iBAAOC;AACrC,eAAO,IAAI,gBAAgB,eAAeD,MAAK,MAAM,aAAa;AAAA,MACpE;AAEA,YAAM,SAAS,SAAO;AACpB,gBAAQ,KAAK;AAAA,UACX,KAAK;AACH,mBAAO,GAAG,QAAQ,WAAWC;AAAA,UAE/B,KAAK;AACH,mBAAO,GAAG,cAAc,WAAWA;AAAA,UAErC,KAAK;AACH,mBAAO,GAAG,QAAQA,QAAO,cAAc,WAAWA;AAAA,UAEpD,KAAK;AACH,mBAAO,GAAG,QAAQA,QAAO,gBAAgB,WAAW,WAAWA;AAAA,UAEjE,KAAK;AACH,mBAAO,QAAQ,SAAS,IAAI;AAAA,UAE9B,KAAK;AACH,mBAAO,MAAM,QAAQ,SAAS,IAAI,IAAI,kBAAkB,WAAW,WAAWA;AAAA,UAEhF,KAAK;AACH,mBAAO,MAAM,QAAQ,SAAS,IAAI,IAAI,kBAAkB,WAAWA,QAAO,cAAc,WAAWA;AAAA,UAErG,KAAK;AACH,mBAAO,MAAM,QAAQ,SAAS,IAAI,IAAI,kBAAkB,cAAc,WAAWA;AAAA,UAEnF,SAAS;AACP,kBAAMG,SAAQ,iBAAiB,KAAK,GAAG;AACvC,gBAAI,CAACA;AAAO;AAEZ,kBAAME,UAAS,OAAOF,OAAM,EAAE;AAC9B,gBAAI,CAACE;AAAQ;AAEb,mBAAOA,UAAS,cAAcF,OAAM;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAEA,YAAM,SAAS,MAAM,aAAa,OAAO,KAAK;AAC9C,UAAI,SAAS,OAAO,MAAM;AAE1B,UAAI,UAAU,KAAK,kBAAkB,MAAM;AACzC,kBAAU,GAAG;AAAA,MACf;AAEA,aAAO;AAAA,IACT;AAEA,WAAO,UAAUL;AAAA;AAAA;;;AClkCjB;AAAA;AAAA;AAEA,QAAMQ,QAAO,UAAQ;AACrB,QAAM,OAAO;AACb,QAAMC,SAAQ;AACd,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,WAAW,SAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAwB5E,QAAM,YAAY,CAACC,OAAM,SAAS,cAAc,UAAU;AACxD,UAAI,MAAM,QAAQA,KAAI,GAAG;AACvB,cAAM,MAAMA,MAAK,IAAI,WAAS,UAAU,OAAO,SAAS,WAAW,CAAC;AACpE,cAAM,eAAe,SAAO;AAC1B,qBAAW,WAAW,KAAK;AACzB,kBAAMC,SAAQ,QAAQ,GAAG;AACzB,gBAAIA;AAAO,qBAAOA;AAAA,UACpB;AACA,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAEA,YAAM,UAAU,SAASD,KAAI,KAAKA,MAAK,UAAUA,MAAK;AAEtD,UAAIA,UAAS,MAAO,OAAOA,UAAS,YAAY,CAAC,SAAU;AACzD,cAAM,IAAI,UAAU,2CAA2C;AAAA,MACjE;AAEA,YAAM,OAAO,WAAW,CAAC;AACzB,YAAM,QAAQ,MAAM,UAAU,OAAO;AACrC,YAAM,QAAQ,UACV,UAAU,UAAUA,OAAM,OAAO,IACjC,UAAU,OAAOA,OAAM,SAAS,OAAO,IAAI;AAE/C,YAAM,QAAQ,MAAM;AACpB,aAAO,MAAM;AAEb,UAAI,YAAY,MAAM;AACtB,UAAI,KAAK,QAAQ;AACf,cAAM,aAAa,EAAE,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,UAAU,KAAK;AAC7E,oBAAY,UAAU,KAAK,QAAQ,YAAY,WAAW;AAAA,MAC5D;AAEA,YAAM,UAAU,CAAC,OAAO,eAAe,UAAU;AAC/C,cAAM,EAAE,SAAS,OAAAE,QAAO,OAAO,IAAI,UAAU,KAAK,OAAO,OAAO,SAAS,EAAE,MAAAF,OAAM,MAAM,CAAC;AACxF,cAAM,SAAS,EAAE,MAAAA,OAAM,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAAE,QAAO,QAAQ;AAE1E,YAAI,OAAO,KAAK,aAAa,YAAY;AACvC,eAAK,SAAS,MAAM;AAAA,QACtB;AAEA,YAAI,YAAY,OAAO;AACrB,iBAAO,UAAU;AACjB,iBAAO,eAAe,SAAS;AAAA,QACjC;AAEA,YAAI,UAAU,KAAK,GAAG;AACpB,cAAI,OAAO,KAAK,aAAa,YAAY;AACvC,iBAAK,SAAS,MAAM;AAAA,UACtB;AACA,iBAAO,UAAU;AACjB,iBAAO,eAAe,SAAS;AAAA,QACjC;AAEA,YAAI,OAAO,KAAK,YAAY,YAAY;AACtC,eAAK,QAAQ,MAAM;AAAA,QACrB;AACA,eAAO,eAAe,SAAS;AAAA,MACjC;AAEA,UAAI,aAAa;AACf,gBAAQ,QAAQ;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAmBA,cAAU,OAAO,CAAC,OAAO,OAAO,SAAS,EAAE,MAAAF,OAAM,MAAM,IAAI,CAAC,MAAM;AAChE,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,IAAI,UAAU,+BAA+B;AAAA,MACrD;AAEA,UAAI,UAAU,IAAI;AAChB,eAAO,EAAE,SAAS,OAAO,QAAQ,GAAG;AAAA,MACtC;AAEA,YAAM,OAAO,WAAW,CAAC;AACzB,YAAMG,UAAS,KAAK,WAAW,QAAQ,MAAM,iBAAiB;AAC9D,UAAID,SAAQ,UAAUF;AACtB,UAAI,SAAUE,UAASC,UAAUA,QAAO,KAAK,IAAI;AAEjD,UAAID,WAAU,OAAO;AACnB,iBAASC,UAASA,QAAO,KAAK,IAAI;AAClC,QAAAD,SAAQ,WAAWF;AAAA,MACrB;AAEA,UAAIE,WAAU,SAAS,KAAK,YAAY,MAAM;AAC5C,YAAI,KAAK,cAAc,QAAQ,KAAK,aAAa,MAAM;AACrD,UAAAA,SAAQ,UAAU,UAAU,OAAO,OAAO,SAAS,KAAK;AAAA,QAC1D,OAAO;AACL,UAAAA,SAAQ,MAAM,KAAK,MAAM;AAAA,QAC3B;AAAA,MACF;AAEA,aAAO,EAAE,SAAS,QAAQA,MAAK,GAAG,OAAAA,QAAO,OAAO;AAAA,IAClD;AAgBA,cAAU,YAAY,CAAC,OAAOF,OAAM,SAAS,QAAQ,MAAM,UAAU,OAAO,MAAM;AAChF,YAAM,QAAQA,iBAAgB,SAASA,QAAO,UAAU,OAAOA,OAAM,OAAO;AAC5E,aAAO,MAAM,KAAKF,MAAK,SAAS,KAAK,CAAC;AAAA,IACxC;AAmBA,cAAU,UAAU,CAAC,KAAK,UAAU,YAAY,UAAU,UAAU,OAAO,EAAE,GAAG;AAgBhF,cAAU,QAAQ,CAAC,SAAS,YAAY;AACtC,UAAI,MAAM,QAAQ,OAAO;AAAG,eAAO,QAAQ,IAAI,OAAK,UAAU,MAAM,GAAG,OAAO,CAAC;AAC/E,aAAOC,OAAM,SAAS,EAAE,GAAG,SAAS,WAAW,MAAM,CAAC;AAAA,IACxD;AA6BA,cAAU,OAAO,CAAC,OAAO,YAAY,KAAK,OAAO,OAAO;AAcxD,cAAU,YAAY,CAAC,OAAO,SAAS,eAAe,OAAO,cAAc,UAAU;AACnF,UAAI,iBAAiB,MAAM;AACzB,eAAO,MAAM;AAAA,MACf;AAEA,YAAM,OAAO,WAAW,CAAC;AACzB,YAAM,UAAU,KAAK,WAAW,KAAK;AACrC,YAAM,SAAS,KAAK,WAAW,KAAK;AAEpC,UAAI,SAAS,GAAG,aAAa,MAAM,UAAU;AAC7C,UAAI,SAAS,MAAM,YAAY,MAAM;AACnC,iBAAS,OAAO;AAAA,MAClB;AAEA,YAAM,QAAQ,UAAU,QAAQ,QAAQ,OAAO;AAC/C,UAAI,gBAAgB,MAAM;AACxB,cAAM,QAAQ;AAAA,MAChB;AAEA,aAAO;AAAA,IACT;AAqBA,cAAU,SAAS,CAAC,OAAO,UAAU,CAAC,GAAG,eAAe,OAAO,cAAc,UAAU;AACrF,UAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,cAAM,IAAI,UAAU,6BAA6B;AAAA,MACnD;AAEA,UAAI,SAAS,EAAE,SAAS,OAAO,WAAW,KAAK;AAE/C,UAAI,QAAQ,cAAc,UAAU,MAAM,OAAO,OAAO,MAAM,OAAO,MAAM;AACzE,eAAO,SAASA,OAAM,UAAU,OAAO,OAAO;AAAA,MAChD;AAEA,UAAI,CAAC,OAAO,QAAQ;AAClB,iBAASA,OAAM,OAAO,OAAO;AAAA,MAC/B;AAEA,aAAO,UAAU,UAAU,QAAQ,SAAS,cAAc,WAAW;AAAA,IACvE;AAmBA,cAAU,UAAU,CAAC,QAAQ,YAAY;AACvC,UAAI;AACF,cAAM,OAAO,WAAW,CAAC;AACzB,eAAO,IAAI,OAAO,QAAQ,KAAK,UAAU,KAAK,SAAS,MAAM,GAAG;AAAA,MAClE,SAAS,KAAP;AACA,YAAI,WAAW,QAAQ,UAAU;AAAM,gBAAM;AAC7C,eAAO;AAAA,MACT;AAAA,IACF;AAOA,cAAU,YAAY;AAMtB,WAAO,UAAU;AAAA;AAAA;;;ACrVjB,IAAAK,qBAAA;AAAA;AAAA;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA;AAEA,QAAM,OAAO,UAAQ;AACrB,QAAM,SAAS;AACf,QAAM,YAAY;AAClB,QAAM,QAAQ;AAEd,QAAM,gBAAgB,OAAK,MAAM,MAAM,MAAM;AAC7C,QAAM,YAAY,OAAK;AACrB,YAAM,QAAQ,EAAE,QAAQ,GAAG;AAC3B,aAAO,QAAQ,MAAM,EAAE,QAAQ,KAAK,KAAK,IAAI;AAAA,IAC/C;AAoBA,QAAM,aAAa,CAAC,MAAM,UAAU,YAAY;AAC9C,iBAAW,CAAC,EAAE,OAAO,QAAQ;AAC7B,aAAO,CAAC,EAAE,OAAO,IAAI;AAErB,UAAI,OAAO,oBAAI,IAAI;AACnB,UAAI,OAAO,oBAAI,IAAI;AACnB,UAAI,QAAQ,oBAAI,IAAI;AACpB,UAAI,YAAY;AAEhB,UAAI,WAAW,WAAS;AACtB,cAAM,IAAI,MAAM,MAAM;AACtB,YAAI,WAAW,QAAQ,UAAU;AAC/B,kBAAQ,SAAS,KAAK;AAAA,QACxB;AAAA,MACF;AAEA,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,YAAI,UAAU,UAAU,OAAO,SAAS,EAAE,GAAG,EAAE,GAAG,SAAS,SAAS,GAAG,IAAI;AAC3E,YAAI,UAAU,QAAQ,MAAM,WAAW,QAAQ,MAAM;AACrD,YAAI;AAAS;AAEb,iBAAS,QAAQ,MAAM;AACrB,cAAI,UAAU,QAAQ,MAAM,IAAI;AAEhC,cAAIC,SAAQ,UAAU,CAAC,QAAQ,UAAU,QAAQ;AACjD,cAAI,CAACA;AAAO;AAEZ,cAAI,SAAS;AACX,iBAAK,IAAI,QAAQ,MAAM;AAAA,UACzB,OAAO;AACL,iBAAK,OAAO,QAAQ,MAAM;AAC1B,iBAAK,IAAI,QAAQ,MAAM;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,SAAS,cAAc,SAAS,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI;AAClE,UAAI,UAAU,OAAO,OAAO,UAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;AAEnD,UAAI,WAAW,QAAQ,WAAW,GAAG;AACnC,YAAI,QAAQ,aAAa,MAAM;AAC7B,gBAAM,IAAI,MAAM,yBAAyB,SAAS,KAAK,IAAI,IAAI;AAAA,QACjE;AAEA,YAAI,QAAQ,WAAW,QAAQ,QAAQ,aAAa,MAAM;AACxD,iBAAO,QAAQ,WAAW,SAAS,IAAI,OAAK,EAAE,QAAQ,OAAO,EAAE,CAAC,IAAI;AAAA,QACtE;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAMA,eAAW,QAAQ;AAqBnB,eAAW,UAAU,CAAC,SAAS,YAAY,UAAU,SAAS,OAAO;AAmBrE,eAAW,UAAU,CAAC,KAAK,UAAU,YAAY,UAAU,UAAU,OAAO,EAAE,GAAG;AAMjF,eAAW,MAAM,WAAW;AAmB5B,eAAW,MAAM,CAAC,MAAM,UAAU,UAAU,CAAC,MAAM;AACjD,iBAAW,CAAC,EAAE,OAAO,QAAQ,EAAE,IAAI,MAAM;AACzC,UAAI,SAAS,oBAAI,IAAI;AACrB,UAAI,QAAQ,CAAC;AAEb,UAAI,WAAW,WAAS;AACtB,YAAI,QAAQ;AAAU,kBAAQ,SAAS,KAAK;AAC5C,cAAM,KAAK,MAAM,MAAM;AAAA,MACzB;AAEA,UAAI,UAAU,IAAI,IAAI,WAAW,MAAM,UAAU,EAAE,GAAG,SAAS,SAAS,CAAC,CAAC;AAE1E,eAAS,QAAQ,OAAO;AACtB,YAAI,CAAC,QAAQ,IAAI,IAAI,GAAG;AACtB,iBAAO,IAAI,IAAI;AAAA,QACjB;AAAA,MACF;AACA,aAAO,CAAC,GAAG,MAAM;AAAA,IACnB;AAsBA,eAAW,WAAW,CAAC,KAAK,SAAS,YAAY;AAC/C,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAM,IAAI,UAAU,uBAAuB,KAAK,QAAQ,GAAG,IAAI;AAAA,MACjE;AAEA,UAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,eAAO,QAAQ,KAAK,OAAK,WAAW,SAAS,KAAK,GAAG,OAAO,CAAC;AAAA,MAC/D;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,YAAI,cAAc,GAAG,KAAK,cAAc,OAAO,GAAG;AAChD,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,SAAS,OAAO,KAAM,IAAI,WAAW,IAAI,KAAK,IAAI,MAAM,CAAC,EAAE,SAAS,OAAO,GAAI;AACrF,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO,WAAW,QAAQ,KAAK,SAAS,EAAE,GAAG,SAAS,UAAU,KAAK,CAAC;AAAA,IACxE;AAsBA,eAAW,YAAY,CAAC,KAAK,UAAU,YAAY;AACjD,UAAI,CAAC,MAAM,SAAS,GAAG,GAAG;AACxB,cAAM,IAAI,UAAU,6CAA6C;AAAA,MACnE;AACA,UAAI,OAAO,WAAW,OAAO,KAAK,GAAG,GAAG,UAAU,OAAO;AACzD,UAAI,MAAM,CAAC;AACX,eAAS,OAAO;AAAM,YAAI,OAAO,IAAI;AACrC,aAAO;AAAA,IACT;AAqBA,eAAW,OAAO,CAAC,MAAM,UAAU,YAAY;AAC7C,UAAI,QAAQ,CAAC,EAAE,OAAO,IAAI;AAE1B,eAAS,WAAW,CAAC,EAAE,OAAO,QAAQ,GAAG;AACvC,YAAI,UAAU,UAAU,OAAO,OAAO,GAAG,OAAO;AAChD,YAAI,MAAM,KAAK,UAAQ,QAAQ,IAAI,CAAC,GAAG;AACrC,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AA0BA,eAAW,QAAQ,CAAC,MAAM,UAAU,YAAY;AAC9C,UAAI,QAAQ,CAAC,EAAE,OAAO,IAAI;AAE1B,eAAS,WAAW,CAAC,EAAE,OAAO,QAAQ,GAAG;AACvC,YAAI,UAAU,UAAU,OAAO,OAAO,GAAG,OAAO;AAChD,YAAI,CAAC,MAAM,MAAM,UAAQ,QAAQ,IAAI,CAAC,GAAG;AACvC,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AA6BA,eAAW,MAAM,CAAC,KAAK,UAAU,YAAY;AAC3C,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAM,IAAI,UAAU,uBAAuB,KAAK,QAAQ,GAAG,IAAI;AAAA,MACjE;AAEA,aAAO,CAAC,EAAE,OAAO,QAAQ,EAAE,MAAM,OAAK,UAAU,GAAG,OAAO,EAAE,GAAG,CAAC;AAAA,IAClE;AAqBA,eAAW,UAAU,CAACC,OAAM,OAAO,YAAY;AAC7C,UAAI,QAAQ,MAAM,UAAU,OAAO;AACnC,UAAI,QAAQ,UAAU,OAAO,OAAOA,KAAI,GAAG,EAAE,GAAG,SAAS,SAAS,KAAK,CAAC;AACxE,UAAID,SAAQ,MAAM,KAAK,QAAQ,MAAM,eAAe,KAAK,IAAI,KAAK;AAElE,UAAIA,QAAO;AACT,eAAOA,OAAM,MAAM,CAAC,EAAE,IAAI,OAAK,MAAM,SAAS,KAAK,CAAC;AAAA,MACtD;AAAA,IACF;AAkBA,eAAW,SAAS,IAAI,SAAS,UAAU,OAAO,GAAG,IAAI;AAgBzD,eAAW,OAAO,IAAI,SAAS,UAAU,KAAK,GAAG,IAAI;AAgBrD,eAAW,QAAQ,CAAC,UAAU,YAAY;AACxC,UAAI,MAAM,CAAC;AACX,eAAS,WAAW,CAAC,EAAE,OAAO,YAAY,CAAC,CAAC,GAAG;AAC7C,iBAAS,OAAO,OAAO,OAAO,OAAO,GAAG,OAAO,GAAG;AAChD,cAAI,KAAK,UAAU,MAAM,KAAK,OAAO,CAAC;AAAA,QACxC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAmBA,eAAW,SAAS,CAAC,SAAS,YAAY;AACxC,UAAI,OAAO,YAAY;AAAU,cAAM,IAAI,UAAU,mBAAmB;AACxE,UAAK,WAAW,QAAQ,YAAY,QAAS,CAAC,UAAU,OAAO,GAAG;AAChE,eAAO,CAAC,OAAO;AAAA,MACjB;AACA,aAAO,OAAO,SAAS,OAAO;AAAA,IAChC;AAMA,eAAW,cAAc,CAAC,SAAS,YAAY;AAC7C,UAAI,OAAO,YAAY;AAAU,cAAM,IAAI,UAAU,mBAAmB;AACxE,aAAO,WAAW,OAAO,SAAS,EAAE,GAAG,SAAS,QAAQ,KAAK,CAAC;AAAA,IAChE;AAOA,eAAW,YAAY;AACvB,WAAO,UAAU;AAAA;AAAA;;;ACzdjB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,aAAa,QAAQ,+BAA+B,QAAQ,yBAAyB,QAAQ,WAAW,QAAQ,sBAAsB,QAAQ,SAAS,QAAQ,kBAAkB,QAAQ,uBAAuB,QAAQ,mCAAmC,QAAQ,gCAAgC,QAAQ,wBAAwB,QAAQ,cAAc,QAAQ,mBAAmB,QAAQ,oCAAoC,QAAQ,qCAAqC,QAAQ,oCAAoC,QAAQ,sBAAsB,QAAQ,sBAAsB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,2BAA2B,QAAQ,2BAA2B,QAAQ,mBAAmB,QAAQ,kBAAkB;AAChvB,QAAME,QAAO,UAAQ;AACrB,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAMC,YAAW;AACjB,QAAM,gBAAgB;AACtB,QAAM,yBAAyB;AAC/B,QAAM,mCAAmC;AACzC,QAAM,yBAAyB;AAC/B,QAAM,4BAA4B;AAClC,QAAM,gCAAgC;AAKtC,QAAM,kBAAkB;AACxB,aAAS,gBAAgB,SAAS,UAAU,CAAC,GAAG;AAC5C,aAAO,CAAC,iBAAiB,SAAS,OAAO;AAAA,IAC7C;AACA,YAAQ,kBAAkB;AAC1B,aAAS,iBAAiB,SAAS,UAAU,CAAC,GAAG;AAM7C,UAAI,YAAY,IAAI;AAChB,eAAO;AAAA,MACX;AAKA,UAAI,QAAQ,uBAAuB,SAAS,QAAQ,SAAS,aAAa,GAAG;AACzE,eAAO;AAAA,MACX;AACA,UAAI,uBAAuB,KAAK,OAAO,KAAK,iCAAiC,KAAK,OAAO,KAAK,uBAAuB,KAAK,OAAO,GAAG;AAChI,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,YAAY,SAAS,0BAA0B,KAAK,OAAO,GAAG;AACtE,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,mBAAmB,SAAS,kBAAkB,OAAO,GAAG;AAChE,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AACA,YAAQ,mBAAmB;AAC3B,aAAS,kBAAkB,SAAS;AAChC,YAAM,oBAAoB,QAAQ,QAAQ,GAAG;AAC7C,UAAI,sBAAsB,IAAI;AAC1B,eAAO;AAAA,MACX;AACA,YAAM,oBAAoB,QAAQ,QAAQ,KAAK,oBAAoB,CAAC;AACpE,UAAI,sBAAsB,IAAI;AAC1B,eAAO;AAAA,MACX;AACA,YAAM,eAAe,QAAQ,MAAM,mBAAmB,iBAAiB;AACvE,aAAO,8BAA8B,KAAK,YAAY;AAAA,IAC1D;AACA,aAAS,yBAAyB,SAAS;AACvC,aAAO,kBAAkB,OAAO,IAAI,QAAQ,MAAM,CAAC,IAAI;AAAA,IAC3D;AACA,YAAQ,2BAA2B;AACnC,aAAS,yBAAyB,SAAS;AACvC,aAAO,MAAM;AAAA,IACjB;AACA,YAAQ,2BAA2B;AACnC,aAAS,kBAAkB,SAAS;AAChC,aAAO,QAAQ,WAAW,GAAG,KAAK,QAAQ,OAAO;AAAA,IACrD;AACA,YAAQ,oBAAoB;AAC5B,aAAS,kBAAkB,SAAS;AAChC,aAAO,CAAC,kBAAkB,OAAO;AAAA,IACrC;AACA,YAAQ,oBAAoB;AAC5B,aAAS,oBAAoB,UAAU;AACnC,aAAO,SAAS,OAAO,iBAAiB;AAAA,IAC5C;AACA,YAAQ,sBAAsB;AAC9B,aAAS,oBAAoB,UAAU;AACnC,aAAO,SAAS,OAAO,iBAAiB;AAAA,IAC5C;AACA,YAAQ,sBAAsB;AAQ9B,aAAS,kCAAkC,UAAU;AACjD,aAAO,SAAS,OAAO,CAAC,YAAY,CAAC,kCAAkC,OAAO,CAAC;AAAA,IACnF;AACA,YAAQ,oCAAoC;AAQ5C,aAAS,mCAAmC,UAAU;AAClD,aAAO,SAAS,OAAO,iCAAiC;AAAA,IAC5D;AACA,YAAQ,qCAAqC;AAC7C,aAAS,kCAAkC,SAAS;AAChD,aAAO,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,MAAM;AAAA,IAChE;AACA,YAAQ,oCAAoC;AAC5C,aAAS,iBAAiB,SAAS;AAC/B,aAAO,WAAW,SAAS,EAAE,iBAAiB,MAAM,CAAC;AAAA,IACzD;AACA,YAAQ,mBAAmB;AAC3B,aAAS,YAAY,SAAS;AAC1B,aAAO,QAAQ,SAASA,SAAQ;AAAA,IACpC;AACA,YAAQ,cAAc;AACtB,aAAS,sBAAsB,SAAS;AACpC,aAAO,QAAQ,SAAS,MAAMA,SAAQ;AAAA,IAC1C;AACA,YAAQ,wBAAwB;AAChC,aAAS,8BAA8B,SAAS;AAC5C,YAAMC,YAAWF,MAAK,SAAS,OAAO;AACtC,aAAO,sBAAsB,OAAO,KAAK,gBAAgBE,SAAQ;AAAA,IACrE;AACA,YAAQ,gCAAgC;AACxC,aAAS,iCAAiC,UAAU;AAChD,aAAO,SAAS,OAAO,CAAC,YAAY,YAAY;AAC5C,eAAO,WAAW,OAAO,qBAAqB,OAAO,CAAC;AAAA,MAC1D,GAAG,CAAC,CAAC;AAAA,IACT;AACA,YAAQ,mCAAmC;AAC3C,aAAS,qBAAqB,SAAS;AACnC,YAAM,WAAW,WAAW,OAAO,SAAS,EAAE,QAAQ,MAAM,SAAS,MAAM,cAAc,KAAK,CAAC;AAK/F,eAAS,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM;AAI3C,aAAO,SAAS,OAAO,CAACC,aAAYA,aAAY,EAAE;AAAA,IACtD;AACA,YAAQ,uBAAuB;AAC/B,aAAS,gBAAgB,SAAS,SAAS;AACvC,UAAI,EAAE,MAAM,IAAI,WAAW,KAAK,SAAS,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC;AAKnG,UAAI,MAAM,WAAW,GAAG;AACpB,gBAAQ,CAAC,OAAO;AAAA,MACpB;AAKA,UAAI,MAAM,GAAG,WAAW,GAAG,GAAG;AAC1B,cAAM,KAAK,MAAM,GAAG,MAAM,CAAC;AAC3B,cAAM,QAAQ,EAAE;AAAA,MACpB;AACA,aAAO;AAAA,IACX;AACA,YAAQ,kBAAkB;AAC1B,aAASC,QAAO,SAAS,SAAS;AAC9B,aAAO,WAAW,OAAO,SAAS,OAAO;AAAA,IAC7C;AACA,YAAQ,SAASA;AACjB,aAAS,oBAAoB,UAAU,SAAS;AAC5C,aAAO,SAAS,IAAI,CAAC,YAAYA,QAAO,SAAS,OAAO,CAAC;AAAA,IAC7D;AACA,YAAQ,sBAAsB;AAC9B,aAAS,SAAS,OAAO,YAAY;AACjC,aAAO,WAAW,KAAK,CAAC,cAAc,UAAU,KAAK,KAAK,CAAC;AAAA,IAC/D;AACA,YAAQ,WAAW;AAKnB,aAAS,uBAAuB,SAAS;AACrC,aAAO,QAAQ,QAAQ,iBAAiB,GAAG;AAAA,IAC/C;AACA,YAAQ,yBAAyB;AACjC,aAAS,6BAA6B,UAAU;AAC5C,YAAM,WAAW,CAAC;AAClB,YAAMC,YAAW,CAAC;AAClB,iBAAW,WAAW,UAAU;AAC5B,YAAIC,YAAW,OAAO,GAAG;AACrB,mBAAS,KAAK,OAAO;AAAA,QACzB,OACK;AACD,UAAAD,UAAS,KAAK,OAAO;AAAA,QACzB;AAAA,MACJ;AACA,aAAO,CAAC,UAAUA,SAAQ;AAAA,IAC9B;AACA,YAAQ,+BAA+B;AACvC,aAASC,YAAW,SAAS;AACzB,aAAON,MAAK,WAAW,OAAO;AAAA,IAClC;AACA,YAAQ,aAAaM;AAAA;AAAA;;;AC7MrB;AAAA;AAAA;AAQA,QAAM,SAAS,UAAQ;AACvB,QAAM,cAAc,OAAO;AAC3B,QAAM,QAAQ,MAAM,UAAU;AAE9B,WAAO,UAAU;AAEjB,aAAS,SAAU;AACjB,YAAM,eAAe,CAAC;AACtB,YAAM,OAAO,MAAM,KAAK,SAAS;AACjC,UAAI,UAAU;AACd,UAAI,UAAU,KAAK,KAAK,SAAS;AAEjC,UAAI,WAAW,CAAC,MAAM,QAAQ,OAAO,KAAK,QAAQ,QAAQ,MAAM;AAC9D,aAAK,IAAI;AAAA,MACX,OAAO;AACL,kBAAU,CAAC;AAAA,MACb;AAEA,YAAM,QAAQ,QAAQ,QAAQ;AAC9B,YAAM,cAAc,QAAQ,cAAc;AAC1C,UAAI,QAAQ,cAAc,MAAM;AAC9B,gBAAQ,aAAa;AAAA,MACvB;AACA,UAAI,QAAQ,iBAAiB,MAAM;AACjC,gBAAQ,gBAAgB,KAAK;AAAA,MAC/B;AACA,YAAM,eAAe,YAAY,OAAO;AAExC,eAAS,YAAa;AACpB,iBAAS,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAAK;AACpD,uBAAa,KAAK,aAAa,UAAU,IAAI,OAAO,CAAC;AAAA,QACvD;AACA,oBAAY;AACZ,eAAO;AAAA,MACT;AAEA,eAAS,cAAe;AACtB,YAAI,SAAS;AACX;AAAA,QACF;AACA,kBAAU;AAEV,YAAI,UAAU,aAAa,MAAM;AACjC,YAAI,CAAC,SAAS;AACZ,kBAAQ,SAAS,SAAS;AAC1B;AAAA,QACF;AACA,YAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,oBAAU,CAAC,OAAO;AAAA,QACpB;AAEA,YAAI,aAAa,QAAQ,SAAS;AAElC,iBAAS,OAAQ;AACf,cAAI,EAAE,aAAa,GAAG;AACpB;AAAA,UACF;AACA,oBAAU;AACV,sBAAY;AAAA,QACd;AAEA,iBAAS,KAAM,QAAQ;AACrB,mBAAS,QAAS;AAChB,mBAAO,eAAe,mBAAmB,KAAK;AAC9C,mBAAO,eAAe,OAAO,KAAK;AAClC,gBAAI,aAAa;AACf,qBAAO,eAAe,SAAS,OAAO;AAAA,YACxC;AACA,iBAAK;AAAA,UACP;AACA,mBAAS,QAAS,KAAK;AACrB,yBAAa,KAAK,SAAS,GAAG;AAAA,UAChC;AAEA,cAAI,OAAO,eAAe,YAAY;AACpC,mBAAO,KAAK;AAAA,UACd;AAEA,iBAAO,GAAG,mBAAmB,KAAK;AAClC,iBAAO,GAAG,OAAO,KAAK;AAEtB,cAAI,aAAa;AACf,mBAAO,GAAG,SAAS,OAAO;AAAA,UAC5B;AAEA,iBAAO,KAAK,cAAc,EAAE,KAAK,MAAM,CAAC;AAExC,iBAAO,OAAO;AAAA,QAChB;AAEA,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,eAAK,QAAQ,EAAE;AAAA,QACjB;AAEA,aAAK;AAAA,MACP;AAEA,eAAS,YAAa;AACpB,kBAAU;AAEV,qBAAa,KAAK,YAAY;AAC9B,YAAI,OAAO;AACT,uBAAa,IAAI;AAAA,QACnB;AAAA,MACF;AAEA,mBAAa,gBAAgB,CAAC;AAC9B,mBAAa,MAAM;AACnB,mBAAa,GAAG,UAAU,SAAU,QAAQ;AAC1C,eAAO,KAAK,iBAAiB;AAAA,MAC/B,CAAC;AAED,UAAI,KAAK,QAAQ;AACf,kBAAU,MAAM,MAAM,IAAI;AAAA,MAC5B;AACA,aAAO;AAAA,IACT;AAGA,aAAS,aAAc,SAAS,SAAS;AACvC,UAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAE3B,YAAI,CAAC,QAAQ,kBAAkB,QAAQ,MAAM;AAC3C,oBAAU,QAAQ,KAAK,YAAY,OAAO,CAAC;AAAA,QAC7C;AACA,YAAI,CAAC,QAAQ,kBAAkB,CAAC,QAAQ,SAAS,CAAC,QAAQ,MAAM;AAC9D,gBAAM,IAAI,MAAM,qCAAqC;AAAA,QACvD;AACA,gBAAQ,MAAM;AAAA,MAChB,OAAO;AACL,iBAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AAClD,kBAAQ,KAAK,aAAa,QAAQ,IAAI,OAAO;AAAA,QAC/C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC/IA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,QAAQ;AAChB,QAAM,SAAS;AACf,aAAS,MAAM,SAAS;AACpB,YAAM,eAAe,OAAO,OAAO;AACnC,cAAQ,QAAQ,CAAC,WAAW;AACxB,eAAO,KAAK,SAAS,CAAC,UAAU,aAAa,KAAK,SAAS,KAAK,CAAC;AAAA,MACrE,CAAC;AACD,mBAAa,KAAK,SAAS,MAAM,6BAA6B,OAAO,CAAC;AACtE,mBAAa,KAAK,OAAO,MAAM,6BAA6B,OAAO,CAAC;AACpE,aAAO;AAAA,IACX;AACA,YAAQ,QAAQ;AAChB,aAAS,6BAA6B,SAAS;AAC3C,cAAQ,QAAQ,CAAC,WAAW,OAAO,KAAK,OAAO,CAAC;AAAA,IACpD;AAAA;AAAA;;;AChBA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,UAAU,QAAQ,WAAW;AACrC,aAAS,SAAS,OAAO;AACrB,aAAO,OAAO,UAAU;AAAA,IAC5B;AACA,YAAQ,WAAW;AACnB,aAAS,QAAQ,OAAO;AACpB,aAAO,UAAU;AAAA,IACrB;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACVlB,IAAAC,iBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,SAAS,QAAQ,SAAS,QAAQ,UAAU,QAAQ,OAAO,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,QAAQ;AAChH,QAAM,QAAQ;AACd,YAAQ,QAAQ;AAChB,QAAM,QAAQ;AACd,YAAQ,QAAQ;AAChB,QAAMC,MAAK;AACX,YAAQ,KAAKA;AACb,QAAMC,QAAO;AACb,YAAQ,OAAOA;AACf,QAAM,UAAU;AAChB,YAAQ,UAAU;AAClB,QAAM,SAAS;AACf,YAAQ,SAAS;AACjB,QAAM,SAAS;AACf,YAAQ,SAAS;AAAA;AAAA;;;AChBjB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,4BAA4B,QAAQ,8BAA8B,QAAQ,+BAA+B,QAAQ,gCAAgC,QAAQ,sBAAsB,QAAQ,yBAAyB,QAAQ,WAAW;AAC3O,QAAM,QAAQ;AACd,aAAS,SAAS,OAAO,UAAU;AAC/B,YAAM,WAAW,gBAAgB,OAAO,QAAQ;AAChD,YAAM,SAAS,gBAAgB,SAAS,QAAQ,QAAQ;AACxD,YAAM,mBAAmB,oBAAoB,QAAQ;AACrD,YAAM,mBAAmB,8BAA8B,UAAU,MAAM;AACvE,YAAM,iBAAiB,iBAAiB,OAAO,CAAC,YAAY,MAAM,QAAQ,gBAAgB,SAAS,QAAQ,CAAC;AAC5G,YAAM,kBAAkB,iBAAiB,OAAO,CAAC,YAAY,MAAM,QAAQ,iBAAiB,SAAS,QAAQ,CAAC;AAC9G,YAAM,cAAc,uBAAuB,gBAAgB,kBAAgC,KAAK;AAChG,YAAM,eAAe,uBAAuB,iBAAiB,kBAAgC,IAAI;AACjG,aAAO,YAAY,OAAO,YAAY;AAAA,IAC1C;AACA,YAAQ,WAAW;AACnB,aAAS,gBAAgB,OAAO,UAAU;AACtC,UAAI,WAAW;AAQf,UAAI,SAAS,gBAAgB;AACzB,mBAAW,MAAM,QAAQ,iCAAiC,QAAQ;AAAA,MACtE;AASA,UAAI,SAAS,eAAe;AACxB,mBAAW,SAAS,IAAI,CAAC,YAAY,QAAQ,SAAS,GAAG,IAAI,UAAU,MAAM,SAAS;AAAA,MAC1F;AAIA,aAAO,SAAS,IAAI,CAAC,YAAY,MAAM,QAAQ,uBAAuB,OAAO,CAAC;AAAA,IAClF;AAOA,aAAS,uBAAuB,UAAU,UAAU,SAAS;AACzD,YAAM,QAAQ,CAAC;AACf,YAAM,kCAAkC,MAAM,QAAQ,mCAAmC,QAAQ;AACjG,YAAM,iCAAiC,MAAM,QAAQ,kCAAkC,QAAQ;AAC/F,YAAM,+BAA+B,6BAA6B,+BAA+B;AACjG,YAAM,8BAA8B,6BAA6B,8BAA8B;AAC/F,YAAM,KAAK,GAAG,4BAA4B,8BAA8B,UAAU,OAAO,CAAC;AAK1F,UAAI,OAAO,6BAA6B;AACpC,cAAM,KAAK,0BAA0B,KAAK,gCAAgC,UAAU,OAAO,CAAC;AAAA,MAChG,OACK;AACD,cAAM,KAAK,GAAG,4BAA4B,6BAA6B,UAAU,OAAO,CAAC;AAAA,MAC7F;AACA,aAAO;AAAA,IACX;AACA,YAAQ,yBAAyB;AACjC,aAAS,oBAAoB,UAAU;AACnC,aAAO,MAAM,QAAQ,oBAAoB,QAAQ;AAAA,IACrD;AACA,YAAQ,sBAAsB;AAC9B,aAAS,8BAA8B,UAAU,QAAQ;AACrD,YAAM,WAAW,MAAM,QAAQ,oBAAoB,QAAQ,EAAE,OAAO,MAAM;AAC1E,YAAM,WAAW,SAAS,IAAI,MAAM,QAAQ,wBAAwB;AACpE,aAAO;AAAA,IACX;AACA,YAAQ,gCAAgC;AACxC,aAAS,6BAA6B,UAAU;AAC5C,YAAM,QAAQ,CAAC;AACf,aAAO,SAAS,OAAO,CAAC,YAAY,YAAY;AAC5C,cAAM,OAAO,MAAM,QAAQ,iBAAiB,OAAO;AACnD,YAAI,QAAQ,YAAY;AACpB,qBAAW,MAAM,KAAK,OAAO;AAAA,QACjC,OACK;AACD,qBAAW,QAAQ,CAAC,OAAO;AAAA,QAC/B;AACA,eAAO;AAAA,MACX,GAAG,KAAK;AAAA,IACZ;AACA,YAAQ,+BAA+B;AACvC,aAAS,4BAA4B,UAAU,UAAU,SAAS;AAC9D,aAAO,OAAO,KAAK,QAAQ,EAAE,IAAI,CAAC,SAAS;AACvC,eAAO,0BAA0B,MAAM,SAAS,OAAO,UAAU,OAAO;AAAA,MAC5E,CAAC;AAAA,IACL;AACA,YAAQ,8BAA8B;AACtC,aAAS,0BAA0B,MAAM,UAAU,UAAU,SAAS;AAClE,aAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,CAAC,EAAE,OAAO,UAAU,SAAS,IAAI,MAAM,QAAQ,wBAAwB,CAAC;AAAA,MACtF;AAAA,IACJ;AACA,YAAQ,4BAA4B;AAAA;AAAA;;;AC7GpC;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,OAAO;AACf,aAAS,KAAKC,OAAM,UAAU,UAAU;AACpC,eAAS,GAAG,MAAMA,OAAM,CAAC,YAAY,UAAU;AAC3C,YAAI,eAAe,MAAM;AACrB,8BAAoB,UAAU,UAAU;AACxC;AAAA,QACJ;AACA,YAAI,CAAC,MAAM,eAAe,KAAK,CAAC,SAAS,oBAAoB;AACzD,8BAAoB,UAAU,KAAK;AACnC;AAAA,QACJ;AACA,iBAAS,GAAG,KAAKA,OAAM,CAAC,WAAW,SAAS;AACxC,cAAI,cAAc,MAAM;AACpB,gBAAI,SAAS,gCAAgC;AACzC,kCAAoB,UAAU,SAAS;AACvC;AAAA,YACJ;AACA,gCAAoB,UAAU,KAAK;AACnC;AAAA,UACJ;AACA,cAAI,SAAS,kBAAkB;AAC3B,iBAAK,iBAAiB,MAAM;AAAA,UAChC;AACA,8BAAoB,UAAU,IAAI;AAAA,QACtC,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AACA,YAAQ,OAAO;AACf,aAAS,oBAAoB,UAAU,OAAO;AAC1C,eAAS,KAAK;AAAA,IAClB;AACA,aAAS,oBAAoB,UAAU,QAAQ;AAC3C,eAAS,MAAM,MAAM;AAAA,IACzB;AAAA;AAAA;;;ACnCA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,OAAO;AACf,aAAS,KAAKC,OAAM,UAAU;AAC1B,YAAM,QAAQ,SAAS,GAAG,UAAUA,KAAI;AACxC,UAAI,CAAC,MAAM,eAAe,KAAK,CAAC,SAAS,oBAAoB;AACzD,eAAO;AAAA,MACX;AACA,UAAI;AACA,cAAM,OAAO,SAAS,GAAG,SAASA,KAAI;AACtC,YAAI,SAAS,kBAAkB;AAC3B,eAAK,iBAAiB,MAAM;AAAA,QAChC;AACA,eAAO;AAAA,MACX,SACO,OAAP;AACI,YAAI,CAAC,SAAS,gCAAgC;AAC1C,iBAAO;AAAA,QACX;AACA,cAAM;AAAA,MACV;AAAA,IACJ;AACA,YAAQ,OAAO;AAAA;AAAA;;;ACtBf,IAAAC,cAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,0BAA0B,QAAQ,sBAAsB;AAChE,QAAMC,MAAK,UAAQ;AACnB,YAAQ,sBAAsB;AAAA,MAC1B,OAAOA,IAAG;AAAA,MACV,MAAMA,IAAG;AAAA,MACT,WAAWA,IAAG;AAAA,MACd,UAAUA,IAAG;AAAA,IACjB;AACA,aAAS,wBAAwB,WAAW;AACxC,UAAI,cAAc,QAAW;AACzB,eAAO,QAAQ;AAAA,MACnB;AACA,aAAO,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,mBAAmB,GAAG,SAAS;AAAA,IAClF;AACA,YAAQ,0BAA0B;AAAA;AAAA;;;AChBlC;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAMC,MAAK;AACX,QAAM,WAAN,MAAe;AAAA,MACX,YAAYC,YAAW,CAAC,GAAG;AACvB,aAAK,WAAWA;AAChB,aAAK,qBAAqB,KAAK,UAAU,KAAK,SAAS,oBAAoB,IAAI;AAC/E,aAAK,KAAKD,IAAG,wBAAwB,KAAK,SAAS,EAAE;AACrD,aAAK,mBAAmB,KAAK,UAAU,KAAK,SAAS,kBAAkB,KAAK;AAC5E,aAAK,iCAAiC,KAAK,UAAU,KAAK,SAAS,gCAAgC,IAAI;AAAA,MAC3G;AAAA,MACA,UAAU,QAAQ,OAAO;AACrB,eAAO,WAAW,QAAQ,WAAW,SAAS,SAAS;AAAA,MAC3D;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACflB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,WAAW,QAAQ,OAAO,QAAQ,WAAW;AACrD,QAAM,QAAQ;AACd,QAAM,OAAO;AACb,QAAM,aAAa;AACnB,YAAQ,WAAW,WAAW;AAC9B,aAAS,KAAKE,OAAM,6BAA6B,UAAU;AACvD,UAAI,OAAO,gCAAgC,YAAY;AACnD,cAAM,KAAKA,OAAM,YAAY,GAAG,2BAA2B;AAC3D;AAAA,MACJ;AACA,YAAM,KAAKA,OAAM,YAAY,2BAA2B,GAAG,QAAQ;AAAA,IACvE;AACA,YAAQ,OAAO;AACf,aAASC,UAASD,OAAM,mBAAmB;AACvC,YAAM,WAAW,YAAY,iBAAiB;AAC9C,aAAO,KAAK,KAAKA,OAAM,QAAQ;AAAA,IACnC;AACA,YAAQ,WAAWC;AACnB,aAAS,YAAY,oBAAoB,CAAC,GAAG;AACzC,UAAI,6BAA6B,WAAW,SAAS;AACjD,eAAO;AAAA,MACX;AACA,aAAO,IAAI,WAAW,QAAQ,iBAAiB;AAAA,IACnD;AAAA;AAAA;;;ACzBA;AAAA;AACA,QAAI;AAEJ,WAAO,UAAU,OAAO,mBAAmB,aACvC,eAAe,KAAK,OAAO,WAAW,cAAc,SAAS,MAAM,IAEnE,SAAO,YAAY,UAAU,QAAQ,QAAQ,IAC5C,KAAK,EAAE,EACP,MAAM,SAAO,WAAW,MAAM;AAAE,YAAM;AAAA,IAAI,GAAG,CAAC,CAAC;AAAA;AAAA;;;ACRpD;AAAA;AACA,WAAO,UAAU;AAEjB,QAAMC,kBAAiB;AAEvB,aAAS,YAAa,OAAO,IAAI;AAC/B,UAAI,SAAS,SAAS;AACtB,UAAI,SAAS;AAEb,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,kBAAU,CAAC;AACX,kBAAU,MAAM;AAAA,MAClB,OAAO;AACL,eAAO,OAAO,KAAK,KAAK;AACxB,kBAAU,CAAC;AACX,kBAAU,KAAK;AAAA,MACjB;AAEA,eAAS,KAAM,KAAK;AAClB,iBAAS,MAAO;AACd,cAAI;AAAI,eAAG,KAAK,OAAO;AACvB,eAAK;AAAA,QACP;AACA,YAAI;AAAQ,UAAAA,gBAAe,GAAG;AAAA;AACzB,cAAI;AAAA,MACX;AAEA,eAAS,KAAM,GAAG,KAAK,QAAQ;AAC7B,gBAAQ,KAAK;AACb,YAAI,EAAE,YAAY,KAAK,KAAK;AAC1B,eAAK,GAAG;AAAA,QACV;AAAA,MACF;AAEA,UAAI,CAAC,SAAS;AAEZ,aAAK,IAAI;AAAA,MACX,WAAW,MAAM;AAEf,aAAK,QAAQ,SAAU,KAAK;AAC1B,gBAAM,KAAK,SAAU,KAAK,QAAQ;AAAE,iBAAK,KAAK,KAAK,MAAM;AAAA,UAAE,CAAC;AAAA,QAC9D,CAAC;AAAA,MACH,OAAO;AAEL,cAAM,QAAQ,SAAU,MAAM,GAAG;AAC/B,eAAK,SAAU,KAAK,QAAQ;AAAE,iBAAK,GAAG,KAAK,MAAM;AAAA,UAAE,CAAC;AAAA,QACtD,CAAC;AAAA,MACH;AAEA,eAAS;AAAA,IACX;AAAA;AAAA;;;AClDA,IAAAC,qBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,qCAAqC;AAC7C,QAAM,6BAA6B,QAAQ,SAAS,KAAK,MAAM,GAAG;AAClE,QAAI,2BAA2B,OAAO,UAAa,2BAA2B,OAAO,QAAW;AAC5F,YAAM,IAAI,MAAM,gFAAgF,QAAQ,SAAS,MAAM;AAAA,IAC3H;AACA,QAAM,gBAAgB,OAAO,SAAS,2BAA2B,IAAI,EAAE;AACvE,QAAM,gBAAgB,OAAO,SAAS,2BAA2B,IAAI,EAAE;AACvE,QAAM,0BAA0B;AAChC,QAAM,0BAA0B;AAChC,QAAM,sBAAsB,gBAAgB;AAC5C,QAAM,gCAAgC,kBAAkB,2BAA2B,iBAAiB;AAIpG,YAAQ,qCAAqC,uBAAuB;AAAA;AAAA;;;AChBpE,IAAAC,cAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,wBAAwB;AAChC,QAAM,kBAAN,MAAsB;AAAA,MAClB,YAAY,MAAM,OAAO;AACrB,aAAK,OAAO;AACZ,aAAK,gBAAgB,MAAM,cAAc,KAAK,KAAK;AACnD,aAAK,oBAAoB,MAAM,kBAAkB,KAAK,KAAK;AAC3D,aAAK,cAAc,MAAM,YAAY,KAAK,KAAK;AAC/C,aAAK,SAAS,MAAM,OAAO,KAAK,KAAK;AACrC,aAAK,SAAS,MAAM,OAAO,KAAK,KAAK;AACrC,aAAK,WAAW,MAAM,SAAS,KAAK,KAAK;AACzC,aAAK,iBAAiB,MAAM,eAAe,KAAK,KAAK;AAAA,MACzD;AAAA,IACJ;AACA,aAAS,sBAAsB,MAAM,OAAO;AACxC,aAAO,IAAI,gBAAgB,MAAM,KAAK;AAAA,IAC1C;AACA,YAAQ,wBAAwB;AAAA;AAAA;;;AClBhC,IAAAC,iBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,KAAK;AACb,QAAMC,MAAK;AACX,YAAQ,KAAKA;AAAA;AAAA;;;ACJb;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,mBAAmB;AAC3B,aAAS,iBAAiB,GAAG,GAAG,WAAW;AAIvC,UAAI,EAAE,SAAS,SAAS,GAAG;AACvB,eAAO,IAAI;AAAA,MACf;AACA,aAAO,IAAI,YAAY;AAAA,IAC3B;AACA,YAAQ,mBAAmB;AAAA;AAAA;;;ACZ3B,IAAAC,iBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,UAAU,QAAQ,uBAAuB,QAAQ,OAAO;AAChE,QAAM,SAAS;AACf,QAAM,MAAM;AACZ,QAAM,cAAc;AACpB,QAAM,QAAQ;AACd,QAAMC,UAAS;AACf,aAAS,KAAK,WAAW,UAAU,UAAU;AACzC,UAAI,CAAC,SAAS,SAAS,YAAY,oCAAoC;AACnE,6BAAqB,WAAW,UAAU,QAAQ;AAClD;AAAA,MACJ;AACA,cAAQ,WAAW,UAAU,QAAQ;AAAA,IACzC;AACA,YAAQ,OAAO;AACf,aAAS,qBAAqB,WAAW,UAAU,UAAU;AACzD,eAAS,GAAG,QAAQ,WAAW,EAAE,eAAe,KAAK,GAAG,CAAC,cAAc,YAAY;AAC/E,YAAI,iBAAiB,MAAM;AACvB,8BAAoB,UAAU,YAAY;AAC1C;AAAA,QACJ;AACA,cAAM,UAAU,QAAQ,IAAI,CAAC,YAAY;AAAA,UACrC;AAAA,UACA,MAAM,OAAO;AAAA,UACb,MAAMA,QAAO,iBAAiB,WAAW,OAAO,MAAM,SAAS,oBAAoB;AAAA,QACvF,EAAE;AACF,YAAI,CAAC,SAAS,qBAAqB;AAC/B,8BAAoB,UAAU,OAAO;AACrC;AAAA,QACJ;AACA,cAAM,QAAQ,QAAQ,IAAI,CAAC,UAAU,iBAAiB,OAAO,QAAQ,CAAC;AACtE,YAAI,OAAO,CAAC,UAAU,eAAe;AACjC,cAAI,aAAa,MAAM;AACnB,gCAAoB,UAAU,QAAQ;AACtC;AAAA,UACJ;AACA,8BAAoB,UAAU,UAAU;AAAA,QAC5C,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AACA,YAAQ,uBAAuB;AAC/B,aAAS,iBAAiB,OAAO,UAAU;AACvC,aAAO,CAAC,SAAS;AACb,YAAI,CAAC,MAAM,OAAO,eAAe,GAAG;AAChC,eAAK,MAAM,KAAK;AAChB;AAAA,QACJ;AACA,iBAAS,GAAG,KAAK,MAAM,MAAM,CAAC,WAAW,UAAU;AAC/C,cAAI,cAAc,MAAM;AACpB,gBAAI,SAAS,gCAAgC;AACzC,mBAAK,SAAS;AACd;AAAA,YACJ;AACA,iBAAK,MAAM,KAAK;AAChB;AAAA,UACJ;AACA,gBAAM,SAAS,MAAM,GAAG,sBAAsB,MAAM,MAAM,KAAK;AAC/D,eAAK,MAAM,KAAK;AAAA,QACpB,CAAC;AAAA,MACL;AAAA,IACJ;AACA,aAAS,QAAQ,WAAW,UAAU,UAAU;AAC5C,eAAS,GAAG,QAAQ,WAAW,CAAC,cAAc,UAAU;AACpD,YAAI,iBAAiB,MAAM;AACvB,8BAAoB,UAAU,YAAY;AAC1C;AAAA,QACJ;AACA,cAAM,QAAQ,MAAM,IAAI,CAAC,SAAS;AAC9B,gBAAMC,QAAOD,QAAO,iBAAiB,WAAW,MAAM,SAAS,oBAAoB;AACnF,iBAAO,CAAC,SAAS;AACb,mBAAO,KAAKC,OAAM,SAAS,gBAAgB,CAAC,OAAO,UAAU;AACzD,kBAAI,UAAU,MAAM;AAChB,qBAAK,KAAK;AACV;AAAA,cACJ;AACA,oBAAM,QAAQ;AAAA,gBACV;AAAA,gBACA,MAAAA;AAAA,gBACA,QAAQ,MAAM,GAAG,sBAAsB,MAAM,KAAK;AAAA,cACtD;AACA,kBAAI,SAAS,OAAO;AAChB,sBAAM,QAAQ;AAAA,cAClB;AACA,mBAAK,MAAM,KAAK;AAAA,YACpB,CAAC;AAAA,UACL;AAAA,QACJ,CAAC;AACD,YAAI,OAAO,CAAC,UAAU,YAAY;AAC9B,cAAI,aAAa,MAAM;AACnB,gCAAoB,UAAU,QAAQ;AACtC;AAAA,UACJ;AACA,8BAAoB,UAAU,OAAO;AAAA,QACzC,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AACA,YAAQ,UAAU;AAClB,aAAS,oBAAoB,UAAU,OAAO;AAC1C,eAAS,KAAK;AAAA,IAClB;AACA,aAAS,oBAAoB,UAAU,QAAQ;AAC3C,eAAS,MAAM,MAAM;AAAA,IACzB;AAAA;AAAA;;;ACvGA,IAAAC,gBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,UAAU,QAAQ,uBAAuB,QAAQ,OAAO;AAChE,QAAM,SAAS;AACf,QAAM,cAAc;AACpB,QAAM,QAAQ;AACd,QAAMC,UAAS;AACf,aAAS,KAAK,WAAW,UAAU;AAC/B,UAAI,CAAC,SAAS,SAAS,YAAY,oCAAoC;AACnE,eAAO,qBAAqB,WAAW,QAAQ;AAAA,MACnD;AACA,aAAO,QAAQ,WAAW,QAAQ;AAAA,IACtC;AACA,YAAQ,OAAO;AACf,aAAS,qBAAqB,WAAW,UAAU;AAC/C,YAAM,UAAU,SAAS,GAAG,YAAY,WAAW,EAAE,eAAe,KAAK,CAAC;AAC1E,aAAO,QAAQ,IAAI,CAAC,WAAW;AAC3B,cAAM,QAAQ;AAAA,UACV;AAAA,UACA,MAAM,OAAO;AAAA,UACb,MAAMA,QAAO,iBAAiB,WAAW,OAAO,MAAM,SAAS,oBAAoB;AAAA,QACvF;AACA,YAAI,MAAM,OAAO,eAAe,KAAK,SAAS,qBAAqB;AAC/D,cAAI;AACA,kBAAM,QAAQ,SAAS,GAAG,SAAS,MAAM,IAAI;AAC7C,kBAAM,SAAS,MAAM,GAAG,sBAAsB,MAAM,MAAM,KAAK;AAAA,UACnE,SACO,OAAP;AACI,gBAAI,SAAS,gCAAgC;AACzC,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,YAAQ,uBAAuB;AAC/B,aAAS,QAAQ,WAAW,UAAU;AAClC,YAAM,QAAQ,SAAS,GAAG,YAAY,SAAS;AAC/C,aAAO,MAAM,IAAI,CAAC,SAAS;AACvB,cAAM,YAAYA,QAAO,iBAAiB,WAAW,MAAM,SAAS,oBAAoB;AACxF,cAAM,QAAQ,OAAO,SAAS,WAAW,SAAS,cAAc;AAChE,cAAM,QAAQ;AAAA,UACV;AAAA,UACA,MAAM;AAAA,UACN,QAAQ,MAAM,GAAG,sBAAsB,MAAM,KAAK;AAAA,QACtD;AACA,YAAI,SAAS,OAAO;AAChB,gBAAM,QAAQ;AAAA,QAClB;AACA,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACrDlB,IAAAC,cAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,0BAA0B,QAAQ,sBAAsB;AAChE,QAAMC,MAAK,UAAQ;AACnB,YAAQ,sBAAsB;AAAA,MAC1B,OAAOA,IAAG;AAAA,MACV,MAAMA,IAAG;AAAA,MACT,WAAWA,IAAG;AAAA,MACd,UAAUA,IAAG;AAAA,MACb,SAASA,IAAG;AAAA,MACZ,aAAaA,IAAG;AAAA,IACpB;AACA,aAAS,wBAAwB,WAAW;AACxC,UAAI,cAAc,QAAW;AACzB,eAAO,QAAQ;AAAA,MACnB;AACA,aAAO,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,mBAAmB,GAAG,SAAS;AAAA,IAClF;AACA,YAAQ,0BAA0B;AAAA;AAAA;;;AClBlC,IAAAC,oBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAMC,QAAO,UAAQ;AACrB,QAAM,SAAS;AACf,QAAMC,MAAK;AACX,QAAM,WAAN,MAAe;AAAA,MACX,YAAYC,YAAW,CAAC,GAAG;AACvB,aAAK,WAAWA;AAChB,aAAK,sBAAsB,KAAK,UAAU,KAAK,SAAS,qBAAqB,KAAK;AAClF,aAAK,KAAKD,IAAG,wBAAwB,KAAK,SAAS,EAAE;AACrD,aAAK,uBAAuB,KAAK,UAAU,KAAK,SAAS,sBAAsBD,MAAK,GAAG;AACvF,aAAK,QAAQ,KAAK,UAAU,KAAK,SAAS,OAAO,KAAK;AACtD,aAAK,iCAAiC,KAAK,UAAU,KAAK,SAAS,gCAAgC,IAAI;AACvG,aAAK,iBAAiB,IAAI,OAAO,SAAS;AAAA,UACtC,oBAAoB,KAAK;AAAA,UACzB,IAAI,KAAK;AAAA,UACT,gCAAgC,KAAK;AAAA,QACzC,CAAC;AAAA,MACL;AAAA,MACA,UAAU,QAAQ,OAAO;AACrB,eAAO,WAAW,QAAQ,WAAW,SAAS,SAAS;AAAA,MAC3D;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACvBlB,IAAAG,eAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,WAAW,QAAQ,cAAc,QAAQ,UAAU;AAC3D,QAAM,QAAQ;AACd,QAAM,OAAO;AACb,QAAM,aAAa;AACnB,YAAQ,WAAW,WAAW;AAC9B,aAAS,QAAQC,OAAM,6BAA6B,UAAU;AAC1D,UAAI,OAAO,gCAAgC,YAAY;AACnD,cAAM,KAAKA,OAAM,YAAY,GAAG,2BAA2B;AAC3D;AAAA,MACJ;AACA,YAAM,KAAKA,OAAM,YAAY,2BAA2B,GAAG,QAAQ;AAAA,IACvE;AACA,YAAQ,UAAU;AAClB,aAAS,YAAYA,OAAM,mBAAmB;AAC1C,YAAM,WAAW,YAAY,iBAAiB;AAC9C,aAAO,KAAK,KAAKA,OAAM,QAAQ;AAAA,IACnC;AACA,YAAQ,cAAc;AACtB,aAAS,YAAY,oBAAoB,CAAC,GAAG;AACzC,UAAI,6BAA6B,WAAW,SAAS;AACjD,eAAO;AAAA,MACX;AACA,aAAO,IAAI,WAAW,QAAQ,iBAAiB;AAAA,IACnD;AAAA;AAAA;;;ACzBA;AAAA;AAAA;AAEA,aAAS,QAAS,aAAa;AAC7B,UAAI,OAAO,IAAI,YAAY;AAC3B,UAAI,OAAO;AAEX,eAAS,MAAO;AACd,YAAI,UAAU;AAEd,YAAI,QAAQ,MAAM;AAChB,iBAAO,QAAQ;AAAA,QACjB,OAAO;AACL,iBAAO,IAAI,YAAY;AACvB,iBAAO;AAAA,QACT;AAEA,gBAAQ,OAAO;AAEf,eAAO;AAAA,MACT;AAEA,eAAS,QAAS,KAAK;AACrB,aAAK,OAAO;AACZ,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;AChCjB;AAAA;AAAA;AAIA,QAAI,UAAU;AAEd,aAAS,UAAW,SAAS,QAAQ,cAAc;AACjD,UAAI,OAAO,YAAY,YAAY;AACjC,uBAAe;AACf,iBAAS;AACT,kBAAU;AAAA,MACZ;AAEA,UAAI,EAAE,gBAAgB,IAAI;AACxB,cAAM,IAAI,MAAM,0DAA0D;AAAA,MAC5E;AAEA,UAAI,QAAQ,QAAQ,IAAI;AACxB,UAAI,YAAY;AAChB,UAAI,YAAY;AAChB,UAAI,WAAW;AACf,UAAI,eAAe;AAEnB,UAAI,OAAO;AAAA,QACT;AAAA,QACA,OAAO;AAAA,QACP,WAAW;AAAA,QACX;AAAA,QACA,QAAQ;AAAA,QAER,IAAI,cAAe;AACjB,iBAAO;AAAA,QACT;AAAA,QACA,IAAI,YAAa,OAAO;AACtB,cAAI,EAAE,SAAS,IAAI;AACjB,kBAAM,IAAI,MAAM,0DAA0D;AAAA,UAC5E;AACA,yBAAe;AAEf,cAAI,KAAK;AAAQ;AACjB,iBAAO,aAAa,WAAW,gBAAe;AAC5C;AACA,oBAAQ;AAAA,UACV;AAAA,QACF;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,aAAO;AAEP,eAAS,UAAW;AAClB,eAAO;AAAA,MACT;AAEA,eAAS,QAAS;AAChB,aAAK,SAAS;AAAA,MAChB;AAEA,eAAS,SAAU;AACjB,YAAI,UAAU;AACd,YAAI,UAAU;AAEd,eAAO,SAAS;AACd,oBAAU,QAAQ;AAClB;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,WAAY;AACnB,YAAI,UAAU;AACd,YAAI,QAAQ,CAAC;AAEb,eAAO,SAAS;AACd,gBAAM,KAAK,QAAQ,KAAK;AACxB,oBAAU,QAAQ;AAAA,QACpB;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,SAAU;AACjB,YAAI,CAAC,KAAK;AAAQ;AAClB,aAAK,SAAS;AACd,YAAI,cAAc,MAAM;AACtB;AACA,kBAAQ;AACR;AAAA,QACF;AACA,eAAO,aAAa,WAAW,gBAAe;AAC5C;AACA,kBAAQ;AAAA,QACV;AAAA,MACF;AAEA,eAAS,OAAQ;AACf,eAAO,aAAa,KAAK,KAAK,OAAO,MAAM;AAAA,MAC7C;AAEA,eAAS,KAAM,OAAO,MAAM;AAC1B,YAAI,UAAU,MAAM,IAAI;AAExB,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAClB,gBAAQ,QAAQ;AAChB,gBAAQ,WAAW,QAAQ;AAC3B,gBAAQ,eAAe;AAEvB,YAAI,YAAY,gBAAgB,KAAK,QAAQ;AAC3C,cAAI,WAAW;AACb,sBAAU,OAAO;AACjB,wBAAY;AAAA,UACd,OAAO;AACL,wBAAY;AACZ,wBAAY;AACZ,iBAAK,UAAU;AAAA,UACjB;AAAA,QACF,OAAO;AACL;AACA,iBAAO,KAAK,SAAS,QAAQ,OAAO,QAAQ,MAAM;AAAA,QACpD;AAAA,MACF;AAEA,eAAS,QAAS,OAAO,MAAM;AAC7B,YAAI,UAAU,MAAM,IAAI;AAExB,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAClB,gBAAQ,QAAQ;AAChB,gBAAQ,WAAW,QAAQ;AAC3B,gBAAQ,eAAe;AAEvB,YAAI,YAAY,gBAAgB,KAAK,QAAQ;AAC3C,cAAI,WAAW;AACb,oBAAQ,OAAO;AACf,wBAAY;AAAA,UACd,OAAO;AACL,wBAAY;AACZ,wBAAY;AACZ,iBAAK,UAAU;AAAA,UACjB;AAAA,QACF,OAAO;AACL;AACA,iBAAO,KAAK,SAAS,QAAQ,OAAO,QAAQ,MAAM;AAAA,QACpD;AAAA,MACF;AAEA,eAAS,QAAS,QAAQ;AACxB,YAAI,QAAQ;AACV,gBAAM,QAAQ,MAAM;AAAA,QACtB;AACA,YAAI,OAAO;AACX,YAAI,QAAQ,YAAY,cAAc;AACpC,cAAI,CAAC,KAAK,QAAQ;AAChB,gBAAI,cAAc,WAAW;AAC3B,0BAAY;AAAA,YACd;AACA,wBAAY,KAAK;AACjB,iBAAK,OAAO;AACZ,mBAAO,KAAK,SAAS,KAAK,OAAO,KAAK,MAAM;AAC5C,gBAAI,cAAc,MAAM;AACtB,mBAAK,MAAM;AAAA,YACb;AAAA,UACF,OAAO;AACL;AAAA,UACF;AAAA,QACF,WAAW,EAAE,aAAa,GAAG;AAC3B,eAAK,MAAM;AAAA,QACb;AAAA,MACF;AAEA,eAAS,OAAQ;AACf,oBAAY;AACZ,oBAAY;AACZ,aAAK,QAAQ;AAAA,MACf;AAEA,eAAS,eAAgB;AACvB,oBAAY;AACZ,oBAAY;AACZ,aAAK,MAAM;AACX,aAAK,QAAQ;AAAA,MACf;AAEA,eAAS,MAAOC,WAAS;AACvB,uBAAeA;AAAA,MACjB;AAAA,IACF;AAEA,aAAS,OAAQ;AAAA,IAAC;AAElB,aAAS,OAAQ;AACf,WAAK,QAAQ;AACb,WAAK,WAAW;AAChB,WAAK,OAAO;AACZ,WAAK,UAAU;AACf,WAAK,UAAU;AACf,WAAK,eAAe;AAEpB,UAAI,OAAO;AAEX,WAAK,SAAS,SAAS,OAAQ,KAAK,QAAQ;AAC1C,YAAI,WAAW,KAAK;AACpB,YAAI,eAAe,KAAK;AACxB,YAAI,MAAM,KAAK;AACf,aAAK,QAAQ;AACb,aAAK,WAAW;AAChB,YAAI,KAAK,cAAc;AACrB,uBAAa,KAAK,GAAG;AAAA,QACvB;AACA,iBAAS,KAAK,KAAK,SAAS,KAAK,MAAM;AACvC,aAAK,QAAQ,IAAI;AAAA,MACnB;AAAA,IACF;AAEA,aAAS,gBAAiB,SAAS,QAAQ,cAAc;AACvD,UAAI,OAAO,YAAY,YAAY;AACjC,uBAAe;AACf,iBAAS;AACT,kBAAU;AAAA,MACZ;AAEA,eAAS,aAAc,KAAK,IAAI;AAC9B,eAAO,KAAK,MAAM,GAAG,EAClB,KAAK,SAAU,KAAK;AACnB,aAAG,MAAM,GAAG;AAAA,QACd,GAAG,EAAE;AAAA,MACT;AAEA,UAAI,QAAQ,UAAU,SAAS,cAAc,YAAY;AAEzD,UAAI,SAAS,MAAM;AACnB,UAAI,YAAY,MAAM;AAEtB,YAAM,OAAO;AACb,YAAM,UAAU;AAChB,YAAM,UAAU;AAEhB,aAAO;AAEP,eAAS,KAAM,OAAO;AACpB,YAAI,IAAI,IAAI,QAAQ,SAAUC,WAAS,QAAQ;AAC7C,iBAAO,OAAO,SAAU,KAAK,QAAQ;AACnC,gBAAI,KAAK;AACP,qBAAO,GAAG;AACV;AAAA,YACF;AACA,YAAAA,UAAQ,MAAM;AAAA,UAChB,CAAC;AAAA,QACH,CAAC;AAKD,UAAE,MAAM,IAAI;AAEZ,eAAO;AAAA,MACT;AAEA,eAAS,QAAS,OAAO;AACvB,YAAI,IAAI,IAAI,QAAQ,SAAUA,WAAS,QAAQ;AAC7C,oBAAU,OAAO,SAAU,KAAK,QAAQ;AACtC,gBAAI,KAAK;AACP,qBAAO,GAAG;AACV;AAAA,YACF;AACA,YAAAA,UAAQ,MAAM;AAAA,UAChB,CAAC;AAAA,QACH,CAAC;AAKD,UAAE,MAAM,IAAI;AAEZ,eAAO;AAAA,MACT;AAEA,eAAS,UAAW;AAClB,YAAI,IAAI,IAAI,QAAQ,SAAUA,WAAS;AACrC,kBAAQ,SAAS,WAAY;AAC3B,gBAAI,MAAM,KAAK,GAAG;AAChB,cAAAA,UAAQ;AAAA,YACV,OAAO;AACL,kBAAI,gBAAgB,MAAM;AAC1B,oBAAM,QAAQ,WAAY;AACxB,oBAAI,OAAO,kBAAkB;AAAY,gCAAc;AACvD,gBAAAA,UAAQ;AACR,sBAAM,QAAQ;AAAA,cAChB;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAED,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AACjB,WAAO,QAAQ,UAAU;AAAA;AAAA;;;ACtTzB,IAAAC,kBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,mBAAmB,QAAQ,8BAA8B,QAAQ,kBAAkB,QAAQ,eAAe;AAClH,aAAS,aAAa,UAAU,OAAO;AACnC,UAAI,SAAS,gBAAgB,MAAM;AAC/B,eAAO;AAAA,MACX;AACA,aAAO,CAAC,SAAS,YAAY,KAAK;AAAA,IACtC;AACA,YAAQ,eAAe;AACvB,aAAS,gBAAgBC,SAAQ,OAAO;AACpC,aAAOA,YAAW,QAAQA,QAAO,KAAK;AAAA,IAC1C;AACA,YAAQ,kBAAkB;AAC1B,aAAS,4BAA4B,UAAU,WAAW;AACtD,aAAO,SAAS,MAAM,OAAO,EAAE,KAAK,SAAS;AAAA,IACjD;AACA,YAAQ,8BAA8B;AACtC,aAAS,iBAAiB,GAAG,GAAG,WAAW;AACvC,UAAI,MAAM,IAAI;AACV,eAAO;AAAA,MACX;AAIA,UAAI,EAAE,SAAS,SAAS,GAAG;AACvB,eAAO,IAAI;AAAA,MACf;AACA,aAAO,IAAI,YAAY;AAAA,IAC3B;AACA,YAAQ,mBAAmB;AAAA;AAAA;;;AC9B3B;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAMC,UAAS;AACf,QAAM,SAAN,MAAa;AAAA,MACT,YAAYC,QAAO,WAAW;AAC1B,aAAK,QAAQA;AACb,aAAK,YAAY;AACjB,aAAK,QAAQD,QAAO,4BAA4BC,QAAO,UAAU,oBAAoB;AAAA,MACzF;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACVlB,IAAAC,iBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,WAAW,UAAQ;AACzB,QAAM,YAAY;AAClB,QAAM,QAAQ;AACd,QAAMC,UAAS;AACf,QAAM,WAAW;AACjB,QAAM,cAAN,cAA0B,SAAS,QAAQ;AAAA,MACvC,YAAYC,QAAO,WAAW;AAC1B,cAAMA,QAAO,SAAS;AACtB,aAAK,YAAY;AACjB,aAAK,WAAW,UAAU;AAC1B,aAAK,WAAW,IAAI,SAAS,aAAa;AAC1C,aAAK,SAAS,MAAM,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,UAAU,WAAW;AACvE,aAAK,gBAAgB;AACrB,aAAK,eAAe;AACpB,aAAK,OAAO,QAAQ,MAAM;AACtB,cAAI,CAAC,KAAK,eAAe;AACrB,iBAAK,SAAS,KAAK,KAAK;AAAA,UAC5B;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,OAAO;AACH,aAAK,gBAAgB;AACrB,aAAK,eAAe;AACpB,qBAAa,MAAM;AACf,eAAK,aAAa,KAAK,OAAO,KAAK,UAAU,QAAQ;AAAA,QACzD,CAAC;AACD,eAAO,KAAK;AAAA,MAChB;AAAA,MACA,IAAI,cAAc;AACd,eAAO,KAAK;AAAA,MAChB;AAAA,MACA,UAAU;AACN,YAAI,KAAK,cAAc;AACnB,gBAAM,IAAI,MAAM,iCAAiC;AAAA,QACrD;AACA,aAAK,eAAe;AACpB,aAAK,OAAO,aAAa;AAAA,MAC7B;AAAA,MACA,QAAQ,UAAU;AACd,aAAK,SAAS,GAAG,SAAS,QAAQ;AAAA,MACtC;AAAA,MACA,QAAQ,UAAU;AACd,aAAK,SAAS,KAAK,SAAS,QAAQ;AAAA,MACxC;AAAA,MACA,MAAM,UAAU;AACZ,aAAK,SAAS,KAAK,OAAO,QAAQ;AAAA,MACtC;AAAA,MACA,aAAa,WAAW,MAAM;AAC1B,cAAM,YAAY,EAAE,WAAW,KAAK;AACpC,aAAK,OAAO,KAAK,WAAW,CAAC,UAAU;AACnC,cAAI,UAAU,MAAM;AAChB,iBAAK,aAAa,KAAK;AAAA,UAC3B;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MACA,QAAQ,MAAM,MAAM;AAChB,aAAK,SAAS,KAAK,WAAW,KAAK,UAAU,mBAAmB,CAAC,OAAO,YAAY;AAChF,cAAI,UAAU,MAAM;AAChB,iBAAK,OAAO,MAAS;AACrB;AAAA,UACJ;AACA,qBAAW,SAAS,SAAS;AACzB,iBAAK,aAAa,OAAO,KAAK,IAAI;AAAA,UACtC;AACA,eAAK,MAAM,MAAS;AAAA,QACxB,CAAC;AAAA,MACL;AAAA,MACA,aAAa,OAAO;AAChB,YAAI,KAAK,gBAAgB,CAACD,QAAO,aAAa,KAAK,WAAW,KAAK,GAAG;AAClE;AAAA,QACJ;AACA,aAAK,gBAAgB;AACrB,aAAK,eAAe;AACpB,aAAK,SAAS,KAAK,SAAS,KAAK;AAAA,MACrC;AAAA,MACA,aAAa,OAAO,MAAM;AACtB,YAAI,KAAK,gBAAgB,KAAK,eAAe;AACzC;AAAA,QACJ;AACA,cAAM,WAAW,MAAM;AACvB,YAAI,SAAS,QAAW;AACpB,gBAAM,OAAOA,QAAO,iBAAiB,MAAM,MAAM,MAAM,KAAK,UAAU,oBAAoB;AAAA,QAC9F;AACA,YAAIA,QAAO,gBAAgB,KAAK,UAAU,aAAa,KAAK,GAAG;AAC3D,eAAK,WAAW,KAAK;AAAA,QACzB;AACA,YAAI,MAAM,OAAO,YAAY,KAAKA,QAAO,gBAAgB,KAAK,UAAU,YAAY,KAAK,GAAG;AACxF,eAAK,aAAa,UAAU,SAAS,SAAY,SAAY,MAAM,IAAI;AAAA,QAC3E;AAAA,MACJ;AAAA,MACA,WAAW,OAAO;AACd,aAAK,SAAS,KAAK,SAAS,KAAK;AAAA,MACrC;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AChGlB,IAAAE,iBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,UAAU;AAChB,QAAM,gBAAN,MAAoB;AAAA,MAChB,YAAYC,QAAO,WAAW;AAC1B,aAAK,QAAQA;AACb,aAAK,YAAY;AACjB,aAAK,UAAU,IAAI,QAAQ,QAAQ,KAAK,OAAO,KAAK,SAAS;AAC7D,aAAK,WAAW,CAAC;AAAA,MACrB;AAAA,MACA,KAAK,UAAU;AACX,aAAK,QAAQ,QAAQ,CAAC,UAAU;AAC5B,8BAAoB,UAAU,KAAK;AAAA,QACvC,CAAC;AACD,aAAK,QAAQ,QAAQ,CAAC,UAAU;AAC5B,eAAK,SAAS,KAAK,KAAK;AAAA,QAC5B,CAAC;AACD,aAAK,QAAQ,MAAM,MAAM;AACrB,8BAAoB,UAAU,KAAK,QAAQ;AAAA,QAC/C,CAAC;AACD,aAAK,QAAQ,KAAK;AAAA,MACtB;AAAA,IACJ;AACA,YAAQ,UAAU;AAClB,aAAS,oBAAoB,UAAU,OAAO;AAC1C,eAAS,KAAK;AAAA,IAClB;AACA,aAAS,oBAAoB,UAAU,SAAS;AAC5C,eAAS,MAAM,OAAO;AAAA,IAC1B;AAAA;AAAA;;;AC7BA,IAAAC,kBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,WAAW,UAAQ;AACzB,QAAM,UAAU;AAChB,QAAM,iBAAN,MAAqB;AAAA,MACjB,YAAYC,QAAO,WAAW;AAC1B,aAAK,QAAQA;AACb,aAAK,YAAY;AACjB,aAAK,UAAU,IAAI,QAAQ,QAAQ,KAAK,OAAO,KAAK,SAAS;AAC7D,aAAK,UAAU,IAAI,SAAS,SAAS;AAAA,UACjC,YAAY;AAAA,UACZ,MAAM,MAAM;AAAA,UAAE;AAAA,UACd,SAAS,MAAM;AACX,gBAAI,CAAC,KAAK,QAAQ,aAAa;AAC3B,mBAAK,QAAQ,QAAQ;AAAA,YACzB;AAAA,UACJ;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MACA,OAAO;AACH,aAAK,QAAQ,QAAQ,CAAC,UAAU;AAC5B,eAAK,QAAQ,KAAK,SAAS,KAAK;AAAA,QACpC,CAAC;AACD,aAAK,QAAQ,QAAQ,CAAC,UAAU;AAC5B,eAAK,QAAQ,KAAK,KAAK;AAAA,QAC3B,CAAC;AACD,aAAK,QAAQ,MAAM,MAAM;AACrB,eAAK,QAAQ,KAAK,IAAI;AAAA,QAC1B,CAAC;AACD,aAAK,QAAQ,KAAK;AAClB,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACjClB,IAAAC,gBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,YAAY;AAClB,QAAMC,UAAS;AACf,QAAM,WAAW;AACjB,QAAM,aAAN,cAAyB,SAAS,QAAQ;AAAA,MACtC,cAAc;AACV,cAAM,GAAG,SAAS;AAClB,aAAK,WAAW,UAAU;AAC1B,aAAK,WAAW,CAAC;AACjB,aAAK,SAAS,oBAAI,IAAI;AAAA,MAC1B;AAAA,MACA,OAAO;AACH,aAAK,aAAa,KAAK,OAAO,KAAK,UAAU,QAAQ;AACrD,aAAK,aAAa;AAClB,eAAO,KAAK;AAAA,MAChB;AAAA,MACA,aAAa,WAAW,MAAM;AAC1B,aAAK,OAAO,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,MACvC;AAAA,MACA,eAAe;AACX,mBAAW,QAAQ,KAAK,OAAO,OAAO,GAAG;AACrC,eAAK,iBAAiB,KAAK,WAAW,KAAK,IAAI;AAAA,QACnD;AAAA,MACJ;AAAA,MACA,iBAAiB,WAAW,MAAM;AAC9B,YAAI;AACA,gBAAM,UAAU,KAAK,SAAS,WAAW,KAAK,UAAU,iBAAiB;AACzE,qBAAW,SAAS,SAAS;AACzB,iBAAK,aAAa,OAAO,IAAI;AAAA,UACjC;AAAA,QACJ,SACO,OAAP;AACI,eAAK,aAAa,KAAK;AAAA,QAC3B;AAAA,MACJ;AAAA,MACA,aAAa,OAAO;AAChB,YAAI,CAACA,QAAO,aAAa,KAAK,WAAW,KAAK,GAAG;AAC7C;AAAA,QACJ;AACA,cAAM;AAAA,MACV;AAAA,MACA,aAAa,OAAO,MAAM;AACtB,cAAM,WAAW,MAAM;AACvB,YAAI,SAAS,QAAW;AACpB,gBAAM,OAAOA,QAAO,iBAAiB,MAAM,MAAM,MAAM,KAAK,UAAU,oBAAoB;AAAA,QAC9F;AACA,YAAIA,QAAO,gBAAgB,KAAK,UAAU,aAAa,KAAK,GAAG;AAC3D,eAAK,eAAe,KAAK;AAAA,QAC7B;AACA,YAAI,MAAM,OAAO,YAAY,KAAKA,QAAO,gBAAgB,KAAK,UAAU,YAAY,KAAK,GAAG;AACxF,eAAK,aAAa,UAAU,SAAS,SAAY,SAAY,MAAM,IAAI;AAAA,QAC3E;AAAA,MACJ;AAAA,MACA,eAAe,OAAO;AAClB,aAAK,SAAS,KAAK,KAAK;AAAA,MAC5B;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AC1DlB,IAAAC,gBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,SAAS;AACf,QAAM,eAAN,MAAmB;AAAA,MACf,YAAYC,QAAO,WAAW;AAC1B,aAAK,QAAQA;AACb,aAAK,YAAY;AACjB,aAAK,UAAU,IAAI,OAAO,QAAQ,KAAK,OAAO,KAAK,SAAS;AAAA,MAChE;AAAA,MACA,OAAO;AACH,eAAO,KAAK,QAAQ,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACblB,IAAAC,oBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAMC,QAAO,UAAQ;AACrB,QAAM,YAAY;AAClB,QAAM,WAAN,MAAe;AAAA,MACX,YAAYC,YAAW,CAAC,GAAG;AACvB,aAAK,WAAWA;AAChB,aAAK,WAAW,KAAK,UAAU,KAAK,SAAS,UAAU,MAAS;AAChE,aAAK,cAAc,KAAK,UAAU,KAAK,SAAS,aAAa,OAAO,iBAAiB;AACrF,aAAK,aAAa,KAAK,UAAU,KAAK,SAAS,YAAY,IAAI;AAC/D,aAAK,cAAc,KAAK,UAAU,KAAK,SAAS,aAAa,IAAI;AACjE,aAAK,cAAc,KAAK,UAAU,KAAK,SAAS,aAAa,IAAI;AACjE,aAAK,uBAAuB,KAAK,UAAU,KAAK,SAAS,sBAAsBD,MAAK,GAAG;AACvF,aAAK,oBAAoB,IAAI,UAAU,SAAS;AAAA,UAC5C,qBAAqB,KAAK,SAAS;AAAA,UACnC,IAAI,KAAK,SAAS;AAAA,UAClB,sBAAsB,KAAK,SAAS;AAAA,UACpC,OAAO,KAAK,SAAS;AAAA,UACrB,gCAAgC,KAAK,SAAS;AAAA,QAClD,CAAC;AAAA,MACL;AAAA,MACA,UAAU,QAAQ,OAAO;AACrB,eAAO,WAAW,QAAQ,WAAW,SAAS,SAAS;AAAA,MAC3D;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB,IAAAE,eAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,WAAW,QAAQ,aAAa,QAAQ,WAAW,QAAQ,OAAO;AAC1E,QAAM,UAAU;AAChB,QAAM,WAAW;AACjB,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,YAAQ,WAAW,WAAW;AAC9B,aAAS,KAAK,WAAW,6BAA6B,UAAU;AAC5D,UAAI,OAAO,gCAAgC,YAAY;AACnD,YAAI,QAAQ,QAAQ,WAAW,YAAY,CAAC,EAAE,KAAK,2BAA2B;AAC9E;AAAA,MACJ;AACA,UAAI,QAAQ,QAAQ,WAAW,YAAY,2BAA2B,CAAC,EAAE,KAAK,QAAQ;AAAA,IAC1F;AACA,YAAQ,OAAO;AACf,aAAS,SAAS,WAAW,mBAAmB;AAC5C,YAAM,WAAW,YAAY,iBAAiB;AAC9C,YAAM,WAAW,IAAI,OAAO,QAAQ,WAAW,QAAQ;AACvD,aAAO,SAAS,KAAK;AAAA,IACzB;AACA,YAAQ,WAAW;AACnB,aAAS,WAAW,WAAW,mBAAmB;AAC9C,YAAM,WAAW,YAAY,iBAAiB;AAC9C,YAAM,WAAW,IAAI,SAAS,QAAQ,WAAW,QAAQ;AACzD,aAAO,SAAS,KAAK;AAAA,IACzB;AACA,YAAQ,aAAa;AACrB,aAAS,YAAY,oBAAoB,CAAC,GAAG;AACzC,UAAI,6BAA6B,WAAW,SAAS;AACjD,eAAO;AAAA,MACX;AACA,aAAO,IAAI,WAAW,QAAQ,iBAAiB;AAAA,IACnD;AAAA;AAAA;;;ACjCA,IAAAC,kBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAMC,QAAO,UAAQ;AACrB,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,SAAN,MAAa;AAAA,MACT,YAAY,WAAW;AACnB,aAAK,YAAY;AACjB,aAAK,kBAAkB,IAAI,OAAO,SAAS;AAAA,UACvC,oBAAoB,KAAK,UAAU;AAAA,UACnC,IAAI,KAAK,UAAU;AAAA,UACnB,gCAAgC,KAAK,UAAU;AAAA,QACnD,CAAC;AAAA,MACL;AAAA,MACA,kBAAkB,UAAU;AACxB,eAAOA,MAAK,QAAQ,KAAK,UAAU,KAAK,QAAQ;AAAA,MACpD;AAAA,MACA,WAAW,OAAO,SAAS;AACvB,cAAM,QAAQ;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ,MAAM,GAAG,sBAAsB,SAAS,KAAK;AAAA,QACzD;AACA,YAAI,KAAK,UAAU,OAAO;AACtB,gBAAM,QAAQ;AAAA,QAClB;AACA,eAAO;AAAA,MACX;AAAA,MACA,cAAc,OAAO;AACjB,eAAO,CAAC,MAAM,MAAM,kBAAkB,KAAK,KAAK,CAAC,KAAK,UAAU;AAAA,MACpE;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AChClB,IAAAC,kBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,WAAW,UAAQ;AACzB,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,WAAW;AACjB,QAAM,eAAN,cAA2B,SAAS,QAAQ;AAAA,MACxC,cAAc;AACV,cAAM,GAAG,SAAS;AAClB,aAAK,cAAc,OAAO;AAC1B,aAAK,QAAQ,OAAO;AAAA,MACxB;AAAA,MACA,QAAQ,MAAM,SAAS;AACnB,eAAO,KAAK,YAAY,MAAM,OAAO;AAAA,MACzC;AAAA,MACA,OAAO,UAAU,SAAS;AACtB,cAAM,YAAY,SAAS,IAAI,KAAK,mBAAmB,IAAI;AAC3D,cAAM,SAAS,IAAI,SAAS,YAAY,EAAE,YAAY,KAAK,CAAC;AAC5D,eAAO,SAAS,CAAC,OAAO,MAAM,SAAS;AACnC,iBAAO,KAAK,UAAU,UAAU,QAAQ,SAAS,QAAQ,OAAO,EAC3D,KAAK,CAAC,UAAU;AACjB,gBAAI,UAAU,QAAQ,QAAQ,YAAY,KAAK,GAAG;AAC9C,qBAAO,KAAK,KAAK;AAAA,YACrB;AACA,gBAAI,UAAU,UAAU,SAAS,GAAG;AAChC,qBAAO,IAAI;AAAA,YACf;AACA,iBAAK;AAAA,UACT,CAAC,EACI,MAAM,IAAI;AAAA,QACnB;AACA,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACvC,iBAAO,MAAM,CAAC;AAAA,QAClB;AACA,eAAO;AAAA,MACX;AAAA,MACA,UAAU,UAAU,SAAS,SAAS;AAClC,eAAO,KAAK,SAAS,QAAQ,EACxB,KAAK,CAAC,UAAU,KAAK,WAAW,OAAO,OAAO,CAAC,EAC/C,MAAM,CAAC,UAAU;AAClB,cAAI,QAAQ,YAAY,KAAK,GAAG;AAC5B,mBAAO;AAAA,UACX;AACA,gBAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,MACA,SAAS,UAAU;AACf,eAAO,IAAI,QAAQ,CAACC,WAAS,WAAW;AACpC,eAAK,MAAM,UAAU,KAAK,iBAAiB,CAAC,OAAO,UAAU;AACzD,mBAAO,UAAU,OAAOA,UAAQ,KAAK,IAAI,OAAO,KAAK;AAAA,UACzD,CAAC;AAAA,QACL,CAAC;AAAA,MACL;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACtDlB,IAAAC,iBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,SAAS;AACf,QAAM,WAAW;AACjB,QAAM,WAAW;AACjB,QAAM,cAAN,cAA0B,SAAS,QAAQ;AAAA,MACvC,cAAc;AACV,cAAM,GAAG,SAAS;AAClB,aAAK,aAAa,OAAO;AACzB,aAAK,gBAAgB,IAAI,SAAS,QAAQ,KAAK,SAAS;AAAA,MAC5D;AAAA,MACA,QAAQ,MAAM,SAAS;AACnB,eAAO,IAAI,QAAQ,CAACC,WAAS,WAAW;AACpC,eAAK,WAAW,MAAM,SAAS,CAAC,OAAO,YAAY;AAC/C,gBAAI,UAAU,MAAM;AAChB,cAAAA,UAAQ,OAAO;AAAA,YACnB,OACK;AACD,qBAAO,KAAK;AAAA,YAChB;AAAA,UACJ,CAAC;AAAA,QACL,CAAC;AAAA,MACL;AAAA,MACA,MAAM,OAAO,UAAU,SAAS;AAC5B,cAAM,UAAU,CAAC;AACjB,cAAM,SAAS,KAAK,cAAc,OAAO,UAAU,OAAO;AAE1D,eAAO,IAAI,QAAQ,CAACA,WAAS,WAAW;AACpC,iBAAO,KAAK,SAAS,MAAM;AAC3B,iBAAO,GAAG,QAAQ,CAAC,UAAU,QAAQ,KAAK,KAAK,CAAC;AAChD,iBAAO,KAAK,OAAO,MAAMA,UAAQ,OAAO,CAAC;AAAA,QAC7C,CAAC;AAAA,MACL;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AClClB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,QAAQ;AACd,QAAM,UAAN,MAAc;AAAA,MACV,YAAY,WAAW,WAAW,oBAAoB;AAClD,aAAK,YAAY;AACjB,aAAK,YAAY;AACjB,aAAK,qBAAqB;AAC1B,aAAK,WAAW,CAAC;AACjB,aAAK,aAAa;AAAA,MACtB;AAAA,MACA,eAAe;AACX,mBAAW,WAAW,KAAK,WAAW;AAClC,gBAAM,WAAW,KAAK,oBAAoB,OAAO;AACjD,gBAAM,WAAW,KAAK,2BAA2B,QAAQ;AACzD,eAAK,SAAS,KAAK;AAAA,YACf,UAAU,SAAS,UAAU;AAAA,YAC7B;AAAA,YACA;AAAA,YACA;AAAA,UACJ,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,MACA,oBAAoB,SAAS;AACzB,cAAM,QAAQ,MAAM,QAAQ,gBAAgB,SAAS,KAAK,kBAAkB;AAC5E,eAAO,MAAM,IAAI,CAAC,SAAS;AACvB,gBAAM,UAAU,MAAM,QAAQ,iBAAiB,MAAM,KAAK,SAAS;AACnE,cAAI,CAAC,SAAS;AACV,mBAAO;AAAA,cACH,SAAS;AAAA,cACT,SAAS;AAAA,YACb;AAAA,UACJ;AACA,iBAAO;AAAA,YACH,SAAS;AAAA,YACT,SAAS;AAAA,YACT,WAAW,MAAM,QAAQ,OAAO,MAAM,KAAK,kBAAkB;AAAA,UACjE;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MACA,2BAA2B,UAAU;AACjC,eAAO,MAAM,MAAM,UAAU,UAAU,CAAC,YAAY,QAAQ,WAAW,MAAM,QAAQ,YAAY,QAAQ,OAAO,CAAC;AAAA,MACrH;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AC5ClB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,YAAY;AAClB,QAAM,iBAAN,cAA6B,UAAU,QAAQ;AAAA,MAC3C,MAAM,UAAU;AACZ,cAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,cAAM,SAAS,MAAM;AACrB,cAAM,WAAW,KAAK,SAAS,OAAO,CAACC,UAAS,CAACA,MAAK,YAAYA,MAAK,SAAS,SAAS,MAAM;AAC/F,mBAAW,WAAW,UAAU;AAC5B,gBAAM,UAAU,QAAQ,SAAS;AAQjC,cAAI,CAAC,QAAQ,YAAY,SAAS,QAAQ,QAAQ;AAC9C,mBAAO;AAAA,UACX;AACA,gBAAMC,SAAQ,MAAM,MAAM,CAAC,MAAM,UAAU;AACvC,kBAAM,UAAU,QAAQ,SAAS;AACjC,gBAAI,QAAQ,WAAW,QAAQ,UAAU,KAAK,IAAI,GAAG;AACjD,qBAAO;AAAA,YACX;AACA,gBAAI,CAAC,QAAQ,WAAW,QAAQ,YAAY,MAAM;AAC9C,qBAAO;AAAA,YACX;AACA,mBAAO;AAAA,UACX,CAAC;AACD,cAAIA,QAAO;AACP,mBAAO;AAAA,UACX;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACrClB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,aAAN,MAAiB;AAAA,MACb,YAAY,WAAW,oBAAoB;AACvC,aAAK,YAAY;AACjB,aAAK,qBAAqB;AAAA,MAC9B;AAAA,MACA,UAAU,UAAU,UAAU,UAAU;AACpC,cAAM,UAAU,KAAK,YAAY,QAAQ;AACzC,cAAM,aAAa,KAAK,uBAAuB,QAAQ;AACvD,eAAO,CAAC,UAAU,KAAK,QAAQ,UAAU,OAAO,SAAS,UAAU;AAAA,MACvE;AAAA,MACA,YAAY,UAAU;AAClB,eAAO,IAAI,UAAU,QAAQ,UAAU,KAAK,WAAW,KAAK,kBAAkB;AAAA,MAClF;AAAA,MACA,uBAAuB,UAAU;AAC7B,cAAM,+BAA+B,SAAS,OAAO,MAAM,QAAQ,6BAA6B;AAChG,eAAO,MAAM,QAAQ,oBAAoB,8BAA8B,KAAK,kBAAkB;AAAA,MAClG;AAAA,MACA,QAAQ,UAAU,OAAO,SAAS,YAAY;AAC1C,YAAI,KAAK,iBAAiB,UAAU,MAAM,IAAI,GAAG;AAC7C,iBAAO;AAAA,QACX;AACA,YAAI,KAAK,uBAAuB,KAAK,GAAG;AACpC,iBAAO;AAAA,QACX;AACA,cAAM,WAAW,MAAM,KAAK,wBAAwB,MAAM,IAAI;AAC9D,YAAI,KAAK,6BAA6B,UAAU,OAAO,GAAG;AACtD,iBAAO;AAAA,QACX;AACA,eAAO,KAAK,6BAA6B,UAAU,UAAU;AAAA,MACjE;AAAA,MACA,iBAAiB,UAAU,WAAW;AAIlC,YAAI,KAAK,UAAU,SAAS,UAAU;AAClC,iBAAO;AAAA,QACX;AACA,eAAO,KAAK,eAAe,UAAU,SAAS,KAAK,KAAK,UAAU;AAAA,MACtE;AAAA,MACA,eAAe,UAAU,WAAW;AAChC,cAAM,iBAAiB,UAAU,MAAM,GAAG,EAAE;AAC5C,YAAI,aAAa,IAAI;AACjB,iBAAO;AAAA,QACX;AACA,cAAM,gBAAgB,SAAS,MAAM,GAAG,EAAE;AAC1C,eAAO,iBAAiB;AAAA,MAC5B;AAAA,MACA,uBAAuB,OAAO;AAC1B,eAAO,CAAC,KAAK,UAAU,uBAAuB,MAAM,OAAO,eAAe;AAAA,MAC9E;AAAA,MACA,6BAA6B,WAAW,SAAS;AAC7C,eAAO,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAQ,MAAM,SAAS;AAAA,MACpE;AAAA,MACA,6BAA6B,WAAW,YAAY;AAChD,eAAO,CAAC,MAAM,QAAQ,SAAS,WAAW,UAAU;AAAA,MACxD;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AC7DlB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,QAAQ;AACd,QAAM,cAAN,MAAkB;AAAA,MACd,YAAY,WAAW,oBAAoB;AACvC,aAAK,YAAY;AACjB,aAAK,qBAAqB;AAC1B,aAAK,QAAQ,oBAAI,IAAI;AAAA,MACzB;AAAA,MACA,UAAU,UAAU,UAAU;AAC1B,cAAM,CAAC,kBAAkB,gBAAgB,IAAI,MAAM,QAAQ,6BAA6B,QAAQ;AAChG,cAAM,WAAW;AAAA,UACb,UAAU;AAAA,YACN,KAAK,MAAM,QAAQ,oBAAoB,UAAU,KAAK,kBAAkB;AAAA,UAC5E;AAAA,UACA,UAAU;AAAA,YACN,UAAU,MAAM,QAAQ,oBAAoB,kBAAkB,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,kBAAkB,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC;AAAA,YACtI,UAAU,MAAM,QAAQ,oBAAoB,kBAAkB,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,kBAAkB,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC;AAAA,UAC1I;AAAA,QACJ;AACA,eAAO,CAAC,UAAU,KAAK,QAAQ,OAAO,QAAQ;AAAA,MAClD;AAAA,MACA,QAAQ,OAAO,UAAU;AACrB,cAAM,WAAW,MAAM,KAAK,wBAAwB,MAAM,IAAI;AAC9D,YAAI,KAAK,UAAU,UAAU,KAAK,kBAAkB,QAAQ,GAAG;AAC3D,iBAAO;AAAA,QACX;AACA,YAAI,KAAK,gBAAgB,KAAK,KAAK,KAAK,qBAAqB,KAAK,GAAG;AACjE,iBAAO;AAAA,QACX;AACA,cAAM,YAAY,KAAK,sBAAsB,UAAU,UAAU,MAAM,OAAO,YAAY,CAAC;AAC3F,YAAI,KAAK,UAAU,UAAU,WAAW;AACpC,eAAK,mBAAmB,QAAQ;AAAA,QACpC;AACA,eAAO;AAAA,MACX;AAAA,MACA,kBAAkB,UAAU;AACxB,eAAO,KAAK,MAAM,IAAI,QAAQ;AAAA,MAClC;AAAA,MACA,mBAAmB,UAAU;AACzB,aAAK,MAAM,IAAI,UAAU,MAAS;AAAA,MACtC;AAAA,MACA,gBAAgB,OAAO;AACnB,eAAO,KAAK,UAAU,aAAa,CAAC,MAAM,OAAO,OAAO;AAAA,MAC5D;AAAA,MACA,qBAAqB,OAAO;AACxB,eAAO,KAAK,UAAU,mBAAmB,CAAC,MAAM,OAAO,YAAY;AAAA,MACvE;AAAA,MACA,sBAAsB,UAAU,UAAU,aAAa;AACnD,cAAM,YAAY,KAAK,mBAAmB,UAAU,SAAS,SAAS,KAAK,WAAW;AACtF,YAAI,CAAC,WAAW;AACZ,iBAAO;AAAA,QACX;AACA,cAAM,8BAA8B,KAAK,mBAAmB,UAAU,SAAS,SAAS,UAAU,WAAW;AAC7G,YAAI,6BAA6B;AAC7B,iBAAO;AAAA,QACX;AACA,cAAM,8BAA8B,KAAK,2BAA2B,UAAU,SAAS,SAAS,UAAU,WAAW;AACrH,YAAI,6BAA6B;AAC7B,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX;AAAA,MACA,2BAA2B,UAAU,YAAY,aAAa;AAC1D,YAAI,WAAW,WAAW,GAAG;AACzB,iBAAO;AAAA,QACX;AACA,cAAM,WAAW,MAAM,KAAK,aAAa,KAAK,UAAU,KAAK,QAAQ;AACrE,eAAO,KAAK,mBAAmB,UAAU,YAAY,WAAW;AAAA,MACpE;AAAA,MACA,mBAAmB,UAAU,YAAY,aAAa;AAClD,YAAI,WAAW,WAAW,GAAG;AACzB,iBAAO;AAAA,QACX;AAEA,cAAM,YAAY,MAAM,QAAQ,SAAS,UAAU,UAAU;AAG7D,YAAI,CAAC,aAAa,aAAa;AAC3B,iBAAO,MAAM,QAAQ,SAAS,WAAW,KAAK,UAAU;AAAA,QAC5D;AACA,eAAO;AAAA,MACX;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACpFlB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,QAAQ;AACd,QAAM,cAAN,MAAkB;AAAA,MACd,YAAY,WAAW;AACnB,aAAK,YAAY;AAAA,MACrB;AAAA,MACA,YAAY;AACR,eAAO,CAAC,UAAU,KAAK,iBAAiB,KAAK;AAAA,MACjD;AAAA,MACA,iBAAiB,OAAO;AACpB,eAAO,MAAM,MAAM,kBAAkB,KAAK,KAAK,KAAK,UAAU;AAAA,MAClE;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACdlB,IAAAC,iBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,QAAQ;AACd,QAAM,mBAAN,MAAuB;AAAA,MACnB,YAAY,WAAW;AACnB,aAAK,YAAY;AAAA,MACrB;AAAA,MACA,iBAAiB;AACb,eAAO,CAAC,UAAU,KAAK,WAAW,KAAK;AAAA,MAC3C;AAAA,MACA,WAAW,OAAO;AACd,YAAI,WAAW,MAAM;AACrB,YAAI,KAAK,UAAU,UAAU;AACzB,qBAAW,MAAM,KAAK,aAAa,KAAK,UAAU,KAAK,QAAQ;AAC/D,qBAAW,MAAM,KAAK,QAAQ,QAAQ;AAAA,QAC1C;AACA,YAAI,KAAK,UAAU,mBAAmB,MAAM,OAAO,YAAY,GAAG;AAC9D,sBAAY;AAAA,QAChB;AACA,YAAI,CAAC,KAAK,UAAU,YAAY;AAC5B,iBAAO;AAAA,QACX;AACA,eAAO,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,GAAG,EAAE,MAAM,SAAS,CAAC;AAAA,MACrE;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAMC,QAAO,UAAQ;AACrB,QAAM,SAAS;AACf,QAAM,UAAU;AAChB,QAAM,UAAU;AAChB,QAAM,UAAU;AAChB,QAAM,WAAN,MAAe;AAAA,MACX,YAAY,WAAW;AACnB,aAAK,YAAY;AACjB,aAAK,cAAc,IAAI,QAAQ,QAAQ,KAAK,SAAS;AACrD,aAAK,cAAc,IAAI,QAAQ,QAAQ,KAAK,WAAW,KAAK,sBAAsB,CAAC;AACnF,aAAK,aAAa,IAAI,OAAO,QAAQ,KAAK,WAAW,KAAK,sBAAsB,CAAC;AACjF,aAAK,mBAAmB,IAAI,QAAQ,QAAQ,KAAK,SAAS;AAAA,MAC9D;AAAA,MACA,kBAAkB,MAAM;AACpB,eAAOA,MAAK,QAAQ,KAAK,UAAU,KAAK,KAAK,IAAI;AAAA,MACrD;AAAA,MACA,kBAAkB,MAAM;AACpB,cAAM,WAAW,KAAK,SAAS,MAAM,KAAK,KAAK;AAC/C,eAAO;AAAA,UACH;AAAA,UACA,sBAAsB;AAAA,UACtB,aAAa,KAAK,UAAU;AAAA,UAC5B,YAAY,KAAK,WAAW,UAAU,UAAU,KAAK,UAAU,KAAK,QAAQ;AAAA,UAC5E,aAAa,KAAK,YAAY,UAAU,KAAK,UAAU,KAAK,QAAQ;AAAA,UACpE,aAAa,KAAK,YAAY,UAAU;AAAA,UACxC,qBAAqB,KAAK,UAAU;AAAA,UACpC,IAAI,KAAK,UAAU;AAAA,UACnB,OAAO,KAAK,UAAU;AAAA,UACtB,gCAAgC,KAAK,UAAU;AAAA,UAC/C,WAAW,KAAK,iBAAiB,eAAe;AAAA,QACpD;AAAA,MACJ;AAAA,MACA,wBAAwB;AACpB,eAAO;AAAA,UACH,KAAK,KAAK,UAAU;AAAA,UACpB,WAAW,KAAK,UAAU;AAAA,UAC1B,SAAS,CAAC,KAAK,UAAU;AAAA,UACzB,QAAQ,CAAC,KAAK,UAAU;AAAA,UACxB,OAAO,CAAC,KAAK,UAAU;AAAA,UACvB,YAAY,CAAC,KAAK,UAAU;AAAA,UAC5B,OAAO;AAAA,UACP,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AC/ClB,IAAAC,iBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,UAAU;AAChB,QAAM,aAAa;AACnB,QAAM,gBAAN,cAA4B,WAAW,QAAQ;AAAA,MAC3C,cAAc;AACV,cAAM,GAAG,SAAS;AAClB,aAAK,UAAU,IAAI,QAAQ,QAAQ,KAAK,SAAS;AAAA,MACrD;AAAA,MACA,MAAM,KAAK,MAAM;AACb,cAAM,OAAO,KAAK,kBAAkB,IAAI;AACxC,cAAM,UAAU,KAAK,kBAAkB,IAAI;AAC3C,cAAM,UAAU,MAAM,KAAK,IAAI,MAAM,MAAM,OAAO;AAClD,eAAO,QAAQ,IAAI,CAAC,UAAU,QAAQ,UAAU,KAAK,CAAC;AAAA,MAC1D;AAAA,MACA,IAAI,MAAM,MAAM,SAAS;AACrB,YAAI,KAAK,SAAS;AACd,iBAAO,KAAK,QAAQ,QAAQ,MAAM,OAAO;AAAA,QAC7C;AACA,eAAO,KAAK,QAAQ,OAAO,KAAK,UAAU,OAAO;AAAA,MACrD;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACtBlB,IAAAC,kBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,WAAW,UAAQ;AACzB,QAAM,WAAW;AACjB,QAAM,aAAa;AACnB,QAAM,iBAAN,cAA6B,WAAW,QAAQ;AAAA,MAC5C,cAAc;AACV,cAAM,GAAG,SAAS;AAClB,aAAK,UAAU,IAAI,SAAS,QAAQ,KAAK,SAAS;AAAA,MACtD;AAAA,MACA,KAAK,MAAM;AACP,cAAM,OAAO,KAAK,kBAAkB,IAAI;AACxC,cAAM,UAAU,KAAK,kBAAkB,IAAI;AAC3C,cAAM,SAAS,KAAK,IAAI,MAAM,MAAM,OAAO;AAC3C,cAAM,cAAc,IAAI,SAAS,SAAS,EAAE,YAAY,MAAM,MAAM,MAAM;AAAA,QAAE,EAAE,CAAC;AAC/E,eACK,KAAK,SAAS,CAAC,UAAU,YAAY,KAAK,SAAS,KAAK,CAAC,EACzD,GAAG,QAAQ,CAAC,UAAU,YAAY,KAAK,QAAQ,QAAQ,UAAU,KAAK,CAAC,CAAC,EACxE,KAAK,OAAO,MAAM,YAAY,KAAK,KAAK,CAAC;AAC9C,oBACK,KAAK,SAAS,MAAM,OAAO,QAAQ,CAAC;AACzC,eAAO;AAAA,MACX;AAAA,MACA,IAAI,MAAM,MAAM,SAAS;AACrB,YAAI,KAAK,SAAS;AACd,iBAAO,KAAK,QAAQ,QAAQ,MAAM,OAAO;AAAA,QAC7C;AACA,eAAO,KAAK,QAAQ,OAAO,KAAK,UAAU,OAAO;AAAA,MACrD;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AC9BlB,IAAAC,gBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,WAAW;AACjB,QAAM,aAAN,cAAyB,SAAS,QAAQ;AAAA,MACtC,cAAc;AACV,cAAM,GAAG,SAAS;AAClB,aAAK,YAAY,OAAO;AACxB,aAAK,YAAY,OAAO;AAAA,MAC5B;AAAA,MACA,QAAQ,MAAM,SAAS;AACnB,eAAO,KAAK,UAAU,MAAM,OAAO;AAAA,MACvC;AAAA,MACA,OAAO,UAAU,SAAS;AACtB,cAAM,UAAU,CAAC;AACjB,mBAAW,WAAW,UAAU;AAC5B,gBAAM,WAAW,KAAK,kBAAkB,OAAO;AAC/C,gBAAM,QAAQ,KAAK,UAAU,UAAU,SAAS,OAAO;AACvD,cAAI,UAAU,QAAQ,CAAC,QAAQ,YAAY,KAAK,GAAG;AAC/C;AAAA,UACJ;AACA,kBAAQ,KAAK,KAAK;AAAA,QACtB;AACA,eAAO;AAAA,MACX;AAAA,MACA,UAAU,UAAU,SAAS,SAAS;AAClC,YAAI;AACA,gBAAM,QAAQ,KAAK,SAAS,QAAQ;AACpC,iBAAO,KAAK,WAAW,OAAO,OAAO;AAAA,QACzC,SACO,OAAP;AACI,cAAI,QAAQ,YAAY,KAAK,GAAG;AAC5B,mBAAO;AAAA,UACX;AACA,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MACA,SAAS,UAAU;AACf,eAAO,KAAK,UAAU,UAAU,KAAK,eAAe;AAAA,MACxD;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AC1ClB,IAAAC,gBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,eAAN,cAA2B,WAAW,QAAQ;AAAA,MAC1C,cAAc;AACV,cAAM,GAAG,SAAS;AAClB,aAAK,UAAU,IAAI,OAAO,QAAQ,KAAK,SAAS;AAAA,MACpD;AAAA,MACA,KAAK,MAAM;AACP,cAAM,OAAO,KAAK,kBAAkB,IAAI;AACxC,cAAM,UAAU,KAAK,kBAAkB,IAAI;AAC3C,cAAM,UAAU,KAAK,IAAI,MAAM,MAAM,OAAO;AAC5C,eAAO,QAAQ,IAAI,QAAQ,SAAS;AAAA,MACxC;AAAA,MACA,IAAI,MAAM,MAAM,SAAS;AACrB,YAAI,KAAK,SAAS;AACd,iBAAO,KAAK,QAAQ,QAAQ,MAAM,OAAO;AAAA,QAC7C;AACA,eAAO,KAAK,QAAQ,OAAO,KAAK,UAAU,OAAO;AAAA,MACrD;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACtBlB,IAAAC,oBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,8BAA8B;AACtC,QAAMC,MAAK,UAAQ;AACnB,QAAM,KAAK,UAAQ;AAKnB,QAAM,YAAY,KAAK,IAAI,GAAG,KAAK,EAAE,QAAQ,CAAC;AAC9C,YAAQ,8BAA8B;AAAA,MAClC,OAAOA,IAAG;AAAA,MACV,WAAWA,IAAG;AAAA,MACd,MAAMA,IAAG;AAAA,MACT,UAAUA,IAAG;AAAA,MACb,SAASA,IAAG;AAAA,MACZ,aAAaA,IAAG;AAAA,IACpB;AACA,QAAM,WAAN,MAAe;AAAA,MACX,YAAYC,YAAW,CAAC,GAAG;AACvB,aAAK,WAAWA;AAChB,aAAK,WAAW,KAAK,UAAU,KAAK,SAAS,UAAU,KAAK;AAC5D,aAAK,gBAAgB,KAAK,UAAU,KAAK,SAAS,eAAe,KAAK;AACtE,aAAK,iBAAiB,KAAK,UAAU,KAAK,SAAS,gBAAgB,IAAI;AACvE,aAAK,qBAAqB,KAAK,UAAU,KAAK,SAAS,oBAAoB,IAAI;AAC/E,aAAK,cAAc,KAAK,UAAU,KAAK,SAAS,aAAa,SAAS;AACtE,aAAK,MAAM,KAAK,UAAU,KAAK,SAAS,KAAK,QAAQ,IAAI,CAAC;AAC1D,aAAK,OAAO,KAAK,UAAU,KAAK,SAAS,MAAM,QAAQ;AACvD,aAAK,MAAM,KAAK,UAAU,KAAK,SAAS,KAAK,KAAK;AAClD,aAAK,UAAU,KAAK,UAAU,KAAK,SAAS,SAAS,IAAI;AACzD,aAAK,sBAAsB,KAAK,UAAU,KAAK,SAAS,qBAAqB,IAAI;AACjF,aAAK,KAAK,KAAK,sBAAsB,KAAK,SAAS,EAAE;AACrD,aAAK,WAAW,KAAK,UAAU,KAAK,SAAS,UAAU,IAAI;AAC3D,aAAK,SAAS,KAAK,UAAU,KAAK,SAAS,QAAQ,CAAC,CAAC;AACrD,aAAK,kBAAkB,KAAK,UAAU,KAAK,SAAS,iBAAiB,KAAK;AAC1E,aAAK,aAAa,KAAK,UAAU,KAAK,SAAS,YAAY,KAAK;AAChE,aAAK,kBAAkB,KAAK,UAAU,KAAK,SAAS,iBAAiB,KAAK;AAC1E,aAAK,YAAY,KAAK,UAAU,KAAK,SAAS,WAAW,IAAI;AAC7D,aAAK,QAAQ,KAAK,UAAU,KAAK,SAAS,OAAO,KAAK;AACtD,aAAK,iBAAiB,KAAK,UAAU,KAAK,SAAS,gBAAgB,KAAK;AACxE,aAAK,iCAAiC,KAAK,UAAU,KAAK,SAAS,gCAAgC,KAAK;AACxG,aAAK,SAAS,KAAK,UAAU,KAAK,SAAS,QAAQ,IAAI;AACvD,YAAI,KAAK,iBAAiB;AACtB,eAAK,YAAY;AAAA,QACrB;AACA,YAAI,KAAK,OAAO;AACZ,eAAK,aAAa;AAAA,QACtB;AAEA,aAAK,SAAS,CAAC,EAAE,OAAO,KAAK,MAAM;AAAA,MACvC;AAAA,MACA,UAAU,QAAQ,OAAO;AACrB,eAAO,WAAW,SAAY,QAAQ;AAAA,MAC1C;AAAA,MACA,sBAAsB,UAAU,CAAC,GAAG;AAChC,eAAO,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,2BAA2B,GAAG,OAAO;AAAA,MACxF;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA;AAAA;;;AC1DlB,IAAAC,eAAA;AAAA;AAAA;AACA,QAAM,cAAc;AACpB,QAAM,UAAU;AAChB,QAAM,WAAW;AACjB,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,QAAQ;AACd,mBAAe,SAAS,QAAQ,SAAS;AACrC,0BAAoB,MAAM;AAC1B,YAAM,QAAQ,SAAS,QAAQ,QAAQ,SAAS,OAAO;AACvD,YAAM,SAAS,MAAM,QAAQ,IAAI,KAAK;AACtC,aAAO,MAAM,MAAM,QAAQ,MAAM;AAAA,IACrC;AAGA,KAAC,SAAUC,WAAU;AACjB,MAAAA,UAAS,OAAOA;AAChB,MAAAA,UAAS,WAAW;AACpB,MAAAA,UAAS,aAAa;AACtB,MAAAA,UAAS,QAAQA;AACjB,eAAS,KAAK,QAAQ,SAAS;AAC3B,4BAAoB,MAAM;AAC1B,cAAM,QAAQ,SAAS,QAAQ,OAAO,SAAS,OAAO;AACtD,eAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,MACpC;AACA,MAAAA,UAAS,OAAO;AAChB,eAAS,OAAO,QAAQ,SAAS;AAC7B,4BAAoB,MAAM;AAC1B,cAAM,QAAQ,SAAS,QAAQ,SAAS,SAAS,OAAO;AAMxD,eAAO,MAAM,OAAO,MAAM,KAAK;AAAA,MACnC;AACA,MAAAA,UAAS,SAAS;AAClB,eAAS,cAAc,QAAQ,SAAS;AACpC,4BAAoB,MAAM;AAC1B,cAAM,WAAW,CAAC,EAAE,OAAO,MAAM;AACjC,cAAM,WAAW,IAAI,WAAW,QAAQ,OAAO;AAC/C,eAAO,YAAY,SAAS,UAAU,QAAQ;AAAA,MAClD;AACA,MAAAA,UAAS,gBAAgB;AACzB,eAAS,iBAAiB,QAAQ,SAAS;AACvC,4BAAoB,MAAM;AAC1B,cAAM,WAAW,IAAI,WAAW,QAAQ,OAAO;AAC/C,eAAO,MAAM,QAAQ,iBAAiB,QAAQ,QAAQ;AAAA,MAC1D;AACA,MAAAA,UAAS,mBAAmB;AAC5B,eAAS,WAAW,QAAQ;AACxB,4BAAoB,MAAM;AAC1B,eAAO,MAAM,KAAK,OAAO,MAAM;AAAA,MACnC;AACA,MAAAA,UAAS,aAAa;AACtB,eAAS,qBAAqB,QAAQ;AAClC,4BAAoB,MAAM;AAC1B,eAAO,MAAM,KAAK,qBAAqB,MAAM;AAAA,MACjD;AACA,MAAAA,UAAS,uBAAuB;AAChC,UAAI;AACJ,OAAC,SAAUC,QAAO;AACd,iBAASC,YAAW,QAAQ;AACxB,8BAAoB,MAAM;AAC1B,iBAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,QAC5C;AACA,QAAAD,OAAM,aAAaC;AACnB,iBAASC,sBAAqB,QAAQ;AAClC,8BAAoB,MAAM;AAC1B,iBAAO,MAAM,KAAK,0BAA0B,MAAM;AAAA,QACtD;AACA,QAAAF,OAAM,uBAAuBE;AAAA,MACjC,GAAG,QAAQH,UAAS,UAAUA,UAAS,QAAQ,CAAC,EAAE;AAClD,UAAI;AACJ,OAAC,SAAUI,QAAO;AACd,iBAASF,YAAW,QAAQ;AACxB,8BAAoB,MAAM;AAC1B,iBAAO,MAAM,KAAK,kBAAkB,MAAM;AAAA,QAC9C;AACA,QAAAE,OAAM,aAAaF;AACnB,iBAASC,sBAAqB,QAAQ;AAClC,8BAAoB,MAAM;AAC1B,iBAAO,MAAM,KAAK,4BAA4B,MAAM;AAAA,QACxD;AACA,QAAAC,OAAM,uBAAuBD;AAAA,MACjC,GAAG,QAAQH,UAAS,UAAUA,UAAS,QAAQ,CAAC,EAAE;AAAA,IACtD,GAAG,aAAa,WAAW,CAAC,EAAE;AAC9B,aAAS,SAAS,QAAQ,WAAW,SAAS;AAC1C,YAAM,WAAW,CAAC,EAAE,OAAO,MAAM;AACjC,YAAM,WAAW,IAAI,WAAW,QAAQ,OAAO;AAC/C,YAAM,QAAQ,YAAY,SAAS,UAAU,QAAQ;AACrD,YAAM,WAAW,IAAI,UAAU,QAAQ;AACvC,aAAO,MAAM,IAAI,SAAS,MAAM,QAAQ;AAAA,IAC5C;AACA,aAAS,oBAAoB,OAAO;AAChC,YAAM,SAAS,CAAC,EAAE,OAAO,KAAK;AAC9B,YAAM,gBAAgB,OAAO,MAAM,CAAC,SAAS,MAAM,OAAO,SAAS,IAAI,KAAK,CAAC,MAAM,OAAO,QAAQ,IAAI,CAAC;AACvG,UAAI,CAAC,eAAe;AAChB,cAAM,IAAI,UAAU,8DAA8D;AAAA,MACtF;AAAA,IACJ;AACA,WAAO,UAAU;AAAA;AAAA;;;;;;;;AC9FjB,QAAA,OAAA,UAAA;AACA,QAAA,aAAA,UAAA;AAOO,QAAM,QAAQ,OACnBK,OACA,UAAwB,CAAA,MACJ;AACpB,YAAM,EAAE,eAAe,MAAK,IAAK;AACjC,UAAI;AACF,eAAO,UAAU,OAAM,GAAA,WAAA,MAAKA,KAAI,GAAG,OAAO;eACnC,GAAP;AACA,cAAM,KAAK;AACX,YAAI,gBAAgB,GAAG,SAAS;AAAU,iBAAO;AACjD,cAAM;;IAEV;AAZa,YAAA,QAAK;AAkBX,QAAM,OAAO,CAClBA,OACA,UAAwB,CAAA,MACb;AACX,YAAM,EAAE,eAAe,MAAK,IAAK;AACjC,UAAI;AACF,eAAO,WAAU,GAAA,KAAA,UAASA,KAAI,GAAG,OAAO;eACjC,GAAP;AACA,cAAM,KAAK;AACX,YAAI,gBAAgB,GAAG,SAAS;AAAU,iBAAO;AACjD,cAAM;;IAEV;AAZa,YAAA,OAAI;AAcjB,QAAM,YAAY,CAAC,MAAa,YAC9B,KAAK,OAAM,KAAM,UAAU,MAAM,OAAO;AAE1C,QAAM,YAAY,CAAC,MAAa,YAAyB;;AACvD,YAAM,QAAQ,QAAQ,SAAOC,MAAA,QAAQ,WAAR,gBAAAA,IAAA;AAC7B,YAAM,WAAW,QAAQ,YAAUC,MAAA,QAAQ,cAAR,gBAAAA,IAAA,kBAAyB,CAAA;AAC5D,YAAM,QAAQ,QAAQ,SAAOC,MAAA,QAAQ,WAAR,gBAAAA,IAAA,kBAAsB,SAAS;AAC5D,UAAI,UAAU,UAAa,UAAU,QAAW;AAC9C,cAAM,IAAI,MAAM,uBAAuB;;AAGzC,YAAM,SAAS,oBAAI,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;AAE3C,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,KAAK;AAEjB,YAAM,IAAI,SAAS,OAAO,CAAC;AAC3B,YAAM,IAAI,SAAS,OAAO,CAAC;AAC3B,YAAM,IAAI,SAAS,OAAO,CAAC;AAC3B,YAAM,KAAK,IAAI;AAEf,aAAO,CAAC,EACN,MAAM,KACL,MAAM,KAAK,OAAO,IAAI,GAAG,KACzB,MAAM,KAAK,QAAQ,SACnB,MAAM,MAAM,UAAU;IAE3B;;;;;;;;;;ACpEA,QAAA,OAAA,UAAA;AACA,QAAA,aAAA,UAAA;AAOO,QAAM,QAAQ,OACnBC,OACA,UAAwB,CAAA,MACJ;AACpB,YAAM,EAAE,eAAe,MAAK,IAAK;AACjC,UAAI;AACF,eAAO,UAAU,OAAM,GAAA,WAAA,MAAKA,KAAI,GAAGA,OAAM,OAAO;eACzC,GAAP;AACA,cAAM,KAAK;AACX,YAAI,gBAAgB,GAAG,SAAS;AAAU,iBAAO;AACjD,cAAM;;IAEV;AAZa,YAAA,QAAK;AAkBX,QAAM,OAAO,CAClBA,OACA,UAAwB,CAAA,MACb;AACX,YAAM,EAAE,eAAe,MAAK,IAAK;AACjC,UAAI;AACF,eAAO,WAAU,GAAA,KAAA,UAASA,KAAI,GAAGA,OAAM,OAAO;eACvC,GAAP;AACA,cAAM,KAAK;AACX,YAAI,gBAAgB,GAAG,SAAS;AAAU,iBAAO;AACjD,cAAM;;IAEV;AAZa,YAAA,OAAI;AAcjB,QAAM,eAAe,CAACA,OAAc,YAAyB;AAC3D,YAAM,EAAE,UAAU,QAAQ,IAAI,WAAW,GAAE,IAAK;AAChD,YAAM,UAAU,QAAQ,MAAM,GAAG;AACjC,UAAI,QAAQ,QAAQ,EAAE,MAAM,IAAI;AAC9B,eAAO;;AAGT,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,cAAM,IAAI,QAAQ,GAAG,YAAW;AAChC,cAAMC,OAAMD,MAAK,UAAUA,MAAK,SAAS,EAAE,MAAM,EAAE,YAAW;AAE9D,YAAI,KAAKC,SAAQ,GAAG;AAClB,iBAAO;;;AAGX,aAAO;IACT;AAEA,QAAM,YAAY,CAAC,MAAaD,OAAc,YAC5C,KAAK,OAAM,KAAM,aAAaA,OAAM,OAAO;;;;;AClE7C,IAAAE,mBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACD5D,QAAA,QAAA,aAAA,eAAA;AAGgB,YAAA,QAAA;AAFhB,QAAA,QAAA,aAAA,eAAA;AAES,YAAA,QAAA;AADT,iBAAA,oBAAA,OAAA;AAGA,QAAM,WAAW,QAAQ,IAAI,yBAAyB,QAAQ;AAC9D,QAAM,OAAO,aAAa,UAAU,QAAQ;AAK/B,YAAA,QAAQ,KAAK;AAKb,YAAA,OAAO,KAAK;;;;;AChBzB,IAAAC,eAAA;AAAA;AAAA,QAAM,EAAE,OAAO,MAAM,UAAU,IAAI;AACnC,QAAM,EAAE,MAAAC,QAAM,WAAW,KAAAC,MAAK,MAAM,IAAI,UAAQ;AAEhD,QAAM,YAAY,QAAQ,aAAa;AAQvC,QAAM,SAAS,IAAI,OAAO,IAAI,MAAM,MAAMA,SAAQ,MAAM,MAAM,KAAKA,QAAO,QAAQ,SAAS,MAAM,CAAC;AAClG,QAAM,OAAO,IAAI,OAAO,OAAO,OAAO,QAAQ;AAE9C,QAAM,mBAAmB,CAAC,QACxB,OAAO,OAAO,IAAI,MAAM,cAAc,KAAK,GAAG,EAAE,MAAM,SAAS,CAAC;AAElE,QAAM,cAAc,CAAC,KAAK;AAAA,MACxB,MAAM,UAAU,QAAQ,IAAI;AAAA,MAC5B,SAAS,aAAa,QAAQ,IAAI;AAAA,MAClC,WAAW,eAAe;AAAA,IAC5B,MAAM;AAGJ,YAAM,UAAU,IAAI,MAAM,MAAM,IAAI,CAAC,EAAE,IAAI;AAAA,QAEzC,GAAI,YAAY,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC;AAAA,QACnC,IAAI,WAAoD,IAAI,MAAM,YAAY;AAAA,MAChF;AAEA,UAAI,WAAW;AACb,cAAM,aAAa,cACjB,CAAC,QAAQ,QAAQ,QAAQ,MAAM,EAAE,KAAK,YAAY;AACpD,cAAM,UAAU,WAAW,MAAM,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;AAC3F,YAAI,IAAI,SAAS,GAAG,KAAK,QAAQ,OAAO,IAAI;AAC1C,kBAAQ,QAAQ,EAAE;AAAA,QACpB;AACA,eAAO,EAAE,SAAS,SAAS,WAAW;AAAA,MACxC;AAEA,aAAO,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;AAAA,IAClC;AAEA,QAAM,cAAc,CAAC,KAAK,QAAQ;AAChC,YAAM,WAAW,SAAS,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,EAAE,IAAI;AACzD,YAAM,SAAS,CAAC,YAAY,KAAK,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI;AAC/D,aAAO,SAASD,OAAK,UAAU,GAAG;AAAA,IACpC;AAEA,QAAME,SAAQ,OAAO,KAAK,MAAM,CAAC,MAAM;AACrC,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI,YAAY,KAAK,GAAG;AAC7D,YAAM,QAAQ,CAAC;AAEf,iBAAW,WAAW,SAAS;AAC7B,cAAM,IAAI,YAAY,SAAS,GAAG;AAElC,mBAAWC,QAAO,SAAS;AACzB,gBAAM,UAAU,IAAIA;AACpB,gBAAM,KAAK,MAAM,MAAM,SAAS,EAAE,SAAS,YAAY,cAAc,KAAK,CAAC;AAC3E,cAAI,IAAI;AACN,gBAAI,CAAC,IAAI,KAAK;AACZ,qBAAO;AAAA,YACT;AACA,kBAAM,KAAK,OAAO;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,IAAI,OAAO,MAAM,QAAQ;AAC3B,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,SAAS;AACf,eAAO;AAAA,MACT;AAEA,YAAM,iBAAiB,GAAG;AAAA,IAC5B;AAEA,QAAM,YAAY,CAAC,KAAK,MAAM,CAAC,MAAM;AACnC,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI,YAAY,KAAK,GAAG;AAC7D,YAAM,QAAQ,CAAC;AAEf,iBAAW,eAAe,SAAS;AACjC,cAAM,IAAI,YAAY,aAAa,GAAG;AAEtC,mBAAWA,QAAO,SAAS;AACzB,gBAAM,UAAU,IAAIA;AACpB,gBAAM,KAAK,UAAU,SAAS,EAAE,SAAS,YAAY,cAAc,KAAK,CAAC;AACzE,cAAI,IAAI;AACN,gBAAI,CAAC,IAAI,KAAK;AACZ,qBAAO;AAAA,YACT;AACA,kBAAM,KAAK,OAAO;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,IAAI,OAAO,MAAM,QAAQ;AAC3B,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,SAAS;AACf,eAAO;AAAA,MACT;AAEA,YAAM,iBAAiB,GAAG;AAAA,IAC5B;AAEA,WAAO,UAAUD;AACjB,IAAAA,OAAM,OAAO;AAAA;AAAA;;;AC9Gb;AAAA;AAAA;AAEA,QAAM,QAAQ,OAAO,IAAI,YAAY;AACrC,QAAM,MAAM,OAAO,IAAI,eAAe;AACtC,QAAM,MAAM,OAAO,IAAI,UAAU;AACjC,QAAM,OAAO,OAAO,IAAI,WAAW;AACnC,QAAM,SAAS,OAAO,IAAI,aAAa;AACvC,QAAM,MAAM,OAAO,IAAI,UAAU;AACjC,QAAM,YAAY,OAAO,IAAI,gBAAgB;AAC7C,QAAM,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AACpF,QAAM,aAAa,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AACvF,QAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AAClF,QAAM,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AACnF,QAAM,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AACrF,QAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,eAAe;AAClF,aAAS,aAAa,MAAM;AACxB,UAAI,QAAQ,OAAO,SAAS;AACxB,gBAAQ,KAAK,YAAY;AAAA,UACrB,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,QACf;AACJ,aAAO;AAAA,IACX;AACA,aAAS,OAAO,MAAM;AAClB,UAAI,QAAQ,OAAO,SAAS;AACxB,gBAAQ,KAAK,YAAY;AAAA,UACrB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,QACf;AACJ,aAAO;AAAA,IACX;AACA,QAAM,YAAY,CAAC,UAAU,SAAS,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,CAAC,KAAK;AAE7E,YAAQ,QAAQ;AAChB,YAAQ,MAAM;AACd,YAAQ,MAAM;AACd,YAAQ,YAAY;AACpB,YAAQ,OAAO;AACf,YAAQ,SAAS;AACjB,YAAQ,MAAM;AACd,YAAQ,YAAY;AACpB,YAAQ,UAAU;AAClB,YAAQ,eAAe;AACvB,YAAQ,aAAa;AACrB,YAAQ,QAAQ;AAChB,YAAQ,SAAS;AACjB,YAAQ,SAAS;AACjB,YAAQ,WAAW;AACnB,YAAQ,QAAQ;AAAA;AAAA;;;ACpDhB;AAAA;AAAA;AAEA,QAAI,WAAW;AAEf,QAAM,QAAQ,OAAO,aAAa;AAClC,QAAM,OAAO,OAAO,eAAe;AACnC,QAAM,SAAS,OAAO,aAAa;AA+BnC,aAAS,MAAM,MAAM,SAAS;AAC1B,YAAM,WAAW,YAAY,OAAO;AACpC,UAAI,SAAS,WAAW,IAAI,GAAG;AAC3B,cAAM,KAAK,OAAO,MAAM,KAAK,UAAU,UAAU,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,YAAI,OAAO;AACP,eAAK,WAAW;AAAA,MACxB;AAEI,eAAO,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC,CAAC,CAAC;AAAA,IACtD;AAKA,UAAM,QAAQ;AAEd,UAAM,OAAO;AAEb,UAAM,SAAS;AACf,aAAS,OAAO,KAAK,MAAM,SAASE,OAAM;AACtC,YAAM,OAAO,YAAY,KAAK,MAAM,SAASA,KAAI;AACjD,UAAI,SAAS,OAAO,IAAI,KAAK,SAAS,OAAO,IAAI,GAAG;AAChD,oBAAY,KAAKA,OAAM,IAAI;AAC3B,eAAO,OAAO,KAAK,MAAM,SAASA,KAAI;AAAA,MAC1C;AACA,UAAI,OAAO,SAAS,UAAU;AAC1B,YAAI,SAAS,aAAa,IAAI,GAAG;AAC7B,UAAAA,QAAO,OAAO,OAAOA,MAAK,OAAO,IAAI,CAAC;AACtC,mBAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,EAAE,GAAG;AACxC,kBAAM,KAAK,OAAO,GAAG,KAAK,MAAM,IAAI,SAASA,KAAI;AACjD,gBAAI,OAAO,OAAO;AACd,kBAAI,KAAK;AAAA,qBACJ,OAAO;AACZ,qBAAO;AAAA,qBACF,OAAO,QAAQ;AACpB,mBAAK,MAAM,OAAO,GAAG,CAAC;AACtB,mBAAK;AAAA,YACT;AAAA,UACJ;AAAA,QACJ,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,UAAAA,QAAO,OAAO,OAAOA,MAAK,OAAO,IAAI,CAAC;AACtC,gBAAM,KAAK,OAAO,OAAO,KAAK,KAAK,SAASA,KAAI;AAChD,cAAI,OAAO;AACP,mBAAO;AAAA,mBACF,OAAO;AACZ,iBAAK,MAAM;AACf,gBAAM,KAAK,OAAO,SAAS,KAAK,OAAO,SAASA,KAAI;AACpD,cAAI,OAAO;AACP,mBAAO;AAAA,mBACF,OAAO;AACZ,iBAAK,QAAQ;AAAA,QACrB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAgCA,mBAAe,WAAW,MAAM,SAAS;AACrC,YAAM,WAAW,YAAY,OAAO;AACpC,UAAI,SAAS,WAAW,IAAI,GAAG;AAC3B,cAAM,KAAK,MAAM,YAAY,MAAM,KAAK,UAAU,UAAU,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACjF,YAAI,OAAO;AACP,eAAK,WAAW;AAAA,MACxB;AAEI,cAAM,YAAY,MAAM,MAAM,UAAU,OAAO,OAAO,CAAC,CAAC,CAAC;AAAA,IACjE;AAKA,eAAW,QAAQ;AAEnB,eAAW,OAAO;AAElB,eAAW,SAAS;AACpB,mBAAe,YAAY,KAAK,MAAM,SAASA,OAAM;AACjD,YAAM,OAAO,MAAM,YAAY,KAAK,MAAM,SAASA,KAAI;AACvD,UAAI,SAAS,OAAO,IAAI,KAAK,SAAS,OAAO,IAAI,GAAG;AAChD,oBAAY,KAAKA,OAAM,IAAI;AAC3B,eAAO,YAAY,KAAK,MAAM,SAASA,KAAI;AAAA,MAC/C;AACA,UAAI,OAAO,SAAS,UAAU;AAC1B,YAAI,SAAS,aAAa,IAAI,GAAG;AAC7B,UAAAA,QAAO,OAAO,OAAOA,MAAK,OAAO,IAAI,CAAC;AACtC,mBAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,EAAE,GAAG;AACxC,kBAAM,KAAK,MAAM,YAAY,GAAG,KAAK,MAAM,IAAI,SAASA,KAAI;AAC5D,gBAAI,OAAO,OAAO;AACd,kBAAI,KAAK;AAAA,qBACJ,OAAO;AACZ,qBAAO;AAAA,qBACF,OAAO,QAAQ;AACpB,mBAAK,MAAM,OAAO,GAAG,CAAC;AACtB,mBAAK;AAAA,YACT;AAAA,UACJ;AAAA,QACJ,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,UAAAA,QAAO,OAAO,OAAOA,MAAK,OAAO,IAAI,CAAC;AACtC,gBAAM,KAAK,MAAM,YAAY,OAAO,KAAK,KAAK,SAASA,KAAI;AAC3D,cAAI,OAAO;AACP,mBAAO;AAAA,mBACF,OAAO;AACZ,iBAAK,MAAM;AACf,gBAAM,KAAK,MAAM,YAAY,SAAS,KAAK,OAAO,SAASA,KAAI;AAC/D,cAAI,OAAO;AACP,mBAAO;AAAA,mBACF,OAAO;AACZ,iBAAK,QAAQ;AAAA,QACrB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,YAAY,SAAS;AAC1B,UAAI,OAAO,YAAY,aAClB,QAAQ,cAAc,QAAQ,QAAQ,QAAQ,QAAQ;AACvD,eAAO,OAAO,OAAO;AAAA,UACjB,OAAO,QAAQ;AAAA,UACf,KAAK,QAAQ;AAAA,UACb,QAAQ,QAAQ;AAAA,UAChB,KAAK,QAAQ;AAAA,QACjB,GAAG,QAAQ,SAAS;AAAA,UAChB,KAAK,QAAQ;AAAA,UACb,QAAQ,QAAQ;AAAA,UAChB,KAAK,QAAQ;AAAA,QACjB,GAAG,QAAQ,cAAc;AAAA,UACrB,KAAK,QAAQ;AAAA,UACb,KAAK,QAAQ;AAAA,QACjB,GAAG,OAAO;AAAA,MACd;AACA,aAAO;AAAA,IACX;AACA,aAAS,YAAY,KAAK,MAAM,SAASA,OAAM;AAvM/C,UAAAC,KAAAC,KAAAC,KAAA;AAwMI,UAAI,OAAO,YAAY;AACnB,eAAO,QAAQ,KAAK,MAAMH,KAAI;AAClC,UAAI,SAAS,MAAM,IAAI;AACnB,gBAAOC,MAAA,QAAQ,QAAR,gBAAAA,IAAA,cAAc,KAAK,MAAMD;AACpC,UAAI,SAAS,MAAM,IAAI;AACnB,gBAAOE,MAAA,QAAQ,QAAR,gBAAAA,IAAA,cAAc,KAAK,MAAMF;AACpC,UAAI,SAAS,OAAO,IAAI;AACpB,gBAAOG,MAAA,QAAQ,SAAR,gBAAAA,IAAA,cAAe,KAAK,MAAMH;AACrC,UAAI,SAAS,SAAS,IAAI;AACtB,gBAAO,aAAQ,WAAR,iCAAiB,KAAK,MAAMA;AACvC,UAAI,SAAS,QAAQ,IAAI;AACrB,gBAAO,aAAQ,UAAR,iCAAgB,KAAK,MAAMA;AACtC,aAAO;AAAA,IACX;AACA,aAAS,YAAY,KAAKA,OAAM,MAAM;AAClC,YAAM,SAASA,MAAKA,MAAK,SAAS;AAClC,UAAI,SAAS,aAAa,MAAM,GAAG;AAC/B,eAAO,MAAM,OAAO;AAAA,MACxB,WACS,SAAS,OAAO,MAAM,GAAG;AAC9B,YAAI,QAAQ;AACR,iBAAO,MAAM;AAAA;AAEb,iBAAO,QAAQ;AAAA,MACvB,WACS,SAAS,WAAW,MAAM,GAAG;AAClC,eAAO,WAAW;AAAA,MACtB,OACK;AACD,cAAM,KAAK,SAAS,QAAQ,MAAM,IAAI,UAAU;AAChD,cAAM,IAAI,MAAM,4BAA4B,WAAW;AAAA,MAC3D;AAAA,IACJ;AAEA,YAAQ,QAAQ;AAChB,YAAQ,aAAa;AAAA;AAAA;;;AC3OrB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,QAAQ;AAEZ,QAAM,cAAc;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AACA,QAAM,gBAAgB,CAAC,OAAO,GAAG,QAAQ,cAAc,QAAM,YAAY,GAAG;AAC5E,QAAM,aAAN,MAAiB;AAAA,MACb,YAAY,MAAM,MAAM;AAKpB,aAAK,WAAW;AAEhB,aAAK,SAAS;AACd,aAAK,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,aAAa,IAAI;AAC1D,aAAK,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,aAAa,IAAI;AAAA,MAC9D;AAAA,MACA,QAAQ;AACJ,cAAM,OAAO,IAAI,WAAW,KAAK,MAAM,KAAK,IAAI;AAChD,aAAK,WAAW,KAAK;AACrB,eAAO;AAAA,MACX;AAAA,MAKA,aAAa;AACT,cAAM,MAAM,IAAI,WAAW,KAAK,MAAM,KAAK,IAAI;AAC/C,gBAAQ,KAAK,KAAK,SAAS;AAAA,UACvB,KAAK;AACD,iBAAK,iBAAiB;AACtB;AAAA,UACJ,KAAK;AACD,iBAAK,iBAAiB;AACtB,iBAAK,OAAO;AAAA,cACR,UAAU,WAAW,YAAY;AAAA,cACjC,SAAS;AAAA,YACb;AACA,iBAAK,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,WAAW;AACpD;AAAA,QACR;AACA,eAAO;AAAA,MACX;AAAA,MAKA,IAAI,MAAM,SAAS;AACf,YAAI,KAAK,gBAAgB;AACrB,eAAK,OAAO,EAAE,UAAU,WAAW,YAAY,UAAU,SAAS,MAAM;AACxE,eAAK,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,WAAW;AACpD,eAAK,iBAAiB;AAAA,QAC1B;AACA,cAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,QAAQ;AACxC,cAAM,OAAO,MAAM,MAAM;AACzB,gBAAQ,MAAM;AAAA,UACV,KAAK,QAAQ;AACT,gBAAI,MAAM,WAAW,GAAG;AACpB,sBAAQ,GAAG,iDAAiD;AAC5D,kBAAI,MAAM,SAAS;AACf,uBAAO;AAAA,YACf;AACA,kBAAM,CAAC,QAAQ,MAAM,IAAI;AACzB,iBAAK,KAAK,UAAU;AACpB,mBAAO;AAAA,UACX;AAAA,UACA,KAAK,SAAS;AACV,iBAAK,KAAK,WAAW;AACrB,gBAAI,MAAM,WAAW,GAAG;AACpB,sBAAQ,GAAG,iDAAiD;AAC5D,qBAAO;AAAA,YACX;AACA,kBAAM,CAAC,OAAO,IAAI;AAClB,gBAAI,YAAY,SAAS,YAAY,OAAO;AACxC,mBAAK,KAAK,UAAU;AACpB,qBAAO;AAAA,YACX,OACK;AACD,oBAAM,UAAU,aAAa,KAAK,OAAO;AACzC,sBAAQ,GAAG,4BAA4B,WAAW,OAAO;AACzD,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,UACA;AACI,oBAAQ,GAAG,qBAAqB,QAAQ,IAAI;AAC5C,mBAAO;AAAA,QACf;AAAA,MACJ;AAAA,MAOA,QAAQ,QAAQ,SAAS;AACrB,YAAI,WAAW;AACX,iBAAO;AACX,YAAI,OAAO,OAAO,KAAK;AACnB,kBAAQ,oBAAoB,QAAQ;AACpC,iBAAO;AAAA,QACX;AACA,YAAI,OAAO,OAAO,KAAK;AACnB,gBAAM,WAAW,OAAO,MAAM,GAAG,EAAE;AACnC,cAAI,aAAa,OAAO,aAAa,MAAM;AACvC,oBAAQ,qCAAqC,oBAAoB;AACjE,mBAAO;AAAA,UACX;AACA,cAAI,OAAO,OAAO,SAAS,OAAO;AAC9B,oBAAQ,iCAAiC;AAC7C,iBAAO;AAAA,QACX;AACA,cAAM,CAAC,EAAE,QAAQ,MAAM,IAAI,OAAO,MAAM,iBAAiB;AACzD,YAAI,CAAC;AACD,kBAAQ,OAAO,0BAA0B;AAC7C,cAAM,SAAS,KAAK,KAAK;AACzB,YAAI,QAAQ;AACR,cAAI;AACA,mBAAO,SAAS,mBAAmB,MAAM;AAAA,UAC7C,SACO,OAAP;AACI,oBAAQ,OAAO,KAAK,CAAC;AACrB,mBAAO;AAAA,UACX;AAAA,QACJ;AACA,YAAI,WAAW;AACX,iBAAO;AACX,gBAAQ,0BAA0B,QAAQ;AAC1C,eAAO;AAAA,MACX;AAAA,MAKA,UAAU,KAAK;AACX,mBAAW,CAAC,QAAQ,MAAM,KAAK,OAAO,QAAQ,KAAK,IAAI,GAAG;AACtD,cAAI,IAAI,WAAW,MAAM;AACrB,mBAAO,SAAS,cAAc,IAAI,UAAU,OAAO,MAAM,CAAC;AAAA,QAClE;AACA,eAAO,IAAI,OAAO,MAAM,MAAM,KAAK;AAAA,MACvC;AAAA,MACA,SAAS,KAAK;AACV,cAAMI,SAAQ,KAAK,KAAK,WAClB,CAAC,SAAS,KAAK,KAAK,WAAW,OAAO,IACtC,CAAC;AACP,cAAM,aAAa,OAAO,QAAQ,KAAK,IAAI;AAC3C,YAAI;AACJ,YAAI,OAAO,WAAW,SAAS,KAAK,SAAS,OAAO,IAAI,QAAQ,GAAG;AAC/D,gBAAM,OAAO,CAAC;AACd,gBAAM,MAAM,IAAI,UAAU,CAAC,MAAM,SAAS;AACtC,gBAAI,SAAS,OAAO,IAAI,KAAK,KAAK;AAC9B,mBAAK,KAAK,OAAO;AAAA,UACzB,CAAC;AACD,qBAAW,OAAO,KAAK,IAAI;AAAA,QAC/B;AAEI,qBAAW,CAAC;AAChB,mBAAW,CAAC,QAAQ,MAAM,KAAK,YAAY;AACvC,cAAI,WAAW,QAAQ,WAAW;AAC9B;AACJ,cAAI,CAAC,OAAO,SAAS,KAAK,QAAM,GAAG,WAAW,MAAM,CAAC;AACjD,YAAAA,OAAM,KAAK,QAAQ,UAAU,QAAQ;AAAA,QAC7C;AACA,eAAOA,OAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,IACJ;AACA,eAAW,cAAc,EAAE,UAAU,OAAO,SAAS,MAAM;AAC3D,eAAW,cAAc,EAAE,MAAM,qBAAqB;AAEtD,YAAQ,aAAa;AAAA;AAAA;;;ACjLrB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,QAAQ;AAOZ,aAAS,cAAc,QAAQ;AAC3B,UAAI,sBAAsB,KAAK,MAAM,GAAG;AACpC,cAAM,KAAK,KAAK,UAAU,MAAM;AAChC,cAAM,MAAM,6DAA6D;AACzE,cAAM,IAAI,MAAM,GAAG;AAAA,MACvB;AACA,aAAO;AAAA,IACX;AACA,aAAS,YAAY,MAAM;AACvB,YAAM,UAAU,oBAAI,IAAI;AACxB,YAAM,MAAM,MAAM;AAAA,QACd,MAAM,MAAM,MAAM;AACd,cAAI,KAAK;AACL,oBAAQ,IAAI,KAAK,MAAM;AAAA,QAC/B;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AAEA,aAAS,cAAc,QAAQ,SAAS;AACpC,eAAS,IAAI,GAAG,MAAM,EAAE,GAAG;AACvB,cAAM,OAAO,GAAG,SAAS;AACzB,YAAI,CAAC,QAAQ,IAAI,IAAI;AACjB,iBAAO;AAAA,MACf;AAAA,IACJ;AACA,aAAS,kBAAkB,KAAK,QAAQ;AACpC,YAAM,eAAe,CAAC;AACtB,YAAM,gBAAgB,oBAAI,IAAI;AAC9B,UAAI,cAAc;AAClB,aAAO;AAAA,QACH,UAAU,CAAC,WAAW;AAClB,uBAAa,KAAK,MAAM;AACxB,cAAI,CAAC;AACD,0BAAc,YAAY,GAAG;AACjC,gBAAM,SAAS,cAAc,QAAQ,WAAW;AAChD,sBAAY,IAAI,MAAM;AACtB,iBAAO;AAAA,QACX;AAAA,QAMA,YAAY,MAAM;AACd,qBAAW,UAAU,cAAc;AAC/B,kBAAM,MAAM,cAAc,IAAI,MAAM;AACpC,gBAAI,OAAO,QAAQ,YACf,IAAI,WACH,SAAS,SAAS,IAAI,IAAI,KAAK,SAAS,aAAa,IAAI,IAAI,IAAI;AAClE,kBAAI,KAAK,SAAS,IAAI;AAAA,YAC1B,OACK;AACD,oBAAM,QAAQ,IAAI,MAAM,4DAA4D;AACpF,oBAAM,SAAS;AACf,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,gBAAgB;AACxB,YAAQ,cAAc;AACtB,YAAQ,oBAAoB;AAC5B,YAAQ,gBAAgB;AAAA;AAAA;;;AC5ExB;AAAA;AAAA;AASA,aAAS,aAAa,SAAS,KAAK,KAAK,KAAK;AAC1C,UAAI,OAAO,OAAO,QAAQ,UAAU;AAChC,YAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,mBAAS,IAAI,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,GAAG;AAC5C,kBAAM,KAAK,IAAI;AACf,kBAAM,KAAK,aAAa,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE;AAEnD,gBAAI,OAAO;AACP,qBAAO,IAAI;AAAA,qBACN,OAAO;AACZ,kBAAI,KAAK;AAAA,UACjB;AAAA,QACJ,WACS,eAAe,KAAK;AACzB,qBAAW,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,GAAG;AACpC,kBAAM,KAAK,IAAI,IAAI,CAAC;AACpB,kBAAM,KAAK,aAAa,SAAS,KAAK,GAAG,EAAE;AAC3C,gBAAI,OAAO;AACP,kBAAI,OAAO,CAAC;AAAA,qBACP,OAAO;AACZ,kBAAI,IAAI,GAAG,EAAE;AAAA,UACrB;AAAA,QACJ,WACS,eAAe,KAAK;AACzB,qBAAW,MAAM,MAAM,KAAK,GAAG,GAAG;AAC9B,kBAAM,KAAK,aAAa,SAAS,KAAK,IAAI,EAAE;AAC5C,gBAAI,OAAO;AACP,kBAAI,OAAO,EAAE;AAAA,qBACR,OAAO,IAAI;AAChB,kBAAI,OAAO,EAAE;AACb,kBAAI,IAAI,EAAE;AAAA,YACd;AAAA,UACJ;AAAA,QACJ,OACK;AACD,qBAAW,CAAC,GAAG,EAAE,KAAK,OAAO,QAAQ,GAAG,GAAG;AACvC,kBAAM,KAAK,aAAa,SAAS,KAAK,GAAG,EAAE;AAC3C,gBAAI,OAAO;AACP,qBAAO,IAAI;AAAA,qBACN,OAAO;AACZ,kBAAI,KAAK;AAAA,UACjB;AAAA,QACJ;AAAA,MACJ;AACA,aAAO,QAAQ,KAAK,KAAK,KAAK,GAAG;AAAA,IACrC;AAEA,YAAQ,eAAe;AAAA;AAAA;;;ACxDvB;AAAA;AAAA;AAEA,QAAI,WAAW;AAYf,aAAS,KAAK,OAAO,KAAK,KAAK;AAE3B,UAAI,MAAM,QAAQ,KAAK;AACnB,eAAO,MAAM,IAAI,CAAC,GAAG,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;AACtD,UAAI,SAAS,OAAO,MAAM,WAAW,YAAY;AAE7C,YAAI,CAAC,OAAO,CAAC,SAAS,UAAU,KAAK;AACjC,iBAAO,MAAM,OAAO,KAAK,GAAG;AAChC,cAAM,OAAO,EAAE,YAAY,GAAG,OAAO,GAAG,KAAK,OAAU;AACvD,YAAI,QAAQ,IAAI,OAAO,IAAI;AAC3B,YAAI,WAAW,CAAAC,SAAO;AAClB,eAAK,MAAMA;AACX,iBAAO,IAAI;AAAA,QACf;AACA,cAAM,MAAM,MAAM,OAAO,KAAK,GAAG;AACjC,YAAI,IAAI;AACJ,cAAI,SAAS,GAAG;AACpB,eAAO;AAAA,MACX;AACA,UAAI,OAAO,UAAU,YAAY,EAAC,2BAAK;AACnC,eAAO,OAAO,KAAK;AACvB,aAAO;AAAA,IACX;AAEA,YAAQ,OAAO;AAAA;AAAA;;;ACtCf;AAAA;AAAA;AAEA,QAAI,eAAe;AACnB,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,QAAM,WAAN,MAAe;AAAA,MACX,YAAY,MAAM;AACd,eAAO,eAAe,MAAM,SAAS,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,MACnE;AAAA,MAEA,QAAQ;AACJ,cAAM,OAAO,OAAO,OAAO,OAAO,eAAe,IAAI,GAAG,OAAO,0BAA0B,IAAI,CAAC;AAC9F,YAAI,KAAK;AACL,eAAK,QAAQ,KAAK,MAAM,MAAM;AAClC,eAAO;AAAA,MACX;AAAA,MAEA,KAAK,KAAK,EAAE,UAAU,eAAe,UAAU,QAAQ,IAAI,CAAC,GAAG;AAC3D,YAAI,CAAC,SAAS,WAAW,GAAG;AACxB,gBAAM,IAAI,UAAU,iCAAiC;AACzD,cAAM,MAAM;AAAA,UACR,SAAS,oBAAI,IAAI;AAAA,UACjB;AAAA,UACA,MAAM;AAAA,UACN,UAAU,aAAa;AAAA,UACvB,cAAc;AAAA,UACd,eAAe,OAAO,kBAAkB,WAAW,gBAAgB;AAAA,QACvE;AACA,cAAM,MAAM,KAAK,KAAK,MAAM,IAAI,GAAG;AACnC,YAAI,OAAO,aAAa;AACpB,qBAAW,EAAE,OAAO,KAAAC,KAAI,KAAK,IAAI,QAAQ,OAAO;AAC5C,qBAASA,MAAK,KAAK;AAC3B,eAAO,OAAO,YAAY,aACpB,aAAa,aAAa,SAAS,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,IACvD;AAAA,MACV;AAAA,IACJ;AAEA,YAAQ,WAAW;AAAA;AAAA;;;ACvCnB;AAAA;AAAA;AAEA,QAAI,UAAU;AACd,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,OAAO;AAEX,QAAM,QAAN,cAAoB,KAAK,SAAS;AAAA,MAC9B,YAAY,QAAQ;AAChB,cAAM,SAAS,KAAK;AACpB,aAAK,SAAS;AACd,eAAO,eAAe,MAAM,OAAO;AAAA,UAC/B,MAAM;AACF,kBAAM,IAAI,MAAM,8BAA8B;AAAA,UAClD;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAKA,QAAQ,KAAK;AACT,YAAI,QAAQ;AACZ,cAAM,MAAM,KAAK;AAAA,UACb,MAAM,CAAC,MAAM,SAAS;AAClB,gBAAI,SAAS;AACT,qBAAO,MAAM,MAAM;AACvB,gBAAI,KAAK,WAAW,KAAK;AACrB,sBAAQ;AAAA,UAChB;AAAA,QACJ,CAAC;AACD,eAAO;AAAA,MACX;AAAA,MACA,OAAO,MAAM,KAAK;AACd,YAAI,CAAC;AACD,iBAAO,EAAE,QAAQ,KAAK,OAAO;AACjC,cAAM,EAAE,SAAAC,UAAS,KAAK,cAAc,IAAI;AACxC,cAAM,SAAS,KAAK,QAAQ,GAAG;AAC/B,YAAI,CAAC,QAAQ;AACT,gBAAM,MAAM,+DAA+D,KAAK;AAChF,gBAAM,IAAI,eAAe,GAAG;AAAA,QAChC;AACA,YAAI,OAAOA,SAAQ,IAAI,MAAM;AAC7B,YAAI,CAAC,MAAM;AAEP,eAAK,KAAK,QAAQ,MAAM,GAAG;AAC3B,iBAAOA,SAAQ,IAAI,MAAM;AAAA,QAC7B;AAEA,YAAI,CAAC,QAAQ,KAAK,QAAQ,QAAW;AACjC,gBAAM,MAAM;AACZ,gBAAM,IAAI,eAAe,GAAG;AAAA,QAChC;AACA,YAAI,iBAAiB,GAAG;AACpB,eAAK,SAAS;AACd,cAAI,KAAK,eAAe;AACpB,iBAAK,aAAa,cAAc,KAAK,QAAQA,QAAO;AACxD,cAAI,KAAK,QAAQ,KAAK,aAAa,eAAe;AAC9C,kBAAM,MAAM;AACZ,kBAAM,IAAI,eAAe,GAAG;AAAA,UAChC;AAAA,QACJ;AACA,eAAO,KAAK;AAAA,MAChB;AAAA,MACA,SAAS,KAAK,YAAY,cAAc;AACpC,cAAM,MAAM,IAAI,KAAK;AACrB,YAAI,KAAK;AACL,kBAAQ,cAAc,KAAK,MAAM;AACjC,cAAI,IAAI,QAAQ,oBAAoB,CAAC,IAAI,QAAQ,IAAI,KAAK,MAAM,GAAG;AAC/D,kBAAM,MAAM,+DAA+D,KAAK;AAChF,kBAAM,IAAI,MAAM,GAAG;AAAA,UACvB;AACA,cAAI,IAAI;AACJ,mBAAO,GAAG;AAAA,QAClB;AACA,eAAO;AAAA,MACX;AAAA,IACJ;AACA,aAAS,cAAc,KAAK,MAAMA,UAAS;AACvC,UAAI,SAAS,QAAQ,IAAI,GAAG;AACxB,cAAM,SAAS,KAAK,QAAQ,GAAG;AAC/B,cAAM,SAASA,YAAW,UAAUA,SAAQ,IAAI,MAAM;AACtD,eAAO,SAAS,OAAO,QAAQ,OAAO,aAAa;AAAA,MACvD,WACS,SAAS,aAAa,IAAI,GAAG;AAClC,YAAI,QAAQ;AACZ,mBAAW,QAAQ,KAAK,OAAO;AAC3B,gBAAM,IAAI,cAAc,KAAK,MAAMA,QAAO;AAC1C,cAAI,IAAI;AACJ,oBAAQ;AAAA,QAChB;AACA,eAAO;AAAA,MACX,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,cAAM,KAAK,cAAc,KAAK,KAAK,KAAKA,QAAO;AAC/C,cAAM,KAAK,cAAc,KAAK,KAAK,OAAOA,QAAO;AACjD,eAAO,KAAK,IAAI,IAAI,EAAE;AAAA,MAC1B;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,QAAQ;AAAA;AAAA;;;ACtGhB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,OAAO;AAEX,QAAM,gBAAgB,CAAC,UAAU,CAAC,SAAU,OAAO,UAAU,cAAc,OAAO,UAAU;AAC5F,QAAM,SAAN,cAAqB,KAAK,SAAS;AAAA,MAC/B,YAAY,OAAO;AACf,cAAM,SAAS,MAAM;AACrB,aAAK,QAAQ;AAAA,MACjB;AAAA,MACA,OAAO,KAAK,KAAK;AACb,gBAAO,2BAAK,QAAO,KAAK,QAAQ,KAAK,KAAK,KAAK,OAAO,KAAK,GAAG;AAAA,MAClE;AAAA,MACA,WAAW;AACP,eAAO,OAAO,KAAK,KAAK;AAAA,MAC5B;AAAA,IACJ;AACA,WAAO,eAAe;AACtB,WAAO,gBAAgB;AACvB,WAAO,QAAQ;AACf,WAAO,eAAe;AACtB,WAAO,eAAe;AAEtB,YAAQ,SAAS;AACjB,YAAQ,gBAAgB;AAAA;AAAA;;;AC1BxB;AAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,SAAS;AAEb,QAAM,mBAAmB;AACzB,aAAS,cAAc,OAAO,SAAS,MAAM;AACzC,UAAI,SAAS;AACT,cAAMC,SAAQ,KAAK,OAAO,OAAK,EAAE,QAAQ,OAAO;AAChD,cAAM,SAASA,OAAM,KAAK,OAAK,CAAC,EAAE,MAAM,KAAKA,OAAM;AACnD,YAAI,CAAC;AACD,gBAAM,IAAI,MAAM,OAAO,mBAAmB;AAC9C,eAAO;AAAA,MACX;AACA,aAAO,KAAK,KAAK,OAAE;AAfvB,YAAAC;AAe0B,iBAAAA,MAAA,EAAE,aAAF,gBAAAA,IAAA,QAAa,WAAU,CAAC,EAAE;AAAA,OAAM;AAAA,IAC1D;AACA,aAAS,WAAW,OAAO,SAAS,KAAK;AAjBzC,UAAAA,KAAAC,KAAAC;AAkBI,UAAI,SAAS,WAAW,KAAK;AACzB,gBAAQ,MAAM;AAClB,UAAI,SAAS,OAAO,KAAK;AACrB,eAAO;AACX,UAAI,SAAS,OAAO,KAAK,GAAG;AACxB,cAAM,OAAMD,OAAAD,MAAA,IAAI,OAAO,SAAS,MAAK,eAAzB,gBAAAC,IAAA,KAAAD,KAAsC,IAAI,QAAQ,MAAM;AACpE,YAAI,MAAM,KAAK,KAAK;AACpB,eAAO;AAAA,MACX;AACA,UAAI,iBAAiB,UACjB,iBAAiB,UACjB,iBAAiB,WAChB,OAAO,WAAW,eAAe,iBAAiB,QACrD;AAEE,gBAAQ,MAAM,QAAQ;AAAA,MAC1B;AACA,YAAM,EAAE,uBAAuB,UAAU,UAAU,QAAQ,cAAc,IAAI;AAG7E,UAAI,MAAM;AACV,UAAI,yBAAyB,SAAS,OAAO,UAAU,UAAU;AAC7D,cAAM,cAAc,IAAI,KAAK;AAC7B,YAAI,KAAK;AACL,cAAI,CAAC,IAAI;AACL,gBAAI,SAAS,SAAS,KAAK;AAC/B,iBAAO,IAAI,MAAM,MAAM,IAAI,MAAM;AAAA,QACrC,OACK;AACD,gBAAM,EAAE,QAAQ,MAAM,MAAM,KAAK;AACjC,wBAAc,IAAI,OAAO,GAAG;AAAA,QAChC;AAAA,MACJ;AACA,UAAI,mCAAS,WAAW;AACpB,kBAAU,mBAAmB,QAAQ,MAAM,CAAC;AAChD,UAAI,SAAS,cAAc,OAAO,SAAS,OAAO,IAAI;AACtD,UAAI,CAAC,QAAQ;AACT,YAAI,SAAS,OAAO,MAAM,WAAW,YAAY;AAE7C,kBAAQ,MAAM,OAAO;AAAA,QACzB;AACA,YAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACrC,gBAAMG,QAAO,IAAI,OAAO,OAAO,KAAK;AACpC,cAAI;AACA,gBAAI,OAAOA;AACf,iBAAOA;AAAA,QACX;AACA,iBACI,iBAAiB,MACX,OAAO,SAAS,OAChB,OAAO,YAAY,OAAO,KAAK,IAC3B,OAAO,SAAS,OAChB,OAAO,SAAS;AAAA,MAClC;AACA,UAAI,UAAU;AACV,iBAAS,MAAM;AACf,eAAO,IAAI;AAAA,MACf;AACA,YAAM,QAAO,iCAAQ,cACf,OAAO,WAAW,IAAI,QAAQ,OAAO,GAAG,IACxC,SAAOD,MAAA,iCAAQ,cAAR,gBAAAA,IAAmB,UAAS,aAC/B,OAAO,UAAU,KAAK,IAAI,QAAQ,OAAO,GAAG,IAC5C,IAAI,OAAO,OAAO,KAAK;AACjC,UAAI;AACA,aAAK,MAAM;AAAA,eACN,CAAC,OAAO;AACb,aAAK,MAAM,OAAO;AACtB,UAAI;AACA,YAAI,OAAO;AACf,aAAO;AAAA,IACX;AAEA,YAAQ,aAAa;AAAA;AAAA;;;AC1FrB;AAAA;AAAA;AAEA,QAAI,aAAa;AACjB,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,aAAS,mBAAmB,QAAQE,OAAM,OAAO;AAC7C,UAAI,IAAI;AACR,eAAS,IAAIA,MAAK,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AACvC,cAAM,IAAIA,MAAK;AACf,YAAI,OAAO,MAAM,YAAY,OAAO,UAAU,CAAC,KAAK,KAAK,GAAG;AACxD,gBAAM,IAAI,CAAC;AACX,YAAE,KAAK;AACP,cAAI;AAAA,QACR,OACK;AACD,cAAI,oBAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,QACxB;AAAA,MACJ;AACA,aAAO,WAAW,WAAW,GAAG,QAAW;AAAA,QACvC,uBAAuB;AAAA,QACvB,eAAe;AAAA,QACf,UAAU,MAAM;AACZ,gBAAM,IAAI,MAAM,8CAA8C;AAAA,QAClE;AAAA,QACA;AAAA,QACA,eAAe,oBAAI,IAAI;AAAA,MAC3B,CAAC;AAAA,IACL;AAGA,QAAM,cAAc,CAACA,UAASA,SAAQ,QACjC,OAAOA,UAAS,YAAY,CAAC,CAACA,MAAK,OAAO,UAAU,EAAE,KAAK,EAAE;AAClE,QAAM,aAAN,cAAyB,KAAK,SAAS;AAAA,MACnC,YAAY,MAAM,QAAQ;AACtB,cAAM,IAAI;AACV,eAAO,eAAe,MAAM,UAAU;AAAA,UAClC,OAAO;AAAA,UACP,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,UAAU;AAAA,QACd,CAAC;AAAA,MACL;AAAA,MAMA,MAAM,QAAQ;AACV,cAAM,OAAO,OAAO,OAAO,OAAO,eAAe,IAAI,GAAG,OAAO,0BAA0B,IAAI,CAAC;AAC9F,YAAI;AACA,eAAK,SAAS;AAClB,aAAK,QAAQ,KAAK,MAAM,IAAI,QAAM,SAAS,OAAO,EAAE,KAAK,SAAS,OAAO,EAAE,IAAI,GAAG,MAAM,MAAM,IAAI,EAAE;AACpG,YAAI,KAAK;AACL,eAAK,QAAQ,KAAK,MAAM,MAAM;AAClC,eAAO;AAAA,MACX;AAAA,MAMA,MAAMA,OAAM,OAAO;AACf,YAAI,YAAYA,KAAI;AAChB,eAAK,IAAI,KAAK;AAAA,aACb;AACD,gBAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,gBAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,cAAI,SAAS,aAAa,IAAI;AAC1B,iBAAK,MAAM,MAAM,KAAK;AAAA,mBACjB,SAAS,UAAa,KAAK;AAChC,iBAAK,IAAI,KAAK,mBAAmB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA;AAE1D,kBAAM,IAAI,MAAM,+BAA+B,wBAAwB,MAAM;AAAA,QACrF;AAAA,MACJ;AAAA,MAKA,SAASA,OAAM;AACX,cAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,YAAI,KAAK,WAAW;AAChB,iBAAO,KAAK,OAAO,GAAG;AAC1B,cAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,YAAI,SAAS,aAAa,IAAI;AAC1B,iBAAO,KAAK,SAAS,IAAI;AAAA;AAEzB,gBAAM,IAAI,MAAM,+BAA+B,wBAAwB,MAAM;AAAA,MACrF;AAAA,MAMA,MAAMA,OAAM,YAAY;AACpB,cAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,cAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,YAAI,KAAK,WAAW;AAChB,iBAAO,CAAC,cAAc,SAAS,SAAS,IAAI,IAAI,KAAK,QAAQ;AAAA;AAE7D,iBAAO,SAAS,aAAa,IAAI,IAAI,KAAK,MAAM,MAAM,UAAU,IAAI;AAAA,MAC5E;AAAA,MACA,iBAAiB,aAAa;AAC1B,eAAO,KAAK,MAAM,MAAM,UAAQ;AAC5B,cAAI,CAAC,SAAS,OAAO,IAAI;AACrB,mBAAO;AACX,gBAAM,IAAI,KAAK;AACf,iBAAQ,KAAK,QACR,eACG,SAAS,SAAS,CAAC,KACnB,EAAE,SAAS,QACX,CAAC,EAAE,iBACH,CAAC,EAAE,WACH,CAAC,EAAE;AAAA,QACf,CAAC;AAAA,MACL;AAAA,MAIA,MAAMA,OAAM;AACR,cAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,YAAI,KAAK,WAAW;AAChB,iBAAO,KAAK,IAAI,GAAG;AACvB,cAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,eAAO,SAAS,aAAa,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI;AAAA,MAC5D;AAAA,MAKA,MAAMA,OAAM,OAAO;AACf,cAAM,CAAC,QAAQ,IAAI,IAAIA;AACvB,YAAI,KAAK,WAAW,GAAG;AACnB,eAAK,IAAI,KAAK,KAAK;AAAA,QACvB,OACK;AACD,gBAAM,OAAO,KAAK,IAAI,KAAK,IAAI;AAC/B,cAAI,SAAS,aAAa,IAAI;AAC1B,iBAAK,MAAM,MAAM,KAAK;AAAA,mBACjB,SAAS,UAAa,KAAK;AAChC,iBAAK,IAAI,KAAK,mBAAmB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA;AAE1D,kBAAM,IAAI,MAAM,+BAA+B,wBAAwB,MAAM;AAAA,QACrF;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,aAAa;AACrB,YAAQ,qBAAqB;AAC7B,YAAQ,cAAc;AAAA;AAAA;;;ACtJtB;AAAA;AAAA;AASA,QAAM,mBAAmB,CAAC,QAAQ,IAAI,QAAQ,mBAAmB,GAAG;AACpE,aAAS,cAAc,SAAS,QAAQ;AACpC,UAAI,QAAQ,KAAK,OAAO;AACpB,eAAO,QAAQ,UAAU,CAAC;AAC9B,aAAO,SAAS,QAAQ,QAAQ,cAAc,MAAM,IAAI;AAAA,IAC5D;AACA,QAAM,cAAc,CAAC,KAAK,QAAQ,YAAY,IAAI,SAAS,IAAI,IACzD,cAAc,SAAS,MAAM,IAC7B,QAAQ,SAAS,IAAI,IACjB,OAAO,cAAc,SAAS,MAAM,KACnC,IAAI,SAAS,GAAG,IAAI,KAAK,OAAO;AAE3C,YAAQ,gBAAgB;AACxB,YAAQ,cAAc;AACtB,YAAQ,mBAAmB;AAAA;AAAA;;;ACvB3B;AAAA;AAAA;AAEA,QAAM,YAAY;AAClB,QAAM,aAAa;AACnB,QAAM,cAAc;AAMpB,aAAS,cAAc,MAAM,QAAQ,OAAO,QAAQ,EAAE,eAAe,YAAY,IAAI,kBAAkB,IAAI,QAAQ,WAAW,IAAI,CAAC,GAAG;AAClI,UAAI,CAAC,aAAa,YAAY;AAC1B,eAAO;AACX,UAAI,YAAY;AACZ,0BAAkB;AACtB,YAAM,UAAU,KAAK,IAAI,IAAI,iBAAiB,IAAI,YAAY,OAAO,MAAM;AAC3E,UAAI,KAAK,UAAU;AACf,eAAO;AACX,YAAM,QAAQ,CAAC;AACf,YAAM,eAAe,CAAC;AACtB,UAAI,MAAM,YAAY,OAAO;AAC7B,UAAI,OAAO,kBAAkB,UAAU;AACnC,YAAI,gBAAgB,YAAY,KAAK,IAAI,GAAG,eAAe;AACvD,gBAAM,KAAK,CAAC;AAAA;AAEZ,gBAAM,YAAY;AAAA,MAC1B;AACA,UAAIC,SAAQ;AACZ,UAAI,OAAO;AACX,UAAI,WAAW;AACf,UAAI,IAAI;AACR,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS,YAAY;AACrB,YAAI,yBAAyB,MAAM,GAAG,OAAO,MAAM;AACnD,YAAI,MAAM;AACN,gBAAM,IAAI;AAAA,MAClB;AACA,eAAS,IAAK,KAAK,KAAM,KAAK,MAAO;AACjC,YAAI,SAAS,eAAe,OAAO,MAAM;AACrC,qBAAW;AACX,kBAAQ,KAAK,IAAI,IAAI;AAAA,YACjB,KAAK;AACD,mBAAK;AACL;AAAA,YACJ,KAAK;AACD,mBAAK;AACL;AAAA,YACJ,KAAK;AACD,mBAAK;AACL;AAAA,YACJ;AACI,mBAAK;AAAA,UACb;AACA,mBAAS;AAAA,QACb;AACA,YAAI,OAAO,MAAM;AACb,cAAI,SAAS;AACT,gBAAI,yBAAyB,MAAM,GAAG,OAAO,MAAM;AACvD,gBAAM,IAAI,OAAO,SAAS;AAC1B,UAAAA,SAAQ;AAAA,QACZ,OACK;AACD,cAAI,OAAO,OACP,QACA,SAAS,OACT,SAAS,QACT,SAAS,KAAM;AAEf,kBAAM,OAAO,KAAK,IAAI;AACtB,gBAAI,QAAQ,SAAS,OAAO,SAAS,QAAQ,SAAS;AAClD,cAAAA,SAAQ;AAAA,UAChB;AACA,cAAI,KAAK,KAAK;AACV,gBAAIA,QAAO;AACP,oBAAM,KAAKA,MAAK;AAChB,oBAAMA,SAAQ;AACd,cAAAA,SAAQ;AAAA,YACZ,WACS,SAAS,aAAa;AAE3B,qBAAO,SAAS,OAAO,SAAS,KAAM;AAClC,uBAAO;AACP,qBAAK,KAAM,KAAK;AAChB,2BAAW;AAAA,cACf;AAEA,oBAAM,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,WAAW;AAE9C,kBAAI,aAAa;AACb,uBAAO;AACX,oBAAM,KAAK,CAAC;AACZ,2BAAa,KAAK;AAClB,oBAAM,IAAI;AACV,cAAAA,SAAQ;AAAA,YACZ,OACK;AACD,yBAAW;AAAA,YACf;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AACA,UAAI,YAAY;AACZ,mBAAW;AACf,UAAI,MAAM,WAAW;AACjB,eAAO;AACX,UAAI;AACA,eAAO;AACX,UAAI,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE;AAChC,eAASC,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACnC,cAAM,OAAO,MAAMA;AACnB,cAAMC,OAAM,MAAMD,KAAI,MAAM,KAAK;AACjC,YAAI,SAAS;AACT,gBAAM;AAAA,EAAK,SAAS,KAAK,MAAM,GAAGC,IAAG;AAAA,aACpC;AACD,cAAI,SAAS,eAAe,aAAa;AACrC,mBAAO,GAAG,KAAK;AACnB,iBAAO;AAAA,EAAK,SAAS,KAAK,MAAM,OAAO,GAAGA,IAAG;AAAA,QACjD;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAKA,aAAS,yBAAyB,MAAM,GAAG,QAAQ;AAC/C,UAAI,MAAM;AACV,UAAI,QAAQ,IAAI;AAChB,UAAI,KAAK,KAAK;AACd,aAAO,OAAO,OAAO,OAAO,KAAM;AAC9B,YAAI,IAAI,QAAQ,QAAQ;AACpB,eAAK,KAAK,EAAE;AAAA,QAChB,OACK;AACD,aAAG;AACC,iBAAK,KAAK,EAAE;AAAA,UAChB,SAAS,MAAM,OAAO;AACtB,gBAAM;AACN,kBAAQ,IAAI;AACZ,eAAK,KAAK;AAAA,QACd;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,aAAa;AACrB,YAAQ,YAAY;AACpB,YAAQ,cAAc;AACtB,YAAQ,gBAAgB;AAAA;AAAA;;;ACtJxB;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,gBAAgB;AAEpB,QAAM,iBAAiB,CAAC,KAAK,aAAa;AAAA,MACtC,eAAe,UAAU,IAAI,OAAO,SAAS,IAAI;AAAA,MACjD,WAAW,IAAI,QAAQ;AAAA,MACvB,iBAAiB,IAAI,QAAQ;AAAA,IACjC;AAGA,QAAM,yBAAyB,CAAC,QAAQ,mBAAmB,KAAK,GAAG;AACnE,aAAS,oBAAoB,KAAK,WAAW,cAAc;AACvD,UAAI,CAAC,aAAa,YAAY;AAC1B,eAAO;AACX,YAAM,QAAQ,YAAY;AAC1B,YAAM,SAAS,IAAI;AACnB,UAAI,UAAU;AACV,eAAO;AACX,eAAS,IAAI,GAAG,QAAQ,GAAG,IAAI,QAAQ,EAAE,GAAG;AACxC,YAAI,IAAI,OAAO,MAAM;AACjB,cAAI,IAAI,QAAQ;AACZ,mBAAO;AACX,kBAAQ,IAAI;AACZ,cAAI,SAAS,SAAS;AAClB,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,mBAAmB,OAAO,KAAK;AACpC,YAAM,OAAO,KAAK,UAAU,KAAK;AACjC,UAAI,IAAI,QAAQ;AACZ,eAAO;AACX,YAAM,EAAE,YAAY,IAAI;AACxB,YAAM,qBAAqB,IAAI,QAAQ;AACvC,YAAM,SAAS,IAAI,WAAW,uBAAuB,KAAK,IAAI,OAAO;AACrE,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,eAAS,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI;AAC9C,YAAI,OAAO,OAAO,KAAK,IAAI,OAAO,QAAQ,KAAK,IAAI,OAAO,KAAK;AAE3D,iBAAO,KAAK,MAAM,OAAO,CAAC,IAAI;AAC9B,eAAK;AACL,kBAAQ;AACR,eAAK;AAAA,QACT;AACA,YAAI,OAAO;AACP,kBAAQ,KAAK,IAAI,IAAI;AAAA,YACjB,KAAK;AACD;AACI,uBAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,sBAAM,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC;AACjC,wBAAQ,MAAM;AAAA,kBACV,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ,KAAK;AACD,2BAAO;AACP;AAAA,kBACJ;AACI,wBAAI,KAAK,OAAO,GAAG,CAAC,MAAM;AACtB,6BAAO,QAAQ,KAAK,OAAO,CAAC;AAAA;AAE5B,6BAAO,KAAK,OAAO,GAAG,CAAC;AAAA,gBACnC;AACA,qBAAK;AACL,wBAAQ,IAAI;AAAA,cAChB;AACA;AAAA,YACJ,KAAK;AACD,kBAAI,eACA,KAAK,IAAI,OAAO,OAChB,KAAK,SAAS,oBAAoB;AAClC,qBAAK;AAAA,cACT,OACK;AAED,uBAAO,KAAK,MAAM,OAAO,CAAC,IAAI;AAC9B,uBAAO,KAAK,IAAI,OAAO,QACnB,KAAK,IAAI,OAAO,OAChB,KAAK,IAAI,OAAO,KAAK;AACrB,yBAAO;AACP,uBAAK;AAAA,gBACT;AACA,uBAAO;AAEP,oBAAI,KAAK,IAAI,OAAO;AAChB,yBAAO;AACX,qBAAK;AACL,wBAAQ,IAAI;AAAA,cAChB;AACA;AAAA,YACJ;AACI,mBAAK;AAAA,UACb;AAAA,MACR;AACA,YAAM,QAAQ,MAAM,KAAK,MAAM,KAAK,IAAI;AACxC,aAAO,cACD,MACA,cAAc,cAAc,KAAK,QAAQ,cAAc,aAAa,eAAe,KAAK,KAAK,CAAC;AAAA,IACxG;AACA,aAAS,mBAAmB,OAAO,KAAK;AACpC,UAAI,IAAI,QAAQ,gBAAgB,SAC3B,IAAI,eAAe,MAAM,SAAS,IAAI,KACvC,kBAAkB,KAAK,KAAK;AAE5B,eAAO,mBAAmB,OAAO,GAAG;AACxC,YAAM,SAAS,IAAI,WAAW,uBAAuB,KAAK,IAAI,OAAO;AACrE,YAAM,MAAM,MAAM,MAAM,QAAQ,MAAM,IAAI,EAAE,QAAQ,QAAQ;AAAA,EAAO,QAAQ,IAAI;AAC/E,aAAO,IAAI,cACL,MACA,cAAc,cAAc,KAAK,QAAQ,cAAc,WAAW,eAAe,KAAK,KAAK,CAAC;AAAA,IACtG;AACA,aAAS,aAAa,OAAO,KAAK;AAC9B,YAAM,EAAE,YAAY,IAAI,IAAI;AAC5B,UAAI;AACJ,UAAI,gBAAgB;AAChB,aAAK;AAAA,WACJ;AACD,cAAM,YAAY,MAAM,SAAS,GAAG;AACpC,cAAM,YAAY,MAAM,SAAS,GAAG;AACpC,YAAI,aAAa,CAAC;AACd,eAAK;AAAA,iBACA,aAAa,CAAC;AACnB,eAAK;AAAA;AAEL,eAAK,cAAc,qBAAqB;AAAA,MAChD;AACA,aAAO,GAAG,OAAO,GAAG;AAAA,IACxB;AAGA,QAAI;AACJ,QAAI;AACA,yBAAmB,IAAI,OAAO,0BAA0B,GAAG;AAAA,IAC/D,QACA;AACI,yBAAmB;AAAA,IACvB;AACA,aAAS,YAAY,EAAE,SAAS,MAAM,MAAM,GAAG,KAAK,WAAW,aAAa;AACxE,YAAM,EAAE,YAAY,eAAe,UAAU,IAAI,IAAI;AAGrD,UAAI,CAAC,cAAc,YAAY,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,GAAG;AAC/D,eAAO,aAAa,OAAO,GAAG;AAAA,MAClC;AACA,YAAM,SAAS,IAAI,WACd,IAAI,oBAAoB,uBAAuB,KAAK,IAAI,OAAO;AACpE,YAAM,UAAU,eAAe,YACzB,OACA,eAAe,YAAY,SAAS,OAAO,OAAO,eAC9C,QACA,SAAS,OAAO,OAAO,gBACnB,OACA,CAAC,oBAAoB,OAAO,WAAW,OAAO,MAAM;AAClE,UAAI,CAAC;AACD,eAAO,UAAU,QAAQ;AAE7B,UAAI;AACJ,UAAI;AACJ,WAAK,WAAW,MAAM,QAAQ,WAAW,GAAG,EAAE,UAAU;AACpD,cAAM,KAAK,MAAM,WAAW;AAC5B,YAAI,OAAO,QAAQ,OAAO,OAAQ,OAAO;AACrC;AAAA,MACR;AACA,UAAI,MAAM,MAAM,UAAU,QAAQ;AAClC,YAAM,WAAW,IAAI,QAAQ,IAAI;AACjC,UAAI,aAAa,IAAI;AACjB,gBAAQ;AAAA,MACZ,WACS,UAAU,OAAO,aAAa,IAAI,SAAS,GAAG;AACnD,gBAAQ;AACR,YAAI;AACA,sBAAY;AAAA,MACpB,OACK;AACD,gBAAQ;AAAA,MACZ;AACA,UAAI,KAAK;AACL,gBAAQ,MAAM,MAAM,GAAG,CAAC,IAAI,MAAM;AAClC,YAAI,IAAI,IAAI,SAAS,OAAO;AACxB,gBAAM,IAAI,MAAM,GAAG,EAAE;AACzB,cAAM,IAAI,QAAQ,kBAAkB,KAAK,QAAQ;AAAA,MACrD;AAEA,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,aAAa;AACjB,WAAK,WAAW,GAAG,WAAW,MAAM,QAAQ,EAAE,UAAU;AACpD,cAAM,KAAK,MAAM;AACjB,YAAI,OAAO;AACP,2BAAiB;AAAA,iBACZ,OAAO;AACZ,uBAAa;AAAA;AAEb;AAAA,MACR;AACA,UAAI,QAAQ,MAAM,UAAU,GAAG,aAAa,WAAW,aAAa,IAAI,QAAQ;AAChF,UAAI,OAAO;AACP,gBAAQ,MAAM,UAAU,MAAM,MAAM;AACpC,gBAAQ,MAAM,QAAQ,QAAQ,KAAK,QAAQ;AAAA,MAC/C;AACA,YAAM,aAAa,SAAS,MAAM;AAElC,UAAI,UAAU,iBAAiB,aAAa,MAAM;AAClD,UAAI,SAAS;AACT,kBAAU,MAAM,cAAc,QAAQ,QAAQ,cAAc,GAAG,CAAC;AAChE,YAAI;AACA,oBAAU;AAAA,MAClB;AACA,UAAI,CAAC,SAAS;AACV,cAAM,cAAc,MACf,QAAQ,QAAQ,MAAM,EACtB,QAAQ,kDAAkD,MAAM,EAEhE,QAAQ,QAAQ,KAAK,QAAQ;AAClC,YAAI,kBAAkB;AACtB,cAAM,cAAc,eAAe,KAAK,IAAI;AAC5C,YAAI,eAAe,YAAY,SAAS,OAAO,OAAO,cAAc;AAChE,sBAAY,aAAa,MAAM;AAC3B,8BAAkB;AAAA,UACtB;AAAA,QACJ;AACA,cAAM,OAAO,cAAc,cAAc,GAAG,QAAQ,cAAc,OAAO,QAAQ,cAAc,YAAY,WAAW;AACtH,YAAI,CAAC;AACD,iBAAO,IAAI;AAAA,EAAW,SAAS;AAAA,MACvC;AACA,cAAQ,MAAM,QAAQ,QAAQ,KAAK,QAAQ;AAC3C,aAAO,IAAI;AAAA,EAAW,SAAS,QAAQ,QAAQ;AAAA,IACnD;AACA,aAAS,YAAY,MAAM,KAAK,WAAW,aAAa;AACpD,YAAM,EAAE,MAAM,MAAM,IAAI;AACxB,YAAM,EAAE,cAAc,aAAa,QAAQ,YAAY,OAAO,IAAI;AAClE,UAAK,eAAe,MAAM,SAAS,IAAI,KAClC,UAAU,WAAW,KAAK,KAAK,GAAI;AACpC,eAAO,aAAa,OAAO,GAAG;AAAA,MAClC;AACA,UAAI,CAAC,SACD,oFAAoF,KAAK,KAAK,GAAG;AAOjG,eAAO,eAAe,UAAU,CAAC,MAAM,SAAS,IAAI,IAC9C,aAAa,OAAO,GAAG,IACvB,YAAY,MAAM,KAAK,WAAW,WAAW;AAAA,MACvD;AACA,UAAI,CAAC,eACD,CAAC,UACD,SAAS,OAAO,OAAO,SACvB,MAAM,SAAS,IAAI,GAAG;AAEtB,eAAO,YAAY,MAAM,KAAK,WAAW,WAAW;AAAA,MACxD;AACA,UAAI,uBAAuB,KAAK,GAAG;AAC/B,YAAI,WAAW,IAAI;AACf,cAAI,mBAAmB;AACvB,iBAAO,YAAY,MAAM,KAAK,WAAW,WAAW;AAAA,QACxD,WACS,eAAe,WAAW,YAAY;AAC3C,iBAAO,aAAa,OAAO,GAAG;AAAA,QAClC;AAAA,MACJ;AACA,YAAM,MAAM,MAAM,QAAQ,QAAQ;AAAA,EAAO,QAAQ;AAIjD,UAAI,cAAc;AACd,cAAM,OAAO,CAAC,QAAK;AAlS3B,cAAAC;AAkS8B,qBAAI,WAAW,IAAI,QAAQ,6BAA2BA,MAAA,IAAI,SAAJ,gBAAAA,IAAU,KAAK;AAAA;AAC3F,cAAM,EAAE,QAAQ,KAAK,IAAI,IAAI,IAAI;AACjC,YAAI,KAAK,KAAK,IAAI,MAAK,iCAAQ,KAAK;AAChC,iBAAO,aAAa,OAAO,GAAG;AAAA,MACtC;AACA,aAAO,cACD,MACA,cAAc,cAAc,KAAK,QAAQ,cAAc,WAAW,eAAe,KAAK,KAAK,CAAC;AAAA,IACtG;AACA,aAAS,gBAAgB,MAAM,KAAK,WAAW,aAAa;AACxD,YAAM,EAAE,aAAa,OAAO,IAAI;AAChC,YAAM,KAAK,OAAO,KAAK,UAAU,WAC3B,OACA,OAAO,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,OAAO,KAAK,KAAK,EAAE,CAAC;AAC3D,UAAI,EAAE,KAAK,IAAI;AACf,UAAI,SAAS,OAAO,OAAO,cAAc;AAErC,YAAI,kDAAkD,KAAK,GAAG,KAAK;AAC/D,iBAAO,OAAO,OAAO;AAAA,MAC7B;AACA,YAAM,aAAa,CAAC,UAAU;AAC1B,gBAAQ,OAAO;AAAA,UACX,KAAK,OAAO,OAAO;AAAA,UACnB,KAAK,OAAO,OAAO;AACf,mBAAO,eAAe,SAChB,aAAa,GAAG,OAAO,GAAG,IAC1B,YAAY,IAAI,KAAK,WAAW,WAAW;AAAA,UACrD,KAAK,OAAO,OAAO;AACf,mBAAO,mBAAmB,GAAG,OAAO,GAAG;AAAA,UAC3C,KAAK,OAAO,OAAO;AACf,mBAAO,mBAAmB,GAAG,OAAO,GAAG;AAAA,UAC3C,KAAK,OAAO,OAAO;AACf,mBAAO,YAAY,IAAI,KAAK,WAAW,WAAW;AAAA,UACtD;AACI,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,UAAI,MAAM,WAAW,IAAI;AACzB,UAAI,QAAQ,MAAM;AACd,cAAM,EAAE,gBAAgB,kBAAkB,IAAI,IAAI;AAClD,cAAM,IAAK,eAAe,kBAAmB;AAC7C,cAAM,WAAW,CAAC;AAClB,YAAI,QAAQ;AACR,gBAAM,IAAI,MAAM,mCAAmC,GAAG;AAAA,MAC9D;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;AClV1B,IAAAC,qBAAA;AAAA;AAAA;AAEA,QAAI,UAAU;AACd,QAAI,WAAW;AACf,QAAI,mBAAmB;AACvB,QAAI,kBAAkB;AAEtB,aAAS,uBAAuB,KAAK,SAAS;AAC1C,YAAM,MAAM,OAAO,OAAO;AAAA,QACtB,YAAY;AAAA,QACZ,eAAe,iBAAiB;AAAA,QAChC,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,YAAY;AAAA,QACZ,oBAAoB;AAAA,QACpB,gCAAgC;AAAA,QAChC,UAAU;AAAA,QACV,uBAAuB;AAAA,QACvB,WAAW;AAAA,QACX,WAAW;AAAA,QACX,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,SAAS;AAAA,QACT,kBAAkB;AAAA,MACtB,GAAG,IAAI,OAAO,iBAAiB,OAAO;AACtC,UAAI;AACJ,cAAQ,IAAI,iBAAiB;AAAA,QACzB,KAAK;AACD,mBAAS;AACT;AAAA,QACJ,KAAK;AACD,mBAAS;AACT;AAAA,QACJ;AACI,mBAAS;AAAA,MACjB;AACA,aAAO;AAAA,QACH,SAAS,oBAAI,IAAI;AAAA,QACjB;AAAA,QACA,uBAAuB,IAAI,wBAAwB,MAAM;AAAA,QACzD,QAAQ;AAAA,QACR,YAAY,OAAO,IAAI,WAAW,WAAW,IAAI,OAAO,IAAI,MAAM,IAAI;AAAA,QACtE;AAAA,QACA,SAAS;AAAA,MACb;AAAA,IACJ;AACA,aAAS,aAAa,MAAM,MAAM;AAhDlC,UAAAC;AAiDI,UAAI,KAAK,KAAK;AACV,cAAMC,SAAQ,KAAK,OAAO,OAAK,EAAE,QAAQ,KAAK,GAAG;AACjD,YAAIA,OAAM,SAAS;AACf,iBAAOA,OAAM,KAAK,OAAK,EAAE,WAAW,KAAK,MAAM,KAAKA,OAAM;AAAA,MAClE;AACA,UAAI,SAAS;AACb,UAAI;AACJ,UAAI,SAAS,SAAS,IAAI,GAAG;AACzB,cAAM,KAAK;AACX,YAAIA,SAAQ,KAAK,OAAO,OAAE;AA1DlC,cAAAD;AA0DqC,kBAAAA,MAAA,EAAE,aAAF,gBAAAA,IAAA,QAAa;AAAA,SAAI;AAC9C,YAAIC,OAAM,SAAS,GAAG;AAClB,gBAAM,YAAYA,OAAM,OAAO,OAAK,EAAE,IAAI;AAC1C,cAAI,UAAU,SAAS;AACnB,YAAAA,SAAQ;AAAA,QAChB;AACA,iBACIA,OAAM,KAAK,OAAK,EAAE,WAAW,KAAK,MAAM,KAAKA,OAAM,KAAK,OAAK,CAAC,EAAE,MAAM;AAAA,MAC9E,OACK;AACD,cAAM;AACN,iBAAS,KAAK,KAAK,OAAK,EAAE,aAAa,eAAe,EAAE,SAAS;AAAA,MACrE;AACA,UAAI,CAAC,QAAQ;AACT,cAAM,SAAOD,MAAA,2BAAK,gBAAL,gBAAAA,IAAkB,SAAQ,OAAO;AAC9C,cAAM,IAAI,MAAM,wBAAwB,YAAY;AAAA,MACxD;AACA,aAAO;AAAA,IACX;AAEA,aAAS,eAAe,MAAM,QAAQ,EAAE,SAAS,WAAW,IAAI,GAAG;AAC/D,UAAI,CAAC,IAAI;AACL,eAAO;AACX,YAAM,QAAQ,CAAC;AACf,YAAM,UAAU,SAAS,SAAS,IAAI,KAAK,SAAS,aAAa,IAAI,MAAM,KAAK;AAChF,UAAI,UAAU,QAAQ,cAAc,MAAM,GAAG;AACzC,kBAAU,IAAI,MAAM;AACpB,cAAM,KAAK,IAAI,QAAQ;AAAA,MAC3B;AACA,YAAM,MAAM,KAAK,MAAM,KAAK,MAAM,OAAO,UAAU,OAAO,OAAO;AACjE,UAAI;AACA,cAAM,KAAK,IAAI,WAAW,UAAU,GAAG,CAAC;AAC5C,aAAO,MAAM,KAAK,GAAG;AAAA,IACzB;AACA,aAAS,UAAU,MAAM,KAAK,WAAW,aAAa;AA5FtD,UAAAA;AA6FI,UAAI,SAAS,OAAO,IAAI;AACpB,eAAO,KAAK,SAAS,KAAK,WAAW,WAAW;AACpD,UAAI,SAAS,QAAQ,IAAI,GAAG;AACxB,YAAI,IAAI,IAAI;AACR,iBAAO,KAAK,SAAS,GAAG;AAC5B,aAAIA,MAAA,IAAI,oBAAJ,gBAAAA,IAAqB,IAAI,OAAO;AAChC,gBAAM,IAAI,UAAU,yDAAyD;AAAA,QACjF,OACK;AACD,cAAI,IAAI;AACJ,gBAAI,gBAAgB,IAAI,IAAI;AAAA;AAE5B,gBAAI,kBAAkB,oBAAI,IAAI,CAAC,IAAI,CAAC;AACxC,iBAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,QAC/B;AAAA,MACJ;AACA,UAAI,SAAS;AACb,YAAM,OAAO,SAAS,OAAO,IAAI,IAC3B,OACA,IAAI,IAAI,WAAW,MAAM,EAAE,UAAU,OAAM,SAAS,EAAG,CAAC;AAC9D,UAAI,CAAC;AACD,iBAAS,aAAa,IAAI,IAAI,OAAO,MAAM,IAAI;AACnD,YAAM,QAAQ,eAAe,MAAM,QAAQ,GAAG;AAC9C,UAAI,MAAM,SAAS;AACf,YAAI,iBAAiB,IAAI,iBAAiB,KAAK,MAAM,SAAS;AAClE,YAAM,MAAM,OAAO,OAAO,cAAc,aAClC,OAAO,UAAU,MAAM,KAAK,WAAW,WAAW,IAClD,SAAS,SAAS,IAAI,IAClB,gBAAgB,gBAAgB,MAAM,KAAK,WAAW,WAAW,IACjE,KAAK,SAAS,KAAK,WAAW,WAAW;AACnD,UAAI,CAAC;AACD,eAAO;AACX,aAAO,SAAS,SAAS,IAAI,KAAK,IAAI,OAAO,OAAO,IAAI,OAAO,MACzD,GAAG,SAAS,QACZ,GAAG;AAAA,EAAU,IAAI,SAAS;AAAA,IACpC;AAEA,YAAQ,yBAAyB;AACjC,YAAQ,YAAY;AAAA;AAAA;;;ACnIpB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,YAAY;AAChB,QAAI,mBAAmB;AAEvB,aAAS,cAAc,EAAE,KAAK,MAAM,GAAG,KAAK,WAAW,aAAa;AAChE,YAAM,EAAE,eAAe,KAAK,QAAQ,YAAY,SAAS,EAAE,eAAe,WAAW,WAAW,EAAE,IAAI;AACtG,UAAI,aAAc,SAAS,OAAO,GAAG,KAAK,IAAI,WAAY;AAC1D,UAAI,YAAY;AACZ,YAAI,YAAY;AACZ,gBAAM,IAAI,MAAM,kDAAkD;AAAA,QACtE;AACA,YAAI,SAAS,aAAa,GAAG,KAAM,CAAC,SAAS,OAAO,GAAG,KAAK,OAAO,QAAQ,UAAW;AAClF,gBAAM,MAAM;AACZ,gBAAM,IAAI,MAAM,GAAG;AAAA,QACvB;AAAA,MACJ;AACA,UAAI,cAAc,CAAC,eACd,CAAC,OACG,cAAc,SAAS,QAAQ,CAAC,IAAI,UACrC,SAAS,aAAa,GAAG,MACxB,SAAS,SAAS,GAAG,IAChB,IAAI,SAAS,OAAO,OAAO,gBAAgB,IAAI,SAAS,OAAO,OAAO,gBACtE,OAAO,QAAQ;AAC7B,YAAM,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,QACzB,eAAe;AAAA,QACf,aAAa,CAAC,gBAAgB,cAAc,CAAC;AAAA,QAC7C,QAAQ,SAAS;AAAA,MACrB,CAAC;AACD,UAAI,iBAAiB;AACrB,UAAI,YAAY;AAChB,UAAI,MAAM,UAAU,UAAU,KAAK,KAAK,MAAO,iBAAiB,MAAO,MAAO,YAAY,IAAK;AAC/F,UAAI,CAAC,eAAe,CAAC,IAAI,UAAU,IAAI,SAAS,MAAM;AAClD,YAAI;AACA,gBAAM,IAAI,MAAM,8EAA8E;AAClG,sBAAc;AAAA,MAClB;AACA,UAAI,IAAI,QAAQ;AACZ,YAAI,iBAAiB,SAAS,MAAM;AAChC,cAAI,kBAAkB;AAClB,sBAAU;AACd,iBAAO,QAAQ,KAAK,MAAM,cAAc,KAAK,QAAQ;AAAA,QACzD;AAAA,MACJ,WACU,iBAAiB,CAAC,cAAgB,SAAS,QAAQ,aAAc;AACvE,cAAM,KAAK;AACX,YAAI,cAAc,CAAC,gBAAgB;AAC/B,iBAAO,iBAAiB,YAAY,KAAK,IAAI,QAAQ,cAAc,UAAU,CAAC;AAAA,QAClF,WACS,aAAa;AAClB,sBAAY;AAChB,eAAO;AAAA,MACX;AACA,UAAI;AACA,qBAAa;AACjB,UAAI,aAAa;AACb,YAAI;AACA,iBAAO,iBAAiB,YAAY,KAAK,IAAI,QAAQ,cAAc,UAAU,CAAC;AAClF,cAAM,KAAK;AAAA,EAAQ;AAAA,MACvB,OACK;AACD,cAAM,GAAG;AACT,YAAI;AACA,iBAAO,iBAAiB,YAAY,KAAK,IAAI,QAAQ,cAAc,UAAU,CAAC;AAAA,MACtF;AACA,UAAI,KAAK,KAAK;AACd,UAAI,SAAS,OAAO,KAAK,GAAG;AACxB,cAAM,CAAC,CAAC,MAAM;AACd,cAAM,MAAM;AACZ,uBAAe,MAAM;AAAA,MACzB,OACK;AACD,cAAM;AACN,cAAM;AACN,uBAAe;AACf,YAAI,SAAS,OAAO,UAAU;AAC1B,kBAAQ,IAAI,WAAW,KAAK;AAAA,MACpC;AACA,UAAI,cAAc;AAClB,UAAI,CAAC,eAAe,CAAC,cAAc,SAAS,SAAS,KAAK;AACtD,YAAI,gBAAgB,IAAI,SAAS;AACrC,kBAAY;AACZ,UAAI,CAAC,aACD,WAAW,UAAU,KACrB,CAAC,IAAI,UACL,CAAC,eACD,SAAS,MAAM,KAAK,KACpB,CAAC,MAAM,QACP,CAAC,MAAM,OACP,CAAC,MAAM,QAAQ;AAEf,YAAI,SAAS,IAAI,OAAO,UAAU,CAAC;AAAA,MACvC;AACA,UAAI,mBAAmB;AACvB,YAAM,WAAW,UAAU,UAAU,OAAO,KAAK,MAAO,mBAAmB,MAAO,MAAO,YAAY,IAAK;AAC1G,UAAI,KAAK;AACT,UAAI,cAAc,OAAO,KAAK;AAC1B,aAAK,MAAM,OAAO;AAClB,YAAI,KAAK;AACL,gBAAM,KAAK,cAAc,GAAG;AAC5B,gBAAM;AAAA,EAAK,iBAAiB,cAAc,IAAI,IAAI,MAAM;AAAA,QAC5D;AACA,YAAI,aAAa,MAAM,CAAC,IAAI,QAAQ;AAChC,cAAI,OAAO;AACP,iBAAK;AAAA,QACb,OACK;AACD,gBAAM;AAAA,EAAK,IAAI;AAAA,QACnB;AAAA,MACJ,WACS,CAAC,eAAe,SAAS,aAAa,KAAK,GAAG;AACnD,cAAM,MAAM,SAAS;AACrB,cAAM,MAAM,SAAS,QAAQ,IAAI;AACjC,cAAM,aAAa,QAAQ;AAC3B,cAAM,OAAO,IAAI,UAAU,MAAM,QAAQ,MAAM,MAAM,WAAW;AAChE,YAAI,cAAc,CAAC,MAAM;AACrB,cAAI,eAAe;AACnB,cAAI,eAAe,QAAQ,OAAO,QAAQ,MAAM;AAC5C,gBAAI,MAAM,SAAS,QAAQ,GAAG;AAC9B,gBAAI,QAAQ,OACR,QAAQ,MACR,MAAM,OACN,SAAS,MAAM,OAAO,KAAK;AAC3B,oBAAM,SAAS,QAAQ,KAAK,MAAM,CAAC;AAAA,YACvC;AACA,gBAAI,QAAQ,MAAM,MAAM;AACpB,6BAAe;AAAA,UACvB;AACA,cAAI,CAAC;AACD,iBAAK;AAAA,EAAK,IAAI;AAAA,QACtB;AAAA,MACJ,WACS,aAAa,MAAM,SAAS,OAAO,MAAM;AAC9C,aAAK;AAAA,MACT;AACA,aAAO,KAAK;AACZ,UAAI,IAAI,QAAQ;AACZ,YAAI,oBAAoB;AACpB,oBAAU;AAAA,MAClB,WACS,gBAAgB,CAAC,kBAAkB;AACxC,eAAO,iBAAiB,YAAY,KAAK,IAAI,QAAQ,cAAc,YAAY,CAAC;AAAA,MACpF,WACS,aAAa,aAAa;AAC/B,oBAAY;AAAA,MAChB;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,gBAAgB;AAAA;AAAA;;;ACvJxB;AAAA;AAAA;AAEA,QAAI,eAAe,UAAQ;AAE3B,aAAS,MAAM,aAAa,UAAU;AAClC,UAAI,aAAa;AACb,gBAAQ,IAAI,GAAG,QAAQ;AAAA,IAC/B;AACA,aAAS,KAAK,UAAU,SAAS;AAC7B,UAAI,aAAa,WAAW,aAAa,QAAQ;AAC7C,YAAI,OAAO,aAAa,gBAAgB;AACpC,uBAAa,YAAY,OAAO;AAAA;AAEhC,kBAAQ,KAAK,OAAO;AAAA,MAC5B;AAAA,IACJ;AAEA,YAAQ,QAAQ;AAChB,YAAQ,OAAO;AAAA;AAAA;;;AClBf;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,SAAS;AASb,QAAM,YAAY;AAClB,QAAM,QAAQ;AAAA,MACV,UAAU,WAAS,UAAU,aACxB,OAAO,UAAU,YAAY,MAAM,gBAAgB;AAAA,MACxD,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,OAAO,OAAO,IAAI,OAAO,OAAO,OAAO,SAAS,CAAC,GAAG;AAAA,QAC/D,YAAY;AAAA,MAChB,CAAC;AAAA,MACD,WAAW,MAAM;AAAA,IACrB;AACA,QAAM,aAAa,CAAC,KAAK,SAAS,MAAM,SAAS,GAAG,KAC/C,SAAS,SAAS,GAAG,MACjB,CAAC,IAAI,QAAQ,IAAI,SAAS,OAAO,OAAO,UACzC,MAAM,SAAS,IAAI,KAAK,OAC5B,2BAAK,IAAI,OAAO,KAAK,KAAK,SAAO,IAAI,QAAQ,MAAM,OAAO,IAAI;AAClE,aAAS,gBAAgB,KAAK,KAAK,OAAO;AACtC,cAAQ,OAAO,SAAS,QAAQ,KAAK,IAAI,MAAM,QAAQ,IAAI,GAAG,IAAI;AAClE,UAAI,SAAS,MAAM,KAAK;AACpB,mBAAW,MAAM,MAAM;AACnB,qBAAW,KAAK,KAAK,EAAE;AAAA,eACtB,MAAM,QAAQ,KAAK;AACxB,mBAAW,MAAM;AACb,qBAAW,KAAK,KAAK,EAAE;AAAA;AAE3B,mBAAW,KAAK,KAAK,KAAK;AAAA,IAClC;AACA,aAAS,WAAW,KAAK,KAAK,OAAO;AACjC,YAAM,SAAS,OAAO,SAAS,QAAQ,KAAK,IAAI,MAAM,QAAQ,IAAI,GAAG,IAAI;AACzE,UAAI,CAAC,SAAS,MAAM,MAAM;AACtB,cAAM,IAAI,MAAM,2CAA2C;AAC/D,YAAM,SAAS,OAAO,OAAO,MAAM,KAAK,GAAG;AAC3C,iBAAW,CAAC,KAAKE,MAAK,KAAK,QAAQ;AAC/B,YAAI,eAAe,KAAK;AACpB,cAAI,CAAC,IAAI,IAAI,GAAG;AACZ,gBAAI,IAAI,KAAKA,MAAK;AAAA,QAC1B,WACS,eAAe,KAAK;AACzB,cAAI,IAAI,GAAG;AAAA,QACf,WACS,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AACtD,iBAAO,eAAe,KAAK,KAAK;AAAA,YAC5B,OAAAA;AAAA,YACA,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,cAAc;AAAA,UAClB,CAAC;AAAA,QACL;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAC1B,YAAQ,aAAa;AACrB,YAAQ,QAAQ;AAAA;AAAA;;;ACnEhB;AAAA;AAAA;AAEA,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,YAAY;AAChB,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,aAAS,eAAe,KAAK,KAAK,EAAE,KAAK,MAAM,GAAG;AAC9C,UAAI,SAAS,OAAO,GAAG,KAAK,IAAI;AAC5B,YAAI,WAAW,KAAK,KAAK,KAAK;AAAA,eAEzB,MAAM,WAAW,KAAK,GAAG;AAC9B,cAAM,gBAAgB,KAAK,KAAK,KAAK;AAAA,WACpC;AACD,cAAM,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG;AACpC,YAAI,eAAe,KAAK;AACpB,cAAI,IAAI,OAAO,KAAK,KAAK,OAAO,OAAO,GAAG,CAAC;AAAA,QAC/C,WACS,eAAe,KAAK;AACzB,cAAI,IAAI,KAAK;AAAA,QACjB,OACK;AACD,gBAAM,YAAY,aAAa,KAAK,OAAO,GAAG;AAC9C,gBAAM,UAAU,KAAK,KAAK,OAAO,WAAW,GAAG;AAC/C,cAAI,aAAa;AACb,mBAAO,eAAe,KAAK,WAAW;AAAA,cAClC,OAAO;AAAA,cACP,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,cAAc;AAAA,YAClB,CAAC;AAAA;AAED,gBAAI,aAAa;AAAA,QACzB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,aAAa,KAAK,OAAO,KAAK;AACnC,UAAI,UAAU;AACV,eAAO;AACX,UAAI,OAAO,UAAU;AACjB,eAAO,OAAO,KAAK;AACvB,UAAI,SAAS,OAAO,GAAG,MAAK,2BAAK,MAAK;AAClC,cAAM,SAAS,UAAU,uBAAuB,IAAI,KAAK,CAAC,CAAC;AAC3D,eAAO,UAAU,oBAAI,IAAI;AACzB,mBAAW,QAAQ,IAAI,QAAQ,KAAK;AAChC,iBAAO,QAAQ,IAAI,KAAK,MAAM;AAClC,eAAO,SAAS;AAChB,eAAO,iBAAiB;AACxB,cAAM,SAAS,IAAI,SAAS,MAAM;AAClC,YAAI,CAAC,IAAI,cAAc;AACnB,cAAI,UAAU,KAAK,UAAU,MAAM;AACnC,cAAI,QAAQ,SAAS;AACjB,sBAAU,QAAQ,UAAU,GAAG,EAAE,IAAI;AACzC,cAAI,KAAK,IAAI,IAAI,QAAQ,UAAU,kFAAkF,iDAAiD;AACtK,cAAI,eAAe;AAAA,QACvB;AACA,eAAO;AAAA,MACX;AACA,aAAO,KAAK,UAAU,KAAK;AAAA,IAC/B;AAEA,YAAQ,iBAAiB;AAAA;AAAA;;;AC/DzB;AAAA;AAAA;AAEA,QAAI,aAAa;AACjB,QAAI,gBAAgB;AACpB,QAAI,iBAAiB;AACrB,QAAI,WAAW;AAEf,aAAS,WAAW,KAAK,OAAO,KAAK;AACjC,YAAM,IAAI,WAAW,WAAW,KAAK,QAAW,GAAG;AACnD,YAAM,IAAI,WAAW,WAAW,OAAO,QAAW,GAAG;AACrD,aAAO,IAAI,KAAK,GAAG,CAAC;AAAA,IACxB;AACA,QAAM,OAAN,MAAW;AAAA,MACP,YAAY,KAAK,QAAQ,MAAM;AAC3B,eAAO,eAAe,MAAM,SAAS,WAAW,EAAE,OAAO,SAAS,KAAK,CAAC;AACxE,aAAK,MAAM;AACX,aAAK,QAAQ;AAAA,MACjB;AAAA,MACA,MAAM,QAAQ;AACV,YAAI,EAAE,KAAK,MAAM,IAAI;AACrB,YAAI,SAAS,OAAO,GAAG;AACnB,gBAAM,IAAI,MAAM,MAAM;AAC1B,YAAI,SAAS,OAAO,KAAK;AACrB,kBAAQ,MAAM,MAAM,MAAM;AAC9B,eAAO,IAAI,KAAK,KAAK,KAAK;AAAA,MAC9B;AAAA,MACA,OAAO,GAAG,KAAK;AACX,cAAM,QAAO,2BAAK,YAAW,oBAAI,IAAI,IAAI,CAAC;AAC1C,eAAO,eAAe,eAAe,KAAK,MAAM,IAAI;AAAA,MACxD;AAAA,MACA,SAAS,KAAK,WAAW,aAAa;AAClC,gBAAO,2BAAK,OACN,cAAc,cAAc,MAAM,KAAK,WAAW,WAAW,IAC7D,KAAK,UAAU,IAAI;AAAA,MAC7B;AAAA,IACJ;AAEA,YAAQ,OAAO;AACf,YAAQ,aAAa;AAAA;AAAA;;;ACtCrB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,YAAY;AAChB,QAAI,mBAAmB;AAEvB,aAAS,oBAAoB,YAAY,KAAK,SAAS;AACnD,YAAM,OAAO,IAAI,UAAU,WAAW;AACtC,YAAMC,aAAY,OAAO,0BAA0B;AACnD,aAAOA,WAAU,YAAY,KAAK,OAAO;AAAA,IAC7C;AACA,aAAS,yBAAyB,EAAE,SAAS,MAAM,GAAG,KAAK,EAAE,iBAAiB,WAAW,YAAY,aAAa,UAAU,GAAG;AAC3H,YAAM,EAAE,QAAQ,SAAS,EAAE,cAAc,EAAE,IAAI;AAC/C,YAAM,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK,EAAE,QAAQ,YAAY,MAAM,KAAK,CAAC;AACzE,UAAI,YAAY;AAChB,YAAMC,SAAQ,CAAC;AACf,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACnC,cAAM,OAAO,MAAM;AACnB,YAAIC,WAAU;AACd,YAAI,SAAS,OAAO,IAAI,GAAG;AACvB,cAAI,CAAC,aAAa,KAAK;AACnB,YAAAD,OAAM,KAAK,EAAE;AACjB,2BAAiB,KAAKA,QAAO,KAAK,eAAe,SAAS;AAC1D,cAAI,KAAK;AACL,YAAAC,WAAU,KAAK;AAAA,QACvB,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,gBAAM,KAAK,SAAS,OAAO,KAAK,GAAG,IAAI,KAAK,MAAM;AAClD,cAAI,IAAI;AACJ,gBAAI,CAAC,aAAa,GAAG;AACjB,cAAAD,OAAM,KAAK,EAAE;AACjB,6BAAiB,KAAKA,QAAO,GAAG,eAAe,SAAS;AAAA,UAC5D;AAAA,QACJ;AACA,oBAAY;AACZ,YAAIE,OAAM,UAAU,UAAU,MAAM,SAAS,MAAOD,WAAU,MAAO,MAAO,YAAY,IAAK;AAC7F,YAAIA;AACA,UAAAC,QAAO,iBAAiB,YAAYA,MAAK,YAAY,cAAcD,QAAO,CAAC;AAC/E,YAAI,aAAaA;AACb,sBAAY;AAChB,QAAAD,OAAM,KAAK,kBAAkBE,IAAG;AAAA,MACpC;AACA,UAAI;AACJ,UAAIF,OAAM,WAAW,GAAG;AACpB,cAAM,UAAU,QAAQ,UAAU;AAAA,MACtC,OACK;AACD,cAAMA,OAAM;AACZ,iBAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,EAAE,GAAG;AACnC,gBAAM,OAAOA,OAAM;AACnB,iBAAO,OAAO;AAAA,EAAK,SAAS,SAAS;AAAA,QACzC;AAAA,MACJ;AACA,UAAI,SAAS;AACT,eAAO,OAAO,iBAAiB,cAAc,cAAc,OAAO,GAAG,MAAM;AAC3E,YAAI;AACA,oBAAU;AAAA,MAClB,WACS,aAAa;AAClB,oBAAY;AAChB,aAAO;AAAA,IACX;AACA,aAAS,wBAAwB,EAAE,MAAM,GAAG,KAAK,EAAE,WAAW,WAAW,GAAG;AACxE,YAAM,EAAE,QAAQ,YAAY,uBAAuB,WAAW,SAAS,EAAE,cAAc,EAAE,IAAI;AAC7F,oBAAc;AACd,YAAM,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA,QACnC,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,MACV,CAAC;AACD,UAAI,aAAa;AACjB,UAAI,eAAe;AACnB,YAAMA,SAAQ,CAAC;AACf,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACnC,cAAM,OAAO,MAAM;AACnB,YAAI,UAAU;AACd,YAAI,SAAS,OAAO,IAAI,GAAG;AACvB,cAAI,KAAK;AACL,YAAAA,OAAM,KAAK,EAAE;AACjB,2BAAiB,KAAKA,QAAO,KAAK,eAAe,KAAK;AACtD,cAAI,KAAK;AACL,sBAAU,KAAK;AAAA,QACvB,WACS,SAAS,OAAO,IAAI,GAAG;AAC5B,gBAAM,KAAK,SAAS,OAAO,KAAK,GAAG,IAAI,KAAK,MAAM;AAClD,cAAI,IAAI;AACJ,gBAAI,GAAG;AACH,cAAAA,OAAM,KAAK,EAAE;AACjB,6BAAiB,KAAKA,QAAO,GAAG,eAAe,KAAK;AACpD,gBAAI,GAAG;AACH,2BAAa;AAAA,UACrB;AACA,gBAAM,KAAK,SAAS,OAAO,KAAK,KAAK,IAAI,KAAK,QAAQ;AACtD,cAAI,IAAI;AACJ,gBAAI,GAAG;AACH,wBAAU,GAAG;AACjB,gBAAI,GAAG;AACH,2BAAa;AAAA,UACrB,WACS,KAAK,SAAS,SAAQ,yBAAI,UAAS;AACxC,sBAAU,GAAG;AAAA,UACjB;AAAA,QACJ;AACA,YAAI;AACA,uBAAa;AACjB,YAAI,MAAM,UAAU,UAAU,MAAM,SAAS,MAAO,UAAU,IAAK;AACnE,YAAI,IAAI,MAAM,SAAS;AACnB,iBAAO;AACX,YAAI;AACA,iBAAO,iBAAiB,YAAY,KAAK,YAAY,cAAc,OAAO,CAAC;AAC/E,YAAI,CAAC,eAAeA,OAAM,SAAS,gBAAgB,IAAI,SAAS,IAAI;AAChE,uBAAa;AACjB,QAAAA,OAAM,KAAK,GAAG;AACd,uBAAeA,OAAM;AAAA,MACzB;AACA,YAAM,EAAE,OAAO,IAAI,IAAI;AACvB,UAAIA,OAAM,WAAW,GAAG;AACpB,eAAO,QAAQ;AAAA,MACnB,OACK;AACD,YAAI,CAAC,YAAY;AACb,gBAAM,MAAMA,OAAM,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,SAAS,GAAG,CAAC;AAChE,uBAAa,IAAI,QAAQ,YAAY,KAAK,MAAM,IAAI,QAAQ;AAAA,QAChE;AACA,YAAI,YAAY;AACZ,cAAI,MAAM;AACV,qBAAW,QAAQA;AACf,mBAAO,OAAO;AAAA,EAAK,aAAa,SAAS,SAAS;AACtD,iBAAO,GAAG;AAAA,EAAQ,SAAS;AAAA,QAC/B,OACK;AACD,iBAAO,GAAG,QAAQ,YAAYA,OAAM,KAAK,GAAG,IAAI,YAAY;AAAA,QAChE;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,iBAAiB,EAAE,QAAQ,SAAS,EAAE,cAAc,EAAE,GAAGA,QAAO,SAAS,WAAW;AACzF,UAAI,WAAW;AACX,kBAAU,QAAQ,QAAQ,QAAQ,EAAE;AACxC,UAAI,SAAS;AACT,cAAM,KAAK,iBAAiB,cAAc,cAAc,OAAO,GAAG,MAAM;AACxE,QAAAA,OAAM,KAAK,GAAG,UAAU,CAAC;AAAA,MAC7B;AAAA,IACJ;AAEA,YAAQ,sBAAsB;AAAA;AAAA;;;AChJ9B;AAAA;AAAA;AAEA,QAAI,sBAAsB;AAC1B,QAAI,iBAAiB;AACrB,QAAI,aAAa;AACjB,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,SAAS;AAEb,aAAS,SAAS,OAAO,KAAK;AAC1B,YAAM,IAAI,SAAS,SAAS,GAAG,IAAI,IAAI,QAAQ;AAC/C,iBAAW,MAAM,OAAO;AACpB,YAAI,SAAS,OAAO,EAAE,GAAG;AACrB,cAAI,GAAG,QAAQ,OAAO,GAAG,QAAQ;AAC7B,mBAAO;AACX,cAAI,SAAS,SAAS,GAAG,GAAG,KAAK,GAAG,IAAI,UAAU;AAC9C,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,QAAM,UAAN,cAAsB,WAAW,WAAW;AAAA,MACxC,WAAW,UAAU;AACjB,eAAO;AAAA,MACX;AAAA,MACA,YAAY,QAAQ;AAChB,cAAM,SAAS,KAAK,MAAM;AAC1B,aAAK,QAAQ,CAAC;AAAA,MAClB;AAAA,MAKA,OAAO,KAAK,QAAQ,KAAK,KAAK;AAC1B,cAAM,EAAE,eAAe,SAAS,IAAI;AACpC,cAAM,MAAM,IAAI,KAAK,MAAM;AAC3B,cAAM,MAAM,CAAC,KAAK,UAAU;AACxB,cAAI,OAAO,aAAa;AACpB,oBAAQ,SAAS,KAAK,KAAK,KAAK,KAAK;AAAA,mBAChC,MAAM,QAAQ,QAAQ,KAAK,CAAC,SAAS,SAAS,GAAG;AACtD;AACJ,cAAI,UAAU,UAAa;AACvB,gBAAI,MAAM,KAAK,KAAK,WAAW,KAAK,OAAO,GAAG,CAAC;AAAA,QACvD;AACA,YAAI,eAAe,KAAK;AACpB,qBAAW,CAAC,KAAK,KAAK,KAAK;AACvB,gBAAI,KAAK,KAAK;AAAA,QACtB,WACS,OAAO,OAAO,QAAQ,UAAU;AACrC,qBAAW,OAAO,OAAO,KAAK,GAAG;AAC7B,gBAAI,KAAK,IAAI,IAAI;AAAA,QACzB;AACA,YAAI,OAAO,OAAO,mBAAmB,YAAY;AAC7C,cAAI,MAAM,KAAK,OAAO,cAAc;AAAA,QACxC;AACA,eAAO;AAAA,MACX;AAAA,MAOA,IAAI,MAAM,WAAW;AA/DzB,YAAAG;AAgEQ,YAAI;AACJ,YAAI,SAAS,OAAO,IAAI;AACpB,kBAAQ;AAAA,iBACH,CAAC,QAAQ,OAAO,SAAS,YAAY,EAAE,SAAS,OAAO;AAE5D,kBAAQ,IAAI,KAAK,KAAK,MAAM,6BAAM,KAAK;AAAA,QAC3C;AAEI,kBAAQ,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAC9C,cAAM,OAAO,SAAS,KAAK,OAAO,MAAM,GAAG;AAC3C,cAAM,eAAcA,MAAA,KAAK,WAAL,gBAAAA,IAAa;AACjC,YAAI,MAAM;AACN,cAAI,CAAC;AACD,kBAAM,IAAI,MAAM,OAAO,MAAM,iBAAiB;AAElD,cAAI,SAAS,SAAS,KAAK,KAAK,KAAK,OAAO,cAAc,MAAM,KAAK;AACjE,iBAAK,MAAM,QAAQ,MAAM;AAAA;AAEzB,iBAAK,QAAQ,MAAM;AAAA,QAC3B,WACS,aAAa;AAClB,gBAAM,IAAI,KAAK,MAAM,UAAU,UAAQ,YAAY,OAAO,IAAI,IAAI,CAAC;AACnE,cAAI,MAAM;AACN,iBAAK,MAAM,KAAK,KAAK;AAAA;AAErB,iBAAK,MAAM,OAAO,GAAG,GAAG,KAAK;AAAA,QACrC,OACK;AACD,eAAK,MAAM,KAAK,KAAK;AAAA,QACzB;AAAA,MACJ;AAAA,MACA,OAAO,KAAK;AACR,cAAM,KAAK,SAAS,KAAK,OAAO,GAAG;AACnC,YAAI,CAAC;AACD,iBAAO;AACX,cAAM,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM,QAAQ,EAAE,GAAG,CAAC;AACvD,eAAO,IAAI,SAAS;AAAA,MACxB;AAAA,MACA,IAAI,KAAK,YAAY;AACjB,cAAM,KAAK,SAAS,KAAK,OAAO,GAAG;AACnC,cAAM,OAAO,yBAAI;AACjB,gBAAQ,CAAC,cAAc,SAAS,SAAS,IAAI,IAAI,KAAK,QAAQ,SAAS;AAAA,MAC3E;AAAA,MACA,IAAI,KAAK;AACL,eAAO,CAAC,CAAC,SAAS,KAAK,OAAO,GAAG;AAAA,MACrC;AAAA,MACA,IAAI,KAAK,OAAO;AACZ,aAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAAA,MAC5C;AAAA,MAMA,OAAO,GAAG,KAAK,MAAM;AACjB,cAAM,MAAM,OAAO,IAAI,KAAK,KAAI,2BAAK,YAAW,oBAAI,IAAI,IAAI,CAAC;AAC7D,YAAI,2BAAK;AACL,cAAI,SAAS,GAAG;AACpB,mBAAW,QAAQ,KAAK;AACpB,yBAAe,eAAe,KAAK,KAAK,IAAI;AAChD,eAAO;AAAA,MACX;AAAA,MACA,SAAS,KAAK,WAAW,aAAa;AAClC,YAAI,CAAC;AACD,iBAAO,KAAK,UAAU,IAAI;AAC9B,mBAAW,QAAQ,KAAK,OAAO;AAC3B,cAAI,CAAC,SAAS,OAAO,IAAI;AACrB,kBAAM,IAAI,MAAM,sCAAsC,KAAK,UAAU,IAAI,WAAW;AAAA,QAC5F;AACA,YAAI,CAAC,IAAI,iBAAiB,KAAK,iBAAiB,KAAK;AACjD,gBAAM,OAAO,OAAO,CAAC,GAAG,KAAK,EAAE,eAAe,KAAK,CAAC;AACxD,eAAO,oBAAoB,oBAAoB,MAAM,KAAK;AAAA,UACtD,iBAAiB;AAAA,UACjB,WAAW,EAAE,OAAO,KAAK,KAAK,IAAI;AAAA,UAClC,YAAY,IAAI,UAAU;AAAA,UAC1B;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,YAAQ,UAAU;AAClB,YAAQ,WAAW;AAAA;AAAA;;;AClJnB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,UAAU;AAEd,QAAM,MAAM;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,QAAQC,MAAK,SAAS;AAClB,YAAI,CAAC,SAAS,MAAMA,IAAG;AACnB,kBAAQ,iCAAiC;AAC7C,eAAOA;AAAA,MACX;AAAA,MACA,YAAY,CAAC,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,KAAK,GAAG;AAAA,IAC3E;AAEA,YAAQ,MAAM;AAAA;AAAA;;;AClBd;AAAA;AAAA;AAEA,QAAI,aAAa;AACjB,QAAI,sBAAsB;AAC1B,QAAI,aAAa;AACjB,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,OAAO;AAEX,QAAM,UAAN,cAAsB,WAAW,WAAW;AAAA,MACxC,WAAW,UAAU;AACjB,eAAO;AAAA,MACX;AAAA,MACA,YAAY,QAAQ;AAChB,cAAM,SAAS,KAAK,MAAM;AAC1B,aAAK,QAAQ,CAAC;AAAA,MAClB;AAAA,MACA,IAAI,OAAO;AACP,aAAK,MAAM,KAAK,KAAK;AAAA,MACzB;AAAA,MASA,OAAO,KAAK;AACR,cAAM,MAAM,YAAY,GAAG;AAC3B,YAAI,OAAO,QAAQ;AACf,iBAAO;AACX,cAAM,MAAM,KAAK,MAAM,OAAO,KAAK,CAAC;AACpC,eAAO,IAAI,SAAS;AAAA,MACxB;AAAA,MACA,IAAI,KAAK,YAAY;AACjB,cAAM,MAAM,YAAY,GAAG;AAC3B,YAAI,OAAO,QAAQ;AACf,iBAAO;AACX,cAAM,KAAK,KAAK,MAAM;AACtB,eAAO,CAAC,cAAc,SAAS,SAAS,EAAE,IAAI,GAAG,QAAQ;AAAA,MAC7D;AAAA,MAOA,IAAI,KAAK;AACL,cAAM,MAAM,YAAY,GAAG;AAC3B,eAAO,OAAO,QAAQ,YAAY,MAAM,KAAK,MAAM;AAAA,MACvD;AAAA,MAQA,IAAI,KAAK,OAAO;AACZ,cAAM,MAAM,YAAY,GAAG;AAC3B,YAAI,OAAO,QAAQ;AACf,gBAAM,IAAI,MAAM,+BAA+B,MAAM;AACzD,cAAM,OAAO,KAAK,MAAM;AACxB,YAAI,SAAS,SAAS,IAAI,KAAK,OAAO,cAAc,KAAK;AACrD,eAAK,QAAQ;AAAA;AAEb,eAAK,MAAM,OAAO;AAAA,MAC1B;AAAA,MACA,OAAO,GAAG,KAAK;AACX,cAAM,MAAM,CAAC;AACb,YAAI,2BAAK;AACL,cAAI,SAAS,GAAG;AACpB,YAAI,IAAI;AACR,mBAAW,QAAQ,KAAK;AACpB,cAAI,KAAK,KAAK,KAAK,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC;AAC9C,eAAO;AAAA,MACX;AAAA,MACA,SAAS,KAAK,WAAW,aAAa;AAClC,YAAI,CAAC;AACD,iBAAO,KAAK,UAAU,IAAI;AAC9B,eAAO,oBAAoB,oBAAoB,MAAM,KAAK;AAAA,UACtD,iBAAiB;AAAA,UACjB,WAAW,EAAE,OAAO,KAAK,KAAK,IAAI;AAAA,UAClC,aAAa,IAAI,UAAU,MAAM;AAAA,UACjC;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MACA,OAAO,KAAK,QAAQ,KAAK,KAAK;AAC1B,cAAM,EAAE,SAAS,IAAI;AACrB,cAAM,MAAM,IAAI,KAAK,MAAM;AAC3B,YAAI,OAAO,OAAO,YAAY,OAAO,GAAG,GAAG;AACvC,cAAI,IAAI;AACR,mBAAS,MAAM,KAAK;AAChB,gBAAI,OAAO,aAAa,YAAY;AAChC,oBAAM,MAAM,eAAe,MAAM,KAAK,OAAO,GAAG;AAChD,mBAAK,SAAS,KAAK,KAAK,KAAK,EAAE;AAAA,YACnC;AACA,gBAAI,MAAM,KAAK,WAAW,WAAW,IAAI,QAAW,GAAG,CAAC;AAAA,UAC5D;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,IACJ;AACA,aAAS,YAAY,KAAK;AACtB,UAAI,MAAM,SAAS,SAAS,GAAG,IAAI,IAAI,QAAQ;AAC/C,UAAI,OAAO,OAAO,QAAQ;AACtB,cAAM,OAAO,GAAG;AACpB,aAAO,OAAO,QAAQ,YAAY,OAAO,UAAU,GAAG,KAAK,OAAO,IAC5D,MACA;AAAA,IACV;AAEA,YAAQ,UAAU;AAAA;AAAA;;;AClHlB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,UAAU;AAEd,QAAM,MAAM;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,QAAQC,MAAK,SAAS;AAClB,YAAI,CAAC,SAAS,MAAMA,IAAG;AACnB,kBAAQ,kCAAkC;AAC9C,eAAOA;AAAA,MACX;AAAA,MACA,YAAY,CAAC,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,KAAK,GAAG;AAAA,IAC3E;AAEA,YAAQ,MAAM;AAAA;AAAA;;;AClBd,IAAAC,kBAAA;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAEtB,QAAM,SAAS;AAAA,MACX,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,SAAS,SAAO;AAAA,MAChB,UAAU,MAAM,KAAK,WAAW,aAAa;AACzC,cAAM,OAAO,OAAO,EAAE,cAAc,KAAK,GAAG,GAAG;AAC/C,eAAO,gBAAgB,gBAAgB,MAAM,KAAK,WAAW,WAAW;AAAA,MAC5E;AAAA,IACJ;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACfjB;AAAA;AAAA;AAEA,QAAI,SAAS;AAEb,QAAM,UAAU;AAAA,MACZ,UAAU,WAAS,SAAS;AAAA,MAC5B,YAAY,MAAM,IAAI,OAAO,OAAO,IAAI;AAAA,MACxC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,IAAI,OAAO,OAAO,IAAI;AAAA,MACrC,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,OAAO,WAAW,YAAY,QAAQ,KAAK,KAAK,MAAM,IAChF,SACA,IAAI,QAAQ;AAAA,IACtB;AAEA,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,QAAI,SAAS;AAEb,QAAM,UAAU;AAAA,MACZ,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,SAAO,IAAI,OAAO,OAAO,IAAI,OAAO,OAAO,IAAI,OAAO,GAAG;AAAA,MAClE,UAAU,EAAE,QAAQ,MAAM,GAAG,KAAK;AAC9B,YAAI,UAAU,QAAQ,KAAK,KAAK,MAAM,GAAG;AACrC,gBAAM,KAAK,OAAO,OAAO,OAAO,OAAO,OAAO;AAC9C,cAAI,UAAU;AACV,mBAAO;AAAA,QACf;AACA,eAAO,QAAQ,IAAI,QAAQ,UAAU,IAAI,QAAQ;AAAA,MACrD;AAAA,IACJ;AAEA,YAAQ,UAAU;AAAA;AAAA;;;ACpBlB;AAAA;AAAA;AAEA,aAAS,gBAAgB,EAAE,QAAAC,SAAQ,mBAAmB,KAAK,MAAM,GAAG;AAChE,UAAI,OAAO,UAAU;AACjB,eAAO,OAAO,KAAK;AACvB,YAAM,MAAM,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AAC5D,UAAI,CAAC,SAAS,GAAG;AACb,eAAO,MAAM,GAAG,IAAI,SAAS,MAAM,IAAI,UAAU;AACrD,UAAI,IAAI,KAAK,UAAU,KAAK;AAC5B,UAAI,CAACA,WACD,sBACC,CAAC,OAAO,QAAQ,8BACjB,MAAM,KAAK,CAAC,GAAG;AACf,YAAI,IAAI,EAAE,QAAQ,GAAG;AACrB,YAAI,IAAI,GAAG;AACP,cAAI,EAAE;AACN,eAAK;AAAA,QACT;AACA,YAAI,IAAI,qBAAqB,EAAE,SAAS,IAAI;AAC5C,eAAO,MAAM;AACT,eAAK;AAAA,MACb;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;ACzB1B;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,kBAAkB;AAEtB,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,SAAO,IAAI,MAAM,EAAE,EAAE,YAAY,MAAM,QAC1C,MACA,IAAI,OAAO,MACP,OAAO,oBACP,OAAO;AAAA,MACjB,WAAW,gBAAgB;AAAA,IAC/B;AACA,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,SAAO,WAAW,GAAG;AAAA,MAC9B,UAAU,MAAM;AACZ,cAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,eAAO,SAAS,GAAG,IAAI,IAAI,cAAc,IAAI,gBAAgB,gBAAgB,IAAI;AAAA,MACrF;AAAA,IACJ;AACA,QAAM,QAAQ;AAAA,MACV,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,KAAK;AACT,cAAM,OAAO,IAAI,OAAO,OAAO,WAAW,GAAG,CAAC;AAC9C,cAAM,MAAM,IAAI,QAAQ,GAAG;AAC3B,YAAI,QAAQ,MAAM,IAAI,IAAI,SAAS,OAAO;AACtC,eAAK,oBAAoB,IAAI,SAAS,MAAM;AAChD,eAAO;AAAA,MACX;AAAA,MACA,WAAW,gBAAgB;AAAA,IAC/B;AAEA,YAAQ,QAAQ;AAChB,YAAQ,WAAW;AACnB,YAAQ,WAAW;AAAA;AAAA;;;AC9CnB;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAEtB,QAAM,cAAc,CAAC,UAAU,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAClF,QAAM,aAAa,CAAC,KAAK,QAAQ,OAAO,EAAE,YAAY,MAAO,cAAc,OAAO,GAAG,IAAI,SAAS,IAAI,UAAU,MAAM,GAAG,KAAK;AAC9H,aAAS,aAAa,MAAM,OAAO,QAAQ;AACvC,YAAM,EAAE,MAAM,IAAI;AAClB,UAAI,YAAY,KAAK,KAAK,SAAS;AAC/B,eAAO,SAAS,MAAM,SAAS,KAAK;AACxC,aAAO,gBAAgB,gBAAgB,IAAI;AAAA,IAC/C;AACA,QAAM,SAAS;AAAA,MACX,UAAU,WAAS,YAAY,KAAK,KAAK,SAAS;AAAA,MAClD,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,GAAG,GAAG;AAAA,MAC1D,WAAW,UAAQ,aAAa,MAAM,GAAG,IAAI;AAAA,IACjD;AACA,QAAM,MAAM;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,IAAI,GAAG;AAAA,MAC3D,WAAW,gBAAgB;AAAA,IAC/B;AACA,QAAM,SAAS;AAAA,MACX,UAAU,WAAS,YAAY,KAAK,KAAK,SAAS;AAAA,MAClD,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,IAAI,GAAG;AAAA,MAC3D,WAAW,UAAQ,aAAa,MAAM,IAAI,IAAI;AAAA,IAClD;AAEA,YAAQ,MAAM;AACd,YAAQ,SAAS;AACjB,YAAQ,SAAS;AAAA;AAAA;;;ACzCjB;AAAA;AAAA;AAEA,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,MAAM;AAEV,QAAM,SAAS;AAAA,MACX,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACxBjB,IAAAC,kBAAA;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,MAAM;AACV,QAAI,MAAM;AAEV,aAAS,YAAY,OAAO;AACxB,aAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAAA,IAC9D;AACA,QAAM,gBAAgB,CAAC,EAAE,MAAM,MAAM,KAAK,UAAU,KAAK;AACzD,QAAM,cAAc;AAAA,MAChB;AAAA,QACI,UAAU,WAAS,OAAO,UAAU;AAAA,QACpC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,SAAS,SAAO;AAAA,QAChB,WAAW;AAAA,MACf;AAAA,MACA;AAAA,QACI,UAAU,WAAS,SAAS;AAAA,QAC5B,YAAY,MAAM,IAAI,OAAO,OAAO,IAAI;AAAA,QACxC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,MAAM;AAAA,QACf,WAAW;AAAA,MACf;AAAA,MACA;AAAA,QACI,UAAU,WAAS,OAAO,UAAU;AAAA,QACpC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,SAAO,QAAQ;AAAA,QACxB,WAAW;AAAA,MACf;AAAA,MACA;AAAA,QACI,UAAU;AAAA,QACV,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,CAAC,KAAK,UAAU,EAAE,YAAY,MAAM,cAAc,OAAO,GAAG,IAAI,SAAS,KAAK,EAAE;AAAA,QACzF,WAAW,CAAC,EAAE,MAAM,MAAM,YAAY,KAAK,IAAI,MAAM,SAAS,IAAI,KAAK,UAAU,KAAK;AAAA,MAC1F;AAAA,MACA;AAAA,QACI,UAAU,WAAS,OAAO,UAAU;AAAA,QACpC,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,SAAO,WAAW,GAAG;AAAA,QAC9B,WAAW;AAAA,MACf;AAAA,IACJ;AACA,QAAM,YAAY;AAAA,MACd,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,KAAK,SAAS;AAClB,gBAAQ,2BAA2B,KAAK,UAAU,GAAG,GAAG;AACxD,eAAO;AAAA,MACX;AAAA,IACJ;AACA,QAAM,SAAS,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE,OAAO,aAAa,SAAS;AAE/D,YAAQ,SAAS;AAAA;AAAA;;;AC/DjB;AAAA;AAAA;AAEA,QAAI,cAAc,UAAQ;AAC1B,QAAI,SAAS;AACb,QAAI,kBAAkB;AAEtB,QAAM,SAAS;AAAA,MACX,UAAU,WAAS,iBAAiB;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MASL,QAAQ,KAAK,SAAS;AAClB,YAAI,OAAO,YAAY,WAAW,YAAY;AAC1C,iBAAO,YAAY,OAAO,KAAK,KAAK,QAAQ;AAAA,QAChD,WACS,OAAO,SAAS,YAAY;AAEjC,gBAAM,MAAM,KAAK,IAAI,QAAQ,WAAW,EAAE,CAAC;AAC3C,gBAAM,SAAS,IAAI,WAAW,IAAI,MAAM;AACxC,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE;AAC9B,mBAAO,KAAK,IAAI,WAAW,CAAC;AAChC,iBAAO;AAAA,QACX,OACK;AACD,kBAAQ,0FAA0F;AAClG,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,MACA,UAAU,EAAE,SAAS,MAAM,MAAM,GAAG,KAAK,WAAW,aAAa;AAC7D,cAAM,MAAM;AACZ,YAAI;AACJ,YAAI,OAAO,YAAY,WAAW,YAAY;AAC1C,gBACI,eAAe,YAAY,SACrB,IAAI,SAAS,QAAQ,IACrB,YAAY,OAAO,KAAK,IAAI,MAAM,EAAE,SAAS,QAAQ;AAAA,QACnE,WACS,OAAO,SAAS,YAAY;AACjC,cAAI,IAAI;AACR,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE;AAC9B,iBAAK,OAAO,aAAa,IAAI,EAAE;AACnC,gBAAM,KAAK,CAAC;AAAA,QAChB,OACK;AACD,gBAAM,IAAI,MAAM,0FAA0F;AAAA,QAC9G;AACA,YAAI,CAAC;AACD,iBAAO,OAAO,OAAO;AACzB,YAAI,SAAS,OAAO,OAAO,cAAc;AACrC,gBAAM,YAAY,KAAK,IAAI,IAAI,QAAQ,YAAY,IAAI,OAAO,QAAQ,IAAI,QAAQ,eAAe;AACjG,gBAAM,IAAI,KAAK,KAAK,IAAI,SAAS,SAAS;AAC1C,gBAAMC,SAAQ,IAAI,MAAM,CAAC;AACzB,mBAAS,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,KAAK,WAAW;AAC/C,YAAAA,OAAM,KAAK,IAAI,OAAO,GAAG,SAAS;AAAA,UACtC;AACA,gBAAMA,OAAM,KAAK,SAAS,OAAO,OAAO,gBAAgB,OAAO,GAAG;AAAA,QACtE;AACA,eAAO,gBAAgB,gBAAgB,EAAE,SAAS,MAAM,OAAO,IAAI,GAAG,KAAK,WAAW,WAAW;AAAA,MACrG;AAAA,IACJ;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACpEjB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAI,UAAU;AAEd,aAAS,aAAa,KAAK,SAAS;AAChC,UAAI,SAAS,MAAM,GAAG,GAAG;AACrB,iBAAS,IAAI,GAAG,IAAI,IAAI,MAAM,QAAQ,EAAE,GAAG;AACvC,cAAI,OAAO,IAAI,MAAM;AACrB,cAAI,SAAS,OAAO,IAAI;AACpB;AAAA,mBACK,SAAS,MAAM,IAAI,GAAG;AAC3B,gBAAI,KAAK,MAAM,SAAS;AACpB,sBAAQ,gDAAgD;AAC5D,kBAAM,OAAO,KAAK,MAAM,MAAM,IAAI,KAAK,KAAK,IAAI,OAAO,OAAO,IAAI,CAAC;AACnE,gBAAI,KAAK;AACL,mBAAK,IAAI,gBAAgB,KAAK,IAAI,gBAC5B,GAAG,KAAK;AAAA,EAAkB,KAAK,IAAI,kBACnC,KAAK;AACf,gBAAI,KAAK,SAAS;AACd,oBAAM,KAAK,KAAK,SAAS,KAAK;AAC9B,iBAAG,UAAU,GAAG,UACV,GAAG,KAAK;AAAA,EAAY,GAAG,YACvB,KAAK;AAAA,YACf;AACA,mBAAO;AAAA,UACX;AACA,cAAI,MAAM,KAAK,SAAS,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,KAAK,IAAI;AAAA,QACpE;AAAA,MACJ;AAEI,gBAAQ,kCAAkC;AAC9C,aAAO;AAAA,IACX;AACA,aAAS,YAAY,QAAQ,UAAU,KAAK;AACxC,YAAM,EAAE,SAAS,IAAI;AACrB,YAAMC,SAAQ,IAAI,QAAQ,QAAQ,MAAM;AACxC,MAAAA,OAAM,MAAM;AACZ,UAAI,IAAI;AACR,UAAI,YAAY,OAAO,YAAY,OAAO,QAAQ;AAC9C,iBAAS,MAAM,UAAU;AACrB,cAAI,OAAO,aAAa;AACpB,iBAAK,SAAS,KAAK,UAAU,OAAO,GAAG,GAAG,EAAE;AAChD,cAAI,KAAK;AACT,cAAI,MAAM,QAAQ,EAAE,GAAG;AACnB,gBAAI,GAAG,WAAW,GAAG;AACjB,oBAAM,GAAG;AACT,sBAAQ,GAAG;AAAA,YACf;AAEI,oBAAM,IAAI,UAAU,gCAAgC,IAAI;AAAA,UAChE,WACS,MAAM,cAAc,QAAQ;AACjC,kBAAM,OAAO,OAAO,KAAK,EAAE;AAC3B,gBAAI,KAAK,WAAW,GAAG;AACnB,oBAAM,KAAK;AACX,sBAAQ,GAAG;AAAA,YACf,OACK;AACD,oBAAM,IAAI,UAAU,oCAAoC,KAAK,aAAa;AAAA,YAC9E;AAAA,UACJ,OACK;AACD,kBAAM;AAAA,UACV;AACA,UAAAA,OAAM,MAAM,KAAK,KAAK,WAAW,KAAK,OAAO,GAAG,CAAC;AAAA,QACrD;AACJ,aAAOA;AAAA,IACX;AACA,QAAM,QAAQ;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,KAAK;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,IAChB;AAEA,YAAQ,cAAc;AACtB,YAAQ,QAAQ;AAChB,YAAQ,eAAe;AAAA;AAAA;;;ACjFvB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,QAAQ;AAEZ,QAAM,WAAN,cAAuB,QAAQ,QAAQ;AAAA,MACnC,cAAc;AACV,cAAM;AACN,aAAK,MAAM,QAAQ,QAAQ,UAAU,IAAI,KAAK,IAAI;AAClD,aAAK,SAAS,QAAQ,QAAQ,UAAU,OAAO,KAAK,IAAI;AACxD,aAAK,MAAM,QAAQ,QAAQ,UAAU,IAAI,KAAK,IAAI;AAClD,aAAK,MAAM,QAAQ,QAAQ,UAAU,IAAI,KAAK,IAAI;AAClD,aAAK,MAAM,QAAQ,QAAQ,UAAU,IAAI,KAAK,IAAI;AAClD,aAAK,MAAM,SAAS;AAAA,MACxB;AAAA,MAKA,OAAO,GAAG,KAAK;AACX,YAAI,CAAC;AACD,iBAAO,MAAM,OAAO,CAAC;AACzB,cAAM,MAAM,oBAAI,IAAI;AACpB,YAAI,2BAAK;AACL,cAAI,SAAS,GAAG;AACpB,mBAAW,QAAQ,KAAK,OAAO;AAC3B,cAAI,KAAK;AACT,cAAI,SAAS,OAAO,IAAI,GAAG;AACvB,kBAAM,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG;AACjC,oBAAQ,KAAK,KAAK,KAAK,OAAO,KAAK,GAAG;AAAA,UAC1C,OACK;AACD,kBAAM,KAAK,KAAK,MAAM,IAAI,GAAG;AAAA,UACjC;AACA,cAAI,IAAI,IAAI,GAAG;AACX,kBAAM,IAAI,MAAM,8CAA8C;AAClE,cAAI,IAAI,KAAK,KAAK;AAAA,QACtB;AACA,eAAO;AAAA,MACX;AAAA,MACA,OAAO,KAAK,QAAQ,UAAU,KAAK;AAC/B,cAAM,UAAU,MAAM,YAAY,QAAQ,UAAU,GAAG;AACvD,cAAMC,QAAO,IAAI,KAAK;AACtB,QAAAA,MAAK,QAAQ,QAAQ;AACrB,eAAOA;AAAA,MACX;AAAA,IACJ;AACA,aAAS,MAAM;AACf,QAAM,OAAO;AAAA,MACT,YAAY;AAAA,MACZ,UAAU,WAAS,iBAAiB;AAAA,MACpC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ,KAAK,SAAS;AAClB,cAAM,UAAU,MAAM,aAAa,KAAK,OAAO;AAC/C,cAAM,WAAW,CAAC;AAClB,mBAAW,EAAE,IAAI,KAAK,QAAQ,OAAO;AACjC,cAAI,SAAS,SAAS,GAAG,GAAG;AACxB,gBAAI,SAAS,SAAS,IAAI,KAAK,GAAG;AAC9B,sBAAQ,iDAAiD,IAAI,OAAO;AAAA,YACxE,OACK;AACD,uBAAS,KAAK,IAAI,KAAK;AAAA,YAC3B;AAAA,UACJ;AAAA,QACJ;AACA,eAAO,OAAO,OAAO,IAAI,SAAS,GAAG,OAAO;AAAA,MAChD;AAAA,MACA,YAAY,CAAC,QAAQ,UAAU,QAAQ,SAAS,KAAK,QAAQ,UAAU,GAAG;AAAA,IAC9E;AAEA,YAAQ,WAAW;AACnB,YAAQ,OAAO;AAAA;AAAA;;;AC5Ef,IAAAC,gBAAA;AAAA;AAAA;AAEA,QAAI,SAAS;AAEb,aAAS,cAAc,EAAE,OAAO,OAAO,GAAG,KAAK;AAC3C,YAAM,UAAU,QAAQ,UAAU;AAClC,UAAI,UAAU,QAAQ,KAAK,KAAK,MAAM;AAClC,eAAO;AACX,aAAO,QAAQ,IAAI,QAAQ,UAAU,IAAI,QAAQ;AAAA,IACrD;AACA,QAAM,UAAU;AAAA,MACZ,UAAU,WAAS,UAAU;AAAA,MAC7B,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,IAAI,OAAO,OAAO,IAAI;AAAA,MACrC,WAAW;AAAA,IACf;AACA,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,UAAU;AAAA,MAC7B,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,IAAI,OAAO,OAAO,KAAK;AAAA,MACtC,WAAW;AAAA,IACf;AAEA,YAAQ,WAAW;AACnB,YAAQ,UAAU;AAAA;AAAA;;;AC5BlB,IAAAC,iBAAA;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,kBAAkB;AAEtB,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAC,QAAQ,IAAI,MAAM,EAAE,EAAE,YAAY,MAAM,QAC5C,MACA,IAAI,OAAO,MACP,OAAO,oBACP,OAAO;AAAA,MACjB,WAAW,gBAAgB;AAAA,IAC/B;AACA,QAAM,WAAW;AAAA,MACb,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,QAAQ,WAAW,IAAI,QAAQ,MAAM,EAAE,CAAC;AAAA,MAClD,UAAU,MAAM;AACZ,cAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,eAAO,SAAS,GAAG,IAAI,IAAI,cAAc,IAAI,gBAAgB,gBAAgB,IAAI;AAAA,MACrF;AAAA,IACJ;AACA,QAAM,QAAQ;AAAA,MACV,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,KAAK;AACT,cAAM,OAAO,IAAI,OAAO,OAAO,WAAW,IAAI,QAAQ,MAAM,EAAE,CAAC,CAAC;AAChE,cAAM,MAAM,IAAI,QAAQ,GAAG;AAC3B,YAAI,QAAQ,IAAI;AACZ,gBAAM,IAAI,IAAI,UAAU,MAAM,CAAC,EAAE,QAAQ,MAAM,EAAE;AACjD,cAAI,EAAE,EAAE,SAAS,OAAO;AACpB,iBAAK,oBAAoB,EAAE;AAAA,QACnC;AACA,eAAO;AAAA,MACX;AAAA,MACA,WAAW,gBAAgB;AAAA,IAC/B;AAEA,YAAQ,QAAQ;AAChB,YAAQ,WAAW;AACnB,YAAQ,WAAW;AAAA;AAAA;;;ACjDnB,IAAAC,eAAA;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAEtB,QAAM,cAAc,CAAC,UAAU,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAClF,aAAS,WAAW,KAAK,QAAQ,OAAO,EAAE,YAAY,GAAG;AACrD,YAAM,OAAO,IAAI;AACjB,UAAI,SAAS,OAAO,SAAS;AACzB,kBAAU;AACd,YAAM,IAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,EAAE;AAC5C,UAAI,aAAa;AACb,gBAAQ,OAAO;AAAA,UACX,KAAK;AACD,kBAAM,KAAK;AACX;AAAA,UACJ,KAAK;AACD,kBAAM,KAAK;AACX;AAAA,UACJ,KAAK;AACD,kBAAM,KAAK;AACX;AAAA,QACR;AACA,cAAMC,KAAI,OAAO,GAAG;AACpB,eAAO,SAAS,MAAM,OAAO,EAAE,IAAIA,KAAIA;AAAA,MAC3C;AACA,YAAM,IAAI,SAAS,KAAK,KAAK;AAC7B,aAAO,SAAS,MAAM,KAAK,IAAI;AAAA,IACnC;AACA,aAAS,aAAa,MAAM,OAAO,QAAQ;AACvC,YAAM,EAAE,MAAM,IAAI;AAClB,UAAI,YAAY,KAAK,GAAG;AACpB,cAAM,MAAM,MAAM,SAAS,KAAK;AAChC,eAAO,QAAQ,IAAI,MAAM,SAAS,IAAI,OAAO,CAAC,IAAI,SAAS;AAAA,MAC/D;AACA,aAAO,gBAAgB,gBAAgB,IAAI;AAAA,IAC/C;AACA,QAAM,SAAS;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,GAAG,GAAG;AAAA,MAC1D,WAAW,UAAQ,aAAa,MAAM,GAAG,IAAI;AAAA,IACjD;AACA,QAAM,SAAS;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,GAAG,GAAG;AAAA,MAC1D,WAAW,UAAQ,aAAa,MAAM,GAAG,GAAG;AAAA,IAChD;AACA,QAAM,MAAM;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,IAAI,GAAG;AAAA,MAC3D,WAAW,gBAAgB;AAAA,IAC/B;AACA,QAAM,SAAS;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,GAAG,IAAI,GAAG;AAAA,MAC3D,WAAW,UAAQ,aAAa,MAAM,IAAI,IAAI;AAAA,IAClD;AAEA,YAAQ,MAAM;AACd,YAAQ,SAAS;AACjB,YAAQ,SAAS;AACjB,YAAQ,SAAS;AAAA;AAAA;;;AC3EjB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,UAAU;AAEd,QAAM,UAAN,cAAsB,QAAQ,QAAQ;AAAA,MAClC,YAAY,QAAQ;AAChB,cAAM,MAAM;AACZ,aAAK,MAAM,QAAQ;AAAA,MACvB;AAAA,MACA,IAAI,KAAK;AACL,YAAI;AACJ,YAAI,SAAS,OAAO,GAAG;AACnB,iBAAO;AAAA,iBACF,OACL,OAAO,QAAQ,YACf,SAAS,OACT,WAAW,OACX,IAAI,UAAU;AACd,iBAAO,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA;AAElC,iBAAO,IAAI,KAAK,KAAK,KAAK,IAAI;AAClC,cAAM,OAAO,QAAQ,SAAS,KAAK,OAAO,KAAK,GAAG;AAClD,YAAI,CAAC;AACD,eAAK,MAAM,KAAK,IAAI;AAAA,MAC5B;AAAA,MAKA,IAAI,KAAK,UAAU;AACf,cAAM,OAAO,QAAQ,SAAS,KAAK,OAAO,GAAG;AAC7C,eAAO,CAAC,YAAY,SAAS,OAAO,IAAI,IAClC,SAAS,SAAS,KAAK,GAAG,IACtB,KAAK,IAAI,QACT,KAAK,MACT;AAAA,MACV;AAAA,MACA,IAAI,KAAK,OAAO;AACZ,YAAI,OAAO,UAAU;AACjB,gBAAM,IAAI,MAAM,iEAAiE,OAAO,OAAO;AACnG,cAAM,OAAO,QAAQ,SAAS,KAAK,OAAO,GAAG;AAC7C,YAAI,QAAQ,CAAC,OAAO;AAChB,eAAK,MAAM,OAAO,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC;AAAA,QACjD,WACS,CAAC,QAAQ,OAAO;AACrB,eAAK,MAAM,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,QACtC;AAAA,MACJ;AAAA,MACA,OAAO,GAAG,KAAK;AACX,eAAO,MAAM,OAAO,GAAG,KAAK,GAAG;AAAA,MACnC;AAAA,MACA,SAAS,KAAK,WAAW,aAAa;AAClC,YAAI,CAAC;AACD,iBAAO,KAAK,UAAU,IAAI;AAC9B,YAAI,KAAK,iBAAiB,IAAI;AAC1B,iBAAO,MAAM,SAAS,OAAO,OAAO,CAAC,GAAG,KAAK,EAAE,eAAe,KAAK,CAAC,GAAG,WAAW,WAAW;AAAA;AAE7F,gBAAM,IAAI,MAAM,qCAAqC;AAAA,MAC7D;AAAA,MACA,OAAO,KAAK,QAAQ,UAAU,KAAK;AAC/B,cAAM,EAAE,SAAS,IAAI;AACrB,cAAMC,OAAM,IAAI,KAAK,MAAM;AAC3B,YAAI,YAAY,OAAO,YAAY,OAAO,QAAQ;AAC9C,mBAAS,SAAS,UAAU;AACxB,gBAAI,OAAO,aAAa;AACpB,sBAAQ,SAAS,KAAK,UAAU,OAAO,KAAK;AAChD,YAAAA,KAAI,MAAM,KAAK,KAAK,WAAW,OAAO,MAAM,GAAG,CAAC;AAAA,UACpD;AACJ,eAAOA;AAAA,MACX;AAAA,IACJ;AACA,YAAQ,MAAM;AACd,QAAM,MAAM;AAAA,MACR,YAAY;AAAA,MACZ,UAAU,WAAS,iBAAiB;AAAA,MACpC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,KAAK;AAAA,MACL,YAAY,CAAC,QAAQ,UAAU,QAAQ,QAAQ,KAAK,QAAQ,UAAU,GAAG;AAAA,MACzE,QAAQ,KAAK,SAAS;AAClB,YAAI,SAAS,MAAM,GAAG,GAAG;AACrB,cAAI,IAAI,iBAAiB,IAAI;AACzB,mBAAO,OAAO,OAAO,IAAI,QAAQ,GAAG,GAAG;AAAA;AAEvC,oBAAQ,qCAAqC;AAAA,QACrD;AAEI,kBAAQ,iCAAiC;AAC7C,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,YAAQ,UAAU;AAClB,YAAQ,MAAM;AAAA;AAAA;;;AC/Fd;AAAA;AAAA;AAEA,QAAI,kBAAkB;AAGtB,aAAS,iBAAiB,KAAK,UAAU;AACrC,YAAM,OAAO,IAAI;AACjB,YAAM,QAAQ,SAAS,OAAO,SAAS,MAAM,IAAI,UAAU,CAAC,IAAI;AAChE,YAAM,MAAM,CAAC,MAAM,WAAW,OAAO,CAAC,IAAI,OAAO,CAAC;AAClD,YAAM,MAAM,MACP,QAAQ,MAAM,EAAE,EAChB,MAAM,GAAG,EACT,OAAO,CAACC,MAAK,MAAMA,OAAM,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACtD,aAAQ,SAAS,MAAM,IAAI,EAAE,IAAI,MAAM;AAAA,IAC3C;AAMA,aAAS,qBAAqB,MAAM;AAChC,UAAI,EAAE,MAAM,IAAI;AAChB,UAAI,MAAM,CAAC,MAAM;AACjB,UAAI,OAAO,UAAU;AACjB,cAAM,OAAK,OAAO,CAAC;AAAA,eACd,MAAM,KAAK,KAAK,CAAC,SAAS,KAAK;AACpC,eAAO,gBAAgB,gBAAgB,IAAI;AAC/C,UAAI,OAAO;AACX,UAAI,QAAQ,GAAG;AACX,eAAO;AACP,iBAAS,IAAI,EAAE;AAAA,MACnB;AACA,YAAM,MAAM,IAAI,EAAE;AAClB,YAAM,QAAQ,CAAC,QAAQ,GAAG;AAC1B,UAAI,QAAQ,IAAI;AACZ,cAAM,QAAQ,CAAC;AAAA,MACnB,OACK;AACD,iBAAS,QAAQ,MAAM,MAAM;AAC7B,cAAM,QAAQ,QAAQ,GAAG;AACzB,YAAI,SAAS,IAAI;AACb,mBAAS,QAAQ,MAAM,MAAM;AAC7B,gBAAM,QAAQ,KAAK;AAAA,QACvB;AAAA,MACJ;AACA,aAAQ,OACJ,MACK,IAAI,OAAK,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EACnC,KAAK,GAAG,EACR,QAAQ,cAAc,EAAE;AAAA,IAErC;AACA,QAAM,UAAU;AAAA,MACZ,UAAU,WAAS,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAAA,MACtE,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,CAAC,KAAK,UAAU,EAAE,YAAY,MAAM,iBAAiB,KAAK,WAAW;AAAA,MAC9E,WAAW;AAAA,IACf;AACA,QAAM,YAAY;AAAA,MACd,UAAU,WAAS,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,SAAO,iBAAiB,KAAK,KAAK;AAAA,MAC3C,WAAW;AAAA,IACf;AACA,QAAM,YAAY;AAAA,MACd,UAAU,WAAS,iBAAiB;AAAA,MACpC,SAAS;AAAA,MACT,KAAK;AAAA,MAIL,MAAM,OAAO,2JAKJ;AAAA,MACT,QAAQ,KAAK;AACT,cAAMC,SAAQ,IAAI,MAAM,UAAU,IAAI;AACtC,YAAI,CAACA;AACD,gBAAM,IAAI,MAAM,sDAAsD;AAC1E,cAAM,CAAC,EAAE,MAAM,OAAO,KAAK,MAAM,QAAQ,MAAM,IAAIA,OAAM,IAAI,MAAM;AACnE,cAAM,WAAWA,OAAM,KAAK,QAAQA,OAAM,KAAK,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI;AACrE,YAAI,OAAO,KAAK,IAAI,MAAM,QAAQ,GAAG,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ;AACvF,cAAM,KAAKA,OAAM;AACjB,YAAI,MAAM,OAAO,KAAK;AAClB,cAAI,IAAI,iBAAiB,IAAI,KAAK;AAClC,cAAI,KAAK,IAAI,CAAC,IAAI;AACd,iBAAK;AACT,kBAAQ,MAAQ;AAAA,QACpB;AACA,eAAO,IAAI,KAAK,IAAI;AAAA,MACxB;AAAA,MACA,WAAW,CAAC,EAAE,MAAM,MAAM,MAAM,YAAY,EAAE,QAAQ,uBAAuB,EAAE;AAAA,IACnF;AAEA,YAAQ,YAAY;AACpB,YAAQ,UAAU;AAClB,YAAQ,YAAY;AAAA;AAAA;;;ACxGpB,IAAAC,kBAAA;AAAA;AAAA;AAEA,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,SAAS;AACb,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,YAAY;AAEhB,QAAM,SAAS;AAAA,MACX,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,IACd;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACxCjB;AAAA;AAAA;AAEA,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,QAAQ;AACZ,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,MAAM;AACV,QAAI,YAAY;AAEhB,QAAM,UAAU,oBAAI,IAAI;AAAA,MACpB,CAAC,QAAQ,OAAO,MAAM;AAAA,MACtB,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,MAAM,CAAC;AAAA,MAC9C,CAAC,QAAQ,SAAS,MAAM;AAAA,MACxB,CAAC,UAAU,SAAS,MAAM;AAAA,MAC1B,CAAC,YAAY,SAAS,MAAM;AAAA,IAChC,CAAC;AACD,QAAM,aAAa;AAAA,MACf,QAAQ,OAAO;AAAA,MACf,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AAAA,MAChB,UAAU,MAAM;AAAA,MAChB,WAAW,UAAU;AAAA,MACrB,KAAK,IAAI;AAAA,MACT,QAAQ,IAAI;AAAA,MACZ,QAAQ,IAAI;AAAA,MACZ,SAAS,UAAU;AAAA,MACnB,KAAK,IAAI;AAAA,MACT,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,KAAK,IAAI;AAAA,MACT,KAAK,IAAI;AAAA,MACT,WAAW,UAAU;AAAA,IACzB;AACA,QAAM,gBAAgB;AAAA,MAClB,4BAA4B,OAAO;AAAA,MACnC,2BAA2B,MAAM;AAAA,MACjC,0BAA0B,KAAK;AAAA,MAC/B,2BAA2B,MAAM;AAAA,MACjC,yBAAyB,IAAI;AAAA,MAC7B,+BAA+B,UAAU;AAAA,IAC7C;AACA,aAAS,QAAQ,YAAY,YAAY,aAAa;AAClD,YAAM,aAAa,QAAQ,IAAI,UAAU;AACzC,UAAI,cAAc,CAAC,YAAY;AAC3B,eAAO,eAAe,CAAC,WAAW,SAAS,MAAM,KAAK,IAChD,WAAW,OAAO,MAAM,KAAK,IAC7B,WAAW,MAAM;AAAA,MAC3B;AACA,UAAI,OAAO;AACX,UAAI,CAAC,MAAM;AACP,YAAI,MAAM,QAAQ,UAAU;AACxB,iBAAO,CAAC;AAAA,aACP;AACD,gBAAM,OAAO,MAAM,KAAK,QAAQ,KAAK,CAAC,EACjC,OAAO,SAAO,QAAQ,QAAQ,EAC9B,IAAI,SAAO,KAAK,UAAU,GAAG,CAAC,EAC9B,KAAK,IAAI;AACd,gBAAM,IAAI,MAAM,mBAAmB,2BAA2B,iCAAiC;AAAA,QACnG;AAAA,MACJ;AACA,UAAI,MAAM,QAAQ,UAAU,GAAG;AAC3B,mBAAW,OAAO;AACd,iBAAO,KAAK,OAAO,GAAG;AAAA,MAC9B,WACS,OAAO,eAAe,YAAY;AACvC,eAAO,WAAW,KAAK,MAAM,CAAC;AAAA,MAClC;AACA,UAAI;AACA,eAAO,KAAK,OAAO,MAAM,KAAK;AAClC,aAAO,KAAK,OAAO,CAACC,OAAM,QAAQ;AAC9B,cAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,OAAO;AAC3D,YAAI,CAAC,QAAQ;AACT,gBAAM,UAAU,KAAK,UAAU,GAAG;AAClC,gBAAM,OAAO,OAAO,KAAK,UAAU,EAC9B,IAAI,SAAO,KAAK,UAAU,GAAG,CAAC,EAC9B,KAAK,IAAI;AACd,gBAAM,IAAI,MAAM,sBAAsB,uBAAuB,MAAM;AAAA,QACvE;AACA,YAAI,CAACA,MAAK,SAAS,MAAM;AACrB,UAAAA,MAAK,KAAK,MAAM;AACpB,eAAOA;AAAA,MACX,GAAG,CAAC,CAAC;AAAA,IACT;AAEA,YAAQ,gBAAgB;AACxB,YAAQ,UAAU;AAAA;AAAA;;;AClGlB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,MAAM;AACV,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,OAAO;AAEX,QAAM,sBAAsB,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI;AAC/E,QAAM,SAAN,MAAa;AAAA,MACT,YAAY,EAAE,QAAQ,YAAY,OAAO,kBAAkB,QAAQ,gBAAgB,iBAAiB,GAAG;AACnG,aAAK,SAAS,MAAM,QAAQ,MAAM,IAC5B,KAAK,QAAQ,QAAQ,QAAQ,IAC7B,SACI,KAAK,QAAQ,MAAM,MAAM,IACzB;AACV,aAAK,OAAQ,OAAO,WAAW,YAAY,UAAW;AACtD,aAAK,YAAY,mBAAmB,KAAK,gBAAgB,CAAC;AAC1D,aAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,MAAM,KAAK;AACrD,aAAK,kBAAkB,oBAAoB;AAC3C,eAAO,eAAe,MAAM,SAAS,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;AAC5D,eAAO,eAAe,MAAM,SAAS,QAAQ,EAAE,OAAO,OAAO,OAAO,CAAC;AACrE,eAAO,eAAe,MAAM,SAAS,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;AAE5D,aAAK,iBACD,OAAO,mBAAmB,aACpB,iBACA,mBAAmB,OACf,sBACA;AAAA,MAClB;AAAA,MACA,QAAQ;AACJ,cAAM,OAAO,OAAO,OAAO,OAAO,WAAW,OAAO,0BAA0B,IAAI,CAAC;AACnF,aAAK,OAAO,KAAK,KAAK,MAAM;AAC5B,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,YAAQ,SAAS;AAAA;AAAA;;;ACtCjB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,YAAY;AAChB,QAAI,mBAAmB;AAEvB,aAAS,kBAAkB,KAAK,SAAS;AANzC,UAAAC;AAOI,YAAMC,SAAQ,CAAC;AACf,UAAI,gBAAgB,QAAQ,eAAe;AAC3C,UAAI,QAAQ,eAAe,SAAS,IAAI,YAAY;AAChD,cAAM,MAAM,IAAI,WAAW,SAAS,GAAG;AACvC,YAAI,KAAK;AACL,UAAAA,OAAM,KAAK,GAAG;AACd,0BAAgB;AAAA,QACpB,WACS,IAAI,WAAW;AACpB,0BAAgB;AAAA,MACxB;AACA,UAAI;AACA,QAAAA,OAAM,KAAK,KAAK;AACpB,YAAM,MAAM,UAAU,uBAAuB,KAAK,OAAO;AACzD,YAAM,EAAE,cAAc,IAAI,IAAI;AAC9B,UAAI,IAAI,eAAe;AACnB,YAAIA,OAAM,WAAW;AACjB,UAAAA,OAAM,QAAQ,EAAE;AACpB,cAAM,KAAK,cAAc,IAAI,aAAa;AAC1C,QAAAA,OAAM,QAAQ,iBAAiB,cAAc,IAAI,EAAE,CAAC;AAAA,MACxD;AACA,UAAI,YAAY;AAChB,UAAI,iBAAiB;AACrB,UAAI,IAAI,UAAU;AACd,YAAI,SAAS,OAAO,IAAI,QAAQ,GAAG;AAC/B,cAAI,IAAI,SAAS,eAAe;AAC5B,YAAAA,OAAM,KAAK,EAAE;AACjB,cAAI,IAAI,SAAS,eAAe;AAC5B,kBAAM,KAAK,cAAc,IAAI,SAAS,aAAa;AACnD,YAAAA,OAAM,KAAK,iBAAiB,cAAc,IAAI,EAAE,CAAC;AAAA,UACrD;AAEA,cAAI,mBAAmB,CAAC,CAAC,IAAI;AAC7B,2BAAiB,IAAI,SAAS;AAAA,QAClC;AACA,cAAM,cAAc,iBAAiB,SAAY,MAAO,YAAY;AACpE,YAAI,OAAO,UAAU,UAAU,IAAI,UAAU,KAAK,MAAO,iBAAiB,MAAO,WAAW;AAC5F,YAAI;AACA,kBAAQ,iBAAiB,YAAY,MAAM,IAAI,cAAc,cAAc,CAAC;AAChF,aAAK,KAAK,OAAO,OAAO,KAAK,OAAO,QAChCA,OAAMA,OAAM,SAAS,OAAO,OAAO;AAGnC,UAAAA,OAAMA,OAAM,SAAS,KAAK,OAAO;AAAA,QACrC;AAEI,UAAAA,OAAM,KAAK,IAAI;AAAA,MACvB,OACK;AACD,QAAAA,OAAM,KAAK,UAAU,UAAU,IAAI,UAAU,GAAG,CAAC;AAAA,MACrD;AACA,WAAID,MAAA,IAAI,eAAJ,gBAAAA,IAAgB,QAAQ;AACxB,YAAI,IAAI,SAAS;AACb,gBAAM,KAAK,cAAc,IAAI,OAAO;AACpC,cAAI,GAAG,SAAS,IAAI,GAAG;AACnB,YAAAC,OAAM,KAAK,KAAK;AAChB,YAAAA,OAAM,KAAK,iBAAiB,cAAc,IAAI,EAAE,CAAC;AAAA,UACrD,OACK;AACD,YAAAA,OAAM,KAAK,OAAO,IAAI;AAAA,UAC1B;AAAA,QACJ,OACK;AACD,UAAAA,OAAM,KAAK,KAAK;AAAA,QACpB;AAAA,MACJ,OACK;AACD,YAAI,KAAK,IAAI;AACb,YAAI,MAAM;AACN,eAAK,GAAG,QAAQ,QAAQ,EAAE;AAC9B,YAAI,IAAI;AACJ,eAAK,CAAC,aAAa,mBAAmBA,OAAMA,OAAM,SAAS,OAAO;AAC9D,YAAAA,OAAM,KAAK,EAAE;AACjB,UAAAA,OAAM,KAAK,iBAAiB,cAAc,cAAc,EAAE,GAAG,EAAE,CAAC;AAAA,QACpE;AAAA,MACJ;AACA,aAAOA,OAAM,KAAK,IAAI,IAAI;AAAA,IAC9B;AAEA,YAAQ,oBAAoB;AAAA;AAAA;;;ACtF5B;AAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,aAAa;AACjB,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAI,oBAAoB;AACxB,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,aAAa;AACjB,QAAI,aAAa;AAEjB,QAAM,WAAN,MAAe;AAAA,MACX,YAAY,OAAO,UAAU,SAAS;AAElC,aAAK,gBAAgB;AAErB,aAAK,UAAU;AAEf,aAAK,SAAS,CAAC;AAEf,aAAK,WAAW,CAAC;AACjB,eAAO,eAAe,MAAM,SAAS,WAAW,EAAE,OAAO,SAAS,IAAI,CAAC;AACvE,YAAI,YAAY;AAChB,YAAI,OAAO,aAAa,cAAc,MAAM,QAAQ,QAAQ,GAAG;AAC3D,sBAAY;AAAA,QAChB,WACS,YAAY,UAAa,UAAU;AACxC,oBAAU;AACV,qBAAW;AAAA,QACf;AACA,cAAM,MAAM,OAAO,OAAO;AAAA,UACtB,aAAa;AAAA,UACb,kBAAkB;AAAA,UAClB,UAAU;AAAA,UACV,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,SAAS;AAAA,QACb,GAAG,OAAO;AACV,aAAK,UAAU;AACf,YAAI,EAAE,QAAQ,IAAI;AAClB,YAAI,mCAAS,aAAa;AACtB,eAAK,aAAa,QAAQ,YAAY,WAAW;AACjD,cAAI,KAAK,WAAW,KAAK;AACrB,sBAAU,KAAK,WAAW,KAAK;AAAA,QACvC;AAEI,eAAK,aAAa,IAAI,WAAW,WAAW,EAAE,QAAQ,CAAC;AAC3D,aAAK,UAAU,SAAS,OAAO;AAE/B,aAAK,WACD,UAAU,SAAY,OAAO,KAAK,WAAW,OAAO,WAAW,OAAO;AAAA,MAC9E;AAAA,MAMA,QAAQ;AACJ,cAAM,OAAO,OAAO,OAAO,SAAS,WAAW;AAAA,UAC3C,CAAC,SAAS,YAAY,EAAE,OAAO,SAAS,IAAI;AAAA,QAChD,CAAC;AACD,aAAK,gBAAgB,KAAK;AAC1B,aAAK,UAAU,KAAK;AACpB,aAAK,SAAS,KAAK,OAAO,MAAM;AAChC,aAAK,WAAW,KAAK,SAAS,MAAM;AACpC,aAAK,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO;AAC7C,YAAI,KAAK;AACL,eAAK,aAAa,KAAK,WAAW,MAAM;AAC5C,aAAK,SAAS,KAAK,OAAO,MAAM;AAEhC,aAAK,WAAW,SAAS,OAAO,KAAK,QAAQ,IACvC,KAAK,SAAS,MAAM,KAAK,MAAM,IAC/B,KAAK;AACX,YAAI,KAAK;AACL,eAAK,QAAQ,KAAK,MAAM,MAAM;AAClC,eAAO;AAAA,MACX;AAAA,MAEA,IAAI,OAAO;AACP,YAAI,iBAAiB,KAAK,QAAQ;AAC9B,eAAK,SAAS,IAAI,KAAK;AAAA,MAC/B;AAAA,MAEA,MAAMC,OAAM,OAAO;AACf,YAAI,iBAAiB,KAAK,QAAQ;AAC9B,eAAK,SAAS,MAAMA,OAAM,KAAK;AAAA,MACvC;AAAA,MAUA,YAAY,MAAM,MAAM;AACpB,YAAI,CAAC,KAAK,QAAQ;AACd,gBAAM,OAAO,QAAQ,YAAY,IAAI;AACrC,eAAK,SAED,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,QAAQ,cAAc,QAAQ,KAAK,IAAI,IAAI;AAAA,QAC7E;AACA,eAAO,IAAI,MAAM,MAAM,KAAK,MAAM;AAAA,MACtC;AAAA,MACA,WAAW,OAAO,UAAU,SAAS;AACjC,YAAI,YAAY;AAChB,YAAI,OAAO,aAAa,YAAY;AAChC,kBAAQ,SAAS,KAAK,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK;AAC9C,sBAAY;AAAA,QAChB,WACS,MAAM,QAAQ,QAAQ,GAAG;AAC9B,gBAAM,WAAW,CAAC,MAAM,OAAO,MAAM,YAAY,aAAa,UAAU,aAAa;AACrF,gBAAM,QAAQ,SAAS,OAAO,QAAQ,EAAE,IAAI,MAAM;AAClD,cAAI,MAAM,SAAS;AACf,uBAAW,SAAS,OAAO,KAAK;AACpC,sBAAY;AAAA,QAChB,WACS,YAAY,UAAa,UAAU;AACxC,oBAAU;AACV,qBAAW;AAAA,QACf;AACA,cAAM,EAAE,uBAAuB,cAAc,MAAM,eAAe,UAAU,IAAI,IAAI,WAAW,CAAC;AAChG,cAAM,EAAE,UAAU,YAAY,cAAc,IAAI,QAAQ;AAAA,UAAkB;AAAA,UAE1E,gBAAgB;AAAA,QAAG;AACnB,cAAM,MAAM;AAAA,UACR,uBAAuB,yBAAyB;AAAA,UAChD,eAAe,iBAAiB;AAAA,UAChC;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV,QAAQ,KAAK;AAAA,UACb;AAAA,QACJ;AACA,cAAM,OAAO,WAAW,WAAW,OAAO,KAAK,GAAG;AAClD,YAAI,QAAQ,SAAS,aAAa,IAAI;AAClC,eAAK,OAAO;AAChB,mBAAW;AACX,eAAO;AAAA,MACX;AAAA,MAKA,WAAW,KAAK,OAAO,UAAU,CAAC,GAAG;AACjC,cAAM,IAAI,KAAK,WAAW,KAAK,MAAM,OAAO;AAC5C,cAAM,IAAI,KAAK,WAAW,OAAO,MAAM,OAAO;AAC9C,eAAO,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,MAC7B;AAAA,MAKA,OAAO,KAAK;AACR,eAAO,iBAAiB,KAAK,QAAQ,IAAI,KAAK,SAAS,OAAO,GAAG,IAAI;AAAA,MACzE;AAAA,MAKA,SAASA,OAAM;AACX,YAAI,WAAW,YAAYA,KAAI,GAAG;AAC9B,cAAI,KAAK,YAAY;AACjB,mBAAO;AAEX,eAAK,WAAW;AAChB,iBAAO;AAAA,QACX;AACA,eAAO,iBAAiB,KAAK,QAAQ,IAC/B,KAAK,SAAS,SAASA,KAAI,IAC3B;AAAA,MACV;AAAA,MAMA,IAAI,KAAK,YAAY;AACjB,eAAO,SAAS,aAAa,KAAK,QAAQ,IACpC,KAAK,SAAS,IAAI,KAAK,UAAU,IACjC;AAAA,MACV;AAAA,MAMA,MAAMA,OAAM,YAAY;AACpB,YAAI,WAAW,YAAYA,KAAI;AAC3B,iBAAO,CAAC,cAAc,SAAS,SAAS,KAAK,QAAQ,IAC/C,KAAK,SAAS,QACd,KAAK;AACf,eAAO,SAAS,aAAa,KAAK,QAAQ,IACpC,KAAK,SAAS,MAAMA,OAAM,UAAU,IACpC;AAAA,MACV;AAAA,MAIA,IAAI,KAAK;AACL,eAAO,SAAS,aAAa,KAAK,QAAQ,IAAI,KAAK,SAAS,IAAI,GAAG,IAAI;AAAA,MAC3E;AAAA,MAIA,MAAMA,OAAM;AACR,YAAI,WAAW,YAAYA,KAAI;AAC3B,iBAAO,KAAK,aAAa;AAC7B,eAAO,SAAS,aAAa,KAAK,QAAQ,IAAI,KAAK,SAAS,MAAMA,KAAI,IAAI;AAAA,MAC9E;AAAA,MAKA,IAAI,KAAK,OAAO;AACZ,YAAI,KAAK,YAAY,MAAM;AAEvB,eAAK,WAAW,WAAW,mBAAmB,KAAK,QAAQ,CAAC,GAAG,GAAG,KAAK;AAAA,QAC3E,WACS,iBAAiB,KAAK,QAAQ,GAAG;AACtC,eAAK,SAAS,IAAI,KAAK,KAAK;AAAA,QAChC;AAAA,MACJ;AAAA,MAKA,MAAMA,OAAM,OAAO;AACf,YAAI,WAAW,YAAYA,KAAI,GAAG;AAE9B,eAAK,WAAW;AAAA,QACpB,WACS,KAAK,YAAY,MAAM;AAE5B,eAAK,WAAW,WAAW,mBAAmB,KAAK,QAAQ,MAAM,KAAKA,KAAI,GAAG,KAAK;AAAA,QACtF,WACS,iBAAiB,KAAK,QAAQ,GAAG;AACtC,eAAK,SAAS,MAAMA,OAAM,KAAK;AAAA,QACnC;AAAA,MACJ;AAAA,MAQA,UAAU,SAAS,UAAU,CAAC,GAAG;AAC7B,YAAI,OAAO,YAAY;AACnB,oBAAU,OAAO,OAAO;AAC5B,YAAI;AACJ,gBAAQ,SAAS;AAAA,UACb,KAAK;AACD,gBAAI,KAAK;AACL,mBAAK,WAAW,KAAK,UAAU;AAAA;AAE/B,mBAAK,aAAa,IAAI,WAAW,WAAW,EAAE,SAAS,MAAM,CAAC;AAClE,kBAAM,EAAE,kBAAkB,OAAO,QAAQ,WAAW;AACpD;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,KAAK;AACL,mBAAK,WAAW,KAAK,UAAU;AAAA;AAE/B,mBAAK,aAAa,IAAI,WAAW,WAAW,EAAE,QAAQ,CAAC;AAC3D,kBAAM,EAAE,kBAAkB,MAAM,QAAQ,OAAO;AAC/C;AAAA,UACJ,KAAK;AACD,gBAAI,KAAK;AACL,qBAAO,KAAK;AAChB,kBAAM;AACN;AAAA,UACJ,SAAS;AACL,kBAAM,KAAK,KAAK,UAAU,OAAO;AACjC,kBAAM,IAAI,MAAM,+DAA+D,IAAI;AAAA,UACvF;AAAA,QACJ;AAEA,YAAI,QAAQ,kBAAkB;AAC1B,eAAK,SAAS,QAAQ;AAAA,iBACjB;AACL,eAAK,SAAS,IAAI,OAAO,OAAO,OAAO,OAAO,KAAK,OAAO,CAAC;AAAA;AAE3D,gBAAM,IAAI,MAAM,qEAAqE;AAAA,MAC7F;AAAA,MAEA,KAAK,EAAE,MAAM,SAAS,UAAU,eAAe,UAAU,QAAQ,IAAI,CAAC,GAAG;AACrE,cAAM,MAAM;AAAA,UACR,SAAS,oBAAI,IAAI;AAAA,UACjB,KAAK;AAAA,UACL,MAAM,CAAC;AAAA,UACP,UAAU,aAAa;AAAA,UACvB,cAAc;AAAA,UACd,eAAe,OAAO,kBAAkB,WAAW,gBAAgB;AAAA,QACvE;AACA,cAAM,MAAM,KAAK,KAAK,KAAK,UAAU,WAAW,IAAI,GAAG;AACvD,YAAI,OAAO,aAAa;AACpB,qBAAW,EAAE,OAAO,KAAAC,KAAI,KAAK,IAAI,QAAQ,OAAO;AAC5C,qBAASA,MAAK,KAAK;AAC3B,eAAO,OAAO,YAAY,aACpB,aAAa,aAAa,SAAS,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,IACvD;AAAA,MACV;AAAA,MAOA,OAAO,SAAS,UAAU;AACtB,eAAO,KAAK,KAAK,EAAE,MAAM,MAAM,SAAS,UAAU,OAAO,SAAS,CAAC;AAAA,MACvE;AAAA,MAEA,SAAS,UAAU,CAAC,GAAG;AACnB,YAAI,KAAK,OAAO,SAAS;AACrB,gBAAM,IAAI,MAAM,4CAA4C;AAChE,YAAI,YAAY,YACX,CAAC,OAAO,UAAU,QAAQ,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,IAAI;AACpE,gBAAM,IAAI,KAAK,UAAU,QAAQ,MAAM;AACvC,gBAAM,IAAI,MAAM,mDAAmD,GAAG;AAAA,QAC1E;AACA,eAAO,kBAAkB,kBAAkB,MAAM,OAAO;AAAA,MAC5D;AAAA,IACJ;AACA,aAAS,iBAAiB,UAAU;AAChC,UAAI,SAAS,aAAa,QAAQ;AAC9B,eAAO;AACX,YAAM,IAAI,MAAM,iDAAiD;AAAA,IACrE;AAEA,YAAQ,WAAW;AAAA;AAAA;;;AChVnB;AAAA;AAAA;AAEA,QAAM,YAAN,cAAwB,MAAM;AAAA,MAC1B,YAAY,MAAM,KAAK,MAAM,SAAS;AAClC,cAAM;AACN,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,MAAM;AAAA,MACf;AAAA,IACJ;AACA,QAAM,iBAAN,cAA6B,UAAU;AAAA,MACnC,YAAY,KAAK,MAAM,SAAS;AAC5B,cAAM,kBAAkB,KAAK,MAAM,OAAO;AAAA,MAC9C;AAAA,IACJ;AACA,QAAM,cAAN,cAA0B,UAAU;AAAA,MAChC,YAAY,KAAK,MAAM,SAAS;AAC5B,cAAM,eAAe,KAAK,MAAM,OAAO;AAAA,MAC3C;AAAA,IACJ;AACA,QAAM,gBAAgB,CAAC,KAAK,OAAO,CAAC,UAAU;AAC1C,UAAI,MAAM,IAAI,OAAO;AACjB;AACJ,YAAM,UAAU,MAAM,IAAI,IAAI,SAAO,GAAG,QAAQ,GAAG,CAAC;AACpD,YAAM,EAAE,MAAM,IAAI,IAAI,MAAM,QAAQ;AACpC,YAAM,WAAW,YAAY,gBAAgB;AAC7C,UAAI,KAAK,MAAM;AACf,UAAI,UAAU,IACT,UAAU,GAAG,WAAW,OAAO,IAAI,GAAG,WAAW,KAAK,EACtD,QAAQ,YAAY,EAAE;AAE3B,UAAI,MAAM,MAAM,QAAQ,SAAS,IAAI;AACjC,cAAM,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,SAAS,EAAE;AACvD,kBAAU,WAAM,QAAQ,UAAU,SAAS;AAC3C,cAAM,YAAY;AAAA,MACtB;AACA,UAAI,QAAQ,SAAS;AACjB,kBAAU,QAAQ,UAAU,GAAG,EAAE,IAAI;AAEzC,UAAI,OAAO,KAAK,OAAO,KAAK,QAAQ,UAAU,GAAG,EAAE,CAAC,GAAG;AAEnD,YAAI,OAAO,IAAI,UAAU,GAAG,WAAW,OAAO,IAAI,GAAG,WAAW,OAAO,EAAE;AACzE,YAAI,KAAK,SAAS;AACd,iBAAO,KAAK,UAAU,GAAG,EAAE,IAAI;AACnC,kBAAU,OAAO;AAAA,MACrB;AACA,UAAI,OAAO,KAAK,OAAO,GAAG;AACtB,YAAI,QAAQ;AACZ,cAAM,MAAM,MAAM,QAAQ;AAC1B,YAAI,OAAO,IAAI,SAAS,QAAQ,IAAI,MAAM,KAAK;AAC3C,kBAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;AAAA,QACxD;AACA,cAAM,UAAU,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,KAAK;AACjD,cAAM,WAAW;AAAA;AAAA,EAAQ;AAAA,EAAY;AAAA;AAAA,MACzC;AAAA,IACJ;AAEA,YAAQ,YAAY;AACpB,YAAQ,iBAAiB;AACzB,YAAQ,cAAc;AACtB,YAAQ,gBAAgB;AAAA;AAAA;;;AC7DxB;AAAA;AAAA;AAEA,aAAS,aAAa,QAAQ,EAAE,MAAM,WAAW,MAAM,QAAQ,SAAS,cAAc,eAAe,GAAG;AACpG,UAAI,cAAc;AAClB,UAAI,YAAY;AAChB,UAAI,WAAW;AACf,UAAI,UAAU;AACd,UAAI,aAAa;AACjB,UAAI,aAAa;AACjB,UAAI,WAAW;AACf,UAAI,MAAM;AACV,UAAI,SAAS;AACb,UAAI,MAAM;AACV,UAAI,mBAAmB;AACvB,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,iBAAW,SAAS,QAAQ;AACxB,YAAI,UAAU;AACV,cAAI,MAAM,SAAS,WACf,MAAM,SAAS,aACf,MAAM,SAAS;AACf,oBAAQ,MAAM,QAAQ,gBAAgB,uEAAuE;AACjH,qBAAW;AAAA,QACf;AACA,YAAI,KAAK;AACL,cAAI,aAAa,MAAM,SAAS,aAAa,MAAM,SAAS,WAAW;AACnE,oBAAQ,KAAK,iBAAiB,qCAAqC;AAAA,UACvE;AACA,gBAAM;AAAA,QACV;AACA,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AAID,gBAAI,CAAC,SACA,cAAc,gBAAe,6BAAM,UAAS,sBAC7C,MAAM,OAAO,SAAS,GAAI,GAAG;AAC7B,oBAAM;AAAA,YACV;AACA,uBAAW;AACX;AAAA,UACJ,KAAK,WAAW;AACZ,gBAAI,CAAC;AACD,sBAAQ,OAAO,gBAAgB,wEAAwE;AAC3G,kBAAM,KAAK,MAAM,OAAO,UAAU,CAAC,KAAK;AACxC,gBAAI,CAAC;AACD,wBAAU;AAAA;AAEV,yBAAW,aAAa;AAC5B,yBAAa;AACb,wBAAY;AACZ;AAAA,UACJ;AAAA,UACA,KAAK;AACD,gBAAI,WAAW;AACX,kBAAI;AACA,2BAAW,MAAM;AAAA,uBACZ,CAAC,SAAS,cAAc;AAC7B,8BAAc;AAAA,YACtB;AAEI,4BAAc,MAAM;AACxB,wBAAY;AACZ,yBAAa;AACb,gBAAI,UAAU;AACV,iCAAmB;AACvB,uBAAW;AACX;AAAA,UACJ,KAAK;AACD,gBAAI;AACA,sBAAQ,OAAO,oBAAoB,oCAAoC;AAC3E,gBAAI,MAAM,OAAO,SAAS,GAAG;AACzB,sBAAQ,MAAM,SAAS,MAAM,OAAO,SAAS,GAAG,aAAa,mCAAmC,IAAI;AACxG,qBAAS;AACT,gBAAI,UAAU;AACV,sBAAQ,MAAM;AAClB,wBAAY;AACZ,uBAAW;AACX,uBAAW;AACX;AAAA,UACJ,KAAK,OAAO;AACR,gBAAI;AACA,sBAAQ,OAAO,iBAAiB,iCAAiC;AACrE,kBAAM;AACN,gBAAI,UAAU;AACV,sBAAQ,MAAM;AAClB,wBAAY;AACZ,uBAAW;AACX,uBAAW;AACX;AAAA,UACJ;AAAA,UACA,KAAK;AAED,gBAAI,UAAU;AACV,sBAAQ,OAAO,kBAAkB,sCAAsC,MAAM,kBAAkB;AACnG,gBAAI;AACA,sBAAQ,OAAO,oBAAoB,cAAc,MAAM,aAAa,QAAQ,cAAc;AAC9F,oBAAQ;AACR,wBACI,cAAc,kBAAkB,cAAc;AAClD,uBAAW;AACX;AAAA,UACJ,KAAK;AACD,gBAAI,MAAM;AACN,kBAAI;AACA,wBAAQ,OAAO,oBAAoB,mBAAmB,MAAM;AAChE,sBAAQ;AACR,0BAAY;AACZ,yBAAW;AACX;AAAA,YACJ;AAAA,UAEJ;AACI,oBAAQ,OAAO,oBAAoB,cAAc,MAAM,YAAY;AACnE,wBAAY;AACZ,uBAAW;AAAA,QACnB;AAAA,MACJ;AACA,YAAM,OAAO,OAAO,OAAO,SAAS;AACpC,YAAM,MAAM,OAAO,KAAK,SAAS,KAAK,OAAO,SAAS;AACtD,UAAI,YACA,QACA,KAAK,SAAS,WACd,KAAK,SAAS,aACd,KAAK,SAAS,YACb,KAAK,SAAS,YAAY,KAAK,WAAW,KAAK;AAChD,gBAAQ,KAAK,QAAQ,gBAAgB,uEAAuE;AAAA,MAChH;AACA,UAAI,QACE,aAAa,IAAI,UAAU,iBACzB,6BAAM,UAAS,gBACf,6BAAM,UAAS;AACnB,gBAAQ,KAAK,iBAAiB,qCAAqC;AACvE,aAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,SAAS;AAAA,MACpB;AAAA,IACJ;AAEA,YAAQ,eAAe;AAAA;AAAA;;;ACrJvB;AAAA;AAAA;AAEA,aAAS,gBAAgB,KAAK;AAC1B,UAAI,CAAC;AACD,eAAO;AACX,cAAQ,IAAI,MAAM;AAAA,QACd,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,cAAI,IAAI,OAAO,SAAS,IAAI;AACxB,mBAAO;AACX,cAAI,IAAI;AACJ,uBAAW,MAAM,IAAI;AACjB,kBAAI,GAAG,SAAS;AACZ,uBAAO;AAAA;AACnB,iBAAO;AAAA,QACX,KAAK;AACD,qBAAW,MAAM,IAAI,OAAO;AACxB,uBAAW,MAAM,GAAG;AAChB,kBAAI,GAAG,SAAS;AACZ,uBAAO;AACf,gBAAI,GAAG;AACH,yBAAW,MAAM,GAAG;AAChB,oBAAI,GAAG,SAAS;AACZ,yBAAO;AAAA;AACnB,gBAAI,gBAAgB,GAAG,GAAG,KAAK,gBAAgB,GAAG,KAAK;AACnD,qBAAO;AAAA,UACf;AACA,iBAAO;AAAA,QACX;AACI,iBAAO;AAAA,MACf;AAAA,IACJ;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;ACnC1B;AAAA;AAAA;AAEA,QAAI,sBAAsB;AAE1B,aAAS,gBAAgB,QAAQ,IAAI,SAAS;AAC1C,WAAI,yBAAI,UAAS,mBAAmB;AAChC,cAAM,MAAM,GAAG,IAAI;AACnB,YAAI,IAAI,WAAW,WACd,IAAI,WAAW,OAAO,IAAI,WAAW,QACtC,oBAAoB,gBAAgB,EAAE,GAAG;AACzC,gBAAM,MAAM;AACZ,kBAAQ,KAAK,cAAc,KAAK,IAAI;AAAA,QACxC;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;AChB1B;AAAA;AAAA;AAEA,QAAI,WAAW;AAEf,aAAS,YAAY,KAAK,OAAO,QAAQ;AACrC,YAAM,EAAE,WAAW,IAAI,IAAI;AAC3B,UAAI,eAAe;AACf,eAAO;AACX,YAAM,UAAU,OAAO,eAAe,aAChC,aACA,CAAC,GAAG,MAAM,MAAM,KAAM,SAAS,SAAS,CAAC,KAAK,SAAS,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE;AAC1F,aAAO,MAAM,KAAK,UAAQ,QAAQ,KAAK,KAAK,MAAM,CAAC;AAAA,IACvD;AAEA,YAAQ,cAAc;AAAA;AAAA;;;ACdtB;AAAA;AAAA;AAEA,QAAI,OAAO;AACX,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,sBAAsB;AAC1B,QAAI,sBAAsB;AAC1B,QAAI,kBAAkB;AAEtB,QAAM,cAAc;AACpB,aAAS,gBAAgB,EAAE,aAAa,iBAAiB,GAAG,KAAK,IAAI,SAAS,KAAK;AAVnF,UAAAC;AAWI,YAAM,aAAY,2BAAK,cAAa,QAAQ;AAC5C,YAAM,MAAM,IAAI,UAAU,IAAI,MAAM;AACpC,UAAI,IAAI;AACJ,YAAI,SAAS;AACjB,UAAI,SAAS,GAAG;AAChB,UAAI,aAAa;AACjB,iBAAW,YAAY,GAAG,OAAO;AAC7B,cAAM,EAAE,OAAO,KAAK,KAAAC,MAAK,MAAM,IAAI;AAEnC,cAAM,WAAW,aAAa,aAAa,OAAO;AAAA,UAC9C,WAAW;AAAA,UACX,MAAM,QAAOA,QAAA,gBAAAA,KAAM;AAAA,UACnB;AAAA,UACA;AAAA,UACA,cAAc,GAAG;AAAA,UACjB,gBAAgB;AAAA,QACpB,CAAC;AACD,cAAM,cAAc,CAAC,SAAS;AAC9B,YAAI,aAAa;AACb,cAAI,KAAK;AACL,gBAAI,IAAI,SAAS;AACb,sBAAQ,QAAQ,yBAAyB,yDAAyD;AAAA,qBAC7F,YAAY,OAAO,IAAI,WAAW,GAAG;AAC1C,sBAAQ,QAAQ,cAAc,WAAW;AAAA,UACjD;AACA,cAAI,CAAC,SAAS,UAAU,CAAC,SAAS,OAAO,CAACA,MAAK;AAC3C,yBAAa,SAAS;AACtB,gBAAI,SAAS,SAAS;AAClB,kBAAI,IAAI;AACJ,oBAAI,WAAW,OAAO,SAAS;AAAA;AAE/B,oBAAI,UAAU,SAAS;AAAA,YAC/B;AACA;AAAA,UACJ;AACA,cAAI,SAAS,oBAAoB,oBAAoB,gBAAgB,GAAG,GAAG;AACvE,oBAAQ,OAAO,MAAM,MAAM,SAAS,IAAI,0BAA0B,2CAA2C;AAAA,UACjH;AAAA,QACJ,aACSD,MAAA,SAAS,UAAT,gBAAAA,IAAgB,YAAW,GAAG,QAAQ;AAC3C,kBAAQ,QAAQ,cAAc,WAAW;AAAA,QAC7C;AAEA,YAAI,QAAQ;AACZ,cAAM,WAAW,SAAS;AAC1B,cAAM,UAAU,MACV,YAAY,KAAK,KAAK,UAAU,OAAO,IACvC,iBAAiB,KAAK,UAAU,OAAO,MAAM,UAAU,OAAO;AACpE,YAAI,IAAI,OAAO;AACX,8BAAoB,gBAAgB,GAAG,QAAQ,KAAK,OAAO;AAC/D,YAAI,QAAQ;AACZ,YAAI,gBAAgB,YAAY,KAAK,IAAI,OAAO,OAAO;AACnD,kBAAQ,UAAU,iBAAiB,yBAAyB;AAEhE,cAAM,aAAa,aAAa,aAAaC,QAAO,CAAC,GAAG;AAAA,UACpD,WAAW;AAAA,UACX,MAAM;AAAA,UACN,QAAQ,QAAQ,MAAM;AAAA,UACtB;AAAA,UACA,cAAc,GAAG;AAAA,UACjB,gBAAgB,CAAC,OAAO,IAAI,SAAS;AAAA,QACzC,CAAC;AACD,iBAAS,WAAW;AACpB,YAAI,WAAW,OAAO;AAClB,cAAI,aAAa;AACb,iBAAI,+BAAO,UAAS,eAAe,CAAC,WAAW;AAC3C,sBAAQ,QAAQ,yBAAyB,qDAAqD;AAClG,gBAAI,IAAI,QAAQ,UACZ,SAAS,QAAQ,WAAW,MAAM,SAAS;AAC3C,sBAAQ,QAAQ,OAAO,uBAAuB,6FAA6F;AAAA,UACnJ;AAEA,gBAAM,YAAY,QACZ,YAAY,KAAK,OAAO,YAAY,OAAO,IAC3C,iBAAiB,KAAK,QAAQA,MAAK,MAAM,YAAY,OAAO;AAClE,cAAI,IAAI,OAAO;AACX,gCAAoB,gBAAgB,GAAG,QAAQ,OAAO,OAAO;AACjE,mBAAS,UAAU,MAAM;AACzB,gBAAM,OAAO,IAAI,KAAK,KAAK,SAAS,SAAS;AAC7C,cAAI,IAAI,QAAQ;AACZ,iBAAK,WAAW;AACpB,cAAI,MAAM,KAAK,IAAI;AAAA,QACvB,OACK;AAED,cAAI;AACA,oBAAQ,QAAQ,OAAO,gBAAgB,qDAAqD;AAChG,cAAI,WAAW,SAAS;AACpB,gBAAI,QAAQ;AACR,sBAAQ,WAAW,OAAO,WAAW;AAAA;AAErC,sBAAQ,UAAU,WAAW;AAAA,UACrC;AACA,gBAAM,OAAO,IAAI,KAAK,KAAK,OAAO;AAClC,cAAI,IAAI,QAAQ;AACZ,iBAAK,WAAW;AACpB,cAAI,MAAM,KAAK,IAAI;AAAA,QACvB;AAAA,MACJ;AACA,UAAI,cAAc,aAAa;AAC3B,gBAAQ,YAAY,cAAc,mCAAmC;AACzE,UAAI,QAAQ,CAAC,GAAG,QAAQ,QAAQ,cAAc,MAAM;AACpD,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;ACpH1B;AAAA;AAAA;AAEA,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,sBAAsB;AAE1B,aAAS,gBAAgB,EAAE,aAAa,iBAAiB,GAAG,KAAK,IAAI,SAAS,KAAK;AAC/E,YAAM,aAAY,2BAAK,cAAa,QAAQ;AAC5C,YAAM,MAAM,IAAI,UAAU,IAAI,MAAM;AACpC,UAAI,IAAI;AACJ,YAAI,SAAS;AACjB,UAAI,IAAI;AACJ,YAAI,QAAQ;AAChB,UAAI,SAAS,GAAG;AAChB,UAAI,aAAa;AACjB,iBAAW,EAAE,OAAO,MAAM,KAAK,GAAG,OAAO;AACrC,cAAM,QAAQ,aAAa,aAAa,OAAO;AAAA,UAC3C,WAAW;AAAA,UACX,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,cAAc,GAAG;AAAA,UACjB,gBAAgB;AAAA,QACpB,CAAC;AACD,YAAI,CAAC,MAAM,OAAO;AACd,cAAI,MAAM,UAAU,MAAM,OAAO,OAAO;AACpC,gBAAI,SAAS,MAAM,SAAS;AACxB,sBAAQ,MAAM,KAAK,cAAc,kDAAkD;AAAA;AAEnF,sBAAQ,QAAQ,gBAAgB,mCAAmC;AAAA,UAC3E,OACK;AACD,yBAAa,MAAM;AACnB,gBAAI,MAAM;AACN,kBAAI,UAAU,MAAM;AACxB;AAAA,UACJ;AAAA,QACJ;AACA,cAAM,OAAO,QACP,YAAY,KAAK,OAAO,OAAO,OAAO,IACtC,iBAAiB,KAAK,MAAM,KAAK,OAAO,MAAM,OAAO,OAAO;AAClE,YAAI,IAAI,OAAO;AACX,8BAAoB,gBAAgB,GAAG,QAAQ,OAAO,OAAO;AACjE,iBAAS,KAAK,MAAM;AACpB,YAAI,MAAM,KAAK,IAAI;AAAA,MACvB;AACA,UAAI,QAAQ,CAAC,GAAG,QAAQ,QAAQ,cAAc,MAAM;AACpD,aAAO;AAAA,IACX;AAEA,YAAQ,kBAAkB;AAAA;AAAA;;;AClD1B;AAAA;AAAA;AAEA,aAAS,WAAW,KAAK,QAAQ,UAAU,SAAS;AAChD,UAAI,UAAU;AACd,UAAI,KAAK;AACL,YAAI,WAAW;AACf,YAAIC,OAAM;AACV,mBAAW,SAAS,KAAK;AACrB,gBAAM,EAAE,QAAQ,KAAK,IAAI;AACzB,kBAAQ,MAAM;AAAA,YACV,KAAK;AACD,yBAAW;AACX;AAAA,YACJ,KAAK,WAAW;AACZ,kBAAI,YAAY,CAAC;AACb,wBAAQ,OAAO,gBAAgB,wEAAwE;AAC3G,oBAAM,KAAK,OAAO,UAAU,CAAC,KAAK;AAClC,kBAAI,CAAC;AACD,0BAAU;AAAA;AAEV,2BAAWA,OAAM;AACrB,cAAAA,OAAM;AACN;AAAA,YACJ;AAAA,YACA,KAAK;AACD,kBAAI;AACA,gBAAAA,QAAO;AACX,yBAAW;AACX;AAAA,YACJ;AACI,sBAAQ,OAAO,oBAAoB,cAAc,kBAAkB;AAAA,UAC3E;AACA,oBAAU,OAAO;AAAA,QACrB;AAAA,MACJ;AACA,aAAO,EAAE,SAAS,OAAO;AAAA,IAC7B;AAEA,YAAQ,aAAa;AAAA;AAAA;;;ACtCrB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,aAAa;AACjB,QAAI,eAAe;AACnB,QAAI,sBAAsB;AAC1B,QAAI,kBAAkB;AAEtB,QAAM,WAAW;AACjB,QAAM,UAAU,CAAC,UAAU,UAAU,MAAM,SAAS,eAAe,MAAM,SAAS;AAClF,aAAS,sBAAsB,EAAE,aAAa,iBAAiB,GAAG,KAAK,IAAI,SAAS,KAAK;AACrF,YAAM,QAAQ,GAAG,MAAM,WAAW;AAClC,YAAM,SAAS,QAAQ,aAAa;AACpC,YAAM,aAAa,2BAAK,eAAc,QAAQ,QAAQ,UAAU,QAAQ;AACxE,YAAM,OAAO,IAAI,UAAU,IAAI,MAAM;AACrC,WAAK,OAAO;AACZ,YAAM,SAAS,IAAI;AACnB,UAAI;AACA,YAAI,SAAS;AACjB,UAAI,IAAI;AACJ,YAAI,QAAQ;AAChB,UAAI,SAAS,GAAG,SAAS,GAAG,MAAM,OAAO;AACzC,eAAS,IAAI,GAAG,IAAI,GAAG,MAAM,QAAQ,EAAE,GAAG;AACtC,cAAM,WAAW,GAAG,MAAM;AAC1B,cAAM,EAAE,OAAO,KAAK,KAAAC,MAAK,MAAM,IAAI;AACnC,cAAM,QAAQ,aAAa,aAAa,OAAO;AAAA,UAC3C,MAAM;AAAA,UACN,WAAW;AAAA,UACX,MAAM,QAAOA,QAAA,gBAAAA,KAAM;AAAA,UACnB;AAAA,UACA;AAAA,UACA,cAAc,GAAG;AAAA,UACjB,gBAAgB;AAAA,QACpB,CAAC;AACD,YAAI,CAAC,MAAM,OAAO;AACd,cAAI,CAAC,MAAM,UAAU,CAAC,MAAM,OAAO,CAACA,QAAO,CAAC,OAAO;AAC/C,gBAAI,MAAM,KAAK,MAAM;AACjB,sBAAQ,MAAM,OAAO,oBAAoB,mBAAmB,QAAQ;AAAA,qBAC/D,IAAI,GAAG,MAAM,SAAS;AAC3B,sBAAQ,MAAM,OAAO,oBAAoB,4BAA4B,QAAQ;AACjF,gBAAI,MAAM,SAAS;AACf,kBAAI,KAAK;AACL,qBAAK,WAAW,OAAO,MAAM;AAAA;AAE7B,qBAAK,UAAU,MAAM;AAAA,YAC7B;AACA,qBAAS,MAAM;AACf;AAAA,UACJ;AACA,cAAI,CAAC,SAAS,IAAI,QAAQ,UAAU,oBAAoB,gBAAgB,GAAG;AACvE;AAAA,cAAQ;AAAA,cACR;AAAA,cAA0B;AAAA,YAAkE;AAAA,QACpG;AACA,YAAI,MAAM,GAAG;AACT,cAAI,MAAM;AACN,oBAAQ,MAAM,OAAO,oBAAoB,mBAAmB,QAAQ;AAAA,QAC5E,OACK;AACD,cAAI,CAAC,MAAM;AACP,oBAAQ,MAAM,OAAO,gBAAgB,qBAAqB,cAAc;AAC5E,cAAI,MAAM,SAAS;AACf,gBAAI,kBAAkB;AACtB;AAAM,yBAAW,MAAM,OAAO;AAC1B,wBAAQ,GAAG,MAAM;AAAA,kBACb,KAAK;AAAA,kBACL,KAAK;AACD;AAAA,kBACJ,KAAK;AACD,sCAAkB,GAAG,OAAO,UAAU,CAAC;AACvC,0BAAM;AAAA,kBACV;AACI,0BAAM;AAAA,gBACd;AAAA,cACJ;AACA,gBAAI,iBAAiB;AACjB,kBAAI,OAAO,KAAK,MAAM,KAAK,MAAM,SAAS;AAC1C,kBAAI,SAAS,OAAO,IAAI;AACpB,uBAAO,KAAK,SAAS,KAAK;AAC9B,kBAAI,KAAK;AACL,qBAAK,WAAW,OAAO;AAAA;AAEvB,qBAAK,UAAU;AACnB,oBAAM,UAAU,MAAM,QAAQ,UAAU,gBAAgB,SAAS,CAAC;AAAA,YACtE;AAAA,UACJ;AAAA,QACJ;AACA,YAAI,CAAC,SAAS,CAACA,QAAO,CAAC,MAAM,OAAO;AAGhC,gBAAM,YAAY,QACZ,YAAY,KAAK,OAAO,OAAO,OAAO,IACtC,iBAAiB,KAAK,MAAM,KAAKA,MAAK,MAAM,OAAO,OAAO;AAChE,eAAK,MAAM,KAAK,SAAS;AACzB,mBAAS,UAAU,MAAM;AACzB,cAAI,QAAQ,KAAK;AACb,oBAAQ,UAAU,OAAO,iBAAiB,QAAQ;AAAA,QAC1D,OACK;AAGD,cAAI,QAAQ;AACZ,gBAAM,WAAW,MAAM;AACvB,gBAAM,UAAU,MACV,YAAY,KAAK,KAAK,OAAO,OAAO,IACpC,iBAAiB,KAAK,UAAU,OAAO,MAAM,OAAO,OAAO;AACjE,cAAI,QAAQ,GAAG;AACX,oBAAQ,QAAQ,OAAO,iBAAiB,QAAQ;AACpD,cAAI,QAAQ;AAEZ,gBAAM,aAAa,aAAa,aAAaA,QAAO,CAAC,GAAG;AAAA,YACpD,MAAM;AAAA,YACN,WAAW;AAAA,YACX,MAAM;AAAA,YACN,QAAQ,QAAQ,MAAM;AAAA,YACtB;AAAA,YACA,cAAc,GAAG;AAAA,YACjB,gBAAgB;AAAA,UACpB,CAAC;AACD,cAAI,WAAW,OAAO;AAClB,gBAAI,CAAC,SAAS,CAAC,MAAM,SAAS,IAAI,QAAQ,QAAQ;AAC9C,kBAAIA;AACA,2BAAW,MAAMA,MAAK;AAClB,sBAAI,OAAO,WAAW;AAClB;AACJ,sBAAI,GAAG,SAAS,WAAW;AACvB,4BAAQ,IAAI,0BAA0B,kEAAkE;AACxG;AAAA,kBACJ;AAAA,gBACJ;AACJ,kBAAI,MAAM,QAAQ,WAAW,MAAM,SAAS;AACxC,wBAAQ,WAAW,OAAO,uBAAuB,6FAA6F;AAAA,YACtJ;AAAA,UACJ,WACS,OAAO;AACZ,gBAAI,YAAY,SAAS,MAAM,UAAU,MAAM,OAAO,OAAO;AACzD,sBAAQ,OAAO,gBAAgB,4BAA4B,QAAQ;AAAA;AAEnE,sBAAQ,WAAW,OAAO,gBAAgB,0BAA0B,cAAc;AAAA,UAC1F;AAEA,gBAAM,YAAY,QACZ,YAAY,KAAK,OAAO,YAAY,OAAO,IAC3C,WAAW,QACP,iBAAiB,KAAK,WAAW,KAAKA,MAAK,MAAM,YAAY,OAAO,IACpE;AACV,cAAI,WAAW;AACX,gBAAI,QAAQ,KAAK;AACb,sBAAQ,UAAU,OAAO,iBAAiB,QAAQ;AAAA,UAC1D,WACS,WAAW,SAAS;AACzB,gBAAI,QAAQ;AACR,sBAAQ,WAAW,OAAO,WAAW;AAAA;AAErC,sBAAQ,UAAU,WAAW;AAAA,UACrC;AACA,gBAAM,OAAO,IAAI,KAAK,KAAK,SAAS,SAAS;AAC7C,cAAI,IAAI,QAAQ;AACZ,iBAAK,WAAW;AACpB,cAAI,OAAO;AACP,kBAAM,MAAM;AACZ,gBAAI,gBAAgB,YAAY,KAAK,IAAI,OAAO,OAAO;AACnD,sBAAQ,UAAU,iBAAiB,yBAAyB;AAChE,gBAAI,MAAM,KAAK,IAAI;AAAA,UACvB,OACK;AACD,kBAAM,MAAM,IAAI,QAAQ,QAAQ,IAAI,MAAM;AAC1C,gBAAI,OAAO;AACX,gBAAI,MAAM,KAAK,IAAI;AACnB,kBAAM,YAAY,aAAa,SAAS;AACxC,gBAAI,QAAQ,CAAC,QAAQ,MAAM,IAAI,SAAS,IAAI,SAAS,EAAE;AACvD,iBAAK,MAAM,KAAK,GAAG;AAAA,UACvB;AACA,mBAAS,YAAY,UAAU,MAAM,KAAK,WAAW;AAAA,QACzD;AAAA,MACJ;AACA,YAAM,cAAc,QAAQ,MAAM;AAClC,YAAM,CAAC,OAAO,EAAE,IAAI,GAAG;AACvB,UAAI,QAAQ;AACZ,UAAI,MAAM,GAAG,WAAW;AACpB,gBAAQ,GAAG,SAAS,GAAG,OAAO;AAAA,WAC7B;AACD,cAAM,OAAO,OAAO,GAAG,YAAY,IAAI,OAAO,UAAU,CAAC;AACzD,cAAM,MAAM,SACN,GAAG,wBAAwB,gBAC3B,GAAG,yEAAyE;AAClF,gBAAQ,QAAQ,SAAS,iBAAiB,cAAc,GAAG;AAC3D,YAAI,MAAM,GAAG,OAAO,WAAW;AAC3B,aAAG,QAAQ,EAAE;AAAA,MACrB;AACA,UAAI,GAAG,SAAS,GAAG;AACf,cAAM,MAAM,WAAW,WAAW,IAAI,OAAO,IAAI,QAAQ,QAAQ,OAAO;AACxE,YAAI,IAAI,SAAS;AACb,cAAI,KAAK;AACL,iBAAK,WAAW,OAAO,IAAI;AAAA;AAE3B,iBAAK,UAAU,IAAI;AAAA,QAC3B;AACA,aAAK,QAAQ,CAAC,GAAG,QAAQ,OAAO,IAAI,MAAM;AAAA,MAC9C,OACK;AACD,aAAK,QAAQ,CAAC,GAAG,QAAQ,OAAO,KAAK;AAAA,MACzC;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,wBAAwB;AAAA;AAAA;;;AChNhC;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,kBAAkB;AACtB,QAAI,kBAAkB;AACtB,QAAI,wBAAwB;AAE5B,aAAS,kBAAkB,IAAI,KAAK,OAAO,SAAS,SAAS,KAAK;AAC9D,YAAM,OAAO,MAAM,SAAS,cACtB,gBAAgB,gBAAgB,IAAI,KAAK,OAAO,SAAS,GAAG,IAC5D,MAAM,SAAS,cACX,gBAAgB,gBAAgB,IAAI,KAAK,OAAO,SAAS,GAAG,IAC5D,sBAAsB,sBAAsB,IAAI,KAAK,OAAO,SAAS,GAAG;AAClF,YAAM,OAAO,KAAK;AAGlB,UAAI,YAAY,OAAO,YAAY,KAAK,SAAS;AAC7C,aAAK,MAAM,KAAK;AAChB,eAAO;AAAA,MACX;AACA,UAAI;AACA,aAAK,MAAM;AACf,aAAO;AAAA,IACX;AACA,aAAS,kBAAkB,IAAI,KAAK,OAAO,OAAO,SAAS;AA3B3D,UAAAC;AA4BI,YAAM,WAAW,MAAM;AACvB,YAAM,UAAU,CAAC,WACX,OACA,IAAI,WAAW,QAAQ,SAAS,QAAQ,SAAO,QAAQ,UAAU,sBAAsB,GAAG,CAAC;AACjG,UAAI,MAAM,SAAS,aAAa;AAC5B,cAAM,EAAE,QAAQ,kBAAkB,GAAG,IAAI;AACzC,cAAM,WAAW,UAAU,WACrB,OAAO,SAAS,SAAS,SACrB,SACA,WACH,UAAU;AACjB,YAAI,aAAa,CAAC,MAAM,GAAG,SAAS,SAAS,SAAS;AAClD,gBAAM,UAAU;AAChB,kBAAQ,UAAU,gBAAgB,OAAO;AAAA,QAC7C;AAAA,MACJ;AACA,YAAM,UAAU,MAAM,SAAS,cACzB,QACA,MAAM,SAAS,cACX,QACA,MAAM,MAAM,WAAW,MACnB,QACA;AAGd,UAAI,CAAC,YACD,CAAC,WACD,YAAY,OACX,YAAY,QAAQ,QAAQ,WAAW,YAAY,SACnD,YAAY,QAAQ,QAAQ,WAAW,YAAY,OAAQ;AAC5D,eAAO,kBAAkB,IAAI,KAAK,OAAO,SAAS,OAAO;AAAA,MAC7D;AACA,UAAI,MAAM,IAAI,OAAO,KAAK,KAAK,OAAK,EAAE,QAAQ,WAAW,EAAE,eAAe,OAAO;AACjF,UAAI,CAAC,KAAK;AACN,cAAM,KAAK,IAAI,OAAO,UAAU;AAChC,YAAI,MAAM,GAAG,eAAe,SAAS;AACjC,cAAI,OAAO,KAAK,KAAK,OAAO,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,MAAM,CAAC,CAAC;AAC9D,gBAAM;AAAA,QACV,OACK;AACD,cAAI,yBAAI,YAAY;AAChB,oBAAQ,UAAU,uBAAuB,GAAG,GAAG,gBAAgB,mCAAmC,GAAG,cAAc,IAAI;AAAA,UAC3H,OACK;AACD,oBAAQ,UAAU,sBAAsB,mBAAmB,WAAW,IAAI;AAAA,UAC9E;AACA,iBAAO,kBAAkB,IAAI,KAAK,OAAO,SAAS,OAAO;AAAA,QAC7D;AAAA,MACJ;AACA,YAAM,OAAO,kBAAkB,IAAI,KAAK,OAAO,SAAS,SAAS,GAAG;AACpE,YAAM,QAAMA,MAAA,IAAI,YAAJ,gBAAAA,IAAA,UAAc,MAAM,SAAO,QAAQ,UAAU,sBAAsB,GAAG,GAAG,IAAI,aAAY;AACrG,YAAM,OAAO,SAAS,OAAO,GAAG,IAC1B,MACA,IAAI,OAAO,OAAO,GAAG;AAC3B,WAAK,QAAQ,KAAK;AAClB,WAAK,MAAM;AACX,UAAI,2BAAK;AACL,aAAK,SAAS,IAAI;AACtB,aAAO;AAAA,IACX;AAEA,YAAQ,oBAAoB;AAAA;AAAA;;;ACzF5B;AAAA;AAAA;AAEA,QAAI,SAAS;AAEb,aAAS,mBAAmB,KAAK,QAAQ,SAAS;AAC9C,YAAM,QAAQ,OAAO;AACrB,YAAM,SAAS,uBAAuB,QAAQ,IAAI,QAAQ,QAAQ,OAAO;AACzE,UAAI,CAAC;AACD,eAAO,EAAE,OAAO,IAAI,MAAM,MAAM,SAAS,IAAI,OAAO,CAAC,OAAO,OAAO,KAAK,EAAE;AAC9E,YAAM,OAAO,OAAO,SAAS,MAAM,OAAO,OAAO,eAAe,OAAO,OAAO;AAC9E,YAAMC,SAAQ,OAAO,SAAS,WAAW,OAAO,MAAM,IAAI,CAAC;AAE3D,UAAI,aAAaA,OAAM;AACvB,eAAS,IAAIA,OAAM,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AACxC,cAAM,UAAUA,OAAM,GAAG;AACzB,YAAI,YAAY,MAAM,YAAY;AAC9B,uBAAa;AAAA;AAEb;AAAA,MACR;AAEA,UAAI,eAAe,GAAG;AAClB,cAAMC,SAAQ,OAAO,UAAU,OAAOD,OAAM,SAAS,IAC/C,KAAK,OAAO,KAAK,IAAI,GAAGA,OAAM,SAAS,CAAC,CAAC,IACzC;AACN,YAAIE,OAAM,QAAQ,OAAO;AACzB,YAAI,OAAO;AACP,UAAAA,QAAO,OAAO,OAAO;AACzB,eAAO,EAAE,OAAAD,QAAO,MAAM,SAAS,OAAO,SAAS,OAAO,CAAC,OAAOC,MAAKA,IAAG,EAAE;AAAA,MAC5E;AAEA,UAAI,aAAa,OAAO,SAAS,OAAO;AACxC,UAAI,SAAS,OAAO,SAAS,OAAO;AACpC,UAAI,eAAe;AACnB,eAAS,IAAI,GAAG,IAAI,YAAY,EAAE,GAAG;AACjC,cAAM,CAAC,QAAQ,OAAO,IAAIF,OAAM;AAChC,YAAI,YAAY,MAAM,YAAY,MAAM;AACpC,cAAI,OAAO,WAAW,KAAK,OAAO,SAAS;AACvC,yBAAa,OAAO;AAAA,QAC5B,OACK;AACD,cAAI,OAAO,SAAS,YAAY;AAC5B,kBAAM,UAAU;AAChB,oBAAQ,SAAS,OAAO,QAAQ,gBAAgB,OAAO;AAAA,UAC3D;AACA,cAAI,OAAO,WAAW;AAClB,yBAAa,OAAO;AACxB,yBAAe;AACf,cAAI,eAAe,KAAK,CAAC,IAAI,QAAQ;AACjC,kBAAM,UAAU;AAChB,oBAAQ,QAAQ,cAAc,OAAO;AAAA,UACzC;AACA;AAAA,QACJ;AACA,kBAAU,OAAO,SAAS,QAAQ,SAAS;AAAA,MAC/C;AAEA,eAAS,IAAIA,OAAM,SAAS,GAAG,KAAK,YAAY,EAAE,GAAG;AACjD,YAAIA,OAAM,GAAG,GAAG,SAAS;AACrB,uBAAa,IAAI;AAAA,MACzB;AACA,UAAI,QAAQ;AACZ,UAAIG,OAAM;AACV,UAAI,mBAAmB;AAEvB,eAAS,IAAI,GAAG,IAAI,cAAc,EAAE;AAChC,iBAASH,OAAM,GAAG,GAAG,MAAM,UAAU,IAAI;AAC7C,eAAS,IAAI,cAAc,IAAI,YAAY,EAAE,GAAG;AAC5C,YAAI,CAAC,QAAQ,OAAO,IAAIA,OAAM;AAC9B,kBAAU,OAAO,SAAS,QAAQ,SAAS;AAC3C,cAAM,OAAO,QAAQ,QAAQ,SAAS,OAAO;AAC7C,YAAI;AACA,oBAAU,QAAQ,MAAM,GAAG,EAAE;AAEjC,YAAI,WAAW,OAAO,SAAS,YAAY;AACvC,gBAAM,MAAM,OAAO,SACb,mCACA;AACN,gBAAM,UAAU,2DAA2D;AAC3E,kBAAQ,SAAS,QAAQ,UAAU,OAAO,IAAI,IAAI,cAAc,OAAO;AACvE,mBAAS;AAAA,QACb;AACA,YAAI,SAAS,OAAO,OAAO,eAAe;AACtC,mBAASG,OAAM,OAAO,MAAM,UAAU,IAAI;AAC1C,UAAAA,OAAM;AAAA,QACV,WACS,OAAO,SAAS,cAAc,QAAQ,OAAO,KAAM;AAExD,cAAIA,SAAQ;AACR,YAAAA,OAAM;AAAA,mBACD,CAAC,oBAAoBA,SAAQ;AAClC,YAAAA,OAAM;AACV,mBAASA,OAAM,OAAO,MAAM,UAAU,IAAI;AAC1C,UAAAA,OAAM;AACN,6BAAmB;AAAA,QACvB,WACS,YAAY,IAAI;AAErB,cAAIA,SAAQ;AACR,qBAAS;AAAA;AAET,YAAAA,OAAM;AAAA,QACd,OACK;AACD,mBAASA,OAAM;AACf,UAAAA,OAAM;AACN,6BAAmB;AAAA,QACvB;AAAA,MACJ;AACA,cAAQ,OAAO,OAAO;AAAA,QAClB,KAAK;AACD;AAAA,QACJ,KAAK;AACD,mBAAS,IAAI,YAAY,IAAIH,OAAM,QAAQ,EAAE;AACzC,qBAAS,OAAOA,OAAM,GAAG,GAAG,MAAM,UAAU;AAChD,cAAI,MAAM,MAAM,SAAS,OAAO;AAC5B,qBAAS;AACb;AAAA,QACJ;AACI,mBAAS;AAAA,MACjB;AACA,YAAM,MAAM,QAAQ,OAAO,SAAS,OAAO,OAAO;AAClD,aAAO,EAAE,OAAO,MAAM,SAAS,OAAO,SAAS,OAAO,CAAC,OAAO,KAAK,GAAG,EAAE;AAAA,IAC5E;AACA,aAAS,uBAAuB,EAAE,QAAQ,MAAM,GAAG,QAAQ,SAAS;AAEhE,UAAI,MAAM,GAAG,SAAS,uBAAuB;AACzC,gBAAQ,MAAM,IAAI,cAAc,+BAA+B;AAC/D,eAAO;AAAA,MACX;AACA,YAAM,EAAE,OAAO,IAAI,MAAM;AACzB,YAAM,OAAO,OAAO;AACpB,UAAI,SAAS;AACb,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;AACpC,cAAM,KAAK,OAAO;AAClB,YAAI,CAAC,UAAU,OAAO,OAAO,OAAO;AAChC,kBAAQ;AAAA,aACP;AACD,gBAAM,IAAI,OAAO,EAAE;AACnB,cAAI,CAAC,UAAU;AACX,qBAAS;AAAA,mBACJ,UAAU;AACf,oBAAQ,SAAS;AAAA,QACzB;AAAA,MACJ;AACA,UAAI,UAAU;AACV,gBAAQ,OAAO,oBAAoB,kDAAkD,QAAQ;AACjG,UAAI,WAAW;AACf,UAAI,UAAU;AACd,UAAI,SAAS,OAAO;AACpB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACnC,cAAM,QAAQ,MAAM;AACpB,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AACD,uBAAW;AAAA,UAEf,KAAK;AACD,sBAAU,MAAM,OAAO;AACvB;AAAA,UACJ,KAAK;AACD,gBAAI,UAAU,CAAC,UAAU;AACrB,oBAAM,UAAU;AAChB,sBAAQ,OAAO,gBAAgB,OAAO;AAAA,YAC1C;AACA,sBAAU,MAAM,OAAO;AACvB,sBAAU,MAAM,OAAO,UAAU,CAAC;AAClC;AAAA,UACJ,KAAK;AACD,oBAAQ,OAAO,oBAAoB,MAAM,OAAO;AAChD,sBAAU,MAAM,OAAO;AACvB;AAAA,UAEJ,SAAS;AACL,kBAAM,UAAU,4CAA4C,MAAM;AAClE,oBAAQ,OAAO,oBAAoB,OAAO;AAC1C,kBAAMI,MAAK,MAAM;AACjB,gBAAIA,OAAM,OAAOA,QAAO;AACpB,wBAAUA,IAAG;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AACA,aAAO,EAAE,MAAM,QAAQ,OAAO,SAAS,OAAO;AAAA,IAClD;AAEA,aAAS,WAAW,QAAQ;AACxB,YAAMC,SAAQ,OAAO,MAAM,QAAQ;AACnC,YAAM,QAAQA,OAAM;AACpB,YAAM,IAAI,MAAM,MAAM,OAAO;AAC7B,YAAM,SAAQ,uBAAI,MACZ,CAAC,EAAE,IAAI,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,IAC/B,CAAC,IAAI,KAAK;AAChB,YAAML,SAAQ,CAAC,KAAK;AACpB,eAAS,IAAI,GAAG,IAAIK,OAAM,QAAQ,KAAK;AACnC,QAAAL,OAAM,KAAK,CAACK,OAAM,IAAIA,OAAM,IAAI,EAAE,CAAC;AACvC,aAAOL;AAAA,IACX;AAEA,YAAQ,qBAAqB;AAAA;AAAA;;;ACvM7B;AAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,aAAa;AAEjB,aAAS,kBAAkB,QAAQ,QAAQ,SAAS;AAChD,YAAM,EAAE,QAAQ,MAAM,QAAQ,IAAI,IAAI;AACtC,UAAI;AACJ,UAAI;AACJ,YAAM,WAAW,CAAC,KAAK,MAAM,QAAQ,QAAQ,SAAS,KAAK,MAAM,GAAG;AACpE,cAAQ,MAAM;AAAA,QACV,KAAK;AACD,kBAAQ,OAAO,OAAO;AACtB,kBAAQ,WAAW,QAAQ,QAAQ;AACnC;AAAA,QACJ,KAAK;AACD,kBAAQ,OAAO,OAAO;AACtB,kBAAQ,kBAAkB,QAAQ,QAAQ;AAC1C;AAAA,QACJ,KAAK;AACD,kBAAQ,OAAO,OAAO;AACtB,kBAAQ,kBAAkB,QAAQ,QAAQ;AAC1C;AAAA,QAEJ;AACI,kBAAQ,QAAQ,oBAAoB,4CAA4C,MAAM;AACtF,iBAAO;AAAA,YACH,OAAO;AAAA,YACP,MAAM;AAAA,YACN,SAAS;AAAA,YACT,OAAO,CAAC,QAAQ,SAAS,OAAO,QAAQ,SAAS,OAAO,MAAM;AAAA,UAClE;AAAA,MACR;AACA,YAAM,WAAW,SAAS,OAAO;AACjC,YAAM,KAAK,WAAW,WAAW,KAAK,UAAU,QAAQ,OAAO;AAC/D,aAAO;AAAA,QACH;AAAA,QACA,MAAM;AAAA,QACN,SAAS,GAAG;AAAA,QACZ,OAAO,CAAC,QAAQ,UAAU,GAAG,MAAM;AAAA,MACvC;AAAA,IACJ;AACA,aAAS,WAAW,QAAQ,SAAS;AACjC,UAAI,UAAU;AACd,cAAQ,OAAO,IAAI;AAAA,QAEf,KAAK;AACD,oBAAU;AACV;AAAA,QACJ,KAAK;AACD,oBAAU;AACV;AAAA,QACJ,KAAK;AACD,oBAAU;AACV;AAAA,QACJ,KAAK;AAAA,QACL,KAAK,KAAK;AACN,oBAAU,0BAA0B,OAAO;AAC3C;AAAA,QACJ;AAAA,QACA,KAAK;AAAA,QACL,KAAK,KAAK;AACN,oBAAU,sBAAsB,OAAO;AACvC;AAAA,QACJ;AAAA,MACJ;AACA,UAAI;AACA,gBAAQ,GAAG,oBAAoB,iCAAiC,SAAS;AAC7E,aAAO,UAAU,MAAM;AAAA,IAC3B;AACA,aAAS,kBAAkB,QAAQ,SAAS;AACxC,UAAI,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,WAAW;AACvD,gBAAQ,OAAO,QAAQ,gBAAgB,wBAAwB;AACnE,aAAO,UAAU,OAAO,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,OAAO,GAAG;AAAA,IAC5D;AACA,aAAS,UAAU,QAAQ;AAQvB,UAAI,OAAO;AACX,UAAI;AACA,gBAAQ,IAAI,OAAO,4BAA8B,IAAI;AACrD,eAAO,IAAI,OAAO,sCAAyC,IAAI;AAAA,MACnE,QACA;AACI,gBAAQ;AACR,eAAO;AAAA,MACX;AACA,UAAIM,SAAQ,MAAM,KAAK,MAAM;AAC7B,UAAI,CAACA;AACD,eAAO;AACX,UAAI,MAAMA,OAAM;AAChB,UAAIC,OAAM;AACV,UAAI,MAAM,MAAM;AAChB,WAAK,YAAY;AACjB,aAAQD,SAAQ,KAAK,KAAK,MAAM,GAAI;AAChC,YAAIA,OAAM,OAAO,IAAI;AACjB,cAAIC,SAAQ;AACR,mBAAOA;AAAA;AAEP,YAAAA,OAAM;AAAA,QACd,OACK;AACD,iBAAOA,OAAMD,OAAM;AACnB,UAAAC,OAAM;AAAA,QACV;AACA,cAAM,KAAK;AAAA,MACf;AACA,YAAM,OAAO;AACb,WAAK,YAAY;AACjB,MAAAD,SAAQ,KAAK,KAAK,MAAM;AACxB,aAAO,MAAMC,SAAOD,UAAA,gBAAAA,OAAQ,OAAM;AAAA,IACtC;AACA,aAAS,kBAAkB,QAAQ,SAAS;AACxC,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,OAAO,SAAS,GAAG,EAAE,GAAG;AACxC,cAAM,KAAK,OAAO;AAClB,YAAI,OAAO,QAAQ,OAAO,IAAI,OAAO;AACjC;AACJ,YAAI,OAAO,MAAM;AACb,gBAAM,EAAE,MAAM,OAAO,IAAI,YAAY,QAAQ,CAAC;AAC9C,iBAAO;AACP,cAAI;AAAA,QACR,WACS,OAAO,MAAM;AAClB,cAAI,OAAO,OAAO,EAAE;AACpB,gBAAM,KAAK,YAAY;AACvB,cAAI;AACA,mBAAO;AAAA,mBACF,SAAS,MAAM;AAEpB,mBAAO,OAAO,IAAI;AAClB,mBAAO,SAAS,OAAO,SAAS;AAC5B,qBAAO,OAAO,EAAE,IAAI;AAAA,UAC5B,WACS,SAAS,QAAQ,OAAO,IAAI,OAAO,MAAM;AAE9C,mBAAO,OAAO,EAAE,IAAI;AACpB,mBAAO,SAAS,OAAO,SAAS;AAC5B,qBAAO,OAAO,EAAE,IAAI;AAAA,UAC5B,WACS,SAAS,OAAO,SAAS,OAAO,SAAS,KAAK;AACnD,kBAAM,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE;AACpC,mBAAO,cAAc,QAAQ,IAAI,GAAG,QAAQ,OAAO;AACnD,iBAAK;AAAA,UACT,OACK;AACD,kBAAM,MAAM,OAAO,OAAO,IAAI,GAAG,CAAC;AAClC,oBAAQ,IAAI,GAAG,iBAAiB,2BAA2B,KAAK;AAChE,mBAAO;AAAA,UACX;AAAA,QACJ,WACS,OAAO,OAAO,OAAO,KAAM;AAEhC,gBAAM,UAAU;AAChB,cAAI,OAAO,OAAO,IAAI;AACtB,iBAAO,SAAS,OAAO,SAAS;AAC5B,mBAAO,OAAO,EAAE,IAAI;AACxB,cAAI,SAAS,QAAQ,EAAE,SAAS,QAAQ,OAAO,IAAI,OAAO;AACtD,mBAAO,IAAI,UAAU,OAAO,MAAM,SAAS,IAAI,CAAC,IAAI;AAAA,QAC5D,OACK;AACD,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,WAAW;AACvD,gBAAQ,OAAO,QAAQ,gBAAgB,wBAAwB;AACnE,aAAO;AAAA,IACX;AAKA,aAAS,YAAY,QAAQ,QAAQ;AACjC,UAAI,OAAO;AACX,UAAI,KAAK,OAAO,SAAS;AACzB,aAAO,OAAO,OAAO,OAAO,OAAQ,OAAO,QAAQ,OAAO,MAAM;AAC5D,YAAI,OAAO,QAAQ,OAAO,SAAS,OAAO;AACtC;AACJ,YAAI,OAAO;AACP,kBAAQ;AACZ,kBAAU;AACV,aAAK,OAAO,SAAS;AAAA,MACzB;AACA,UAAI,CAAC;AACD,eAAO;AACX,aAAO,EAAE,MAAM,OAAO;AAAA,IAC1B;AACA,QAAM,cAAc;AAAA,MAChB,KAAK;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAM;AAAA,IACV;AACA,aAAS,cAAc,QAAQ,QAAQ,QAAQ,SAAS;AACpD,YAAM,KAAK,OAAO,OAAO,QAAQ,MAAM;AACvC,YAAM,KAAK,GAAG,WAAW,UAAU,iBAAiB,KAAK,EAAE;AAC3D,YAAM,OAAO,KAAK,SAAS,IAAI,EAAE,IAAI;AACrC,UAAI,MAAM,IAAI,GAAG;AACb,cAAM,MAAM,OAAO,OAAO,SAAS,GAAG,SAAS,CAAC;AAChD,gBAAQ,SAAS,GAAG,iBAAiB,2BAA2B,KAAK;AACrE,eAAO;AAAA,MACX;AACA,aAAO,OAAO,cAAc,IAAI;AAAA,IACpC;AAEA,YAAQ,oBAAoB;AAAA;AAAA;;;AChO5B;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,qBAAqB;AACzB,QAAI,oBAAoB;AAExB,aAAS,cAAc,KAAK,OAAO,UAAU,SAAS;AAClD,YAAM,EAAE,OAAO,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,iBACjD,mBAAmB,mBAAmB,KAAK,OAAO,OAAO,IACzD,kBAAkB,kBAAkB,OAAO,IAAI,QAAQ,QAAQ,OAAO;AAC5E,YAAM,UAAU,WACV,IAAI,WAAW,QAAQ,SAAS,QAAQ,SAAO,QAAQ,UAAU,sBAAsB,GAAG,CAAC,IAC3F;AACN,UAAI;AACJ,UAAI,IAAI,QAAQ,cAAc,IAAI,OAAO;AACrC,cAAM,IAAI,OAAO,SAAS;AAAA,MAC9B,WACS;AACL,cAAM,oBAAoB,IAAI,QAAQ,OAAO,SAAS,UAAU,OAAO;AAAA,eAClE,MAAM,SAAS;AACpB,cAAM,oBAAoB,KAAK,OAAO,OAAO,OAAO;AAAA;AAEpD,cAAM,IAAI,OAAO,SAAS;AAC9B,UAAI;AACJ,UAAI;AACA,cAAM,MAAM,IAAI,QAAQ,OAAO,SAAO,QAAQ,YAAY,OAAO,sBAAsB,GAAG,GAAG,IAAI,OAAO;AACxG,iBAAS,SAAS,SAAS,GAAG,IAAI,MAAM,IAAI,OAAO,OAAO,GAAG;AAAA,MACjE,SACO,OAAP;AACI,cAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACjE,gBAAQ,YAAY,OAAO,sBAAsB,GAAG;AACpD,iBAAS,IAAI,OAAO,OAAO,KAAK;AAAA,MACpC;AACA,aAAO,QAAQ;AACf,aAAO,SAAS;AAChB,UAAI;AACA,eAAO,OAAO;AAClB,UAAI;AACA,eAAO,MAAM;AACjB,UAAI,IAAI;AACJ,eAAO,SAAS,IAAI;AACxB,UAAI;AACA,eAAO,UAAU;AACrB,aAAO;AAAA,IACX;AACA,aAAS,oBAAoB,QAAQ,OAAO,SAAS,UAAU,SAAS;AA9CxE,UAAAE;AA+CI,UAAI,YAAY;AACZ,eAAO,OAAO,SAAS;AAC3B,YAAM,gBAAgB,CAAC;AACvB,iBAAW,OAAO,OAAO,MAAM;AAC3B,YAAI,CAAC,IAAI,cAAc,IAAI,QAAQ,SAAS;AACxC,cAAI,IAAI,WAAW,IAAI;AACnB,0BAAc,KAAK,GAAG;AAAA;AAEtB,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,iBAAW,OAAO;AACd,aAAIA,MAAA,IAAI,SAAJ,gBAAAA,IAAU,KAAK;AACf,iBAAO;AACf,YAAM,KAAK,OAAO,UAAU;AAC5B,UAAI,MAAM,CAAC,GAAG,YAAY;AAGtB,eAAO,KAAK,KAAK,OAAO,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,MAAM,OAAU,CAAC,CAAC;AAC3E,eAAO;AAAA,MACX;AACA,cAAQ,UAAU,sBAAsB,mBAAmB,WAAW,YAAY,uBAAuB;AACzG,aAAO,OAAO,SAAS;AAAA,IAC3B;AACA,aAAS,oBAAoB,EAAE,OAAO,YAAY,OAAO,GAAG,OAAO,OAAO,SAAS;AAC/E,YAAM,MAAM,OAAO,KAAK,KAAK,CAAAC,SAAI;AAxErC,YAAAD;AAwEyC,gBAAAC,KAAI,YAAY,QAAS,SAASA,KAAI,YAAY,YACnFD,MAAAC,KAAI,SAAJ,gBAAAD,IAAU,KAAK;AAAA,OAAM,KAAK,OAAO,SAAS;AAC9C,UAAI,OAAO,QAAQ;AACf,cAAM,SAAS,OAAO,OAAO,KAAK,CAAAC,SAAI;AA3E9C,cAAAD;AA2EiD,iBAAAC,KAAI,aAAWD,MAAAC,KAAI,SAAJ,gBAAAD,IAAU,KAAK;AAAA,SAAM,KACzE,OAAO,SAAS;AACpB,YAAI,IAAI,QAAQ,OAAO,KAAK;AACxB,gBAAME,MAAK,WAAW,UAAU,IAAI,GAAG;AACvC,gBAAM,KAAK,WAAW,UAAU,OAAO,GAAG;AAC1C,gBAAM,MAAM,iCAAiCA,UAAS;AACtD,kBAAQ,OAAO,sBAAsB,KAAK,IAAI;AAAA,QAClD;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,gBAAgB;AAAA;AAAA;;;ACvFxB;AAAA;AAAA;AAEA,aAAS,oBAAoB,QAAQ,QAAQ,KAAK;AAC9C,UAAI,QAAQ;AACR,YAAI,QAAQ;AACR,gBAAM,OAAO;AACjB,iBAAS,IAAI,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG;AAC/B,cAAI,KAAK,OAAO;AAChB,kBAAQ,GAAG,MAAM;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACD,wBAAU,GAAG,OAAO;AACpB;AAAA,UACR;AAGA,eAAK,OAAO,EAAE;AACd,kBAAO,yBAAI,UAAS,SAAS;AACzB,sBAAU,GAAG,OAAO;AACpB,iBAAK,OAAO,EAAE;AAAA,UAClB;AACA;AAAA,QACJ;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,sBAAsB;AAAA;AAAA;;;AC5B9B;AAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,oBAAoB;AACxB,QAAI,gBAAgB;AACpB,QAAI,aAAa;AACjB,QAAI,0BAA0B;AAE9B,QAAM,KAAK,EAAE,aAAa,iBAAiB;AAC3C,aAAS,YAAY,KAAK,OAAO,OAAO,SAAS;AAC7C,YAAM,QAAQ,IAAI;AAClB,YAAM,EAAE,aAAa,SAAS,QAAQ,IAAI,IAAI;AAC9C,UAAI;AACJ,UAAI,aAAa;AACjB,cAAQ,MAAM,MAAM;AAAA,QAChB,KAAK;AACD,iBAAO,aAAa,KAAK,OAAO,OAAO;AACvC,cAAI,UAAU;AACV,oBAAQ,OAAO,eAAe,+CAA+C;AACjF;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO,cAAc,cAAc,KAAK,OAAO,KAAK,OAAO;AAC3D,cAAI;AACA,iBAAK,SAAS,OAAO,OAAO,UAAU,CAAC;AAC3C;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO,kBAAkB,kBAAkB,IAAI,KAAK,OAAO,OAAO,OAAO;AACzE,cAAI;AACA,iBAAK,SAAS,OAAO,OAAO,UAAU,CAAC;AAC3C;AAAA,QACJ,SAAS;AACL,gBAAM,UAAU,MAAM,SAAS,UACzB,MAAM,UACN,4BAA4B,MAAM;AACxC,kBAAQ,OAAO,oBAAoB,OAAO;AAC1C,iBAAO,iBAAiB,KAAK,MAAM,QAAQ,QAAW,MAAM,OAAO,OAAO;AAC1E,uBAAa;AAAA,QACjB;AAAA,MACJ;AACA,UAAI,UAAU,KAAK,WAAW;AAC1B,gBAAQ,QAAQ,aAAa,kCAAkC;AACnE,UAAI,SACA,IAAI,QAAQ,eACX,CAAC,SAAS,SAAS,IAAI,KACpB,OAAO,KAAK,UAAU,YACrB,KAAK,OAAO,KAAK,QAAQ,0BAA2B;AACzD,cAAM,MAAM;AACZ,gBAAQ,OAAO,OAAO,kBAAkB,GAAG;AAAA,MAC/C;AACA,UAAI;AACA,aAAK,cAAc;AACvB,UAAI,SAAS;AACT,YAAI,MAAM,SAAS,YAAY,MAAM,WAAW;AAC5C,eAAK,UAAU;AAAA;AAEf,eAAK,gBAAgB;AAAA,MAC7B;AAEA,UAAI,IAAI,QAAQ,oBAAoB;AAChC,aAAK,WAAW;AACpB,aAAO;AAAA,IACX;AACA,aAAS,iBAAiB,KAAK,QAAQ,QAAQ,KAAK,EAAE,aAAa,SAAS,QAAQ,KAAK,IAAI,GAAG,SAAS;AACrG,YAAM,QAAQ;AAAA,QACV,MAAM;AAAA,QACN,QAAQ,wBAAwB,oBAAoB,QAAQ,QAAQ,GAAG;AAAA,QACvE,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ;AACA,YAAM,OAAO,cAAc,cAAc,KAAK,OAAO,KAAK,OAAO;AACjE,UAAI,QAAQ;AACR,aAAK,SAAS,OAAO,OAAO,UAAU,CAAC;AACvC,YAAI,KAAK,WAAW;AAChB,kBAAQ,QAAQ,aAAa,kCAAkC;AAAA,MACvE;AACA,UAAI;AACA,aAAK,cAAc;AACvB,UAAI,SAAS;AACT,aAAK,UAAU;AACf,aAAK,MAAM,KAAK;AAAA,MACpB;AACA,aAAO;AAAA,IACX;AACA,aAAS,aAAa,EAAE,QAAQ,GAAG,EAAE,QAAQ,QAAQ,IAAI,GAAG,SAAS;AACjE,YAAMC,SAAQ,IAAI,MAAM,MAAM,OAAO,UAAU,CAAC,CAAC;AACjD,UAAIA,OAAM,WAAW;AACjB,gBAAQ,QAAQ,aAAa,iCAAiC;AAClE,UAAIA,OAAM,OAAO,SAAS,GAAG;AACzB,gBAAQ,SAAS,OAAO,SAAS,GAAG,aAAa,kCAAkC,IAAI;AAC3F,YAAM,WAAW,SAAS,OAAO;AACjC,YAAM,KAAK,WAAW,WAAW,KAAK,UAAU,QAAQ,QAAQ,OAAO;AACvE,MAAAA,OAAM,QAAQ,CAAC,QAAQ,UAAU,GAAG,MAAM;AAC1C,UAAI,GAAG;AACH,QAAAA,OAAM,UAAU,GAAG;AACvB,aAAOA;AAAA,IACX;AAEA,YAAQ,mBAAmB;AAC3B,YAAQ,cAAc;AAAA;AAAA;;;ACxGtB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,cAAc;AAClB,QAAI,aAAa;AACjB,QAAI,eAAe;AAEnB,aAAS,WAAW,SAAS,YAAY,EAAE,QAAQ,OAAO,OAAO,IAAI,GAAG,SAAS;AAC7E,YAAM,OAAO,OAAO,OAAO,EAAE,aAAa,WAAW,GAAG,OAAO;AAC/D,YAAM,MAAM,IAAI,SAAS,SAAS,QAAW,IAAI;AACjD,YAAM,MAAM;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY,IAAI;AAAA,QAChB,SAAS,IAAI;AAAA,QACb,QAAQ,IAAI;AAAA,MAChB;AACA,YAAM,QAAQ,aAAa,aAAa,OAAO;AAAA,QAC3C,WAAW;AAAA,QACX,MAAM,UAAS,2BAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,gBAAgB;AAAA,MACpB,CAAC;AACD,UAAI,MAAM,OAAO;AACb,YAAI,WAAW,WAAW;AAC1B,YAAI,UACC,MAAM,SAAS,eAAe,MAAM,SAAS,gBAC9C,CAAC,MAAM;AACP,kBAAQ,MAAM,KAAK,gBAAgB,uEAAuE;AAAA,MAClH;AAEA,UAAI,WAAW,QACT,YAAY,YAAY,KAAK,OAAO,OAAO,OAAO,IAClD,YAAY,iBAAiB,KAAK,MAAM,KAAK,OAAO,MAAM,OAAO,OAAO;AAC9E,YAAM,aAAa,IAAI,SAAS,MAAM;AACtC,YAAM,KAAK,WAAW,WAAW,KAAK,YAAY,OAAO,OAAO;AAChE,UAAI,GAAG;AACH,YAAI,UAAU,GAAG;AACrB,UAAI,QAAQ,CAAC,QAAQ,YAAY,GAAG,MAAM;AAC1C,aAAO;AAAA,IACX;AAEA,YAAQ,aAAa;AAAA;AAAA;;;AC5CrB;AAAA;AAAA;AAEA,QAAI,eAAe,UAAQ;AAC3B,QAAI,aAAa;AACjB,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,WAAW;AACf,QAAI,aAAa;AACjB,QAAI,aAAa;AAEjB,aAAS,YAAY,KAAK;AACtB,UAAI,OAAO,QAAQ;AACf,eAAO,CAAC,KAAK,MAAM,CAAC;AACxB,UAAI,MAAM,QAAQ,GAAG;AACjB,eAAO,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;AACnD,YAAM,EAAE,QAAQ,OAAO,IAAI;AAC3B,aAAO,CAAC,QAAQ,UAAU,OAAO,WAAW,WAAW,OAAO,SAAS,EAAE;AAAA,IAC7E;AACA,aAAS,aAAa,SAAS;AAlB/B,UAAAC;AAmBI,UAAI,UAAU;AACd,UAAI,YAAY;AAChB,UAAI,iBAAiB;AACrB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACrC,cAAM,SAAS,QAAQ;AACvB,gBAAQ,OAAO,IAAI;AAAA,UACf,KAAK;AACD,wBACK,YAAY,KAAK,KAAK,iBAAiB,SAAS,SAC5C,OAAO,UAAU,CAAC,KAAK;AAChC,wBAAY;AACZ,6BAAiB;AACjB;AAAA,UACJ,KAAK;AACD,kBAAIA,MAAA,QAAQ,IAAI,OAAZ,gBAAAA,IAAiB,QAAO;AACxB,mBAAK;AACT,wBAAY;AACZ;AAAA,UACJ;AAEI,gBAAI,CAAC;AACD,+BAAiB;AACrB,wBAAY;AAAA,QACpB;AAAA,MACJ;AACA,aAAO,EAAE,SAAS,eAAe;AAAA,IACrC;AAYA,QAAM,WAAN,MAAe;AAAA,MACX,YAAY,UAAU,CAAC,GAAG;AACtB,aAAK,MAAM;AACX,aAAK,eAAe;AACpB,aAAK,UAAU,CAAC;AAChB,aAAK,SAAS,CAAC;AACf,aAAK,WAAW,CAAC;AACjB,aAAK,UAAU,CAAC,QAAQ,MAAM,SAAS,YAAY;AAC/C,gBAAM,MAAM,YAAY,MAAM;AAC9B,cAAI;AACA,iBAAK,SAAS,KAAK,IAAI,OAAO,YAAY,KAAK,MAAM,OAAO,CAAC;AAAA;AAE7D,iBAAK,OAAO,KAAK,IAAI,OAAO,eAAe,KAAK,MAAM,OAAO,CAAC;AAAA,QACtE;AAEA,aAAK,aAAa,IAAI,WAAW,WAAW,EAAE,SAAS,QAAQ,WAAW,MAAM,CAAC;AACjF,aAAK,UAAU;AAAA,MACnB;AAAA,MACA,SAAS,KAAK,UAAU;AACpB,cAAM,EAAE,SAAS,eAAe,IAAI,aAAa,KAAK,OAAO;AAE7D,YAAI,SAAS;AACT,gBAAM,KAAK,IAAI;AACf,cAAI,UAAU;AACV,gBAAI,UAAU,IAAI,UAAU,GAAG,IAAI;AAAA,EAAY,YAAY;AAAA,UAC/D,WACS,kBAAkB,IAAI,WAAW,YAAY,CAAC,IAAI;AACvD,gBAAI,gBAAgB;AAAA,UACxB,WACS,SAAS,aAAa,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,MAAM,SAAS,GAAG;AACnE,gBAAI,KAAK,GAAG,MAAM;AAClB,gBAAI,SAAS,OAAO,EAAE;AAClB,mBAAK,GAAG;AACZ,kBAAM,KAAK,GAAG;AACd,eAAG,gBAAgB,KAAK,GAAG;AAAA,EAAY,OAAO;AAAA,UAClD,OACK;AACD,kBAAM,KAAK,GAAG;AACd,eAAG,gBAAgB,KAAK,GAAG;AAAA,EAAY,OAAO;AAAA,UAClD;AAAA,QACJ;AACA,YAAI,UAAU;AACV,gBAAM,UAAU,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM;AAClD,gBAAM,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ;AAAA,QAC1D,OACK;AACD,cAAI,SAAS,KAAK;AAClB,cAAI,WAAW,KAAK;AAAA,QACxB;AACA,aAAK,UAAU,CAAC;AAChB,aAAK,SAAS,CAAC;AACf,aAAK,WAAW,CAAC;AAAA,MACrB;AAAA,MAMA,aAAa;AACT,eAAO;AAAA,UACH,SAAS,aAAa,KAAK,OAAO,EAAE;AAAA,UACpC,YAAY,KAAK;AAAA,UACjB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,QACnB;AAAA,MACJ;AAAA,MAOA,CAAC,QAAQ,QAAQ,WAAW,OAAO,YAAY,IAAI;AAC/C,mBAAW,SAAS;AAChB,iBAAO,KAAK,KAAK,KAAK;AAC1B,eAAO,KAAK,IAAI,UAAU,SAAS;AAAA,MACvC;AAAA,MAEA,CAAC,KAAK,OAAO;AACT,YAAI,aAAa,IAAI;AACjB,kBAAQ,IAAI,OAAO,EAAE,OAAO,KAAK,CAAC;AACtC,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AACD,iBAAK,WAAW,IAAI,MAAM,QAAQ,CAAC,QAAQ,SAAS,YAAY;AAC5D,oBAAM,MAAM,YAAY,KAAK;AAC7B,kBAAI,MAAM;AACV,mBAAK,QAAQ,KAAK,iBAAiB,SAAS,OAAO;AAAA,YACvD,CAAC;AACD,iBAAK,QAAQ,KAAK,MAAM,MAAM;AAC9B,iBAAK,eAAe;AACpB;AAAA,UACJ,KAAK,YAAY;AACb,kBAAM,MAAM,WAAW,WAAW,KAAK,SAAS,KAAK,YAAY,OAAO,KAAK,OAAO;AACpF,gBAAI,KAAK,gBAAgB,CAAC,IAAI,WAAW;AACrC,mBAAK,QAAQ,OAAO,gBAAgB,iDAAiD;AACzF,iBAAK,SAAS,KAAK,KAAK;AACxB,gBAAI,KAAK;AACL,oBAAM,KAAK;AACf,iBAAK,MAAM;AACX,iBAAK,eAAe;AACpB;AAAA,UACJ;AAAA,UACA,KAAK;AAAA,UACL,KAAK;AACD;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,iBAAK,QAAQ,KAAK,MAAM,MAAM;AAC9B;AAAA,UACJ,KAAK,SAAS;AACV,kBAAM,MAAM,MAAM,SACZ,GAAG,MAAM,YAAY,KAAK,UAAU,MAAM,MAAM,MAChD,MAAM;AACZ,kBAAM,QAAQ,IAAI,OAAO,eAAe,YAAY,KAAK,GAAG,oBAAoB,GAAG;AACnF,gBAAI,KAAK,gBAAgB,CAAC,KAAK;AAC3B,mBAAK,OAAO,KAAK,KAAK;AAAA;AAEtB,mBAAK,IAAI,OAAO,KAAK,KAAK;AAC9B;AAAA,UACJ;AAAA,UACA,KAAK,WAAW;AACZ,gBAAI,CAAC,KAAK,KAAK;AACX,oBAAM,MAAM;AACZ,mBAAK,OAAO,KAAK,IAAI,OAAO,eAAe,YAAY,KAAK,GAAG,oBAAoB,GAAG,CAAC;AACvF;AAAA,YACJ;AACA,iBAAK,IAAI,WAAW,SAAS;AAC7B,kBAAM,MAAM,WAAW,WAAW,MAAM,KAAK,MAAM,SAAS,MAAM,OAAO,QAAQ,KAAK,IAAI,QAAQ,QAAQ,KAAK,OAAO;AACtH,iBAAK,SAAS,KAAK,KAAK,IAAI;AAC5B,gBAAI,IAAI,SAAS;AACb,oBAAM,KAAK,KAAK,IAAI;AACpB,mBAAK,IAAI,UAAU,KAAK,GAAG;AAAA,EAAO,IAAI,YAAY,IAAI;AAAA,YAC1D;AACA,iBAAK,IAAI,MAAM,KAAK,IAAI;AACxB;AAAA,UACJ;AAAA,UACA;AACI,iBAAK,OAAO,KAAK,IAAI,OAAO,eAAe,YAAY,KAAK,GAAG,oBAAoB,qBAAqB,MAAM,MAAM,CAAC;AAAA,QAC7H;AAAA,MACJ;AAAA,MAOA,CAAC,IAAI,WAAW,OAAO,YAAY,IAAI;AACnC,YAAI,KAAK,KAAK;AACV,eAAK,SAAS,KAAK,KAAK,IAAI;AAC5B,gBAAM,KAAK;AACX,eAAK,MAAM;AAAA,QACf,WACS,UAAU;AACf,gBAAM,OAAO,OAAO,OAAO,EAAE,aAAa,KAAK,WAAW,GAAG,KAAK,OAAO;AACzE,gBAAM,MAAM,IAAI,SAAS,SAAS,QAAW,IAAI;AACjD,cAAI,KAAK;AACL,iBAAK,QAAQ,WAAW,gBAAgB,uCAAuC;AACnF,cAAI,QAAQ,CAAC,GAAG,WAAW,SAAS;AACpC,eAAK,SAAS,KAAK,KAAK;AACxB,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,WAAW;AAAA;AAAA;;;AC7NnB;AAAA;AAAA;AAEA,QAAI,qBAAqB;AACzB,QAAI,oBAAoB;AACxB,QAAI,SAAS;AACb,QAAI,kBAAkB;AAEtB,aAAS,gBAAgB,OAAO,SAAS,MAAM,SAAS;AACpD,UAAI,OAAO;AACP,cAAM,WAAW,CAAC,KAAK,MAAM,YAAY;AACrC,gBAAM,SAAS,OAAO,QAAQ,WAAW,MAAM,MAAM,QAAQ,GAAG,IAAI,IAAI,KAAK,IAAI;AACjF,cAAI;AACA,oBAAQ,QAAQ,MAAM,OAAO;AAAA;AAE7B,kBAAM,IAAI,OAAO,eAAe,CAAC,QAAQ,SAAS,CAAC,GAAG,MAAM,OAAO;AAAA,QAC3E;AACA,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,kBAAkB,kBAAkB,OAAO,QAAQ,QAAQ;AAAA,UACtE,KAAK;AACD,mBAAO,mBAAmB,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,QAAQ;AAAA,QAC7F;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAeA,aAAS,kBAAkB,OAAO,SAAS;AACvC,YAAM,EAAE,cAAc,OAAO,QAAQ,SAAS,OAAO,SAAS,IAAI,OAAO,QAAQ,IAAI;AACrF,YAAM,SAAS,gBAAgB,gBAAgB,EAAE,MAAM,MAAM,GAAG;AAAA,QAC5D;AAAA,QACA,QAAQ,SAAS,IAAI,IAAI,OAAO,MAAM,IAAI;AAAA,QAC1C;AAAA,QACA,SAAS,EAAE,YAAY,MAAM,WAAW,GAAG;AAAA,MAC/C,CAAC;AACD,YAAM,MAAM,QAAQ,OAAO;AAAA,QACvB,EAAE,MAAM,WAAW,QAAQ,IAAI,QAAQ,QAAQ,KAAK;AAAA,MACxD;AACA,cAAQ,OAAO,IAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK,KAAK;AACN,gBAAM,KAAK,OAAO,QAAQ,IAAI;AAC9B,gBAAM,OAAO,OAAO,UAAU,GAAG,EAAE;AACnC,gBAAM,OAAO,OAAO,UAAU,KAAK,CAAC,IAAI;AACxC,gBAAM,QAAQ;AAAA,YACV,EAAE,MAAM,uBAAuB,QAAQ,QAAQ,QAAQ,KAAK;AAAA,UAChE;AACA,cAAI,CAAC,mBAAmB,OAAO,GAAG;AAC9B,kBAAM,KAAK,EAAE,MAAM,WAAW,QAAQ,IAAI,QAAQ,QAAQ,KAAK,CAAC;AACpE,iBAAO,EAAE,MAAM,gBAAgB,QAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,QACvE;AAAA,QACA,KAAK;AACD,iBAAO,EAAE,MAAM,wBAAwB,QAAQ,QAAQ,QAAQ,IAAI;AAAA,QACvE,KAAK;AACD,iBAAO,EAAE,MAAM,wBAAwB,QAAQ,QAAQ,QAAQ,IAAI;AAAA,QACvE;AACI,iBAAO,EAAE,MAAM,UAAU,QAAQ,QAAQ,QAAQ,IAAI;AAAA,MAC7D;AAAA,IACJ;AAiBA,aAAS,eAAe,OAAO,OAAO,UAAU,CAAC,GAAG;AAChD,UAAI,EAAE,WAAW,OAAO,cAAc,OAAO,SAAS,OAAO,KAAK,IAAI;AACtE,UAAI,SAAS,YAAY,QAAQ,MAAM,SAAS;AAChD,UAAI,YAAY,OAAO,WAAW;AAC9B,kBAAU;AACd,UAAI,CAAC;AACD,gBAAQ,MAAM,MAAM;AAAA,UAChB,KAAK;AACD,mBAAO;AACP;AAAA,UACJ,KAAK;AACD,mBAAO;AACP;AAAA,UACJ,KAAK,gBAAgB;AACjB,kBAAM,SAAS,MAAM,MAAM;AAC3B,gBAAI,OAAO,SAAS;AAChB,oBAAM,IAAI,MAAM,6BAA6B;AACjD,mBAAO,OAAO,OAAO,OAAO,MAAM,iBAAiB;AACnD;AAAA,UACJ;AAAA,UACA;AACI,mBAAO;AAAA,QACf;AACJ,YAAM,SAAS,gBAAgB,gBAAgB,EAAE,MAAM,MAAM,GAAG;AAAA,QAC5D,aAAa,eAAe,WAAW;AAAA,QACvC,QAAQ,WAAW,QAAQ,SAAS,IAAI,IAAI,OAAO,MAAM,IAAI;AAAA,QAC7D;AAAA,QACA,SAAS,EAAE,YAAY,MAAM,WAAW,GAAG;AAAA,MAC/C,CAAC;AACD,cAAQ,OAAO,IAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AACD,8BAAoB,OAAO,MAAM;AACjC;AAAA,QACJ,KAAK;AACD,6BAAmB,OAAO,QAAQ,sBAAsB;AACxD;AAAA,QACJ,KAAK;AACD,6BAAmB,OAAO,QAAQ,sBAAsB;AACxD;AAAA,QACJ;AACI,6BAAmB,OAAO,QAAQ,QAAQ;AAAA,MAClD;AAAA,IACJ;AACA,aAAS,oBAAoB,OAAO,QAAQ;AACxC,YAAM,KAAK,OAAO,QAAQ,IAAI;AAC9B,YAAM,OAAO,OAAO,UAAU,GAAG,EAAE;AACnC,YAAM,OAAO,OAAO,UAAU,KAAK,CAAC,IAAI;AACxC,UAAI,MAAM,SAAS,gBAAgB;AAC/B,cAAM,SAAS,MAAM,MAAM;AAC3B,YAAI,OAAO,SAAS;AAChB,gBAAM,IAAI,MAAM,6BAA6B;AACjD,eAAO,SAAS;AAChB,cAAM,SAAS;AAAA,MACnB,OACK;AACD,cAAM,EAAE,OAAO,IAAI;AACnB,cAAM,SAAS,YAAY,QAAQ,MAAM,SAAS;AAClD,cAAM,QAAQ;AAAA,UACV,EAAE,MAAM,uBAAuB,QAAQ,QAAQ,QAAQ,KAAK;AAAA,QAChE;AACA,YAAI,CAAC,mBAAmB,OAAO,SAAS,QAAQ,MAAM,MAAM,MAAS;AACjE,gBAAM,KAAK,EAAE,MAAM,WAAW,QAAQ,IAAI,QAAQ,QAAQ,KAAK,CAAC;AACpE,mBAAW,OAAO,OAAO,KAAK,KAAK;AAC/B,cAAI,QAAQ,UAAU,QAAQ;AAC1B,mBAAO,MAAM;AACrB,eAAO,OAAO,OAAO,EAAE,MAAM,gBAAgB,QAAQ,OAAO,QAAQ,KAAK,CAAC;AAAA,MAC9E;AAAA,IACJ;AAEA,aAAS,mBAAmB,OAAO,KAAK;AACpC,UAAI;AACA,mBAAW,MAAM;AACb,kBAAQ,GAAG,MAAM;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AACD,oBAAM,KAAK,EAAE;AACb;AAAA,YACJ,KAAK;AACD,oBAAM,KAAK,EAAE;AACb,qBAAO;AAAA,UACf;AACR,aAAO;AAAA,IACX;AACA,aAAS,mBAAmB,OAAO,QAAQ,MAAM;AAC7C,cAAQ,MAAM,MAAM;AAAA,QAChB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,gBAAM,OAAO;AACb,gBAAM,SAAS;AACf;AAAA,QACJ,KAAK,gBAAgB;AACjB,gBAAM,MAAM,MAAM,MAAM,MAAM,CAAC;AAC/B,cAAI,KAAK,OAAO;AAChB,cAAI,MAAM,MAAM,GAAG,SAAS;AACxB,kBAAM,MAAM,MAAM,GAAG,OAAO;AAChC,qBAAW,OAAO;AACd,gBAAI,UAAU;AAClB,iBAAO,MAAM;AACb,iBAAO,OAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,CAAC;AAC1C;AAAA,QACJ;AAAA,QACA,KAAK;AAAA,QACL,KAAK,aAAa;AACd,gBAAM,SAAS,MAAM,SAAS,OAAO;AACrC,gBAAM,KAAK,EAAE,MAAM,WAAW,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,KAAK;AACzE,iBAAO,MAAM;AACb,iBAAO,OAAO,OAAO,EAAE,MAAM,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;AAChD;AAAA,QACJ;AAAA,QACA,SAAS;AACL,gBAAM,SAAS,YAAY,QAAQ,MAAM,SAAS;AAClD,gBAAM,MAAM,SAAS,SAAS,MAAM,QAAQ,MAAM,GAAG,IAC/C,MAAM,IAAI,OAAO,QAAM,GAAG,SAAS,WACjC,GAAG,SAAS,aACZ,GAAG,SAAS,SAAS,IACvB,CAAC;AACP,qBAAW,OAAO,OAAO,KAAK,KAAK;AAC/B,gBAAI,QAAQ,UAAU,QAAQ;AAC1B,qBAAO,MAAM;AACrB,iBAAO,OAAO,OAAO,EAAE,MAAM,QAAQ,QAAQ,IAAI,CAAC;AAAA,QACtD;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,oBAAoB;AAC5B,YAAQ,kBAAkB;AAC1B,YAAQ,iBAAiB;AAAA;AAAA;;;ACzNzB;AAAA;AAAA;AAQA,QAAM,YAAY,CAAC,QAAQ,UAAU,MAAM,eAAe,GAAG,IAAI,cAAc,GAAG;AAClF,aAAS,eAAe,OAAO;AAC3B,cAAQ,MAAM,MAAM;AAAA,QAChB,KAAK,gBAAgB;AACjB,cAAI,MAAM;AACV,qBAAW,OAAO,MAAM;AACpB,mBAAO,eAAe,GAAG;AAC7B,iBAAO,MAAM,MAAM;AAAA,QACvB;AAAA,QACA,KAAK;AAAA,QACL,KAAK,aAAa;AACd,cAAI,MAAM;AACV,qBAAW,QAAQ,MAAM;AACrB,mBAAO,cAAc,IAAI;AAC7B,iBAAO;AAAA,QACX;AAAA,QACA,KAAK,mBAAmB;AACpB,cAAI,MAAM,MAAM,MAAM;AACtB,qBAAW,QAAQ,MAAM;AACrB,mBAAO,cAAc,IAAI;AAC7B,qBAAW,MAAM,MAAM;AACnB,mBAAO,GAAG;AACd,iBAAO;AAAA,QACX;AAAA,QACA,KAAK,YAAY;AACb,cAAI,MAAM,cAAc,KAAK;AAC7B,cAAI,MAAM;AACN,uBAAW,MAAM,MAAM;AACnB,qBAAO,GAAG;AAClB,iBAAO;AAAA,QACX;AAAA,QACA,SAAS;AACL,cAAI,MAAM,MAAM;AAChB,cAAI,SAAS,SAAS,MAAM;AACxB,uBAAW,MAAM,MAAM;AACnB,qBAAO,GAAG;AAClB,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,cAAc,EAAE,OAAO,KAAK,KAAAC,MAAK,MAAM,GAAG;AAC/C,UAAI,MAAM;AACV,iBAAW,MAAM;AACb,eAAO,GAAG;AACd,UAAI;AACA,eAAO,eAAe,GAAG;AAC7B,UAAIA;AACA,mBAAW,MAAMA;AACb,iBAAO,GAAG;AAClB,UAAI;AACA,eAAO,eAAe,KAAK;AAC/B,aAAO;AAAA,IACX;AAEA,YAAQ,YAAY;AAAA;AAAA;;;AC9DpB;AAAA;AAAA;AAEA,QAAM,QAAQ,OAAO,aAAa;AAClC,QAAM,OAAO,OAAO,eAAe;AACnC,QAAM,SAAS,OAAO,aAAa;AA6BnC,aAAS,MAAM,KAAK,SAAS;AACzB,UAAI,UAAU,OAAO,IAAI,SAAS;AAC9B,cAAM,EAAE,OAAO,IAAI,OAAO,OAAO,IAAI,MAAM;AAC/C,aAAO,OAAO,OAAO,CAAC,CAAC,GAAG,KAAK,OAAO;AAAA,IAC1C;AAKA,UAAM,QAAQ;AAEd,UAAM,OAAO;AAEb,UAAM,SAAS;AAEf,UAAM,aAAa,CAAC,KAAKC,UAAS;AAC9B,UAAI,OAAO;AACX,iBAAW,CAAC,OAAO,KAAK,KAAKA,OAAM;AAC/B,cAAM,MAAM,6BAAO;AACnB,YAAI,OAAO,WAAW,KAAK;AACvB,iBAAO,IAAI,MAAM;AAAA,QACrB;AAEI,iBAAO;AAAA,MACf;AACA,aAAO;AAAA,IACX;AAMA,UAAM,mBAAmB,CAAC,KAAKA,UAAS;AACpC,YAAM,SAAS,MAAM,WAAW,KAAKA,MAAK,MAAM,GAAG,EAAE,CAAC;AACtD,YAAM,QAAQA,MAAKA,MAAK,SAAS,GAAG;AACpC,YAAM,OAAO,iCAAS;AACtB,UAAI,QAAQ,WAAW;AACnB,eAAO;AACX,YAAM,IAAI,MAAM,6BAA6B;AAAA,IACjD;AACA,aAAS,OAAOA,OAAM,MAAM,SAAS;AACjC,UAAI,OAAO,QAAQ,MAAMA,KAAI;AAC7B,UAAI,OAAO,SAAS;AAChB,eAAO;AACX,iBAAW,SAAS,CAAC,OAAO,OAAO,GAAG;AAClC,cAAM,QAAQ,KAAK;AACnB,YAAI,SAAS,WAAW,OAAO;AAC3B,mBAAS,IAAI,GAAG,IAAI,MAAM,MAAM,QAAQ,EAAE,GAAG;AACzC,kBAAM,KAAK,OAAO,OAAO,OAAOA,MAAK,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,IAAI,OAAO;AACnF,gBAAI,OAAO,OAAO;AACd,kBAAI,KAAK;AAAA,qBACJ,OAAO;AACZ,qBAAO;AAAA,qBACF,OAAO,QAAQ;AACpB,oBAAM,MAAM,OAAO,GAAG,CAAC;AACvB,mBAAK;AAAA,YACT;AAAA,UACJ;AACA,cAAI,OAAO,SAAS,cAAc,UAAU;AACxC,mBAAO,KAAK,MAAMA,KAAI;AAAA,QAC9B;AAAA,MACJ;AACA,aAAO,OAAO,SAAS,aAAa,KAAK,MAAMA,KAAI,IAAI;AAAA,IAC3D;AAEA,YAAQ,QAAQ;AAAA;AAAA;;;AClGhB;AAAA;AAAA;AAEA,QAAI,YAAY;AAChB,QAAI,eAAe;AACnB,QAAI,WAAW;AAGf,QAAM,MAAM;AAEZ,QAAM,WAAW;AAEjB,QAAM,WAAW;AAEjB,QAAM,SAAS;AAEf,QAAM,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,WAAW;AAEtD,QAAM,WAAW,CAAC,UAAU,CAAC,CAAC,UACzB,MAAM,SAAS,YACZ,MAAM,SAAS,0BACf,MAAM,SAAS,0BACf,MAAM,SAAS;AAGvB,aAAS,YAAY,OAAO;AACxB,cAAQ,OAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO,KAAK,UAAU,KAAK;AAAA,MACnC;AAAA,IACJ;AAEA,aAAS,UAAU,QAAQ;AACvB,cAAQ,QAAQ;AAAA,QACZ,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,MACf;AACA,cAAQ,OAAO,IAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,MACf;AACA,aAAO;AAAA,IACX;AAEA,YAAQ,oBAAoB,UAAU;AACtC,YAAQ,kBAAkB,UAAU;AACpC,YAAQ,iBAAiB,UAAU;AACnC,YAAQ,YAAY,aAAa;AACjC,YAAQ,QAAQ,SAAS;AACzB,YAAQ,MAAM;AACd,YAAQ,WAAW;AACnB,YAAQ,WAAW;AACnB,YAAQ,SAAS;AACjB,YAAQ,eAAe;AACvB,YAAQ,WAAW;AACnB,YAAQ,cAAc;AACtB,YAAQ,YAAY;AAAA;AAAA;;;AC/GpB;AAAA;AAAA;AAEA,QAAI,MAAM;AAqEV,aAAS,QAAQ,IAAI;AACjB,cAAQ,IAAI;AAAA,QACR,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO;AAAA,MACf;AAAA,IACJ;AACA,QAAM,YAAY,IAAI,IAAI,wBAAwB;AAClD,QAAM,WAAW,IAAI,IAAI,mFAAmF;AAC5G,QAAM,qBAAqB,IAAI,IAAI,OAAO;AAC1C,QAAM,qBAAqB,IAAI,IAAI,aAAc;AACjD,QAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,mBAAmB,IAAI,EAAE;AAgBhE,QAAM,QAAN,MAAY;AAAA,MACR,cAAc;AAKV,aAAK,QAAQ;AAMb,aAAK,oBAAoB;AAMzB,aAAK,kBAAkB;AAEvB,aAAK,SAAS;AAKd,aAAK,UAAU;AAEf,aAAK,YAAY;AAKjB,aAAK,aAAa;AAElB,aAAK,cAAc;AAEnB,aAAK,aAAa;AAElB,aAAK,OAAO;AAEZ,aAAK,MAAM;AAAA,MACf;AAAA,MAOA,CAAC,IAAI,QAAQ,aAAa,OAAO;AAC7B,YAAI,QAAQ;AACR,cAAI,OAAO,WAAW;AAClB,kBAAM,UAAU,wBAAwB;AAC5C,eAAK,SAAS,KAAK,SAAS,KAAK,SAAS,SAAS;AACnD,eAAK,aAAa;AAAA,QACtB;AACA,aAAK,QAAQ,CAAC;AACd,YAAI,OAAO,KAAK,QAAQ;AACxB,eAAO,SAAS,cAAc,KAAK,SAAS,CAAC;AACzC,iBAAO,OAAO,KAAK,UAAU,IAAI;AAAA,MACzC;AAAA,MACA,YAAY;AACR,YAAI,IAAI,KAAK;AACb,YAAI,KAAK,KAAK,OAAO;AACrB,eAAO,OAAO,OAAO,OAAO;AACxB,eAAK,KAAK,OAAO,EAAE;AACvB,YAAI,CAAC,MAAM,OAAO,OAAO,OAAO;AAC5B,iBAAO;AACX,YAAI,OAAO;AACP,iBAAO,KAAK,OAAO,IAAI,OAAO;AAClC,eAAO;AAAA,MACX;AAAA,MACA,OAAO,GAAG;AACN,eAAO,KAAK,OAAO,KAAK,MAAM;AAAA,MAClC;AAAA,MACA,eAAe,QAAQ;AACnB,YAAI,KAAK,KAAK,OAAO;AACrB,YAAI,KAAK,aAAa,GAAG;AACrB,cAAI,SAAS;AACb,iBAAO,OAAO;AACV,iBAAK,KAAK,OAAO,EAAE,SAAS;AAChC,cAAI,OAAO,MAAM;AACb,kBAAM,OAAO,KAAK,OAAO,SAAS,SAAS;AAC3C,gBAAI,SAAS,QAAS,CAAC,QAAQ,CAAC,KAAK;AACjC,qBAAO,SAAS,SAAS;AAAA,UACjC;AACA,iBAAO,OAAO,QAAQ,UAAU,KAAK,cAAe,CAAC,MAAM,CAAC,KAAK,QAC3D,SAAS,SACT;AAAA,QACV;AACA,YAAI,OAAO,OAAO,OAAO,KAAK;AAC1B,gBAAM,KAAK,KAAK,OAAO,OAAO,QAAQ,CAAC;AACvC,eAAK,OAAO,SAAS,OAAO,UAAU,QAAQ,KAAK,OAAO,SAAS,EAAE;AACjE,mBAAO;AAAA,QACf;AACA,eAAO;AAAA,MACX;AAAA,MACA,UAAU;AACN,YAAI,MAAM,KAAK;AACf,YAAI,OAAO,QAAQ,YAAa,QAAQ,MAAM,MAAM,KAAK,KAAM;AAC3D,gBAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AACxC,eAAK,aAAa;AAAA,QACtB;AACA,YAAI,QAAQ;AACR,iBAAO,KAAK,QAAQ,KAAK,OAAO,UAAU,KAAK,GAAG,IAAI;AAC1D,YAAI,KAAK,OAAO,MAAM,OAAO;AACzB,iBAAO;AACX,eAAO,KAAK,OAAO,UAAU,KAAK,KAAK,GAAG;AAAA,MAC9C;AAAA,MACA,SAAS,GAAG;AACR,eAAO,KAAK,MAAM,KAAK,KAAK,OAAO;AAAA,MACvC;AAAA,MACA,QAAQ,OAAO;AACX,aAAK,SAAS,KAAK,OAAO,UAAU,KAAK,GAAG;AAC5C,aAAK,MAAM;AACX,aAAK,aAAa;AAClB,aAAK,OAAO;AACZ,eAAO;AAAA,MACX;AAAA,MACA,KAAK,GAAG;AACJ,eAAO,KAAK,OAAO,OAAO,KAAK,KAAK,CAAC;AAAA,MACzC;AAAA,MACA,CAAC,UAAU,MAAM;AACb,gBAAQ,MAAM;AAAA,UACV,KAAK;AACD,mBAAO,OAAO,KAAK,YAAY;AAAA,UACnC,KAAK;AACD,mBAAO,OAAO,KAAK,eAAe;AAAA,UACtC,KAAK;AACD,mBAAO,OAAO,KAAK,gBAAgB;AAAA,UACvC,KAAK;AACD,mBAAO,OAAO,KAAK,cAAc;AAAA,UACrC,KAAK;AACD,mBAAO,OAAO,KAAK,oBAAoB;AAAA,UAC3C,KAAK;AACD,mBAAO,OAAO,KAAK,kBAAkB;AAAA,UACzC,KAAK;AACD,mBAAO,OAAO,KAAK,iBAAiB;AAAA,UACxC,KAAK;AACD,mBAAO,OAAO,KAAK,iBAAiB;AAAA,QAC5C;AAAA,MACJ;AAAA,MACA,CAAC,cAAc;AACX,YAAI,OAAO,KAAK,QAAQ;AACxB,YAAI,SAAS;AACT,iBAAO,KAAK,QAAQ,QAAQ;AAChC,YAAI,KAAK,OAAO,IAAI,KAAK;AACrB,iBAAO,KAAK,UAAU,CAAC;AACvB,iBAAO,KAAK,UAAU,CAAC;AAAA,QAC3B;AACA,YAAI,KAAK,OAAO,KAAK;AACjB,cAAI,SAAS,KAAK;AAClB,cAAI,KAAK,KAAK,QAAQ,GAAG;AACzB,iBAAO,OAAO,IAAI;AACd,kBAAM,KAAK,KAAK,KAAK;AACrB,gBAAI,OAAO,OAAO,OAAO,KAAM;AAC3B,uBAAS,KAAK;AACd;AAAA,YACJ,OACK;AACD,mBAAK,KAAK,QAAQ,KAAK,KAAK,CAAC;AAAA,YACjC;AAAA,UACJ;AACA,iBAAO,MAAM;AACT,kBAAM,KAAK,KAAK,SAAS;AACzB,gBAAI,OAAO,OAAO,OAAO;AACrB,wBAAU;AAAA;AAEV;AAAA,UACR;AACA,gBAAM,KAAK,OAAO,KAAK,UAAU,MAAM,MAAM,OAAO,KAAK,WAAW,IAAI;AACxE,iBAAO,KAAK,UAAU,KAAK,SAAS,CAAC;AACrC,eAAK,YAAY;AACjB,iBAAO;AAAA,QACX;AACA,YAAI,KAAK,UAAU,GAAG;AAClB,gBAAM,KAAK,OAAO,KAAK,WAAW,IAAI;AACtC,iBAAO,KAAK,UAAU,KAAK,SAAS,EAAE;AACtC,iBAAO,KAAK,YAAY;AACxB,iBAAO;AAAA,QACX;AACA,cAAM,IAAI;AACV,eAAO,OAAO,KAAK,eAAe;AAAA,MACtC;AAAA,MACA,CAAC,iBAAiB;AACd,cAAM,KAAK,KAAK,OAAO,CAAC;AACxB,YAAI,CAAC,MAAM,CAAC,KAAK;AACb,iBAAO,KAAK,QAAQ,YAAY;AACpC,YAAI,OAAO,OAAO,OAAO,KAAK;AAC1B,cAAI,CAAC,KAAK,SAAS,CAAC,KAAK,SAAS,CAAC;AAC/B,mBAAO,KAAK,QAAQ,YAAY;AACpC,gBAAM,IAAI,KAAK,KAAK,CAAC;AACrB,eAAK,MAAM,SAAS,MAAM,UAAU,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG;AACzD,mBAAO,KAAK,UAAU,CAAC;AACvB,iBAAK,cAAc;AACnB,iBAAK,aAAa;AAClB,mBAAO,MAAM,QAAQ,QAAQ;AAAA,UACjC;AAAA,QACJ;AACA,aAAK,cAAc,OAAO,KAAK,WAAW,KAAK;AAC/C,YAAI,KAAK,aAAa,KAAK,eAAe,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;AAC7D,eAAK,aAAa,KAAK;AAC3B,eAAO,OAAO,KAAK,gBAAgB;AAAA,MACvC;AAAA,MACA,CAAC,kBAAkB;AACf,cAAM,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC;AAC9B,YAAI,CAAC,OAAO,CAAC,KAAK;AACd,iBAAO,KAAK,QAAQ,aAAa;AACrC,aAAK,QAAQ,OAAO,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,GAAG,GAAG;AAC7D,gBAAM,KAAK,OAAO,KAAK,UAAU,CAAC,MAAM,OAAO,KAAK,WAAW,IAAI;AACnE,eAAK,aAAa,KAAK,cAAc;AACrC,eAAK,eAAe;AACpB,iBAAO,OAAO,KAAK,gBAAgB;AAAA,QACvC;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,gBAAgB;AACb,eAAO,KAAK,WAAW,IAAI;AAC3B,cAAM,OAAO,KAAK,QAAQ;AAC1B,YAAI,SAAS;AACT,iBAAO,KAAK,QAAQ,KAAK;AAC7B,YAAI,IAAI,OAAO,KAAK,eAAe;AACnC,gBAAQ,KAAK,IAAI;AAAA,UACb,KAAK;AACD,mBAAO,KAAK,UAAU,KAAK,SAAS,CAAC;AAAA,UAEzC,KAAK;AACD,mBAAO,KAAK,YAAY;AACxB,mBAAO,OAAO,KAAK,eAAe;AAAA,UACtC,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,UAAU,CAAC;AACvB,iBAAK,UAAU;AACf,iBAAK,YAAY;AACjB,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AAED,mBAAO,KAAK,UAAU,CAAC;AACvB,mBAAO;AAAA,UACX,KAAK;AACD,mBAAO,KAAK,UAAU,eAAe;AACrC,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,OAAO,KAAK,kBAAkB;AAAA,UACzC,KAAK;AAAA,UACL,KAAK;AACD,iBAAK,OAAO,KAAK,uBAAuB;AACxC,iBAAK,OAAO,KAAK,WAAW,IAAI;AAChC,mBAAO,KAAK,UAAU,KAAK,SAAS,CAAC;AACrC,mBAAO,KAAK,YAAY;AACxB,mBAAO,OAAO,KAAK,iBAAiB;AAAA,UACxC;AACI,mBAAO,OAAO,KAAK,iBAAiB;AAAA,QAC5C;AAAA,MACJ;AAAA,MACA,CAAC,sBAAsB;AACnB,YAAI,IAAI;AACR,YAAI,SAAS;AACb,WAAG;AACC,eAAK,OAAO,KAAK,YAAY;AAC7B,cAAI,KAAK,GAAG;AACR,iBAAK,OAAO,KAAK,WAAW,KAAK;AACjC,iBAAK,cAAc,SAAS;AAAA,UAChC,OACK;AACD,iBAAK;AAAA,UACT;AACA,gBAAM,OAAO,KAAK,WAAW,IAAI;AAAA,QACrC,SAAS,KAAK,KAAK;AACnB,cAAM,OAAO,KAAK,QAAQ;AAC1B,YAAI,SAAS;AACT,iBAAO,KAAK,QAAQ,MAAM;AAC9B,YAAK,WAAW,MAAM,SAAS,KAAK,cAAc,KAAK,OAAO,OACzD,WAAW,MACP,KAAK,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK,MAChD,QAAQ,KAAK,EAAE,GAAI;AAIvB,gBAAM,kBAAkB,WAAW,KAAK,aAAa,KACjD,KAAK,cAAc,MAClB,KAAK,OAAO,OAAO,KAAK,OAAO;AACpC,cAAI,CAAC,iBAAiB;AAElB,iBAAK,YAAY;AACjB,kBAAM,IAAI;AACV,mBAAO,OAAO,KAAK,eAAe;AAAA,UACtC;AAAA,QACJ;AACA,YAAI,IAAI;AACR,eAAO,KAAK,OAAO,KAAK;AACpB,eAAK,OAAO,KAAK,UAAU,CAAC;AAC5B,eAAK,OAAO,KAAK,WAAW,IAAI;AAChC,eAAK,UAAU;AAAA,QACnB;AACA,aAAK,OAAO,KAAK,eAAe;AAChC,gBAAQ,KAAK,IAAI;AAAA,UACb,KAAK;AACD,mBAAO;AAAA,UACX,KAAK;AACD,mBAAO,KAAK,UAAU,KAAK,SAAS,CAAC;AACrC,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,UAAU,CAAC;AACvB,iBAAK,UAAU;AACf,iBAAK,aAAa;AAClB,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,UAAU,CAAC;AACvB,iBAAK,UAAU;AACf,iBAAK,aAAa;AAClB,mBAAO,KAAK,YAAY,SAAS;AAAA,UACrC,KAAK;AACD,mBAAO,KAAK,UAAU,eAAe;AACrC,mBAAO;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AACD,iBAAK,UAAU;AACf,mBAAO,OAAO,KAAK,kBAAkB;AAAA,UACzC,KAAK,KAAK;AACN,kBAAM,OAAO,KAAK,OAAO,CAAC;AAC1B,gBAAI,KAAK,WAAW,QAAQ,IAAI,KAAK,SAAS,KAAK;AAC/C,mBAAK,UAAU;AACf,qBAAO,KAAK,UAAU,CAAC;AACvB,qBAAO,KAAK,WAAW,IAAI;AAC3B,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,UAEA;AACI,iBAAK,UAAU;AACf,mBAAO,OAAO,KAAK,iBAAiB;AAAA,QAC5C;AAAA,MACJ;AAAA,MACA,CAAC,oBAAoB;AACjB,cAAM,QAAQ,KAAK,OAAO,CAAC;AAC3B,YAAI,MAAM,KAAK,OAAO,QAAQ,OAAO,KAAK,MAAM,CAAC;AACjD,YAAI,UAAU,KAAK;AACf,iBAAO,QAAQ,MAAM,KAAK,OAAO,MAAM,OAAO;AAC1C,kBAAM,KAAK,OAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,QAC9C,OACK;AAED,iBAAO,QAAQ,IAAI;AACf,gBAAI,IAAI;AACR,mBAAO,KAAK,OAAO,MAAM,IAAI,OAAO;AAChC,mBAAK;AACT,gBAAI,IAAI,MAAM;AACV;AACJ,kBAAM,KAAK,OAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,UAC1C;AAAA,QACJ;AAEA,cAAM,KAAK,KAAK,OAAO,UAAU,GAAG,GAAG;AACvC,YAAI,KAAK,GAAG,QAAQ,MAAM,KAAK,GAAG;AAClC,YAAI,OAAO,IAAI;AACX,iBAAO,OAAO,IAAI;AACd,kBAAM,KAAK,KAAK,eAAe,KAAK,CAAC;AACrC,gBAAI,OAAO;AACP;AACJ,iBAAK,GAAG,QAAQ,MAAM,EAAE;AAAA,UAC5B;AACA,cAAI,OAAO,IAAI;AAEX,kBAAM,MAAM,GAAG,KAAK,OAAO,OAAO,IAAI;AAAA,UAC1C;AAAA,QACJ;AACA,YAAI,QAAQ,IAAI;AACZ,cAAI,CAAC,KAAK;AACN,mBAAO,KAAK,QAAQ,eAAe;AACvC,gBAAM,KAAK,OAAO;AAAA,QACtB;AACA,eAAO,KAAK,YAAY,MAAM,GAAG,KAAK;AACtC,eAAO,KAAK,YAAY,SAAS;AAAA,MACrC;AAAA,MACA,CAAC,yBAAyB;AACtB,aAAK,oBAAoB;AACzB,aAAK,kBAAkB;AACvB,YAAI,IAAI,KAAK;AACb,eAAO,MAAM;AACT,gBAAM,KAAK,KAAK,OAAO,EAAE;AACzB,cAAI,OAAO;AACP,iBAAK,kBAAkB;AAAA,mBAClB,KAAK,OAAO,MAAM;AACvB,iBAAK,oBAAoB,OAAO,EAAE,IAAI;AAAA,mBACjC,OAAO;AACZ;AAAA,QACR;AACA,eAAO,OAAO,KAAK,UAAU,QAAM,QAAQ,EAAE,KAAK,OAAO,GAAG;AAAA,MAChE;AAAA,MACA,CAAC,mBAAmB;AAChB,YAAI,KAAK,KAAK,MAAM;AACpB,YAAI,SAAS;AACb,YAAI;AACJ;AAAM,mBAASC,KAAI,KAAK,KAAM,KAAK,KAAK,OAAOA,KAAK,EAAEA,IAAG;AACrD,oBAAQ,IAAI;AAAA,cACR,KAAK;AACD,0BAAU;AACV;AAAA,cACJ,KAAK;AACD,qBAAKA;AACL,yBAAS;AACT;AAAA,cACJ,KAAK,MAAM;AACP,sBAAM,OAAO,KAAK,OAAOA,KAAI;AAC7B,oBAAI,CAAC,QAAQ,CAAC,KAAK;AACf,yBAAO,KAAK,QAAQ,cAAc;AACtC,oBAAI,SAAS;AACT;AAAA,cACR;AAAA,cACA;AACI,sBAAM;AAAA,YACd;AAAA,UACJ;AACA,YAAI,CAAC,MAAM,CAAC,KAAK;AACb,iBAAO,KAAK,QAAQ,cAAc;AACtC,YAAI,UAAU,KAAK,YAAY;AAC3B,cAAI,KAAK,sBAAsB;AAC3B,iBAAK,aAAa;AAAA,eACjB;AACD,iBAAK,aACD,KAAK,qBAAqB,KAAK,eAAe,IAAI,IAAI,KAAK;AAAA,UACnE;AACA,aAAG;AACC,kBAAM,KAAK,KAAK,eAAe,KAAK,CAAC;AACrC,gBAAI,OAAO;AACP;AACJ,iBAAK,KAAK,OAAO,QAAQ,MAAM,EAAE;AAAA,UACrC,SAAS,OAAO;AAChB,cAAI,OAAO,IAAI;AACX,gBAAI,CAAC,KAAK;AACN,qBAAO,KAAK,QAAQ,cAAc;AACtC,iBAAK,KAAK,OAAO;AAAA,UACrB;AAAA,QACJ;AAGA,YAAI,IAAI,KAAK;AACb,aAAK,KAAK,OAAO;AACjB,eAAO,OAAO;AACV,eAAK,KAAK,OAAO,EAAE;AACvB,YAAI,OAAO,KAAM;AACb,iBAAO,OAAO,OAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO;AACtD,iBAAK,KAAK,OAAO,EAAE;AACvB,eAAK,IAAI;AAAA,QACb,WACS,CAAC,KAAK,iBAAiB;AAC5B,aAAG;AACC,gBAAIA,KAAI,KAAK;AACb,gBAAIC,MAAK,KAAK,OAAOD;AACrB,gBAAIC,QAAO;AACP,cAAAA,MAAK,KAAK,OAAO,EAAED;AACvB,kBAAM,WAAWA;AACjB,mBAAOC,QAAO;AACV,cAAAA,MAAK,KAAK,OAAO,EAAED;AACvB,gBAAIC,QAAO,QAAQD,MAAK,KAAK,OAAOA,KAAI,IAAI,SAAS;AACjD,mBAAKA;AAAA;AAEL;AAAA,UACR,SAAS;AAAA,QACb;AACA,cAAM,IAAI;AACV,eAAO,KAAK,YAAY,KAAK,GAAG,IAAI;AACpC,eAAO,OAAO,KAAK,eAAe;AAAA,MACtC;AAAA,MACA,CAAC,mBAAmB;AAChB,cAAM,SAAS,KAAK,YAAY;AAChC,YAAI,MAAM,KAAK,MAAM;AACrB,YAAI,IAAI,KAAK,MAAM;AACnB,YAAI;AACJ,eAAQ,KAAK,KAAK,OAAO,EAAE,IAAK;AAC5B,cAAI,OAAO,KAAK;AACZ,kBAAM,OAAO,KAAK,OAAO,IAAI;AAC7B,gBAAI,QAAQ,IAAI,KAAM,UAAU,mBAAmB,IAAI,IAAI;AACvD;AACJ,kBAAM;AAAA,UACV,WACS,QAAQ,EAAE,GAAG;AAClB,gBAAI,OAAO,KAAK,OAAO,IAAI;AAC3B,gBAAI,OAAO,MAAM;AACb,kBAAI,SAAS,MAAM;AACf,qBAAK;AACL,qBAAK;AACL,uBAAO,KAAK,OAAO,IAAI;AAAA,cAC3B;AAEI,sBAAM;AAAA,YACd;AACA,gBAAI,SAAS,OAAQ,UAAU,mBAAmB,IAAI,IAAI;AACtD;AACJ,gBAAI,OAAO,MAAM;AACb,oBAAM,KAAK,KAAK,eAAe,IAAI,CAAC;AACpC,kBAAI,OAAO;AACP;AACJ,kBAAI,KAAK,IAAI,GAAG,KAAK,CAAC;AAAA,YAC1B;AAAA,UACJ,OACK;AACD,gBAAI,UAAU,mBAAmB,IAAI,EAAE;AACnC;AACJ,kBAAM;AAAA,UACV;AAAA,QACJ;AACA,YAAI,CAAC,MAAM,CAAC,KAAK;AACb,iBAAO,KAAK,QAAQ,cAAc;AACtC,cAAM,IAAI;AACV,eAAO,KAAK,YAAY,MAAM,GAAG,IAAI;AACrC,eAAO,SAAS,SAAS;AAAA,MAC7B;AAAA,MACA,CAAC,UAAU,GAAG;AACV,YAAI,IAAI,GAAG;AACP,gBAAM,KAAK,OAAO,OAAO,KAAK,KAAK,CAAC;AACpC,eAAK,OAAO;AACZ,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,YAAY,GAAG,YAAY;AACxB,cAAM,IAAI,KAAK,OAAO,MAAM,KAAK,KAAK,CAAC;AACvC,YAAI,GAAG;AACH,gBAAM;AACN,eAAK,OAAO,EAAE;AACd,iBAAO,EAAE;AAAA,QACb,WACS;AACL,gBAAM;AACV,eAAO;AAAA,MACX;AAAA,MACA,CAAC,iBAAiB;AACd,gBAAQ,KAAK,OAAO,CAAC,GAAG;AAAA,UACpB,KAAK;AACD,oBAAS,OAAO,KAAK,QAAQ,MACxB,OAAO,KAAK,WAAW,IAAI,MAC3B,OAAO,KAAK,eAAe;AAAA,UACpC,KAAK;AACD,oBAAS,OAAO,KAAK,UAAU,eAAe,MACzC,OAAO,KAAK,WAAW,IAAI,MAC3B,OAAO,KAAK,eAAe;AAAA,UACpC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK,KAAK;AACN,kBAAM,SAAS,KAAK,YAAY;AAChC,kBAAM,MAAM,KAAK,OAAO,CAAC;AACzB,gBAAI,QAAQ,GAAG,KAAM,UAAU,mBAAmB,IAAI,GAAG,GAAI;AACzD,kBAAI,CAAC;AACD,qBAAK,aAAa,KAAK,cAAc;AAAA,uBAChC,KAAK;AACV,qBAAK,UAAU;AACnB,sBAAS,OAAO,KAAK,UAAU,CAAC,MAC3B,OAAO,KAAK,WAAW,IAAI,MAC3B,OAAO,KAAK,eAAe;AAAA,YACpC;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,UAAU;AACP,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AACxB,cAAI,IAAI,KAAK,MAAM;AACnB,cAAI,KAAK,KAAK,OAAO;AACrB,iBAAO,CAAC,QAAQ,EAAE,KAAK,OAAO;AAC1B,iBAAK,KAAK,OAAO,EAAE;AACvB,iBAAO,OAAO,KAAK,YAAY,OAAO,MAAM,IAAI,IAAI,GAAG,KAAK;AAAA,QAChE,OACK;AACD,cAAI,IAAI,KAAK,MAAM;AACnB,cAAI,KAAK,KAAK,OAAO;AACrB,iBAAO,IAAI;AACP,gBAAI,SAAS,IAAI,EAAE;AACf,mBAAK,KAAK,OAAO,EAAE;AAAA,qBACd,OAAO,OACZ,UAAU,IAAI,KAAK,OAAO,IAAI,EAAE,KAChC,UAAU,IAAI,KAAK,OAAO,IAAI,EAAE,GAAG;AACnC,mBAAK,KAAK,OAAQ,KAAK;AAAA,YAC3B;AAEI;AAAA,UACR;AACA,iBAAO,OAAO,KAAK,YAAY,GAAG,KAAK;AAAA,QAC3C;AAAA,MACJ;AAAA,MACA,CAAC,cAAc;AACX,cAAM,KAAK,KAAK,OAAO,KAAK;AAC5B,YAAI,OAAO;AACP,iBAAO,OAAO,KAAK,UAAU,CAAC;AAAA,iBACzB,OAAO,QAAQ,KAAK,OAAO,CAAC,MAAM;AACvC,iBAAO,OAAO,KAAK,UAAU,CAAC;AAAA;AAE9B,iBAAO;AAAA,MACf;AAAA,MACA,CAAC,WAAW,WAAW;AACnB,YAAI,IAAI,KAAK,MAAM;AACnB,YAAI;AACJ,WAAG;AACC,eAAK,KAAK,OAAO,EAAE;AAAA,QACvB,SAAS,OAAO,OAAQ,aAAa,OAAO;AAC5C,cAAM,IAAI,IAAI,KAAK;AACnB,YAAI,IAAI,GAAG;AACP,gBAAM,KAAK,OAAO,OAAO,KAAK,KAAK,CAAC;AACpC,eAAK,MAAM;AAAA,QACf;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,UAAU,MAAM;AACb,YAAI,IAAI,KAAK;AACb,YAAI,KAAK,KAAK,OAAO;AACrB,eAAO,CAAC,KAAK,EAAE;AACX,eAAK,KAAK,OAAO,EAAE;AACvB,eAAO,OAAO,KAAK,YAAY,GAAG,KAAK;AAAA,MAC3C;AAAA,IACJ;AAEA,YAAQ,QAAQ;AAAA;AAAA;;;AC9sBhB;AAAA;AAAA;AAOA,QAAM,cAAN,MAAkB;AAAA,MACd,cAAc;AACV,aAAK,aAAa,CAAC;AAKnB,aAAK,aAAa,CAAC,WAAW,KAAK,WAAW,KAAK,MAAM;AAMzD,aAAK,UAAU,CAAC,WAAW;AACvB,cAAI,MAAM;AACV,cAAI,OAAO,KAAK,WAAW;AAC3B,iBAAO,MAAM,MAAM;AACf,kBAAM,MAAO,MAAM,QAAS;AAC5B,gBAAI,KAAK,WAAW,OAAO;AACvB,oBAAM,MAAM;AAAA;AAEZ,qBAAO;AAAA,UACf;AACA,cAAI,KAAK,WAAW,SAAS;AACzB,mBAAO,EAAE,MAAM,MAAM,GAAG,KAAK,EAAE;AACnC,cAAI,QAAQ;AACR,mBAAO,EAAE,MAAM,GAAG,KAAK,OAAO;AAClC,gBAAM,QAAQ,KAAK,WAAW,MAAM;AACpC,iBAAO,EAAE,MAAM,KAAK,KAAK,SAAS,QAAQ,EAAE;AAAA,QAChD;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,cAAc;AAAA;AAAA;;;ACxCtB,IAAAE,kBAAA;AAAA;AAAA;AAEA,QAAI,eAAe,UAAQ;AAC3B,QAAI,MAAM;AACV,QAAI,QAAQ;AAEZ,aAAS,cAAc,MAAM,MAAM;AAC/B,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE;AAC/B,YAAI,KAAK,GAAG,SAAS;AACjB,iBAAO;AACf,aAAO;AAAA,IACX;AACA,aAAS,kBAAkB,MAAM;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAClC,gBAAQ,KAAK,GAAG,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD;AAAA,UACJ;AACI,mBAAO;AAAA,QACf;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,YAAY,OAAO;AACxB,cAAQ,+BAAO,MAAM;AAAA,QACjB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO;AAAA,MACf;AAAA,IACJ;AACA,aAAS,aAAa,QAAQ;AAC1B,cAAQ,OAAO,MAAM;AAAA,QACjB,KAAK;AACD,iBAAO,OAAO;AAAA,QAClB,KAAK,aAAa;AACd,gBAAM,KAAK,OAAO,MAAM,OAAO,MAAM,SAAS;AAC9C,iBAAO,GAAG,OAAO,GAAG;AAAA,QACxB;AAAA,QACA,KAAK;AACD,iBAAO,OAAO,MAAM,OAAO,MAAM,SAAS,GAAG;AAAA,QAEjD;AACI,iBAAO,CAAC;AAAA,MAChB;AAAA,IACJ;AAEA,aAAS,sBAAsB,MAAM;AArDrC,UAAAC;AAsDI,UAAI,KAAK,WAAW;AAChB,eAAO,CAAC;AACZ,UAAI,IAAI,KAAK;AACb;AAAM,eAAO,EAAE,KAAK,GAAG;AACnB,kBAAQ,KAAK,GAAG,MAAM;AAAA,YAClB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACD,oBAAM;AAAA,UACd;AAAA,QACJ;AACA,eAAOA,MAAA,KAAK,EAAE,OAAP,gBAAAA,IAAW,UAAS,SAAS;AAAA,MAEpC;AACA,aAAO,KAAK,OAAO,GAAG,KAAK,MAAM;AAAA,IACrC;AACA,aAAS,gBAAgB,IAAI;AACzB,UAAI,GAAG,MAAM,SAAS,kBAAkB;AACpC,mBAAW,MAAM,GAAG,OAAO;AACvB,cAAI,GAAG,OACH,CAAC,GAAG,SACJ,CAAC,cAAc,GAAG,OAAO,kBAAkB,KAC3C,CAAC,cAAc,GAAG,KAAK,eAAe,GAAG;AACzC,gBAAI,GAAG;AACH,iBAAG,QAAQ,GAAG;AAClB,mBAAO,GAAG;AACV,gBAAI,YAAY,GAAG,KAAK,GAAG;AACvB,kBAAI,GAAG,MAAM;AACT,sBAAM,UAAU,KAAK,MAAM,GAAG,MAAM,KAAK,GAAG,GAAG;AAAA;AAE/C,mBAAG,MAAM,MAAM,GAAG;AAAA,YAC1B;AAEI,oBAAM,UAAU,KAAK,MAAM,GAAG,OAAO,GAAG,GAAG;AAC/C,mBAAO,GAAG;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AA4BA,QAAMC,UAAN,MAAa;AAAA,MAKT,YAAY,WAAW;AAEnB,aAAK,YAAY;AAEjB,aAAK,WAAW;AAEhB,aAAK,SAAS;AAEd,aAAK,SAAS;AAEd,aAAK,YAAY;AAEjB,aAAK,QAAQ,CAAC;AAEd,aAAK,SAAS;AAEd,aAAK,OAAO;AAEZ,aAAK,QAAQ,IAAI,MAAM,MAAM;AAC7B,aAAK,YAAY;AAAA,MACrB;AAAA,MASA,CAAC,MAAM,QAAQ,aAAa,OAAO;AAC/B,YAAI,KAAK,aAAa,KAAK,WAAW;AAClC,eAAK,UAAU,CAAC;AACpB,mBAAW,UAAU,KAAK,MAAM,IAAI,QAAQ,UAAU;AAClD,iBAAO,KAAK,KAAK,MAAM;AAC3B,YAAI,CAAC;AACD,iBAAO,KAAK,IAAI;AAAA,MACxB;AAAA,MAIA,CAAC,KAAK,QAAQ;AACV,aAAK,SAAS;AACd,YAAI,aAAa,IAAI;AACjB,kBAAQ,IAAI,KAAK,IAAI,YAAY,MAAM,CAAC;AAC5C,YAAI,KAAK,UAAU;AACf,eAAK,WAAW;AAChB,iBAAO,KAAK,KAAK;AACjB,eAAK,UAAU,OAAO;AACtB;AAAA,QACJ;AACA,cAAM,OAAO,IAAI,UAAU,MAAM;AACjC,YAAI,CAAC,MAAM;AACP,gBAAM,UAAU,qBAAqB;AACrC,iBAAO,KAAK,IAAI,EAAE,MAAM,SAAS,QAAQ,KAAK,QAAQ,SAAS,OAAO,CAAC;AACvE,eAAK,UAAU,OAAO;AAAA,QAC1B,WACS,SAAS,UAAU;AACxB,eAAK,YAAY;AACjB,eAAK,WAAW;AAChB,eAAK,OAAO;AAAA,QAChB,OACK;AACD,eAAK,OAAO;AACZ,iBAAO,KAAK,KAAK;AACjB,kBAAQ,MAAM;AAAA,YACV,KAAK;AACD,mBAAK,YAAY;AACjB,mBAAK,SAAS;AACd,kBAAI,KAAK;AACL,qBAAK,UAAU,KAAK,SAAS,OAAO,MAAM;AAC9C;AAAA,YACJ,KAAK;AACD,kBAAI,KAAK,aAAa,OAAO,OAAO;AAChC,qBAAK,UAAU,OAAO;AAC1B;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACD,kBAAI,KAAK;AACL,qBAAK,UAAU,OAAO;AAC1B;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AACD;AAAA,YACJ;AACI,mBAAK,YAAY;AAAA,UACzB;AACA,eAAK,UAAU,OAAO;AAAA,QAC1B;AAAA,MACJ;AAAA,MAEA,CAAC,MAAM;AACH,eAAO,KAAK,MAAM,SAAS;AACvB,iBAAO,KAAK,IAAI;AAAA,MACxB;AAAA,MACA,IAAI,cAAc;AACd,cAAM,KAAK;AAAA,UACP,MAAM,KAAK;AAAA,UACX,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,QACjB;AACA,eAAO;AAAA,MACX;AAAA,MACA,CAAC,OAAO;AACJ,cAAMC,OAAM,KAAK,KAAK,CAAC;AACvB,YAAI,KAAK,SAAS,cAAc,CAACA,QAAOA,KAAI,SAAS,YAAY;AAC7D,iBAAO,KAAK,MAAM,SAAS;AACvB,mBAAO,KAAK,IAAI;AACpB,eAAK,MAAM,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,QAAQ,KAAK;AAAA,YACb,QAAQ,KAAK;AAAA,UACjB,CAAC;AACD;AAAA,QACJ;AACA,YAAI,CAACA;AACD,iBAAO,OAAO,KAAK,OAAO;AAC9B,gBAAQA,KAAI,MAAM;AAAA,UACd,KAAK;AACD,mBAAO,OAAO,KAAK,SAASA,IAAG;AAAA,UACnC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,OAAO,KAAK,OAAOA,IAAG;AAAA,UACjC,KAAK;AACD,mBAAO,OAAO,KAAK,YAAYA,IAAG;AAAA,UACtC,KAAK;AACD,mBAAO,OAAO,KAAK,SAASA,IAAG;AAAA,UACnC,KAAK;AACD,mBAAO,OAAO,KAAK,cAAcA,IAAG;AAAA,UACxC,KAAK;AACD,mBAAO,OAAO,KAAK,eAAeA,IAAG;AAAA,UACzC,KAAK;AACD,mBAAO,OAAO,KAAK,YAAYA,IAAG;AAAA,QAC1C;AAEA,eAAO,KAAK,IAAI;AAAA,MACpB;AAAA,MACA,KAAK,GAAG;AACJ,eAAO,KAAK,MAAM,KAAK,MAAM,SAAS;AAAA,MAC1C;AAAA,MACA,CAAC,IAAI,OAAO;AACR,cAAM,QAAQ,SAAS,KAAK,MAAM,IAAI;AAEtC,YAAI,CAAC,OAAO;AACR,gBAAM,UAAU;AAChB,gBAAM,EAAE,MAAM,SAAS,QAAQ,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AAAA,QACpE,WACS,KAAK,MAAM,WAAW,GAAG;AAC9B,gBAAM;AAAA,QACV,OACK;AACD,gBAAMA,OAAM,KAAK,KAAK,CAAC;AACvB,cAAI,MAAM,SAAS,gBAAgB;AAE/B,kBAAM,SAAS,YAAYA,OAAMA,KAAI,SAAS;AAAA,UAClD,WACS,MAAM,SAAS,qBAAqBA,KAAI,SAAS,YAAY;AAElE,kBAAM,SAAS;AAAA,UACnB;AACA,cAAI,MAAM,SAAS;AACf,4BAAgB,KAAK;AACzB,kBAAQA,KAAI,MAAM;AAAA,YACd,KAAK;AACD,cAAAA,KAAI,QAAQ;AACZ;AAAA,YACJ,KAAK;AACD,cAAAA,KAAI,MAAM,KAAK,KAAK;AACpB;AAAA,YACJ,KAAK,aAAa;AACd,oBAAM,KAAKA,KAAI,MAAMA,KAAI,MAAM,SAAS;AACxC,kBAAI,GAAG,OAAO;AACV,gBAAAA,KAAI,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AACjD,qBAAK,YAAY;AACjB;AAAA,cACJ,WACS,GAAG,KAAK;AACb,mBAAG,QAAQ;AAAA,cACf,OACK;AACD,uBAAO,OAAO,IAAI,EAAE,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AACzC,qBAAK,YAAY,CAAC,GAAG;AACrB;AAAA,cACJ;AACA;AAAA,YACJ;AAAA,YACA,KAAK,aAAa;AACd,oBAAM,KAAKA,KAAI,MAAMA,KAAI,MAAM,SAAS;AACxC,kBAAI,GAAG;AACH,gBAAAA,KAAI,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,OAAO,MAAM,CAAC;AAAA;AAE1C,mBAAG,QAAQ;AACf;AAAA,YACJ;AAAA,YACA,KAAK,mBAAmB;AACpB,oBAAM,KAAKA,KAAI,MAAMA,KAAI,MAAM,SAAS;AACxC,kBAAI,CAAC,MAAM,GAAG;AACV,gBAAAA,KAAI,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AAAA,uBAC5C,GAAG;AACR,mBAAG,QAAQ;AAAA;AAEX,uBAAO,OAAO,IAAI,EAAE,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AAC7C;AAAA,YACJ;AAAA,YAEA;AACI,qBAAO,KAAK,IAAI;AAChB,qBAAO,KAAK,IAAI,KAAK;AAAA,UAC7B;AACA,eAAKA,KAAI,SAAS,cACdA,KAAI,SAAS,eACbA,KAAI,SAAS,iBACZ,MAAM,SAAS,eAAe,MAAM,SAAS,cAAc;AAC5D,kBAAM,OAAO,MAAM,MAAM,MAAM,MAAM,SAAS;AAC9C,gBAAI,QACA,CAAC,KAAK,OACN,CAAC,KAAK,SACN,KAAK,MAAM,SAAS,KACpB,kBAAkB,KAAK,KAAK,MAAM,OACjC,MAAM,WAAW,KACd,KAAK,MAAM,MAAM,QAAM,GAAG,SAAS,aAAa,GAAG,SAAS,MAAM,MAAM,IAAI;AAChF,kBAAIA,KAAI,SAAS;AACb,gBAAAA,KAAI,MAAM,KAAK;AAAA;AAEf,gBAAAA,KAAI,MAAM,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;AACxC,oBAAM,MAAM,OAAO,IAAI,CAAC;AAAA,YAC5B;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,SAAS;AACN,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AACD,kBAAM,EAAE,MAAM,aAAa,QAAQ,KAAK,QAAQ,QAAQ,KAAK,OAAO;AACpE;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,kBAAM,KAAK;AACX;AAAA,UACJ,KAAK;AAAA,UACL,KAAK,aAAa;AACd,kBAAM,MAAM;AAAA,cACR,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC;AAAA,YACZ;AACA,gBAAI,KAAK,SAAS;AACd,kBAAI,MAAM,KAAK,KAAK,WAAW;AACnC,iBAAK,MAAM,KAAK,GAAG;AACnB;AAAA,UACJ;AAAA,QACJ;AACA,cAAM;AAAA,UACF,MAAM;AAAA,UACN,QAAQ,KAAK;AAAA,UACb,SAAS,cAAc,KAAK;AAAA,UAC5B,QAAQ,KAAK;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,CAAC,SAAS,KAAK;AACX,YAAI,IAAI;AACJ,iBAAO,OAAO,KAAK,QAAQ,GAAG;AAClC,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK,aAAa;AACd,gBAAI,kBAAkB,IAAI,KAAK,MAAM,IAAI;AACrC,qBAAO,KAAK,IAAI;AAChB,qBAAO,KAAK,KAAK;AAAA,YACrB;AAEI,kBAAI,MAAM,KAAK,KAAK,WAAW;AACnC;AAAA,UACJ;AAAA,UACA,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,MAAM,KAAK,KAAK,WAAW;AAC/B;AAAA,QACR;AACA,cAAM,KAAK,KAAK,gBAAgB,GAAG;AACnC,YAAI;AACA,eAAK,MAAM,KAAK,EAAE;AAAA,aACjB;AACD,gBAAM;AAAA,YACF,MAAM;AAAA,YACN,QAAQ,KAAK;AAAA,YACb,SAAS,cAAc,KAAK;AAAA,YAC5B,QAAQ,KAAK;AAAA,UACjB;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,OAAO,QAAQ;AACZ,YAAI,KAAK,SAAS,iBAAiB;AAC/B,gBAAM,OAAO,aAAa,KAAK,KAAK,CAAC,CAAC;AACtC,gBAAM,QAAQ,sBAAsB,IAAI;AACxC,cAAIC;AACJ,cAAI,OAAO,KAAK;AACZ,YAAAA,OAAM,OAAO;AACb,YAAAA,KAAI,KAAK,KAAK,WAAW;AACzB,mBAAO,OAAO;AAAA,UAClB;AAEI,YAAAA,OAAM,CAAC,KAAK,WAAW;AAC3B,gBAAM,MAAM;AAAA,YACR,MAAM;AAAA,YACN,QAAQ,OAAO;AAAA,YACf,QAAQ,OAAO;AAAA,YACf,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,KAAAA,KAAI,CAAC;AAAA,UACvC;AACA,eAAK,YAAY;AACjB,eAAK,MAAM,KAAK,MAAM,SAAS,KAAK;AAAA,QACxC;AAEI,iBAAO,KAAK,QAAQ,MAAM;AAAA,MAClC;AAAA,MACA,CAAC,YAAY,QAAQ;AACjB,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,UACJ,KAAK;AACD,mBAAO,SAAS,KAAK;AAErB,iBAAK,YAAY;AACjB,iBAAK,SAAS;AACd,gBAAI,KAAK,WAAW;AAChB,kBAAI,KAAK,KAAK,OAAO,QAAQ,IAAI,IAAI;AACrC,qBAAO,OAAO,GAAG;AACb,qBAAK,UAAU,KAAK,SAAS,EAAE;AAC/B,qBAAK,KAAK,OAAO,QAAQ,MAAM,EAAE,IAAI;AAAA,cACzC;AAAA,YACJ;AACA,mBAAO,KAAK,IAAI;AAChB;AAAA,UAEJ;AACI,mBAAO,KAAK,IAAI;AAChB,mBAAO,KAAK,KAAK;AAAA,QACzB;AAAA,MACJ;AAAA,MACA,CAAC,SAAS,KAAK;AA3dnB,YAAAH;AA4dQ,cAAM,KAAK,IAAI,MAAM,IAAI,MAAM,SAAS;AAExC,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AACD,iBAAK,YAAY;AACjB,gBAAI,GAAG,OAAO;AACV,oBAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,MAAM;AAC/C,oBAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,SAAS,KAAK;AACxD,mBAAI,6BAAM,UAAS;AACf,2CAAK,KAAK,KAAK;AAAA;AAEf,oBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YACpD,WACS,GAAG,KAAK;AACb,iBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,YAChC,OACK;AACD,iBAAG,MAAM,KAAK,KAAK,WAAW;AAAA,YAClC;AACA;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,GAAG,OAAO;AACV,kBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YAChD,WACS,GAAG,KAAK;AACb,iBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,YAChC,OACK;AACD,kBAAI,KAAK,kBAAkB,GAAG,OAAO,IAAI,MAAM,GAAG;AAC9C,sBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,SAAS;AAC1C,sBAAM,OAAMA,MAAA,6BAAM,UAAN,gBAAAA,IAAa;AACzB,oBAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,wBAAM,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK;AACxC,sBAAI,KAAK,KAAK,WAAW;AACzB,sBAAI,MAAM,IAAI;AACd;AAAA,gBACJ;AAAA,cACJ;AACA,iBAAG,MAAM,KAAK,KAAK,WAAW;AAAA,YAClC;AACA;AAAA,QACR;AACA,YAAI,KAAK,UAAU,IAAI,QAAQ;AAC3B,gBAAM,cAAc,CAAC,KAAK,aAAa,KAAK,WAAW,IAAI;AAC3D,gBAAM,aAAa,gBACd,GAAG,OAAO,GAAG,gBACd,KAAK,SAAS;AAElB,cAAI,QAAQ,CAAC;AACb,cAAI,cAAc,GAAG,OAAO,CAAC,GAAG,OAAO;AACnC,kBAAM,KAAK,CAAC;AACZ,qBAAS,IAAI,GAAG,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AACpC,oBAAM,KAAK,GAAG,IAAI;AAClB,sBAAQ,GAAG,MAAM;AAAA,gBACb,KAAK;AACD,qBAAG,KAAK,CAAC;AACT;AAAA,gBACJ,KAAK;AACD;AAAA,gBACJ,KAAK;AACD,sBAAI,GAAG,SAAS,IAAI;AAChB,uBAAG,SAAS;AAChB;AAAA,gBACJ;AACI,qBAAG,SAAS;AAAA,cACpB;AAAA,YACJ;AACA,gBAAI,GAAG,UAAU;AACb,sBAAQ,GAAG,IAAI,OAAO,GAAG,EAAE;AAAA,UACnC;AACA,kBAAQ,KAAK,MAAM;AAAA,YACf,KAAK;AAAA,YACL,KAAK;AACD,kBAAI,cAAc,GAAG,OAAO;AACxB,sBAAM,KAAK,KAAK,WAAW;AAC3B,oBAAI,MAAM,KAAK,EAAE,MAAM,CAAC;AACxB,qBAAK,YAAY;AAAA,cACrB,WACS,GAAG,KAAK;AACb,mBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,cAChC,OACK;AACD,mBAAG,MAAM,KAAK,KAAK,WAAW;AAAA,cAClC;AACA;AAAA,YACJ,KAAK;AACD,kBAAI,CAAC,GAAG,OAAO,CAAC,GAAG,aAAa;AAC5B,mBAAG,MAAM,KAAK,KAAK,WAAW;AAC9B,mBAAG,cAAc;AAAA,cACrB,WACS,cAAc,GAAG,OAAO;AAC7B,sBAAM,KAAK,KAAK,WAAW;AAC3B,oBAAI,MAAM,KAAK,EAAE,OAAO,aAAa,KAAK,CAAC;AAAA,cAC/C,OACK;AACD,qBAAK,MAAM,KAAK;AAAA,kBACZ,MAAM;AAAA,kBACN,QAAQ,KAAK;AAAA,kBACb,QAAQ,KAAK;AAAA,kBACb,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW,GAAG,aAAa,KAAK,CAAC;AAAA,gBAC5D,CAAC;AAAA,cACL;AACA,mBAAK,YAAY;AACjB;AAAA,YACJ,KAAK;AACD,kBAAI,GAAG,aAAa;AAChB,oBAAI,CAAC,GAAG,KAAK;AACT,sBAAI,cAAc,GAAG,OAAO,SAAS,GAAG;AACpC,2BAAO,OAAO,IAAI,EAAE,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,kBAC5D,OACK;AACD,0BAAMI,SAAQ,sBAAsB,GAAG,KAAK;AAC5C,yBAAK,MAAM,KAAK;AAAA,sBACZ,MAAM;AAAA,sBACN,QAAQ,KAAK;AAAA,sBACb,QAAQ,KAAK;AAAA,sBACb,OAAO,CAAC,EAAE,OAAAA,QAAO,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,oBACzD,CAAC;AAAA,kBACL;AAAA,gBACJ,WACS,GAAG,OAAO;AACf,sBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,gBACpE,WACS,cAAc,GAAG,KAAK,eAAe,GAAG;AAC7C,uBAAK,MAAM,KAAK;AAAA,oBACZ,MAAM;AAAA,oBACN,QAAQ,KAAK;AAAA,oBACb,QAAQ,KAAK;AAAA,oBACb,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,kBACzD,CAAC;AAAA,gBACL,WACS,YAAY,GAAG,GAAG,KACvB,CAAC,cAAc,GAAG,KAAK,SAAS,GAAG;AACnC,wBAAMA,SAAQ,sBAAsB,GAAG,KAAK;AAC5C,wBAAM,MAAM,GAAG;AACf,wBAAMD,OAAM,GAAG;AACf,kBAAAA,KAAI,KAAK,KAAK,WAAW;AAEzB,yBAAO,GAAG;AAEV,yBAAO,GAAG;AACV,uBAAK,MAAM,KAAK;AAAA,oBACZ,MAAM;AAAA,oBACN,QAAQ,KAAK;AAAA,oBACb,QAAQ,KAAK;AAAA,oBACb,OAAO,CAAC,EAAE,OAAAC,QAAO,KAAK,KAAAD,KAAI,CAAC;AAAA,kBAC/B,CAAC;AAAA,gBACL,WACS,MAAM,SAAS,GAAG;AAEvB,qBAAG,MAAM,GAAG,IAAI,OAAO,OAAO,KAAK,WAAW;AAAA,gBAClD,OACK;AACD,qBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,gBAChC;AAAA,cACJ,OACK;AACD,oBAAI,CAAC,GAAG,KAAK;AACT,yBAAO,OAAO,IAAI,EAAE,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,gBAC5D,WACS,GAAG,SAAS,YAAY;AAC7B,sBAAI,MAAM,KAAK,EAAE,OAAO,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,gBAChE,WACS,cAAc,GAAG,KAAK,eAAe,GAAG;AAC7C,uBAAK,MAAM,KAAK;AAAA,oBACZ,MAAM;AAAA,oBACN,QAAQ,KAAK;AAAA,oBACb,QAAQ,KAAK;AAAA,oBACb,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,kBAC7D,CAAC;AAAA,gBACL,OACK;AACD,qBAAG,IAAI,KAAK,KAAK,WAAW;AAAA,gBAChC;AAAA,cACJ;AACA,mBAAK,YAAY;AACjB;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK,wBAAwB;AACzB,oBAAME,MAAK,KAAK,WAAW,KAAK,IAAI;AACpC,kBAAI,cAAc,GAAG,OAAO;AACxB,oBAAI,MAAM,KAAK,EAAE,OAAO,KAAKA,KAAI,KAAK,CAAC,EAAE,CAAC;AAC1C,qBAAK,YAAY;AAAA,cACrB,WACS,GAAG,KAAK;AACb,qBAAK,MAAM,KAAKA,GAAE;AAAA,cACtB,OACK;AACD,uBAAO,OAAO,IAAI,EAAE,KAAKA,KAAI,KAAK,CAAC,EAAE,CAAC;AACtC,qBAAK,YAAY;AAAA,cACrB;AACA;AAAA,YACJ;AAAA,YACA,SAAS;AACL,oBAAM,KAAK,KAAK,gBAAgB,GAAG;AACnC,kBAAI,IAAI;AACJ,oBAAI,eAAe,GAAG,SAAS,aAAa;AACxC,sBAAI,MAAM,KAAK,EAAE,MAAM,CAAC;AAAA,gBAC5B;AACA,qBAAK,MAAM,KAAK,EAAE;AAClB;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AACA,eAAO,KAAK,IAAI;AAChB,eAAO,KAAK,KAAK;AAAA,MACrB;AAAA,MACA,CAAC,cAAc,KAAK;AA/qBxB,YAAAL;AAgrBQ,cAAM,KAAK,IAAI,MAAM,IAAI,MAAM,SAAS;AACxC,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AACD,gBAAI,GAAG,OAAO;AACV,oBAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,MAAM;AAC/C,oBAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,SAAS,KAAK;AACxD,mBAAI,6BAAM,UAAS;AACf,2CAAK,KAAK,KAAK;AAAA;AAEf,oBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YACpD;AAEI,iBAAG,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,GAAG;AACH,kBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,iBAC3C;AACD,kBAAI,KAAK,kBAAkB,GAAG,OAAO,IAAI,MAAM,GAAG;AAC9C,sBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,SAAS;AAC1C,sBAAM,OAAMA,MAAA,6BAAM,UAAN,gBAAAA,IAAa;AACzB,oBAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,wBAAM,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK;AACxC,sBAAI,KAAK,KAAK,WAAW;AACzB,sBAAI,MAAM,IAAI;AACd;AAAA,gBACJ;AAAA,cACJ;AACA,iBAAG,MAAM,KAAK,KAAK,WAAW;AAAA,YAClC;AACA;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,GAAG,SAAS,KAAK,UAAU,IAAI;AAC/B;AACJ,eAAG,MAAM,KAAK,KAAK,WAAW;AAC9B;AAAA,UACJ,KAAK;AACD,gBAAI,KAAK,WAAW,IAAI;AACpB;AACJ,gBAAI,GAAG,SAAS,cAAc,GAAG,OAAO,cAAc;AAClD,kBAAI,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA;AAE5C,iBAAG,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,QACR;AACA,YAAI,KAAK,SAAS,IAAI,QAAQ;AAC1B,gBAAM,KAAK,KAAK,gBAAgB,GAAG;AACnC,cAAI,IAAI;AACJ,iBAAK,MAAM,KAAK,EAAE;AAClB;AAAA,UACJ;AAAA,QACJ;AACA,eAAO,KAAK,IAAI;AAChB,eAAO,KAAK,KAAK;AAAA,MACrB;AAAA,MACA,CAAC,eAAe,IAAI;AAChB,cAAM,KAAK,GAAG,MAAM,GAAG,MAAM,SAAS;AACtC,YAAI,KAAK,SAAS,kBAAkB;AAChC,cAAIE;AACJ,aAAG;AACC,mBAAO,KAAK,IAAI;AAChB,YAAAA,OAAM,KAAK,KAAK,CAAC;AAAA,UACrB,SAASA,QAAOA,KAAI,SAAS;AAAA,QACjC,WACS,GAAG,IAAI,WAAW,GAAG;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACf,KAAK;AAAA,YACL,KAAK;AACD,kBAAI,CAAC,MAAM,GAAG;AACV,mBAAG,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA;AAE3C,mBAAG,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,YACJ,KAAK;AACD,kBAAI,CAAC,MAAM,GAAG;AACV,mBAAG,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,uBAC1D,GAAG;AACR,mBAAG,IAAI,KAAK,KAAK,WAAW;AAAA;AAE5B,uBAAO,OAAO,IAAI,EAAE,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAC5D;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACD,kBAAI,CAAC,MAAM,GAAG;AACV,mBAAG,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,uBACtC,GAAG;AACR,mBAAG,IAAI,KAAK,KAAK,WAAW;AAAA;AAE5B,mBAAG,MAAM,KAAK,KAAK,WAAW;AAClC;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK,wBAAwB;AACzB,oBAAMG,MAAK,KAAK,WAAW,KAAK,IAAI;AACpC,kBAAI,CAAC,MAAM,GAAG;AACV,mBAAG,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAKA,KAAI,KAAK,CAAC,EAAE,CAAC;AAAA,uBACxC,GAAG;AACR,qBAAK,MAAM,KAAKA,GAAE;AAAA;AAElB,uBAAO,OAAO,IAAI,EAAE,KAAKA,KAAI,KAAK,CAAC,EAAE,CAAC;AAC1C;AAAA,YACJ;AAAA,YACA,KAAK;AAAA,YACL,KAAK;AACD,iBAAG,IAAI,KAAK,KAAK,WAAW;AAC5B;AAAA,UACR;AACA,gBAAM,KAAK,KAAK,gBAAgB,EAAE;AAElC,cAAI;AACA,iBAAK,MAAM,KAAK,EAAE;AAAA,eACjB;AACD,mBAAO,KAAK,IAAI;AAChB,mBAAO,KAAK,KAAK;AAAA,UACrB;AAAA,QACJ,OACK;AACD,gBAAM,SAAS,KAAK,KAAK,CAAC;AAC1B,cAAI,OAAO,SAAS,gBACd,KAAK,SAAS,mBAAmB,OAAO,WAAW,GAAG,UACnD,KAAK,SAAS,aACX,CAAC,OAAO,MAAM,OAAO,MAAM,SAAS,GAAG,MAAO;AACtD,mBAAO,KAAK,IAAI;AAChB,mBAAO,KAAK,KAAK;AAAA,UACrB,WACS,KAAK,SAAS,mBACnB,OAAO,SAAS,mBAAmB;AACnC,kBAAM,OAAO,aAAa,MAAM;AAChC,kBAAM,QAAQ,sBAAsB,IAAI;AACxC,4BAAgB,EAAE;AAClB,kBAAMF,OAAM,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,MAAM;AAC1C,YAAAA,KAAI,KAAK,KAAK,WAAW;AACzB,kBAAM,MAAM;AAAA,cACR,MAAM;AAAA,cACN,QAAQ,GAAG;AAAA,cACX,QAAQ,GAAG;AAAA,cACX,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,KAAAA,KAAI,CAAC;AAAA,YACnC;AACA,iBAAK,YAAY;AACjB,iBAAK,MAAM,KAAK,MAAM,SAAS,KAAK;AAAA,UACxC,OACK;AACD,mBAAO,KAAK,QAAQ,EAAE;AAAA,UAC1B;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,WAAW,MAAM;AACb,YAAI,KAAK,WAAW;AAChB,cAAI,KAAK,KAAK,OAAO,QAAQ,IAAI,IAAI;AACrC,iBAAO,OAAO,GAAG;AACb,iBAAK,UAAU,KAAK,SAAS,EAAE;AAC/B,iBAAK,KAAK,OAAO,QAAQ,MAAM,EAAE,IAAI;AAAA,UACzC;AAAA,QACJ;AACA,eAAO;AAAA,UACH;AAAA,UACA,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,gBAAgB,QAAQ;AACpB,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,WAAW,KAAK,IAAI;AAAA,UACpC,KAAK;AACD,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC,KAAK,WAAW;AAAA,cACxB,QAAQ;AAAA,YACZ;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,KAAK;AAAA,cACZ,OAAO,CAAC;AAAA,cACR,KAAK,CAAC;AAAA,YACV;AAAA,UACJ,KAAK;AACD,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YACzC;AAAA,UACJ,KAAK,oBAAoB;AACrB,iBAAK,YAAY;AACjB,kBAAM,OAAO,aAAa,MAAM;AAChC,kBAAM,QAAQ,sBAAsB,IAAI;AACxC,kBAAM,KAAK,KAAK,WAAW;AAC3B,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC,EAAE,OAAO,aAAa,KAAK,CAAC;AAAA,YACxC;AAAA,UACJ;AAAA,UACA,KAAK,iBAAiB;AAClB,iBAAK,YAAY;AACjB,kBAAM,OAAO,aAAa,MAAM;AAChC,kBAAM,QAAQ,sBAAsB,IAAI;AACxC,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,QAAQ,KAAK;AAAA,cACb,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;AAAA,YACzD;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,MACA,kBAAkB,OAAO,QAAQ;AAC7B,YAAI,KAAK,SAAS;AACd,iBAAO;AACX,YAAI,KAAK,UAAU;AACf,iBAAO;AACX,eAAO,MAAM,MAAM,QAAM,GAAG,SAAS,aAAa,GAAG,SAAS,OAAO;AAAA,MACzE;AAAA,MACA,CAAC,YAAY,QAAQ;AACjB,YAAI,KAAK,SAAS,YAAY;AAC1B,cAAI,OAAO;AACP,mBAAO,IAAI,KAAK,KAAK,WAAW;AAAA;AAEhC,mBAAO,MAAM,CAAC,KAAK,WAAW;AAClC,cAAI,KAAK,SAAS;AACd,mBAAO,KAAK,IAAI;AAAA,QACxB;AAAA,MACJ;AAAA,MACA,CAAC,QAAQ,OAAO;AACZ,gBAAQ,KAAK,MAAM;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACD,mBAAO,KAAK,IAAI;AAChB,mBAAO,KAAK,KAAK;AACjB;AAAA,UACJ,KAAK;AACD,iBAAK,YAAY;AAAA,UAErB,KAAK;AAAA,UACL,KAAK;AAAA,UACL;AAEI,gBAAI,MAAM;AACN,oBAAM,IAAI,KAAK,KAAK,WAAW;AAAA;AAE/B,oBAAM,MAAM,CAAC,KAAK,WAAW;AACjC,gBAAI,KAAK,SAAS;AACd,qBAAO,KAAK,IAAI;AAAA,QAC5B;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,SAASF;AAAA;AAAA;;;AC97BjB;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,MAAM;AACV,QAAI,WAAW;AACf,QAAI,cAAc;AAClB,QAAIK,UAAS;AAEb,aAASC,cAAa,SAAS;AAC3B,YAAM,eAAe,QAAQ,iBAAiB;AAC9C,YAAM,gBAAgB,QAAQ,eAAgB,gBAAgB,IAAI,YAAY,YAAY,KAAM;AAChG,aAAO,EAAE,aAAa,eAAe,aAAa;AAAA,IACtD;AAUA,aAAS,kBAAkB,QAAQ,UAAU,CAAC,GAAG;AAC7C,YAAM,EAAE,aAAAC,cAAa,aAAa,IAAID,cAAa,OAAO;AAC1D,YAAM,WAAW,IAAID,QAAO,OAAOE,gBAAA,gBAAAA,aAAa,UAAU;AAC1D,YAAM,aAAa,IAAI,SAAS,SAAS,OAAO;AAChD,YAAM,OAAO,MAAM,KAAK,WAAW,QAAQ,SAAS,MAAM,MAAM,CAAC,CAAC;AAClE,UAAI,gBAAgBA;AAChB,mBAAW,OAAO,MAAM;AACpB,cAAI,OAAO,QAAQ,OAAO,cAAc,QAAQA,YAAW,CAAC;AAC5D,cAAI,SAAS,QAAQ,OAAO,cAAc,QAAQA,YAAW,CAAC;AAAA,QAClE;AACJ,UAAI,KAAK,SAAS;AACd,eAAO;AACX,aAAO,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,WAAW,WAAW,CAAC;AAAA,IACrE;AAEA,aAAS,cAAc,QAAQ,UAAU,CAAC,GAAG;AACzC,YAAM,EAAE,aAAAA,cAAa,aAAa,IAAID,cAAa,OAAO;AAC1D,YAAM,WAAW,IAAID,QAAO,OAAOE,gBAAA,gBAAAA,aAAa,UAAU;AAC1D,YAAM,aAAa,IAAI,SAAS,SAAS,OAAO;AAEhD,UAAI,MAAM;AACV,iBAAW,QAAQ,WAAW,QAAQ,SAAS,MAAM,MAAM,GAAG,MAAM,OAAO,MAAM,GAAG;AAChF,YAAI,CAAC;AACD,gBAAM;AAAA,iBACD,IAAI,QAAQ,aAAa,UAAU;AACxC,cAAI,OAAO,KAAK,IAAI,OAAO,eAAe,KAAK,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,yEAAyE,CAAC;AAC7J;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,gBAAgBA,cAAa;AAC7B,YAAI,OAAO,QAAQ,OAAO,cAAc,QAAQA,YAAW,CAAC;AAC5D,YAAI,SAAS,QAAQ,OAAO,cAAc,QAAQA,YAAW,CAAC;AAAA,MAClE;AACA,aAAO;AAAA,IACX;AACA,aAASC,OAAM,KAAK,SAAS,SAAS;AAClC,UAAI,WAAW;AACf,UAAI,OAAO,YAAY,YAAY;AAC/B,mBAAW;AAAA,MACf,WACS,YAAY,UAAa,WAAW,OAAO,YAAY,UAAU;AACtE,kBAAU;AAAA,MACd;AACA,YAAM,MAAM,cAAc,KAAK,OAAO;AACtC,UAAI,CAAC;AACD,eAAO;AACX,UAAI,SAAS,QAAQ,aAAW,IAAI,KAAK,IAAI,QAAQ,UAAU,OAAO,CAAC;AACvE,UAAI,IAAI,OAAO,SAAS,GAAG;AACvB,YAAI,IAAI,QAAQ,aAAa;AACzB,gBAAM,IAAI,OAAO;AAAA;AAEjB,cAAI,SAAS,CAAC;AAAA,MACtB;AACA,aAAO,IAAI,KAAK,OAAO,OAAO,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC;AAAA,IACjE;AACA,aAAS,UAAU,OAAO,UAAU,SAAS;AACzC,UAAI,YAAY;AAChB,UAAI,OAAO,aAAa,cAAc,MAAM,QAAQ,QAAQ,GAAG;AAC3D,oBAAY;AAAA,MAChB,WACS,YAAY,UAAa,UAAU;AACxC,kBAAU;AAAA,MACd;AACA,UAAI,OAAO,YAAY;AACnB,kBAAU,QAAQ;AACtB,UAAI,OAAO,YAAY,UAAU;AAC7B,cAAM,SAAS,KAAK,MAAM,OAAO;AACjC,kBAAU,SAAS,IAAI,SAAY,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;AAAA,MAC7E;AACA,UAAI,UAAU,QAAW;AACrB,cAAM,EAAE,cAAc,IAAI,WAAW,YAAY,CAAC;AAClD,YAAI,CAAC;AACD,iBAAO;AAAA,MACf;AACA,UAAI,SAAS,WAAW,KAAK,KAAK,CAAC;AAC/B,eAAO,MAAM,SAAS,OAAO;AACjC,aAAO,IAAI,SAAS,SAAS,OAAO,WAAW,OAAO,EAAE,SAAS,OAAO;AAAA,IAC5E;AAEA,YAAQ,QAAQA;AAChB,YAAQ,oBAAoB;AAC5B,YAAQ,gBAAgB;AACxB,YAAQ,YAAY;AAAA;AAAA;;;AC1GpB,IAAAC,gBAAA;AAAA;AAAA;AAEA,QAAI,WAAW;AACf,QAAI,WAAW;AACf,QAAI,SAAS;AACb,QAAI,SAAS;AACb,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,MAAM;AACV,QAAI,QAAQ;AACZ,QAAI,cAAc;AAClB,QAAIC,UAAS;AACb,QAAI,YAAY;AAChB,QAAI,QAAQ;AAIZ,YAAQ,WAAW,SAAS;AAC5B,YAAQ,WAAW,SAAS;AAC5B,YAAQ,SAAS,OAAO;AACxB,YAAQ,YAAY,OAAO;AAC3B,YAAQ,iBAAiB,OAAO;AAChC,YAAQ,cAAc,OAAO;AAC7B,YAAQ,QAAQ,MAAM;AACtB,YAAQ,UAAU,SAAS;AAC3B,YAAQ,eAAe,SAAS;AAChC,YAAQ,aAAa,SAAS;AAC9B,YAAQ,QAAQ,SAAS;AACzB,YAAQ,SAAS,SAAS;AAC1B,YAAQ,SAAS,SAAS;AAC1B,YAAQ,WAAW,SAAS;AAC5B,YAAQ,QAAQ,SAAS;AACzB,YAAQ,OAAO,KAAK;AACpB,YAAQ,SAAS,OAAO;AACxB,YAAQ,UAAU,QAAQ;AAC1B,YAAQ,UAAU,QAAQ;AAC1B,YAAQ,MAAM;AACd,YAAQ,QAAQ,MAAM;AACtB,YAAQ,cAAc,YAAY;AAClC,YAAQ,SAASA,QAAO;AACxB,YAAQ,QAAQ,UAAU;AAC1B,YAAQ,oBAAoB,UAAU;AACtC,YAAQ,gBAAgB,UAAU;AAClC,YAAQ,YAAY,UAAU;AAC9B,YAAQ,QAAQ,MAAM;AACtB,YAAQ,aAAa,MAAM;AAAA;AAAA;;;ACjD3B,IAAAC,iBAAA;AAAA;AAAA;AA0BA,QAAI,cAAc;AAClB,QAAI,iBAAiB,OAAO,UAAU;AACtC,QAAI,SAAS,SAAU,KAAK,KAAK;AAAE,aAAO,eAAe,MAAM,KAAK,CAAC,GAAG,CAAC;AAAA,IAAG;AAY5E,YAAQ,oBAAoB,SAAU,QAAQ;AAE5C,UAAI,CAAC,QAAQ;AACX,eAAO;AAAA,MACT;AACA,aAAO,OAAO,MAAM,EAAE,QAAQ,aAAa,MAAM;AAAA,IACnD;AAEA,QAAI,qBAAqB;AAAA,MACvB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AACA,QAAI,cAAc;AAElB,aAAS,YAAY,GAAG;AACtB,aAAO,mBAAmB,MAAM;AAAA,IAClC;AAWA,QAAI,gBACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBF,YAAQ,YAAY,SAAU,QAAQ;AACpC,aAAO,UAAU,SACb,KACA,OAAO,MAAM,EACZ,QAAQ,aAAa,WAAW;AAAA,IACvC;AAEA,aAAS,oBAAoB;AAC3B,aAAO,SAAS,UAAU,SAAS,KAAK,IAAI,IAAI,QAAQ;AAAA,IAC1D;AAEA,QAAI;AACF,UAAI,OAAO,OAAO,mBAAmB,YAAY;AAK/C,eAAO,eAAe,QAAQ,WAAW,YAAY,EAAE,OAAO,kBAAkB,CAAC;AAAA,MACnF,OAAO;AAEL,gBAAQ,UAAU,WAAW;AAAA,MAC/B;AAAA,IACF,SAAS,KAAP;AACA,cAAQ,KAAK,sEAAsE;AAAA,IACrF;AAaA,YAAQ,cAAc,SAAU,IAAI,MAAM;AACxC,aAAO,QAAQ,CAAC;AAChB,UAAK,OAAO,QAAU,OAAO,QAAY;AACvC,iBAAS,KAAK,MAAM;AAClB,cAAI,CAAC,OAAO,MAAM,CAAC,GAAG;AACpB;AAAA,UACF;AACA,cAAI,MAAM,eAAe,MAAM,eAAe;AAC5C;AAAA,UACF;AACA,aAAG,KAAK,KAAK;AAAA,QACf;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAcA,YAAQ,sBAAsB,SAAU,IAAI,MAAM,MAAM;AACtD,aAAO,QAAQ,CAAC;AAChB,aAAO,QAAQ,CAAC;AAChB,UAAK,OAAO,QAAU,OAAO,QAAY;AACvC,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAI,IAAI,KAAK;AACb,cAAI,OAAO,KAAK,MAAM,aAAa;AACjC,gBAAI,CAAC,OAAO,MAAM,CAAC,GAAG;AACpB;AAAA,YACF;AACA,gBAAI,MAAM,eAAe,MAAM,eAAe;AAC5C;AAAA,YACF;AACA,eAAG,KAAK,KAAK;AAAA,UACf;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAUA,YAAQ,QAAQ;AAAA,MACd,OAAO,CAAC;AAAA,MACR,KAAK,SAAU,KAAK,KAAK;AACvB,aAAK,MAAM,OAAO;AAAA,MACpB;AAAA,MACA,KAAK,SAAU,KAAK;AAClB,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MACA,QAAQ,SAAU,KAAK;AACrB,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MACA,OAAO,WAAY;AACjB,aAAK,QAAQ,CAAC;AAAA,MAChB;AAAA,IACF;AAUA,YAAQ,gBAAgB,SAAU,KAAK;AACrC,aAAO,IAAI,QAAQ,WAAW,SAAUC,QAAO;AAAE,eAAOA,OAAM,GAAG,YAAY;AAAA,MAAG,CAAC;AAAA,IACnF;AASA,YAAQ,kCAAmC,WAAY;AACrD,UAAI,OAAO,OAAO,UAAU,YAAY;AACtC,eAAO,WAAY;AACjB,iBAAO,uBAAO,OAAO,IAAI;AAAA,QAC3B;AAAA,MACF;AACA,UAAI,EAAE,EAAC,WAAW,KAAI,aAAa,SAAS;AAC1C,eAAO,WAAY;AACjB,iBAAO,EAAC,WAAW,KAAI;AAAA,QACzB;AAAA,MACF;AAEA,aAAO,WAAY;AACjB,eAAO,CAAC;AAAA,MACV;AAAA,IACF,EAAG;AAEH,YAAQ,mBAAmB,SAAU,KAAK;AACxC,UAAI,IAAI,QAAQ,gCAAgC;AAChD,eAAS,KAAK,KAAK;AACjB,YAAI,OAAO,KAAK,CAAC,GAAG;AAClB,YAAE,KAAK,IAAI;AAAA,QACb;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxPA;AAAA;AAAA;AA+CA,QAAIC,MAAK,UAAQ;AACjB,QAAIC,QAAO,UAAQ;AACnB,QAAI,QAAQ;AAEZ,QAAI,oBAAoB;AAExB,QAAI,kBAAkB,kBAA2B;AACjD,QAAI,0BAA0B;AAC9B,QAAI,2BAA2B;AAC/B,QAAI,qBAAqB;AACzB,QAAI,uBAAuB;AAC3B,QAAI,QAAQ;AACZ,QAAI,gBAAgB;AACpB,QAAI,2BAA2B;AAAA,MAAC;AAAA,MAAa;AAAA,MAAS;AAAA,MAAW;AAAA,MAAS;AAAA,MACxE;AAAA,MAAU;AAAA,MAAS;AAAA,MAAgB;AAAA,MAAU;AAAA,MAAY;AAAA,IAAO;AAIlE,QAAI,mCAAmC,yBAAyB,OAAO,OAAO;AAC9E,QAAI,OAAO;AACX,QAAI,iBAAiB;AAUrB,YAAQ,QAAQ,MAAM;AAStB,YAAQ,aAAaD,IAAG;AAYxB,YAAQ,aAAa;AAUrB,YAAQ,cAAe,IAAI,SAAS,cAAc,EAAG,EAAE;AAWvD,YAAQ,iBAAiB,SAAS,MAAM,UAAU,OAAO;AACvD,UAAIE,WAAUD,MAAK;AACnB,UAAIE,WAAUF,MAAK;AACnB,UAAIG,YAAUH,MAAK;AACnB,UAAI,cAAcG,UAAQ,QAAQ,WAAWF,SAAQ,QAAQ,GAAG,IAAI;AACpE,UAAIG,OAAMF,SAAQ,IAAI;AACtB,UAAI,CAACE,MAAK;AACR,uBAAe;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AASA,aAAS,aAAa,MAAM,OAAO;AACjC,UAAI;AACJ,UAAI,MAAM,KAAK,SAAU,GAAG;AAC1B,mBAAW,QAAQ,eAAe,MAAM,GAAG,IAAI;AAC/C,eAAOL,IAAG,WAAW,QAAQ;AAAA,MAC/B,CAAC,GAAG;AACF,eAAO;AAAA,MACT;AAAA,IACF;AASA,aAAS,eAAeC,QAAM,SAAS;AACrC,UAAI;AACJ,UAAI;AACJ,UAAI,QAAQ,QAAQ;AACpB,UAAIK,SAAQ,oBAAoB,KAAKL,MAAI;AAGzC,UAAIK,UAASA,OAAM,QAAQ;AACzB,QAAAL,SAAOA,OAAK,QAAQ,QAAQ,EAAE;AAC9B,YAAI,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAC/B,wBAAc,aAAaA,QAAM,QAAQ,IAAI;AAAA,QAC/C,OAAO;AACL,wBAAc,QAAQ,eAAeA,QAAM,QAAQ,QAAQ,KAAK,IAAI;AAAA,QACtE;AAAA,MACF,OAEK;AAEH,YAAI,QAAQ,UAAU;AACpB,qBAAW,QAAQ,eAAeA,QAAM,QAAQ,QAAQ;AACxD,cAAID,IAAG,WAAW,QAAQ,GAAG;AAC3B,0BAAc;AAAA,UAChB;AAAA,QACF;AAEA,YAAI,CAAC,eAAe,MAAM,QAAQ,KAAK,GAAG;AACxC,wBAAc,aAAaC,QAAM,KAAK;AAAA,QACxC;AACA,YAAI,CAAC,eAAe,OAAO,QAAQ,aAAa,YAAY;AAC1D,gBAAM,IAAI,MAAM,sCACZ,QAAQ,eAAeA,MAAI,IAAI,GAAG;AAAA,QACxC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAoBA,aAAS,YAAY,SAAS,UAAU;AACtC,UAAI;AACJ,UAAI,WAAW,QAAQ;AACvB,UAAI,cAAc,UAAU,SAAS;AAErC,UAAI,QAAQ,OAAO;AACjB,YAAI,CAAC,UAAU;AACb,gBAAM,IAAI,MAAM,kCAAkC;AAAA,QACpD;AACA,eAAO,QAAQ,MAAM,IAAI,QAAQ;AACjC,YAAI,MAAM;AACR,iBAAO;AAAA,QACT;AACA,YAAI,CAAC,aAAa;AAChB,qBAAW,WAAW,QAAQ,EAAE,SAAS,EAAE,QAAQ,MAAM,EAAE;AAAA,QAC7D;AAAA,MACF,WACS,CAAC,aAAa;AAErB,YAAI,CAAC,UAAU;AACb,gBAAM,IAAI,MAAM,uDACU;AAAA,QAC5B;AACA,mBAAW,WAAW,QAAQ,EAAE,SAAS,EAAE,QAAQ,MAAM,EAAE;AAAA,MAC7D;AACA,aAAO,QAAQ,QAAQ,UAAU,OAAO;AACxC,UAAI,QAAQ,OAAO;AACjB,gBAAQ,MAAM,IAAI,UAAU,IAAI;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAcA,aAAS,eAAe,SAAS,MAAM,IAAI;AACzC,UAAI;AACJ,UAAI,CAAC,IAAI;AACP,YAAI,OAAO,QAAQ,eAAe,YAAY;AAC5C,iBAAO,IAAI,QAAQ,YAAY,SAAUG,WAAS,QAAQ;AACxD,gBAAI;AACF,uBAAS,YAAY,OAAO,EAAE,IAAI;AAClC,cAAAA,UAAQ,MAAM;AAAA,YAChB,SACO,KAAP;AACE,qBAAO,GAAG;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH,OACK;AACH,gBAAM,IAAI,MAAM,oCAAoC;AAAA,QACtD;AAAA,MACF,OACK;AACH,YAAI;AACF,mBAAS,YAAY,OAAO,EAAE,IAAI;AAAA,QACpC,SACO,KAAP;AACE,iBAAO,GAAG,GAAG;AAAA,QACf;AAEA,WAAG,MAAM,MAAM;AAAA,MACjB;AAAA,IACF;AAUA,aAAS,WAAW,UAAS;AAC3B,aAAO,QAAQ,WAAW,QAAQ;AAAA,IACpC;AAeA,aAAS,YAAYH,QAAM,SAAS;AAClC,UAAI,OAAO,MAAM,YAAY,MAAM,gCAAgC,GAAG,OAAO;AAC7E,WAAK,WAAW,eAAeA,QAAM,IAAI;AACzC,UAAI,OAAO,QAAQ,aAAa,YAAY;AAC1C,YAAI,iBAAiB,QAAQ,SAASA,QAAM,KAAK,QAAQ;AACzD,YAAI,gBAAgB;AAClB,cAAI,eAAe,UAAU;AAC3B,iBAAK,WAAW,eAAe;AAAA,UACjC;AACA,cAAI,eAAe,UAAU;AAC3B,mBAAO,YAAY,MAAM,eAAe,QAAQ;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AACA,aAAO,YAAY,IAAI;AAAA,IACzB;AAgBA,aAAS,QAAQ,KAAK,KAAK,MAAM,QAAQ,KAAK;AAC5C,UAAIM,SAAQ,IAAI,MAAM,IAAI;AAC1B,UAAI,QAAQ,KAAK,IAAI,SAAS,GAAG,CAAC;AAClC,UAAI,MAAM,KAAK,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAC3C,UAAI,WAAW,IAAI,IAAI;AAEvB,UAAI,UAAUA,OAAM,MAAM,OAAO,GAAG,EAAE,IAAI,SAAU,MAAM,GAAE;AAC1D,YAAI,OAAO,IAAI,QAAQ;AACvB,gBAAQ,QAAQ,SAAS,SAAS,UAC9B,OACA,OACA;AAAA,MACN,CAAC,EAAE,KAAK,IAAI;AAGZ,UAAI,OAAO;AACX,UAAI,WAAW,YAAY,SAAS,MAChC,SAAS,OACT,UAAU,SACV,IAAI;AAER,YAAM;AAAA,IACR;AAEA,aAAS,UAAU,KAAI;AACrB,aAAO,IAAI,QAAQ,WAAW,IAAI;AAAA,IACpC;AAeA,YAAQ,UAAU,SAAS,QAAQ,UAAU,MAAM;AACjD,UAAI;AAKJ,UAAI,QAAQ,KAAK,OAAO;AACtB,YAAI,CAAC,mBAAkB;AACrB,kBAAQ,KAAK,2DAA2D;AACxE,8BAAoB;AAAA,QACtB;AACA,YAAI,CAAC,KAAK,SAAS;AACjB,eAAK,UAAU,KAAK;AAAA,QACtB;AACA,eAAO,KAAK;AAAA,MACd;AACA,cAAQ,IAAI,SAAS,UAAU,IAAI;AACnC,aAAO,MAAM,QAAQ;AAAA,IACvB;AAgBA,YAAQ,SAAS,SAAU,UAAU,GAAG,GAAG;AACzC,UAAI,OAAO,KAAK,MAAM,gCAAgC;AACtD,UAAI,OAAO,KAAK,MAAM,gCAAgC;AAItD,UAAI,UAAU,UAAU,GAAG;AACzB,cAAM,oBAAoB,MAAM,MAAM,wBAAwB;AAAA,MAChE;AAEA,aAAO,YAAY,MAAM,QAAQ,EAAE,IAAI;AAAA,IACzC;AAeA,YAAQ,aAAa,WAAY;AAC/B,UAAI,OAAO,MAAM,UAAU,MAAM,KAAK,SAAS;AAC/C,UAAI,WAAW,KAAK,MAAM;AAC1B,UAAI;AACJ,UAAI,OAAO,EAAC,SAAkB;AAC9B,UAAI;AACJ,UAAI;AAGJ,UAAI,OAAO,UAAU,UAAU,SAAS,MAAM,YAAY;AACxD,aAAK,KAAK,IAAI;AAAA,MAChB;AAEA,UAAI,KAAK,QAAQ;AAEf,eAAO,KAAK,MAAM;AAElB,YAAI,KAAK,QAAQ;AAEf,gBAAM,YAAY,MAAM,KAAK,IAAI,CAAC;AAAA,QACpC,OAEK;AAEH,cAAI,KAAK,UAAU;AAEjB,gBAAI,KAAK,SAAS,OAAO;AACvB,mBAAK,QAAQ,KAAK,SAAS;AAAA,YAC7B;AACA,gBAAI,KAAK,SAAS,eAAe;AAC/B,mBAAK,QAAQ;AAAA,YACf;AAGA,uBAAW,KAAK,SAAS;AACzB,gBAAI,UAAU;AACZ,oBAAM,YAAY,MAAM,QAAQ;AAAA,YAClC;AAAA,UACF;AAIA,gBAAM,oBAAoB,MAAM,MAAM,gCAAgC;AAAA,QACxE;AACA,aAAK,WAAW;AAAA,MAClB,OACK;AACH,eAAO,MAAM,gCAAgC;AAAA,MAC/C;AAEA,aAAO,eAAe,MAAM,MAAM,EAAE;AAAA,IACtC;AAWA,YAAQ,WAAW;AAEnB,YAAQ,aAAa,WAAY;AAC/B,cAAQ,MAAM,MAAM;AAAA,IACtB;AAEA,aAAS,SAAS,MAAM,WAAW;AACjC,UAAI,OAAO,MAAM,iBAAiB,SAAS;AAC3C,UAAI,UAAU,MAAM,gCAAgC;AACpD,WAAK,eAAe;AAEpB,WAAK,OAAO;AACZ,WAAK,WAAW;AAChB,WAAK,cAAc;AACnB,WAAK,SAAS;AACd,cAAQ,SAAS,KAAK,UAAU;AAChC,cAAQ,iBAAiB,KAAK,UAAU,KAAK,kBAAkB,MAAM;AACrE,cAAQ,eAAe,KAAK,iBAAiB;AAC7C,cAAQ,QAAQ,CAAC,CAAC,KAAK;AACvB,cAAQ,WAAW,KAAK;AACxB,cAAQ,gBAAgB,KAAK,iBAAiB,QAAQ,iBAAiB;AACvE,cAAQ,iBAAiB,KAAK,kBAAkB,QAAQ,kBAAkB;AAC1E,cAAQ,YAAY,KAAK,aAAa,QAAQ,aAAa;AAC3D,cAAQ,SAAS,KAAK,UAAU;AAChC,cAAQ,UAAU,KAAK;AACvB,cAAQ,QAAQ,KAAK,SAAS;AAC9B,cAAQ,eAAe,KAAK;AAC5B,cAAQ,OAAO,KAAK;AACpB,cAAQ,WAAW,KAAK;AACxB,cAAQ,qBAAqB,KAAK;AAClC,cAAQ,aAAa,KAAK,cAAc,QAAQ,cAAc;AAC9D,cAAQ,QAAQ,KAAK;AACrB,cAAQ,QAAQ,KAAK;AACrB,cAAQ,qBAAqB,KAAK;AAClC,cAAQ,gBAAgB,OAAO,KAAK,iBAAiB,cAAc,CAAC,CAAC,KAAK,gBAAgB;AAE1F,UAAI,QAAQ,QAAQ;AAClB,gBAAQ,QAAQ;AAAA,MAClB,OACK;AACH,gBAAQ,QAAQ,OAAO,KAAK,SAAS,cAAc,KAAK,QAAQ;AAAA,MAClE;AAEA,WAAK,OAAO;AAEZ,WAAK,QAAQ,KAAK,YAAY;AAAA,IAChC;AAEA,aAAS,QAAQ;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,MACT,KAAK;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAEA,aAAS,YAAY;AAAA,MACnB,aAAa,WAAY;AACvB,YAAI,MAAM;AACV,YAAI,QAAQ,MAAM,kBAAkB,KAAK,KAAK,SAAS;AACvD,YAAI,OAAO,MAAM,kBAAkB,KAAK,KAAK,aAAa;AAC1D,YAAI,QAAQ,MAAM,kBAAkB,KAAK,KAAK,cAAc;AAC5D,cAAM,IAAI,QAAQ,MAAM,KAAK,EAC1B,QAAQ,MAAM,IAAI,EAClB,QAAQ,MAAM,KAAK;AACtB,eAAO,IAAI,OAAO,GAAG;AAAA,MACvB;AAAA,MAEA,SAAS,WAAY;AAEnB,YAAI;AAEJ,YAAI;AACJ,YAAI,OAAO,KAAK;AAChB,YAAI,YAAY;AAChB,YAAI,WAAW;AAEf,YAAI,WAAW,KAAK;AAEpB,YAAI;AAEJ,YAAI,oBAAoB,KAAK,WAAW,KAAK,UAAU,KAAK,QAAQ,IAAI;AAExE,YAAI,CAAC,KAAK,QAAQ;AAChB,eAAK,eAAe;AACpB,uBACE;AAEF,cAAI,KAAK,oBAAoB;AAC3B,gBAAI,CAAC,eAAe,KAAK,KAAK,kBAAkB,GAAG;AACjD,oBAAM,IAAI,MAAM,kDAAkD;AAAA,YACpE;AACA,yBAAa,WAAW,KAAK,qBAAqB;AAAA,UACpD;AACA,cAAI,KAAK,cAAc,CAAC,eAAe,KAAK,KAAK,UAAU,GAAG;AAC5D,kBAAM,IAAI,MAAM,0CAA0C;AAAA,UAC5D;AACA,cAAI,KAAK,sBAAsB,KAAK,mBAAmB,QAAQ;AAC7D,gBAAI,gBAAgB,uBAAuB,KAAK,aAAa;AAC7D,qBAAS,IAAI,GAAG,IAAI,KAAK,mBAAmB,QAAQ,KAAK;AACvD,kBAAI,OAAO,KAAK,mBAAmB;AACnC,kBAAI,CAAC,eAAe,KAAK,IAAI,GAAG;AAC9B,sBAAM,IAAI,MAAM,wBAAwB,IAAI,iCAAiC;AAAA,cAC/E;AACA,kBAAI,IAAI,GAAG;AACT,iCAAiB;AAAA,cACnB;AACA,+BAAiB,OAAO,iBAAiB;AAAA,YAC3C;AACA,yBAAa,gBAAgB;AAAA,UAC/B;AACA,cAAI,KAAK,UAAU,OAAO;AACxB,yBAAc,aAAa,KAAK,aAAa;AAC7C,wBAAY;AAAA,UACd;AACA,sBAAY;AACZ,eAAK,SAAS,YAAY,KAAK,SAAS;AAAA,QAC1C;AAEA,YAAI,KAAK,cAAc;AACrB,gBAAM,mCACiB,KAAK,UAAU,KAAK,YAAY,IAAI,wBACjC,oBAAoB,eAE1C,KAAK,SACL;AAAA,QAGN,OACK;AACH,gBAAM,KAAK;AAAA,QACb;AAEA,YAAI,KAAK,QAAQ;AACf,gBAAM,4BAA4B,SAAS,SAAS,IAAI,QAAa;AACrE,cAAI,KAAK,cAAc;AACrB,kBAAM,0BAA0B,QAAQ,SAAS,IAAI,QAAa;AAAA,UACpE;AAAA,QACF;AAEA,YAAI,KAAK,QAAQ;AACf,gBAAM,oBAAoB;AAAA,QAC5B;AACA,YAAI,KAAK,OAAO;AACd,kBAAQ,IAAI,GAAG;AAAA,QACjB;AACA,YAAI,KAAK,gBAAgB,KAAK,UAAU;AACtC,gBAAM,MAAM,qBACW,oBAAoB;AAAA,QAC7C;AAEA,YAAI;AACF,cAAI,KAAK,OAAO;AAGd,gBAAI;AACF,qBAAQ,IAAI,SAAS,0CAA0C,EAAG;AAAA,YACpE,SACM,GAAN;AACE,kBAAI,aAAa,aAAa;AAC5B,sBAAM,IAAI,MAAM,+CAA+C;AAAA,cACjE,OACK;AACH,sBAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF,OACK;AACH,mBAAO;AAAA,UACT;AACA,eAAK,IAAI,KAAK,KAAK,aAAa,gCAAgC,GAAG;AAAA,QACrE,SACM,GAAN;AAEE,cAAI,aAAa,aAAa;AAC5B,gBAAI,KAAK,UAAU;AACjB,gBAAE,WAAW,SAAS,KAAK;AAAA,YAC7B;AACA,cAAE,WAAW;AACb,cAAE,WAAW;AACb,cAAE,WAAW;AACb,gBAAI,CAAC,KAAK,OAAO;AACf,gBAAE,WAAW;AACb,gBAAE,WAAW;AAAA,YACf;AAAA,UACF;AACA,gBAAM;AAAA,QACR;AAKA,YAAI,aAAa,KAAK,SAAS,KAAK,SAAS,UAAU,MAAM;AAC3D,cAAI,UAAU,SAAUN,QAAM,aAAa;AACzC,gBAAI,IAAI,MAAM,YAAY,MAAM,gCAAgC,GAAG,IAAI;AACvE,gBAAI,aAAa;AACf,kBAAI,MAAM,YAAY,GAAG,WAAW;AAAA,YACtC;AACA,mBAAO,YAAYA,QAAM,IAAI,EAAE,CAAC;AAAA,UAClC;AACA,iBAAO,GAAG;AAAA,YAAM,KAAK;AAAA,YACnB,CAAC,QAAQ,MAAM,gCAAgC,GAAG,UAAU,SAAS,OAAO;AAAA,UAAC;AAAA,QACjF;AACA,YAAI,KAAK,YAAY,OAAO,OAAO,mBAAmB,YAAY;AAChE,cAAI,WAAW,KAAK;AACpB,cAAIO,YAAWP,MAAK,SAAS,UAAUA,MAAK,QAAQ,QAAQ,CAAC;AAC7D,cAAI;AACF,mBAAO,eAAe,YAAY,QAAQ;AAAA,cACxC,OAAOO;AAAA,cACP,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,cAAc;AAAA,YAChB,CAAC;AAAA,UACH,SAAS,GAAP;AAAA,UAAuB;AAAA,QAC3B;AACA,eAAO;AAAA,MACT;AAAA,MAEA,gBAAgB,WAAY;AAC1B,YAAI,OAAO,KAAK;AAEhB,YAAI,KAAK,cAAc;AAGrB,eAAK,eACH,KAAK,aAAa,QAAQ,YAAY,IAAI,EAAE,QAAQ,eAAe,EAAE;AAAA,QACzE;AAGA,aAAK,eACH,KAAK,aAAa,QAAQ,eAAe,KAAK,EAAE,QAAQ,eAAe,KAAK;AAE9E,YAAI,OAAO;AACX,YAAI,UAAU,KAAK,kBAAkB;AACrC,YAAI,IAAI,KAAK,KAAK;AAClB,YAAI,IAAI,KAAK,KAAK;AAClB,YAAI,IAAI,KAAK,KAAK;AAElB,YAAI,WAAW,QAAQ,QAAQ;AAC7B,kBAAQ,QAAQ,SAAU,MAAM,OAAO;AACrC,gBAAI;AAKJ,gBAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,KACxB,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG;AAClC,wBAAU,QAAQ,QAAQ;AAC1B,kBAAI,EAAE,WAAW,IAAI,KAAK,WAAW,MAAM,IAAI,KAAK,WAAW,MAAM,IAAI,IAAI;AAC3E,sBAAM,IAAI,MAAM,4CAA4C,OAAO,IAAI;AAAA,cACzE;AAAA,YACF;AACA,iBAAK,SAAS,IAAI;AAAA,UACpB,CAAC;AAAA,QACH;AAAA,MAEF;AAAA,MAEA,mBAAmB,WAAY;AAC7B,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,KAAK;AACf,YAAI,SAAS,IAAI,KAAK,GAAG;AACzB,YAAI,MAAM,CAAC;AACX,YAAI;AAEJ,eAAO,QAAQ;AACb,qBAAW,OAAO;AAElB,cAAI,aAAa,GAAG;AAClB,gBAAI,KAAK,IAAI,UAAU,GAAG,QAAQ,CAAC;AACnC,kBAAM,IAAI,MAAM,QAAQ;AAAA,UAC1B;AAEA,cAAI,KAAK,OAAO,EAAE;AAClB,gBAAM,IAAI,MAAM,OAAO,GAAG,MAAM;AAChC,mBAAS,IAAI,KAAK,GAAG;AAAA,QACvB;AAEA,YAAI,KAAK;AACP,cAAI,KAAK,GAAG;AAAA,QACd;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,YAAY,SAAU,MAAM;AAC1B,YAAI,KAAK,UAAU;AAMjB,iBAAO,KAAK,QAAQ,mBAAmB,EAAE;AACzC,eAAK,WAAW;AAAA,QAClB;AACA,YAAI,CAAC,MAAM;AACT,iBAAO;AAAA,QACT;AAGA,eAAO,KAAK,QAAQ,OAAO,MAAM;AAGjC,eAAO,KAAK,QAAQ,OAAO,KAAK;AAChC,eAAO,KAAK,QAAQ,OAAO,KAAK;AAIhC,eAAO,KAAK,QAAQ,MAAM,KAAK;AAC/B,aAAK,UAAU,qBAAqB,OAAO;AAAA,MAC7C;AAAA,MAEA,UAAU,SAAU,MAAM;AACxB,YAAI,OAAO;AACX,YAAI,IAAI,KAAK,KAAK;AAClB,YAAI,IAAI,KAAK,KAAK;AAClB,YAAI,IAAI,KAAK,KAAK;AAClB,YAAI,eAAe;AAEnB,uBAAgB,KAAK,MAAM,IAAI,EAAE,SAAS;AAE1C,gBAAQ,MAAM;AAAA,UACd,KAAK,IAAI;AAAA,UACT,KAAK,IAAI,IAAI;AACX,iBAAK,OAAO,SAAS,MAAM;AAC3B;AAAA,UACF,KAAK,IAAI,IAAI;AACX,iBAAK,OAAO,SAAS,MAAM;AAC3B;AAAA,UACF,KAAK,IAAI,IAAI;AACX,iBAAK,OAAO,SAAS,MAAM;AAC3B;AAAA,UACF,KAAK,IAAI,IAAI;AACX,iBAAK,OAAO,SAAS,MAAM;AAC3B;AAAA,UACF,KAAK,IAAI,IAAI;AACX,iBAAK,OAAO,SAAS,MAAM;AAC3B,iBAAK,UAAU,qBAAqB,KAAK,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;AACrE;AAAA,UACF,KAAK,IAAI,IAAI;AACX,iBAAK,OAAO,SAAS,MAAM;AAC3B,iBAAK,UAAU,qBAAqB,KAAK,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;AACrE;AAAA,UACF,KAAK,IAAI;AAAA,UACT,KAAK,MAAM,IAAI;AAAA,UACf,KAAK,MAAM,IAAI;AACb,gBAAI,KAAK,QAAQ,SAAS,MAAM,SAAS;AACvC,mBAAK,WAAW,IAAI;AAAA,YACtB;AAEA,iBAAK,OAAO;AACZ,iBAAK,WAAW,KAAK,QAAQ,GAAG,MAAM,KAAK,KAAK,QAAQ,GAAG,MAAM;AACjE;AAAA,UACF;AAEE,gBAAI,KAAK,MAAM;AAEb,sBAAQ,KAAK,MAAM;AAAA,gBACnB,KAAK,SAAS,MAAM;AAAA,gBACpB,KAAK,SAAS,MAAM;AAAA,gBACpB,KAAK,SAAS,MAAM;AAClB,sBAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI,GAAG;AACnD,4BAAQ;AAAA,kBACV;AAAA,cACF;AACA,sBAAQ,KAAK,MAAM;AAAA,gBAEnB,KAAK,SAAS,MAAM;AAClB,uBAAK,UAAU,WAAW,OAAO;AACjC;AAAA,gBAEF,KAAK,SAAS,MAAM;AAClB,uBAAK,UAAU,6BAA6B,UAAU,IAAI,IAAI;AAC9D;AAAA,gBAEF,KAAK,SAAS,MAAM;AAClB,uBAAK,UAAU,oBAAoB,UAAU,IAAI,IAAI;AACrD;AAAA,gBACF,KAAK,SAAS,MAAM;AAElB;AAAA,gBAEF,KAAK,SAAS,MAAM;AAClB,uBAAK,WAAW,IAAI;AACpB;AAAA,cACF;AAAA,YACF,OAEK;AACH,mBAAK,WAAW,IAAI;AAAA,YACtB;AAAA,QACF;AAEA,YAAI,KAAK,KAAK,gBAAgB,cAAc;AAC1C,eAAK,eAAe;AACpB,eAAK,UAAU,oBAAoB,KAAK,cAAc;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAcA,YAAQ,YAAY,MAAM;AAW1B,YAAQ,YAAY,QAAQ;AAU5B,YAAQ,UAAU;AAUlB,YAAQ,OAAO;AAGf,QAAI,OAAO,UAAU,aAAa;AAChC,aAAO,MAAM;AAAA,IACf;AAAA;AAAA;;;ACt7BA;AAAA;AAIA,QAAI,IAAI;AACR,QAAI,IAAI,IAAI;AACZ,QAAI,IAAI,IAAI;AACZ,QAAI,IAAI,IAAI;AACZ,QAAI,IAAI,IAAI;AACZ,QAAI,IAAI,IAAI;AAgBZ,WAAO,UAAU,SAAU,KAAK,SAAS;AACvC,gBAAU,WAAW,CAAC;AACtB,UAAI,OAAO,OAAO;AAClB,UAAI,SAAS,YAAY,IAAI,SAAS,GAAG;AACvC,eAAOC,OAAM,GAAG;AAAA,MAClB,WAAW,SAAS,YAAY,SAAS,GAAG,GAAG;AAC7C,eAAO,QAAQ,OAAO,QAAQ,GAAG,IAAI,SAAS,GAAG;AAAA,MACnD;AACA,YAAM,IAAI;AAAA,QACR,0DACE,KAAK,UAAU,GAAG;AAAA,MACtB;AAAA,IACF;AAUA,aAASA,OAAM,KAAK;AAClB,YAAM,OAAO,GAAG;AAChB,UAAI,IAAI,SAAS,KAAK;AACpB;AAAA,MACF;AACA,UAAIC,SAAQ,mIAAmI;AAAA,QAC7I;AAAA,MACF;AACA,UAAI,CAACA,QAAO;AACV;AAAA,MACF;AACA,UAAI,IAAI,WAAWA,OAAM,EAAE;AAC3B,UAAI,QAAQA,OAAM,MAAM,MAAM,YAAY;AAC1C,cAAQ,MAAM;AAAA,QACZ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAUA,aAAS,SAAS,IAAI;AACpB,UAAI,QAAQ,KAAK,IAAI,EAAE;AACvB,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,MAC9B;AACA,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,MAC9B;AACA,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,MAC9B;AACA,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,MAAM,KAAK,CAAC,IAAI;AAAA,MAC9B;AACA,aAAO,KAAK;AAAA,IACd;AAUA,aAAS,QAAQ,IAAI;AACnB,UAAI,QAAQ,KAAK,IAAI,EAAE;AACvB,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,IAAI,OAAO,GAAG,KAAK;AAAA,MACnC;AACA,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,IAAI,OAAO,GAAG,MAAM;AAAA,MACpC;AACA,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,IAAI,OAAO,GAAG,QAAQ;AAAA,MACtC;AACA,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,IAAI,OAAO,GAAG,QAAQ;AAAA,MACtC;AACA,aAAO,KAAK;AAAA,IACd;AAMA,aAAS,OAAO,IAAI,OAAO,GAAG,MAAM;AAClC,UAAI,WAAW,SAAS,IAAI;AAC5B,aAAO,KAAK,MAAM,KAAK,CAAC,IAAI,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA;AAAA;;;ACjKA,IAAAC,kBAAA;AAAA;AAMA,aAAS,MAAMC,MAAK;AACnB,kBAAY,QAAQ;AACpB,kBAAY,UAAU;AACtB,kBAAY,SAAS;AACrB,kBAAY,UAAU;AACtB,kBAAY,SAAS;AACrB,kBAAY,UAAU;AACtB,kBAAY,WAAW;AACvB,kBAAY,UAAU;AAEtB,aAAO,KAAKA,IAAG,EAAE,QAAQ,SAAO;AAC/B,oBAAY,OAAOA,KAAI;AAAA,MACxB,CAAC;AAMD,kBAAY,QAAQ,CAAC;AACrB,kBAAY,QAAQ,CAAC;AAOrB,kBAAY,aAAa,CAAC;AAQ1B,eAAS,YAAY,WAAW;AAC/B,YAAI,OAAO;AAEX,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC1C,kBAAS,QAAQ,KAAK,OAAQ,UAAU,WAAW,CAAC;AACpD,kBAAQ;AAAA,QACT;AAEA,eAAO,YAAY,OAAO,KAAK,IAAI,IAAI,IAAI,YAAY,OAAO;AAAA,MAC/D;AACA,kBAAY,cAAc;AAS1B,eAAS,YAAY,WAAW;AAC/B,YAAI;AACJ,YAAI,iBAAiB;AACrB,YAAI;AACJ,YAAI;AAEJ,iBAAS,SAAS,MAAM;AAEvB,cAAI,CAAC,MAAM,SAAS;AACnB;AAAA,UACD;AAEA,gBAAM,OAAO;AAGb,gBAAM,OAAO,OAAO,IAAI,KAAK,CAAC;AAC9B,gBAAM,KAAK,QAAQ,YAAY;AAC/B,eAAK,OAAO;AACZ,eAAK,OAAO;AACZ,eAAK,OAAO;AACZ,qBAAW;AAEX,eAAK,KAAK,YAAY,OAAO,KAAK,EAAE;AAEpC,cAAI,OAAO,KAAK,OAAO,UAAU;AAEhC,iBAAK,QAAQ,IAAI;AAAA,UAClB;AAGA,cAAI,QAAQ;AACZ,eAAK,KAAK,KAAK,GAAG,QAAQ,iBAAiB,CAACC,QAAOC,YAAW;AAE7D,gBAAID,WAAU,MAAM;AACnB,qBAAO;AAAA,YACR;AACA;AACA,kBAAM,YAAY,YAAY,WAAWC;AACzC,gBAAI,OAAO,cAAc,YAAY;AACpC,oBAAM,MAAM,KAAK;AACjB,cAAAD,SAAQ,UAAU,KAAK,MAAM,GAAG;AAGhC,mBAAK,OAAO,OAAO,CAAC;AACpB;AAAA,YACD;AACA,mBAAOA;AAAA,UACR,CAAC;AAGD,sBAAY,WAAW,KAAK,MAAM,IAAI;AAEtC,gBAAM,QAAQ,KAAK,OAAO,YAAY;AACtC,gBAAM,MAAM,MAAM,IAAI;AAAA,QACvB;AAEA,cAAM,YAAY;AAClB,cAAM,YAAY,YAAY,UAAU;AACxC,cAAM,QAAQ,YAAY,YAAY,SAAS;AAC/C,cAAM,SAAS;AACf,cAAM,UAAU,YAAY;AAE5B,eAAO,eAAe,OAAO,WAAW;AAAA,UACvC,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,KAAK,MAAM;AACV,gBAAI,mBAAmB,MAAM;AAC5B,qBAAO;AAAA,YACR;AACA,gBAAI,oBAAoB,YAAY,YAAY;AAC/C,gCAAkB,YAAY;AAC9B,6BAAe,YAAY,QAAQ,SAAS;AAAA,YAC7C;AAEA,mBAAO;AAAA,UACR;AAAA,UACA,KAAK,OAAK;AACT,6BAAiB;AAAA,UAClB;AAAA,QACD,CAAC;AAGD,YAAI,OAAO,YAAY,SAAS,YAAY;AAC3C,sBAAY,KAAK,KAAK;AAAA,QACvB;AAEA,eAAO;AAAA,MACR;AAEA,eAAS,OAAO,WAAW,WAAW;AACrC,cAAM,WAAW,YAAY,KAAK,aAAa,OAAO,cAAc,cAAc,MAAM,aAAa,SAAS;AAC9G,iBAAS,MAAM,KAAK;AACpB,eAAO;AAAA,MACR;AASA,eAAS,OAAO,YAAY;AAC3B,oBAAY,KAAK,UAAU;AAC3B,oBAAY,aAAa;AAEzB,oBAAY,QAAQ,CAAC;AACrB,oBAAY,QAAQ,CAAC;AAErB,cAAME,UAAS,OAAO,eAAe,WAAW,aAAa,IAC3D,KAAK,EACL,QAAQ,KAAK,GAAG,EAChB,MAAM,GAAG,EACT,OAAO,OAAO;AAEhB,mBAAW,MAAMA,QAAO;AACvB,cAAI,GAAG,OAAO,KAAK;AAClB,wBAAY,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC;AAAA,UACnC,OAAO;AACN,wBAAY,MAAM,KAAK,EAAE;AAAA,UAC1B;AAAA,QACD;AAAA,MACD;AAUA,eAAS,gBAAgB,QAAQ,UAAU;AAC1C,YAAI,cAAc;AAClB,YAAI,gBAAgB;AACpB,YAAI,YAAY;AAChB,YAAI,aAAa;AAEjB,eAAO,cAAc,OAAO,QAAQ;AACnC,cAAI,gBAAgB,SAAS,WAAW,SAAS,mBAAmB,OAAO,gBAAgB,SAAS,mBAAmB,MAAM;AAE5H,gBAAI,SAAS,mBAAmB,KAAK;AACpC,0BAAY;AACZ,2BAAa;AACb;AAAA,YACD,OAAO;AACN;AACA;AAAA,YACD;AAAA,UACD,WAAW,cAAc,IAAI;AAE5B,4BAAgB,YAAY;AAC5B;AACA,0BAAc;AAAA,UACf,OAAO;AACN,mBAAO;AAAA,UACR;AAAA,QACD;AAGA,eAAO,gBAAgB,SAAS,UAAU,SAAS,mBAAmB,KAAK;AAC1E;AAAA,QACD;AAEA,eAAO,kBAAkB,SAAS;AAAA,MACnC;AAQA,eAAS,UAAU;AAClB,cAAM,aAAa;AAAA,UAClB,GAAG,YAAY;AAAA,UACf,GAAG,YAAY,MAAM,IAAI,eAAa,MAAM,SAAS;AAAA,QACtD,EAAE,KAAK,GAAG;AACV,oBAAY,OAAO,EAAE;AACrB,eAAO;AAAA,MACR;AASA,eAAS,QAAQ,MAAM;AACtB,mBAAW,QAAQ,YAAY,OAAO;AACrC,cAAI,gBAAgB,MAAM,IAAI,GAAG;AAChC,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,mBAAW,MAAM,YAAY,OAAO;AACnC,cAAI,gBAAgB,MAAM,EAAE,GAAG;AAC9B,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AASA,eAAS,OAAO,KAAK;AACpB,YAAI,eAAe,OAAO;AACzB,iBAAO,IAAI,SAAS,IAAI;AAAA,QACzB;AACA,eAAO;AAAA,MACR;AAMA,eAAS,UAAU;AAClB,gBAAQ,KAAK,uIAAuI;AAAA,MACrJ;AAEA,kBAAY,OAAO,YAAY,KAAK,CAAC;AAErC,aAAO;AAAA,IACR;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACnSjB;AAAA;AAMA,YAAQ,aAAa;AACrB,YAAQ,OAAO;AACf,YAAQ,OAAOC;AACf,YAAQ,YAAY;AACpB,YAAQ,UAAU,aAAa;AAC/B,YAAQ,WAAW,MAAM;AACxB,UAAI,SAAS;AAEb,aAAO,MAAM;AACZ,YAAI,CAAC,QAAQ;AACZ,mBAAS;AACT,kBAAQ,KAAK,uIAAuI;AAAA,QACrJ;AAAA,MACD;AAAA,IACD,GAAG;AAMH,YAAQ,SAAS;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAWA,aAAS,YAAY;AAIpB,UAAI,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,QAAQ,SAAS,cAAc,OAAO,QAAQ,SAAS;AACrH,eAAO;AAAA,MACR;AAGA,UAAI,OAAO,cAAc,eAAe,UAAU,aAAa,UAAU,UAAU,YAAY,EAAE,MAAM,uBAAuB,GAAG;AAChI,eAAO;AAAA,MACR;AAEA,UAAI;AAKJ,aAAQ,OAAO,aAAa,eAAe,SAAS,mBAAmB,SAAS,gBAAgB,SAAS,SAAS,gBAAgB,MAAM,oBAEtI,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,QAAQ,WAAY,OAAO,QAAQ,aAAa,OAAO,QAAQ,UAG1H,OAAO,cAAc,eAAe,UAAU,cAAc,IAAI,UAAU,UAAU,YAAY,EAAE,MAAM,gBAAgB,MAAM,SAAS,EAAE,IAAI,EAAE,KAAK,MAEpJ,OAAO,cAAc,eAAe,UAAU,aAAa,UAAU,UAAU,YAAY,EAAE,MAAM,oBAAoB;AAAA,IAC1H;AAQA,aAAS,WAAW,MAAM;AACzB,WAAK,MAAM,KAAK,YAAY,OAAO,MAClC,KAAK,aACJ,KAAK,YAAY,QAAQ,OAC1B,KAAK,MACJ,KAAK,YAAY,QAAQ,OAC1B,MAAM,OAAO,QAAQ,SAAS,KAAK,IAAI;AAExC,UAAI,CAAC,KAAK,WAAW;AACpB;AAAA,MACD;AAEA,YAAM,IAAI,YAAY,KAAK;AAC3B,WAAK,OAAO,GAAG,GAAG,GAAG,gBAAgB;AAKrC,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,WAAK,GAAG,QAAQ,eAAe,CAAAC,WAAS;AACvC,YAAIA,WAAU,MAAM;AACnB;AAAA,QACD;AACA;AACA,YAAIA,WAAU,MAAM;AAGnB,kBAAQ;AAAA,QACT;AAAA,MACD,CAAC;AAED,WAAK,OAAO,OAAO,GAAG,CAAC;AAAA,IACxB;AAUA,YAAQ,MAAM,QAAQ,SAAS,QAAQ,QAAQ,MAAM;AAAA,IAAC;AAQtD,aAAS,KAAK,YAAY;AACzB,UAAI;AACH,YAAI,YAAY;AACf,kBAAQ,QAAQ,QAAQ,SAAS,UAAU;AAAA,QAC5C,OAAO;AACN,kBAAQ,QAAQ,WAAW,OAAO;AAAA,QACnC;AAAA,MACD,SAAS,OAAP;AAAA,MAGF;AAAA,IACD;AAQA,aAASD,QAAO;AACf,UAAI;AACJ,UAAI;AACH,YAAI,QAAQ,QAAQ,QAAQ,OAAO;AAAA,MACpC,SAAS,OAAP;AAAA,MAGF;AAGA,UAAI,CAAC,KAAK,OAAO,YAAY,eAAe,SAAS,SAAS;AAC7D,YAAI,QAAQ,IAAI;AAAA,MACjB;AAEA,aAAO;AAAA,IACR;AAaA,aAAS,eAAe;AACvB,UAAI;AAGH,eAAO;AAAA,MACR,SAAS,OAAP;AAAA,MAGF;AAAA,IACD;AAEA,WAAO,UAAU,kBAAoB,OAAO;AAE5C,QAAM,EAAC,WAAU,IAAI,OAAO;AAM5B,eAAW,IAAI,SAAU,GAAG;AAC3B,UAAI;AACH,eAAO,KAAK,UAAU,CAAC;AAAA,MACxB,SAAS,OAAP;AACD,eAAO,iCAAiC,MAAM;AAAA,MAC/C;AAAA,IACD;AAAA;AAAA;;;AC/QA;AAAA;AAIA,QAAM,MAAM,UAAQ;AACpB,QAAM,OAAO,UAAQ;AAMrB,YAAQ,OAAO;AACf,YAAQ,MAAM;AACd,YAAQ,aAAa;AACrB,YAAQ,OAAO;AACf,YAAQ,OAAOE;AACf,YAAQ,YAAY;AACpB,YAAQ,UAAU,KAAK;AAAA,MACtB,MAAM;AAAA,MAAC;AAAA,MACP;AAAA,IACD;AAMA,YAAQ,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAElC,QAAI;AAGH,YAAM,gBAAgB;AAEtB,UAAI,kBAAkB,cAAc,UAAU,eAAe,SAAS,GAAG;AACxE,gBAAQ,SAAS;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,IACD,SAAS,OAAP;AAAA,IAEF;AAQA,YAAQ,cAAc,OAAO,KAAK,QAAQ,GAAG,EAAE,OAAO,SAAO;AAC5D,aAAO,WAAW,KAAK,GAAG;AAAA,IAC3B,CAAC,EAAE,OAAO,CAAC,KAAK,QAAQ;AAEvB,YAAM,OAAO,IACX,UAAU,CAAC,EACX,YAAY,EACZ,QAAQ,aAAa,CAAC,GAAG,MAAM;AAC/B,eAAO,EAAE,YAAY;AAAA,MACtB,CAAC;AAGF,UAAI,MAAM,QAAQ,IAAI;AACtB,UAAI,2BAA2B,KAAK,GAAG,GAAG;AACzC,cAAM;AAAA,MACP,WAAW,6BAA6B,KAAK,GAAG,GAAG;AAClD,cAAM;AAAA,MACP,WAAW,QAAQ,QAAQ;AAC1B,cAAM;AAAA,MACP,OAAO;AACN,cAAM,OAAO,GAAG;AAAA,MACjB;AAEA,UAAI,QAAQ;AACZ,aAAO;AAAA,IACR,GAAG,CAAC,CAAC;AAML,aAAS,YAAY;AACpB,aAAO,YAAY,QAAQ,cAC1B,QAAQ,QAAQ,YAAY,MAAM,IAClC,IAAI,OAAO,QAAQ,OAAO,EAAE;AAAA,IAC9B;AAQA,aAAS,WAAW,MAAM;AACzB,YAAM,EAAC,WAAW,MAAM,WAAAC,WAAS,IAAI;AAErC,UAAIA,YAAW;AACd,cAAM,IAAI,KAAK;AACf,cAAM,YAAY,YAAc,IAAI,IAAI,IAAI,SAAS;AACrD,cAAM,SAAS,KAAK,eAAe;AAEnC,aAAK,KAAK,SAAS,KAAK,GAAG,MAAM,IAAI,EAAE,KAAK,OAAO,MAAM;AACzD,aAAK,KAAK,YAAY,OAAO,OAAO,QAAQ,SAAS,KAAK,IAAI,IAAI,SAAW;AAAA,MAC9E,OAAO;AACN,aAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK;AAAA,MACzC;AAAA,IACD;AAEA,aAAS,UAAU;AAClB,UAAI,QAAQ,YAAY,UAAU;AACjC,eAAO;AAAA,MACR;AACA,aAAO,IAAI,KAAK,EAAE,YAAY,IAAI;AAAA,IACnC;AAMA,aAAS,OAAO,MAAM;AACrB,aAAO,QAAQ,OAAO,MAAM,KAAK,kBAAkB,QAAQ,aAAa,GAAG,IAAI,IAAI,IAAI;AAAA,IACxF;AAQA,aAAS,KAAK,YAAY;AACzB,UAAI,YAAY;AACf,gBAAQ,IAAI,QAAQ;AAAA,MACrB,OAAO;AAGN,eAAO,QAAQ,IAAI;AAAA,MACpB;AAAA,IACD;AASA,aAASD,QAAO;AACf,aAAO,QAAQ,IAAI;AAAA,IACpB;AASA,aAAS,KAAK,OAAO;AACpB,YAAM,cAAc,CAAC;AAErB,YAAM,OAAO,OAAO,KAAK,QAAQ,WAAW;AAC5C,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACrC,cAAM,YAAY,KAAK,MAAM,QAAQ,YAAY,KAAK;AAAA,MACvD;AAAA,IACD;AAEA,WAAO,UAAU,kBAAoB,OAAO;AAE5C,QAAM,EAAC,WAAU,IAAI,OAAO;AAM5B,eAAW,IAAI,SAAU,GAAG;AAC3B,WAAK,YAAY,SAAS,KAAK;AAC/B,aAAO,KAAK,QAAQ,GAAG,KAAK,WAAW,EACrC,MAAM,IAAI,EACV,IAAI,SAAO,IAAI,KAAK,CAAC,EACrB,KAAK,GAAG;AAAA,IACX;AAMA,eAAW,IAAI,SAAU,GAAG;AAC3B,WAAK,YAAY,SAAS,KAAK;AAC/B,aAAO,KAAK,QAAQ,GAAG,KAAK,WAAW;AAAA,IACxC;AAAA;AAAA;;;ACtQA;AAAA;AAKA,QAAI,OAAO,YAAY,eAAe,QAAQ,SAAS,cAAc,QAAQ,YAAY,QAAQ,QAAQ,QAAQ;AAChH,aAAO,UAAU;AAAA,IAClB,OAAO;AACN,aAAO,UAAU;AAAA,IAClB;AAAA;AAAA;;;;;;;;ACLA,QAAME,gBAAsE;MAC1E,aAAa,CAAC,wBAAwB,IAAI;MAC1C,aAAa,CAAC,iBAAiB,IAAI;MACnC,aAAa,CAAC,eAAyB,KAAK;MAC5C,aAAa,CAAC,cAAc,IAAI;MAChC,aAAa,CAAC,WAAW,IAAI;MAC7B,aAAa,CAAC,WAAW,IAAI;MAC7B,aAAa,CAAC,gBAAgB,MAAM,IAAI;MACxC,aAAa,CAAC,WAAW,IAAI;MAC7B,aAAa,CAAC,UAAU,IAAI;MAC5B,aAAa,CAAC,UAAU,IAAI;MAC5B,aAAa,CAAC,yBAAyB,IAAI;MAC3C,aAAa,CAAC,WAAW,IAAI;MAC7B,YAAY,CAAC,+BAA+B,IAAI;MAChD,cAAc,CAAC,aAAa,KAAK;;AAKnC,QAAMC,eAAc,CAAC,MAAc,EAAE,QAAQ,aAAa,MAAM;AAEhE,QAAMC,gBAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAG9C,QAAMC,kBAAiB,CAAC,WAA6B,OAAO,KAAK,EAAE;AAe5D,QAAMC,cAAa,CACxBC,OACA,aACoB;AACpB,YAAM,MAAM;AAEZ,UAAIA,MAAK,OAAO,GAAG,MAAM,KAAK;AAC5B,cAAM,IAAI,MAAM,2BAA2B;;AAG7C,YAAM,SAAmB,CAAA;AACzB,YAAM,OAAiB,CAAA;AAEvB,UAAI,IAAI,MAAM;AACd,UAAI,WAAW;AACf,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS;AACb,UAAI,aAAa;AACjB;AAAO,eAAO,IAAIA,MAAK,QAAQ;AAC7B,gBAAM,IAAIA,MAAK,OAAO,CAAC;AACvB,eAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC7C,qBAAS;AACT;AACA;;AAGF,cAAI,MAAM,OAAO,YAAY,CAAC,UAAU;AACtC,qBAAS,IAAI;AACb;;AAGF,qBAAW;AACX,cAAI,MAAM,MAAM;AACd,gBAAI,CAAC,UAAU;AACb,yBAAW;AACX;AACA;;;AAIJ,cAAI,MAAM,OAAO,CAAC,UAAU;AAE1B,uBAAW,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,OAAO,QAAQL,aAAY,GAAG;AAChE,kBAAIK,MAAK,WAAW,KAAK,CAAC,GAAG;AAE3B,oBAAI,YAAY;AACd,yBAAO,CAAC,MAAM,OAAOA,MAAK,SAAS,KAAK,IAAI;;AAE9C,qBAAK,IAAI;AACT,oBAAI;AAAK,uBAAK,KAAK,IAAI;;AAClB,yBAAO,KAAK,IAAI;AACrB,wBAAQ,SAAS;AACjB,yBAAS;;;;AAMf,qBAAW;AACX,cAAI,YAAY;AAGd,gBAAI,IAAI,YAAY;AAClB,qBAAO,KAAKJ,aAAY,UAAU,IAAI,MAAMA,aAAY,CAAC,CAAC;uBACjD,MAAM,YAAY;AAC3B,qBAAO,KAAKA,aAAY,CAAC,CAAC;;AAE5B,yBAAa;AACb;AACA;;AAKF,cAAII,MAAK,WAAW,MAAM,IAAI,CAAC,GAAG;AAChC,mBAAO,KAAKJ,aAAY,IAAI,GAAG,CAAC;AAChC,iBAAK;AACL;;AAEF,cAAII,MAAK,WAAW,KAAK,IAAI,CAAC,GAAG;AAC/B,yBAAa;AACb,iBAAK;AACL;;AAIF,iBAAO,KAAKJ,aAAY,CAAC,CAAC;AAC1B;;AAGF,UAAI,SAAS,GAAG;AAGd,eAAO,CAAC,IAAI,OAAO,GAAG,KAAK;;AAK7B,UAAI,CAAC,OAAO,UAAU,CAAC,KAAK,QAAQ;AAClC,eAAO,CAAC,MAAM,OAAOI,MAAK,SAAS,KAAK,IAAI;;AAO9C,UACE,KAAK,WAAW,KAChB,OAAO,WAAW,KAClB,SAAS,KAAK,OAAO,EAAE,KACvB,CAAC,QACD;AACA,cAAM,IAAI,OAAO,GAAG,WAAW,IAAI,OAAO,GAAG,MAAM,EAAE,IAAI,OAAO;AAChE,eAAO,CAACH,cAAa,CAAC,GAAG,OAAO,SAAS,KAAK,KAAK;;AAGrD,YAAM,UAAU,OAAO,SAAS,MAAM,MAAMC,gBAAe,MAAM,IAAI;AACrE,YAAM,QAAQ,OAAO,SAAS,KAAK,OAAOA,gBAAe,IAAI,IAAI;AACjE,YAAM,OACJ,OAAO,UAAU,KAAK,SAClB,MAAM,UAAU,MAAM,QAAQ,MAC9B,OAAO,SACP,UACA;AAEN,aAAO,CAAC,MAAM,OAAO,SAAS,KAAK,IAAI;IACzC;AAhIa,YAAA,aAAUC;;;;;;;;;;AClChB,QAAME,UAAS,CACpB,GACA,EACE,uBAAuB,MAAK,IACsB,CAAA,MAClD;AAIF,aAAO,uBACH,EAAE,QAAQ,cAAc,MAAM,IAC9B,EAAE,QAAQ,gBAAgB,MAAM;IACtC;AAZa,YAAA,SAAMA;;;;;;;;;;ACKZ,QAAMC,YAAW,CACtB,GACA,EACE,uBAAuB,MAAK,IACsB,CAAA,MAClD;AACF,aAAO,uBACH,EAAE,QAAQ,kBAAkB,IAAI,IAChC,EAAE,QAAQ,6BAA6B,MAAM,EAAE,QAAQ,cAAc,IAAI;IAC/E;AATa,YAAA,WAAQA;;;;;;;;;;;;;ACfrB,QAAA,oBAAA,gBAAA,yBAAA;AACA,QAAA,yBAAA;AACA,QAAA,cAAA;AACA,QAAA,gBAAA;AAsCO,QAAMC,aAAY,CACvB,GACA,SACA,UAA4B,CAAA,MAC1B;AACF,MAAAC,oBAAmB,OAAO;AAG1B,UAAI,CAAC,QAAQ,aAAa,QAAQ,OAAO,CAAC,MAAM,KAAK;AACnD,eAAO;;AAGT,aAAO,IAAIC,WAAU,SAAS,OAAO,EAAE,MAAM,CAAC;IAChD;AAba,YAAA,YAASF;AAetB,YAAA,UAAe,QAAA;AAGf,QAAMG,gBAAe;AACrB,QAAMC,kBAAiB,CAACC,SAAgB,CAAC,MACvC,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAASA,IAAG;AACtC,QAAMC,qBAAoB,CAACD,SAAgB,CAAC,MAAc,EAAE,SAASA,IAAG;AACxE,QAAME,wBAAuB,CAACF,SAAe;AAC3C,MAAAA,OAAMA,KAAI,YAAW;AACrB,aAAO,CAAC,MAAc,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;IAC1E;AACA,QAAMG,2BAA0B,CAACH,SAAe;AAC9C,MAAAA,OAAMA,KAAI,YAAW;AACrB,aAAO,CAAC,MAAc,EAAE,YAAW,EAAG,SAASA,IAAG;IACpD;AACA,QAAMI,iBAAgB;AACtB,QAAMC,mBAAkB,CAAC,MAAc,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,GAAG;AAC3E,QAAMC,sBAAqB,CAAC,MAC1B,MAAM,OAAO,MAAM,QAAQ,EAAE,SAAS,GAAG;AAC3C,QAAMC,aAAY;AAClB,QAAMC,eAAc,CAAC,MAAc,MAAM,OAAO,MAAM,QAAQ,EAAE,WAAW,GAAG;AAC9E,QAAMC,UAAS;AACf,QAAMC,YAAW,CAAC,MAAc,EAAE,WAAW,KAAK,CAAC,EAAE,WAAW,GAAG;AACnE,QAAMC,eAAc,CAAC,MAAc,EAAE,WAAW,KAAK,MAAM,OAAO,MAAM;AACxE,QAAMC,YAAW;AACjB,QAAMC,oBAAmB,CAAC,CAAC,IAAIb,OAAM,EAAE,MAAuB;AAC5D,YAAM,QAAQc,iBAAgB,CAAC,EAAE,CAAC;AAClC,UAAI,CAACd;AAAK,eAAO;AACjB,MAAAA,OAAMA,KAAI,YAAW;AACrB,aAAO,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;IAChE;AACA,QAAMe,uBAAsB,CAAC,CAAC,IAAIf,OAAM,EAAE,MAAuB;AAC/D,YAAM,QAAQgB,oBAAmB,CAAC,EAAE,CAAC;AACrC,UAAI,CAAChB;AAAK,eAAO;AACjB,MAAAA,OAAMA,KAAI,YAAW;AACrB,aAAO,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;IAChE;AACA,QAAMiB,iBAAgB,CAAC,CAAC,IAAIjB,OAAM,EAAE,MAAuB;AACzD,YAAM,QAAQgB,oBAAmB,CAAC,EAAE,CAAC;AACrC,aAAO,CAAChB,OAAM,QAAQ,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,SAASA,IAAG;IACjE;AACA,QAAMkB,cAAa,CAAC,CAAC,IAAIlB,OAAM,EAAE,MAAuB;AACtD,YAAM,QAAQc,iBAAgB,CAAC,EAAE,CAAC;AAClC,aAAO,CAACd,OAAM,QAAQ,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,SAASA,IAAG;IACjE;AACA,QAAMc,mBAAkB,CAAC,CAAC,EAAE,MAAuB;AACjD,YAAM,MAAM,GAAG;AACf,aAAO,CAAC,MAAc,EAAE,WAAW,OAAO,CAAC,EAAE,WAAW,GAAG;IAC7D;AACA,QAAME,sBAAqB,CAAC,CAAC,EAAE,MAAuB;AACpD,YAAM,MAAM,GAAG;AACf,aAAO,CAAC,MAAc,EAAE,WAAW,OAAO,MAAM,OAAO,MAAM;IAC/D;AAGA,QAAMG,mBACJ,OAAO,YAAY,YAAY,UAC1B,OAAO,QAAQ,QAAQ,YACtB,QAAQ,OACR,QAAQ,IAAI,kCACd,QAAQ,WACR;AAGN,QAAMC,QAAsC;MAC1C,OAAO,EAAE,KAAK,KAAI;MAClB,OAAO,EAAE,KAAK,IAAG;;AAIN,YAAA,MAAMD,qBAAoB,UAAUC,MAAK,MAAM,MAAMA,MAAK,MAAM;AAC7E,YAAA,UAAU,MAAM,QAAA;AAEH,YAAA,WAAW,OAAO,aAAa;AAC5C,YAAA,UAAU,WAAW,QAAA;AAErB,QAAM,UAAU;MACd,KAAK,EAAE,MAAM,aAAa,OAAO,YAAW;MAC5C,KAAK,EAAE,MAAM,OAAO,OAAO,KAAI;MAC/B,KAAK,EAAE,MAAM,OAAO,OAAO,KAAI;MAC/B,KAAK,EAAE,MAAM,OAAO,OAAO,KAAI;MAC/B,KAAK,EAAE,MAAM,OAAO,OAAO,IAAG;;AAMhC,QAAMC,SAAQ;AAGd,QAAMC,QAAOD,SAAQ;AAKrB,QAAME,cAAa;AAInB,QAAMC,gBAAe;AAGrB,QAAM,UAAU,CAAC,MACf,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,KAA+B,MAAK;AACtD,UAAI,KAAK;AACT,aAAO;IACT,GAAG,CAAA,CAAE;AAGP,QAAMC,cAAa,QAAQ,iBAAiB;AAG5C,QAAM,qBAAqB,QAAQ,KAAK;AAEjC,QAAMC,UACX,CAAC,SAAiB,UAA4B,CAAA,MAC9C,CAAC,OACC,GAAA,QAAA,WAAU,GAAG,SAAS,OAAO;AAHpB,YAAA,SAAMA;AAInB,YAAA,UAAU,SAAS,QAAA;AAEnB,QAAM1B,OAAM,CAAC,GAAqB,IAAsB,CAAA,MACtD,OAAO,OAAO,CAAA,GAAI,GAAG,CAAC;AAEjB,QAAM2B,YAAW,CAAC,QAA2C;AAClE,UAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,KAAK,GAAG,EAAE,QAAQ;AAC/D,eAAO,QAAA;;AAGT,YAAM,OAAO,QAAA;AAEb,YAAM,IAAI,CAAC,GAAW,SAAiB,UAA4B,CAAA,MACjE,KAAK,GAAG,SAAS3B,KAAI,KAAK,OAAO,CAAC;AAEpC,aAAO,OAAO,OAAO,GAAG;QACtB,WAAW,MAAM,kBAAkB,KAAK,UAAS;UAC/C,YAAY,SAAiB,UAA4B,CAAA,GAAE;AACzD,kBAAM,SAASA,KAAI,KAAK,OAAO,CAAC;UAClC;UACA,OAAO,SAAS,SAAyB;AACvC,mBAAO,KAAK,SAASA,KAAI,KAAK,OAAO,CAAC,EAAE;UAC1C;;QAGF,UAAU,CACR,GACA,UAA0D,CAAA,MACvD,KAAK,SAAS,GAAGA,KAAI,KAAK,OAAO,CAAC;QAEvC,QAAQ,CACN,GACA,UAA0D,CAAA,MACvD,KAAK,OAAO,GAAGA,KAAI,KAAK,OAAO,CAAC;QAErC,QAAQ,CAAC,SAAiB,UAA4B,CAAA,MACpD,KAAK,OAAO,SAASA,KAAI,KAAK,OAAO,CAAC;QAExC,UAAU,CAAC,YAA8B,KAAK,SAASA,KAAI,KAAK,OAAO,CAAC;QAExE,QAAQ,CAAC,SAAiB,UAA4B,CAAA,MACpD,KAAK,OAAO,SAASA,KAAI,KAAK,OAAO,CAAC;QAExC,aAAa,CAAC,SAAiB,UAA4B,CAAA,MACzD,KAAK,YAAY,SAASA,KAAI,KAAK,OAAO,CAAC;QAE7C,OAAO,CAAC,MAAgB,SAAiB,UAA4B,CAAA,MACnE,KAAK,MAAM,MAAM,SAASA,KAAI,KAAK,OAAO,CAAC;QAE7C,KAAK,KAAK;QACV,UAAU,QAAA;OACX;IACH;AA/Ca,YAAA,WAAQ2B;AAgDrB,YAAA,UAAU,WAAW,QAAA;AAYd,QAAMC,eAAc,CACzB,SACA,UAA4B,CAAA,MAC1B;AACF,MAAAhC,oBAAmB,OAAO;AAI1B,UAAI,QAAQ,WAAW,CAAC,mBAAmB,KAAK,OAAO,GAAG;AAExD,eAAO,CAAC,OAAO;;AAGjB,cAAO,GAAA,kBAAA,SAAO,OAAO;IACvB;AAda,YAAA,cAAWgC;AAexB,YAAA,UAAU,cAAc,QAAA;AAExB,QAAMC,sBAAqB,OAAO;AAClC,QAAMjC,sBAA6C,CACjD,YAC6B;AAC7B,UAAI,OAAO,YAAY,UAAU;AAC/B,cAAM,IAAI,UAAU,iBAAiB;;AAGvC,UAAI,QAAQ,SAASiC,qBAAoB;AACvC,cAAM,IAAI,UAAU,qBAAqB;;IAE7C;AAcO,QAAMC,UAAS,CAAC,SAAiB,UAA4B,CAAA,MAClE,IAAIjC,WAAU,SAAS,OAAO,EAAE,OAAM;AAD3B,YAAA,SAAMiC;AAEnB,YAAA,UAAU,SAAS,QAAA;AAEZ,QAAMC,SAAQ,CACnB,MACA,SACA,UAA4B,CAAA,MAC1B;AACF,YAAM,KAAK,IAAIlC,WAAU,SAAS,OAAO;AACzC,aAAO,KAAK,OAAO,OAAK,GAAG,MAAM,CAAC,CAAC;AACnC,UAAI,GAAG,QAAQ,UAAU,CAAC,KAAK,QAAQ;AACrC,aAAK,KAAK,OAAO;;AAEnB,aAAO;IACT;AAXa,YAAA,QAAKkC;AAYlB,YAAA,UAAU,QAAQ,QAAA;AAGlB,QAAM,eAAe,CAAC,MAAc,EAAE,QAAQ,UAAU,IAAI;AAC5D,QAAMC,aAAY;AAClB,QAAMC,gBAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAsB9C,QAAapC,aAAb,MAAsB;MACpB;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MAEA;MACA,YAAY,SAAiB,UAA4B,CAAA,GAAE;AACzD,QAAAD,oBAAmB,OAAO;AAE1B,kBAAU,WAAW,CAAA;AACrB,aAAK,UAAU;AACf,aAAK,UAAU;AACf,aAAK,WAAW,QAAQ,YAAYuB;AACpC,aAAK,YAAY,KAAK,aAAa;AACnC,aAAK,uBACH,CAAC,CAAC,QAAQ,wBAAwB,QAAQ,uBAAuB;AACnE,YAAI,KAAK,sBAAsB;AAC7B,eAAK,UAAU,KAAK,QAAQ,QAAQ,OAAO,GAAG;;AAEhD,aAAK,0BAA0B,CAAC,CAAC,QAAQ;AACzC,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,WAAW,CAAC,CAAC,QAAQ;AAC1B,aAAK,UAAU;AACf,aAAK,QAAQ;AACb,aAAK,UAAU,CAAC,CAAC,QAAQ;AACzB,aAAK,SAAS,CAAC,CAAC,KAAK,QAAQ;AAC7B,aAAK,qBACH,QAAQ,uBAAuB,SAC3B,QAAQ,qBACR,CAAC,EAAE,KAAK,aAAa,KAAK;AAEhC,aAAK,UAAU,CAAA;AACf,aAAK,YAAY,CAAA;AACjB,aAAK,MAAM,CAAA;AAGX,aAAK,KAAI;MACX;MAEA,WAAQ;AACN,YAAI,KAAK,QAAQ,iBAAiB,KAAK,IAAI,SAAS,GAAG;AACrD,iBAAO;;AAET,mBAAW,WAAW,KAAK,KAAK;AAC9B,qBAAW,QAAQ,SAAS;AAC1B,gBAAI,OAAO,SAAS;AAAU,qBAAO;;;AAGzC,eAAO;MACT;MAEA,SAAS,GAAQ;MAAG;MAEpB,OAAI;AACF,cAAM,UAAU,KAAK;AACrB,cAAM,UAAU,KAAK;AAGrB,YAAI,CAAC,QAAQ,aAAa,QAAQ,OAAO,CAAC,MAAM,KAAK;AACnD,eAAK,UAAU;AACf;;AAGF,YAAI,CAAC,SAAS;AACZ,eAAK,QAAQ;AACb;;AAIF,aAAK,YAAW;AAGhB,aAAK,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,YAAW,CAAE,CAAC;AAE9C,YAAI,QAAQ,OAAO;AACjB,eAAK,QAAQ,IAAI,SAAgB,QAAQ,MAAM,GAAG,IAAI;;AAGxD,aAAK,MAAM,KAAK,SAAS,KAAK,OAAO;AAWrC,cAAM,eAAe,KAAK,QAAQ,IAAI,OAAK,KAAK,WAAW,CAAC,CAAC;AAC7D,aAAK,YAAY,KAAK,WAAW,YAAY;AAC7C,aAAK,MAAM,KAAK,SAAS,KAAK,SAAS;AAGvC,YAAI,MAAM,KAAK,UAAU,IAAI,CAAC,GAAG,GAAG,OAAM;AACxC,cAAI,KAAK,aAAa,KAAK,oBAAoB;AAE7C,kBAAM,QACJ,EAAE,OAAO,MACT,EAAE,OAAO,OACR,EAAE,OAAO,OAAO,CAACa,WAAU,KAAK,EAAE,EAAE,MACrC,CAACA,WAAU,KAAK,EAAE,EAAE;AACtB,kBAAM,UAAU,WAAW,KAAK,EAAE,EAAE;AACpC,gBAAI,OAAO;AACT,qBAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC,CAAC;uBACxD,SAAS;AAClB,qBAAO,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC,CAAC;;;AAGzD,iBAAO,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC;QACnC,CAAC;AAED,aAAK,MAAM,KAAK,SAAS,GAAG;AAG5B,aAAK,MAAM,IAAI,OACb,OAAK,EAAE,QAAQ,KAAK,MAAM,EAAE;AAI9B,YAAI,KAAK,WAAW;AAClB,mBAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,kBAAM,IAAI,KAAK,IAAI;AACnB,gBACE,EAAE,OAAO,MACT,EAAE,OAAO,MACT,KAAK,UAAU,GAAG,OAAO,OACzB,OAAO,EAAE,OAAO,YAChB,YAAY,KAAK,EAAE,EAAE,GACrB;AACA,gBAAE,KAAK;;;;AAKb,aAAK,MAAM,KAAK,SAAS,KAAK,GAAG;MACnC;MAOA,WAAW,WAAqB;AAE9B,YAAI,KAAK,QAAQ,YAAY;AAC3B,mBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,qBAAS,IAAI,GAAG,IAAI,UAAU,GAAG,QAAQ,KAAK;AAC5C,kBAAI,UAAU,GAAG,OAAO,MAAM;AAC5B,0BAAU,GAAG,KAAK;;;;;AAM1B,cAAM,EAAE,oBAAoB,EAAC,IAAK,KAAK;AAEvC,YAAI,qBAAqB,GAAG;AAE1B,sBAAY,KAAK,qBAAqB,SAAS;AAC/C,sBAAY,KAAK,sBAAsB,SAAS;mBACvC,qBAAqB,GAAG;AAEjC,sBAAY,KAAK,iBAAiB,SAAS;eACtC;AACL,sBAAY,KAAK,0BAA0B,SAAS;;AAGtD,eAAO;MACT;MAGA,0BAA0B,WAAqB;AAC7C,eAAO,UAAU,IAAI,WAAQ;AAC3B,cAAI,KAAa;AACjB,iBAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,gBAAI,IAAI;AACR,mBAAO,MAAM,IAAI,OAAO,MAAM;AAC5B;;AAEF,gBAAI,MAAM,IAAI;AACZ,oBAAM,OAAO,IAAI,IAAI,EAAE;;;AAG3B,iBAAO;QACT,CAAC;MACH;MAGA,iBAAiB,WAAqB;AACpC,eAAO,UAAU,IAAI,WAAQ;AAC3B,kBAAQ,MAAM,OAAO,CAAC,KAAe,SAAQ;AAC3C,kBAAM,OAAO,IAAI,IAAI,SAAS;AAC9B,gBAAI,SAAS,QAAQ,SAAS,MAAM;AAClC,qBAAO;;AAET,gBAAI,SAAS,MAAM;AACjB,kBAAI,QAAQ,SAAS,QAAQ,SAAS,OAAO,SAAS,MAAM;AAC1D,oBAAI,IAAG;AACP,uBAAO;;;AAGX,gBAAI,KAAK,IAAI;AACb,mBAAO;UACT,GAAG,CAAA,CAAE;AACL,iBAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;QACrC,CAAC;MACH;MAEA,qBAAqB,OAAwB;AAC3C,YAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,kBAAQ,KAAK,WAAW,KAAK;;AAE/B,YAAI,eAAwB;AAC5B,WAAG;AACD,yBAAe;AAEf,cAAI,CAAC,KAAK,yBAAyB;AACjC,qBAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,oBAAM,IAAI,MAAM;AAEhB,kBAAI,MAAM,KAAK,MAAM,MAAM,MAAM,OAAO;AAAI;AAC5C,kBAAI,MAAM,OAAO,MAAM,IAAI;AACzB,+BAAe;AACf,sBAAM,OAAO,GAAG,CAAC;AACjB;;;AAGJ,gBACE,MAAM,OAAO,OACb,MAAM,WAAW,MAChB,MAAM,OAAO,OAAO,MAAM,OAAO,KAClC;AACA,6BAAe;AACf,oBAAM,IAAG;;;AAKb,cAAI,KAAa;AACjB,iBAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,kBAAM,IAAI,MAAM,KAAK;AACrB,gBAAI,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM;AAC9C,6BAAe;AACf,oBAAM,OAAO,KAAK,GAAG,CAAC;AACtB,oBAAM;;;iBAGH;AACT,eAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;MACrC;MAoBA,qBAAqB,WAAqB;AACxC,YAAI,eAAe;AACnB,WAAG;AACD,yBAAe;AAEf,mBAAS,SAAS,WAAW;AAC3B,gBAAI,KAAa;AACjB,mBAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,kBAAI,MAAc;AAClB,qBAAO,MAAM,MAAM,OAAO,MAAM;AAE9B;;AAIF,kBAAI,MAAM,IAAI;AACZ,sBAAM,OAAO,KAAK,GAAG,MAAM,EAAE;;AAG/B,kBAAI,OAAO,MAAM,KAAK;AACtB,oBAAM,IAAI,MAAM,KAAK;AACrB,oBAAM,KAAK,MAAM,KAAK;AACtB,kBAAI,SAAS;AAAM;AACnB,kBACE,CAAC,KACD,MAAM,OACN,MAAM,QACN,CAAC,MACD,OAAO,OACP,OAAO,MACP;AACA;;AAEF,6BAAe;AAEf,oBAAM,OAAO,IAAI,CAAC;AAClB,oBAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,oBAAM,MAAM;AACZ,wBAAU,KAAK,KAAK;AACpB;;AAIF,gBAAI,CAAC,KAAK,yBAAyB;AACjC,uBAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,sBAAM,IAAI,MAAM;AAEhB,oBAAI,MAAM,KAAK,MAAM,MAAM,MAAM,OAAO;AAAI;AAC5C,oBAAI,MAAM,OAAO,MAAM,IAAI;AACzB,iCAAe;AACf,wBAAM,OAAO,GAAG,CAAC;AACjB;;;AAGJ,kBACE,MAAM,OAAO,OACb,MAAM,WAAW,MAChB,MAAM,OAAO,OAAO,MAAM,OAAO,KAClC;AACA,+BAAe;AACf,sBAAM,IAAG;;;AAKb,gBAAI,KAAa;AACjB,mBAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,oBAAM,IAAI,MAAM,KAAK;AACrB,kBAAI,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM;AAC9C,+BAAe;AACf,sBAAM,UAAU,OAAO,KAAK,MAAM,KAAK,OAAO;AAC9C,sBAAM,QAAQ,UAAU,CAAC,GAAG,IAAI,CAAA;AAChC,sBAAM,OAAO,KAAK,GAAG,GAAG,GAAG,KAAK;AAChC,oBAAI,MAAM,WAAW;AAAG,wBAAM,KAAK,EAAE;AACrC,sBAAM;;;;iBAIL;AAET,eAAO;MACT;MASA,sBAAsB,WAAqB;AACzC,iBAAS,IAAI,GAAG,IAAI,UAAU,SAAS,GAAG,KAAK;AAC7C,mBAAS,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC7C,kBAAM,UAAU,KAAK,WACnB,UAAU,IACV,UAAU,IACV,CAAC,KAAK,uBAAuB;AAE/B,gBAAI,CAAC;AAAS;AACd,sBAAU,KAAK;AACf,sBAAU,KAAK,CAAA;;;AAGnB,eAAO,UAAU,OAAO,QAAM,GAAG,MAAM;MACzC;MAEA,WACE,GACA,GACA,eAAwB,OAAK;AAE7B,YAAI,KAAK;AACT,YAAI,KAAK;AACT,YAAI,SAAmB,CAAA;AACvB,YAAIE,SAAgB;AACpB,eAAO,KAAK,EAAE,UAAU,KAAK,EAAE,QAAQ;AACrC,cAAI,EAAE,QAAQ,EAAE,KAAK;AACnB,mBAAO,KAAKA,WAAU,MAAM,EAAE,MAAM,EAAE,GAAG;AACzC;AACA;qBACS,gBAAgB,EAAE,QAAQ,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI;AAChE,mBAAO,KAAK,EAAE,GAAG;AACjB;qBACS,gBAAgB,EAAE,QAAQ,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI;AAChE,mBAAO,KAAK,EAAE,GAAG;AACjB;qBAEA,EAAE,QAAQ,OACV,EAAE,QACD,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAI,WAAW,GAAG,MAC1C,EAAE,QAAQ,MACV;AACA,gBAAIA,WAAU;AAAK,qBAAO;AAC1B,YAAAA,SAAQ;AACR,mBAAO,KAAK,EAAE,GAAG;AACjB;AACA;qBAEA,EAAE,QAAQ,OACV,EAAE,QACD,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAI,WAAW,GAAG,MAC1C,EAAE,QAAQ,MACV;AACA,gBAAIA,WAAU;AAAK,qBAAO;AAC1B,YAAAA,SAAQ;AACR,mBAAO,KAAK,EAAE,GAAG;AACjB;AACA;iBACK;AACL,mBAAO;;;AAKX,eAAO,EAAE,WAAW,EAAE,UAAU;MAClC;MAEA,cAAW;AACT,YAAI,KAAK;AAAU;AAEnB,cAAM,UAAU,KAAK;AACrB,YAAI,SAAS;AACb,YAAI,eAAe;AAEnB,iBAAS,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ,OAAO,CAAC,MAAM,KAAK,KAAK;AACpE,mBAAS,CAAC;AACV;;AAGF,YAAI;AAAc,eAAK,UAAU,QAAQ,MAAM,YAAY;AAC3D,aAAK,SAAS;MAChB;MAOA,SAAS,MAAgB,SAAwB,UAAmB,OAAK;AACvE,cAAM,UAAU,KAAK;AAIrB,YAAI,KAAK,WAAW;AAClB,gBAAM,UACJ,KAAK,OAAO,MACZ,KAAK,OAAO,MACZ,KAAK,OAAO,OACZ,OAAO,KAAK,OAAO,YACnB,YAAY,KAAK,KAAK,EAAE;AAC1B,gBAAM,aACJ,QAAQ,OAAO,MACf,QAAQ,OAAO,MACf,QAAQ,OAAO,OACf,OAAO,QAAQ,OAAO,YACtB,YAAY,KAAK,QAAQ,EAAE;AAE7B,cAAI,WAAW,YAAY;AACzB,kBAAM,KAAK,KAAK;AAChB,kBAAM,KAAK,QAAQ;AACnB,gBAAI,GAAG,YAAW,MAAO,GAAG,YAAW,GAAI;AACzC,mBAAK,KAAK;;qBAEH,cAAc,OAAO,KAAK,OAAO,UAAU;AACpD,kBAAM,KAAK,QAAQ;AACnB,kBAAM,KAAK,KAAK;AAChB,gBAAI,GAAG,YAAW,MAAO,GAAG,YAAW,GAAI;AACzC,sBAAQ,KAAK;AACb,wBAAU,QAAQ,MAAM,CAAC;;qBAElB,WAAW,OAAO,QAAQ,OAAO,UAAU;AACpD,kBAAM,KAAK,KAAK;AAChB,gBAAI,GAAG,YAAW,MAAO,QAAQ,GAAG,YAAW,GAAI;AACjD,sBAAQ,KAAK;AACb,qBAAO,KAAK,MAAM,CAAC;;;;AAOzB,cAAM,EAAE,oBAAoB,EAAC,IAAK,KAAK;AACvC,YAAI,qBAAqB,GAAG;AAC1B,iBAAO,KAAK,qBAAqB,IAAI;;AAGvC,aAAK,MAAM,YAAY,MAAM,EAAE,MAAM,QAAO,CAAE;AAC9C,aAAK,MAAM,YAAY,KAAK,QAAQ,QAAQ,MAAM;AAElD,iBACM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,QAAQ,KAAK,QAAQ,QACnD,KAAK,MAAM,KAAK,IAChB,MAAM,MACN;AACA,eAAK,MAAM,eAAe;AAC1B,cAAI,IAAI,QAAQ;AAChB,cAAI,IAAI,KAAK;AAEb,eAAK,MAAM,SAAS,GAAG,CAAC;AAKxB,cAAI,MAAM,OAAO;AACf,mBAAO;;AAIT,cAAI,MAAM,QAAA,UAAU;AAClB,iBAAK,MAAM,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC;AAwBtC,gBAAI,KAAK;AACT,gBAAI,KAAK,KAAK;AACd,gBAAI,OAAO,IAAI;AACb,mBAAK,MAAM,eAAe;AAO1B,qBAAO,KAAK,IAAI,MAAM;AACpB,oBACE,KAAK,QAAQ,OACb,KAAK,QAAQ,QACZ,CAAC,QAAQ,OAAO,KAAK,IAAI,OAAO,CAAC,MAAM;AAExC,yBAAO;;AAEX,qBAAO;;AAIT,mBAAO,KAAK,IAAI;AACd,kBAAI,YAAY,KAAK;AAErB,mBAAK,MAAM,oBAAoB,MAAM,IAAI,SAAS,IAAI,SAAS;AAG/D,kBAAI,KAAK,SAAS,KAAK,MAAM,EAAE,GAAG,QAAQ,MAAM,EAAE,GAAG,OAAO,GAAG;AAC7D,qBAAK,MAAM,yBAAyB,IAAI,IAAI,SAAS;AAErD,uBAAO;qBACF;AAGL,oBACE,cAAc,OACd,cAAc,QACb,CAAC,QAAQ,OAAO,UAAU,OAAO,CAAC,MAAM,KACzC;AACA,uBAAK,MAAM,iBAAiB,MAAM,IAAI,SAAS,EAAE;AACjD;;AAIF,qBAAK,MAAM,0CAA0C;AACrD;;;AAOJ,gBAAI,SAAS;AAEX,mBAAK,MAAM,4BAA4B,MAAM,IAAI,SAAS,EAAE;AAC5D,kBAAI,OAAO,IAAI;AACb,uBAAO;;;AAIX,mBAAO;;AAMT,cAAI;AACJ,cAAI,OAAO,MAAM,UAAU;AACzB,kBAAM,MAAM;AACZ,iBAAK,MAAM,gBAAgB,GAAG,GAAG,GAAG;iBAC/B;AACL,kBAAM,EAAE,KAAK,CAAC;AACd,iBAAK,MAAM,iBAAiB,GAAG,GAAG,GAAG;;AAGvC,cAAI,CAAC;AAAK,mBAAO;;AAenB,YAAI,OAAO,MAAM,OAAO,IAAI;AAG1B,iBAAO;mBACE,OAAO,IAAI;AAIpB,iBAAO;mBACE,OAAO,IAAI;AAKpB,iBAAO,OAAO,KAAK,KAAK,KAAK,QAAQ;eAGhC;AAEL,gBAAM,IAAI,MAAM,MAAM;;MAG1B;MAEA,cAAW;AACT,gBAAO,GAAA,QAAA,aAAY,KAAK,SAAS,KAAK,OAAO;MAC/C;MAEA,MAAM,SAAe;AACnB,QAAAtC,oBAAmB,OAAO;AAE1B,cAAM,UAAU,KAAK;AAGrB,YAAI,YAAY;AAAM,iBAAO,QAAA;AAC7B,YAAI,YAAY;AAAI,iBAAO;AAI3B,YAAI;AACJ,YAAI,WAA4C;AAChD,YAAK,IAAI,QAAQ,MAAMa,OAAM,GAAI;AAC/B,qBAAW,QAAQ,MAAME,eAAcD;mBAC7B,IAAI,QAAQ,MAAMZ,aAAY,GAAI;AAC5C,sBACE,QAAQ,SACJ,QAAQ,MACNK,2BACAD,wBACF,QAAQ,MACRD,qBACAF,iBACJ,EAAE,EAAE;mBACI,IAAI,QAAQ,MAAMa,SAAQ,GAAI;AACxC,sBACE,QAAQ,SACJ,QAAQ,MACNG,uBACAF,oBACF,QAAQ,MACRI,iBACAC,aACJ,CAAC;mBACO,IAAI,QAAQ,MAAMd,cAAa,GAAI;AAC7C,qBAAW,QAAQ,MAAME,sBAAqBD;mBACpC,IAAI,QAAQ,MAAME,UAAS,GAAI;AACzC,qBAAWC;;AAGb,YAAI,KAAK;AACT,YAAI,WAAW;AACf,YAAI,WAAW;AAEf,cAAM,mBAAuC,CAAA;AAC7C,cAAM,gBAA4C,CAAA;AAClD,YAAI,YAA+B;AACnC,YAAI,QAAQ;AACZ,YAAI;AAIJ,YAAI,iBAAiB,QAAQ,OAAO,CAAC,MAAM;AAC3C,YAAI,iBAAiB,QAAQ,OAAO;AACpC,cAAM,eAAe,MACnB,iBACI,KACA,iBACA,mCACA;AACN,cAAM,kBAAkB,CAAC,MACvB,EAAE,OAAO,CAAC,MAAM,MACZ,KACA,QAAQ,MACR,mCACA;AAEN,cAAM,iBAAiB,MAAK;AAC1B,cAAI,WAAW;AAGb,oBAAQ,WAAW;cACjB,KAAK;AACH,sBAAMc;AACN,2BAAW;AACX;cACF,KAAK;AACH,sBAAMD;AACN,2BAAW;AACX;cACF;AACE,sBAAM,OAAO;AACb;;AAEJ,iBAAK,MAAM,wBAAwB,WAAW,EAAE;AAChD,wBAAY;;QAEhB;AAEA,iBACM,IAAI,GAAG,GACX,IAAI,QAAQ,WAAW,IAAI,QAAQ,OAAO,CAAC,IAC3C,KACA;AACA,eAAK,MAAM,eAAgB,SAAS,GAAG,IAAI,CAAC;AAG5C,cAAI,UAAU;AAIZ,gBAAI,MAAM,KAAK;AACb,qBAAO;;AAIT,gBAAII,YAAW,IAAI;AACjB,oBAAM;;AAER,kBAAM;AACN,uBAAW;AACX;;AAGF,kBAAQ,GAAG;YAGT,KAAK,KAAK;AACR,qBAAO;;YAIT,KAAK;AACH,6BAAc;AACd,yBAAW;AACX;YAIF,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;AACH,mBAAK,MAAM,6BAA8B,SAAS,GAAG,IAAI,CAAC;AAK1D,mBAAK,MAAM,0BAA0B,SAAS;AAC9C,6BAAc;AACd,0BAAY;AAIZ,kBAAI,QAAQ;AAAO,+BAAc;AACjC;YAEF,KAAK,KAAK;AACR,kBAAI,CAAC,WAAW;AACd,sBAAM;AACN;;AAGF,oBAAM,UAA4B;gBAChC,MAAM;gBACN,OAAO,IAAI;gBACX,SAAS,GAAG;gBACZ,MAAM,QAAQ,WAAW;gBACzB,OAAO,QAAQ,WAAW;;AAE5B,mBAAK,MAAM,KAAK,SAAS,KAAM,OAAO;AACtC,+BAAiB,KAAK,OAAO;AAE7B,oBAAM,QAAQ;AAEd,kBAAI,QAAQ,UAAU,KAAK,QAAQ,SAAS,KAAK;AAC/C,iCAAiB;AACjB,sBAAM,gBAAgB,QAAQ,MAAM,IAAI,CAAC,CAAC;;AAE5C,mBAAK,MAAM,gBAAgB,WAAW,EAAE;AACxC,0BAAY;AACZ;;YAGF,KAAK,KAAK;AACR,oBAAM,UAAU,iBAAiB,iBAAiB,SAAS;AAC3D,kBAAI,CAAC,SAAS;AACZ,sBAAM;AACN;;AAEF,+BAAiB,IAAG;AAGpB,6BAAc;AACd,yBAAW;AACX,mBAAK;AAGL,oBAAM,GAAG;AACT,kBAAI,GAAG,SAAS,KAAK;AACnB,8BAAc,KAAK,OAAO,OAAO,IAAI,EAAE,OAAO,GAAG,OAAM,CAAE,CAAC;;AAE5D;;YAGF,KAAK,KAAK;AACR,oBAAM,UAAU,iBAAiB,iBAAiB,SAAS;AAC3D,kBAAI,CAAC,SAAS;AACZ,sBAAM;AACN;;AAGF,6BAAc;AACd,oBAAM;AAEN,kBAAI,QAAQ,UAAU,KAAK,QAAQ,SAAS,KAAK;AAC/C,iCAAiB;AACjB,sBAAM,gBAAgB,QAAQ,MAAM,IAAI,CAAC,CAAC;;AAE5C;;YAIF,KAAK;AAEH,6BAAc;AACd,oBAAM,CAAC,KAAK,WAAW,UAAU,KAAK,KAAI,GAAA,uBAAA,YAAW,SAAS,CAAC;AAC/D,kBAAI,UAAU;AACZ,sBAAM;AACN,wBAAQ,SAAS;AACjB,qBAAK,WAAW;AAChB,2BAAW,YAAY;qBAClB;AACL,sBAAM;;AAER;YAEF,KAAK;AACH,oBAAM,OAAO;AACb;YAEF;AAEE,6BAAc;AAEd,oBAAMQ,cAAa,CAAC;AACpB;;;AAUN,aAAK,KAAK,iBAAiB,IAAG,GAAI,IAAI,KAAK,iBAAiB,IAAG,GAAI;AACjE,cAAI;AACJ,iBAAO,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,MAAM;AAC3C,eAAK,MAAM,KAAK,SAAS,gBAAgB,IAAI,EAAE;AAE/C,iBAAO,KAAK,QAAQ,6BAA6B,CAAC,GAAG,IAAI,OAAM;AAC7D,gBAAI,CAAC,IAAI;AAEP,mBAAK;;AAYP,mBAAO,KAAK,KAAK,KAAK;UACxB,CAAC;AAED,eAAK,MAAM,kBAAkB,MAAM,MAAM,IAAI,EAAE;AAC/C,gBAAM,IACJ,GAAG,SAAS,MAAMX,QAAO,GAAG,SAAS,MAAMD,SAAQ,OAAO,GAAG;AAE/D,qBAAW;AACX,eAAK,GAAG,MAAM,GAAG,GAAG,OAAO,IAAI,IAAI,QAAQ;;AAI7C,uBAAc;AACd,YAAI,UAAU;AAEZ,gBAAM;;AAKR,cAAMc,mBAAkB,mBAAmB,GAAG,OAAO,CAAC;AAOtD,iBAAS,IAAI,cAAc,SAAS,GAAG,IAAI,IAAI,KAAK;AAClD,gBAAM,KAAK,cAAc;AAEzB,gBAAM,WAAW,GAAG,MAAM,GAAG,GAAG,OAAO;AACvC,gBAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AACjD,cAAI,UAAU,GAAG,MAAM,GAAG,KAAK;AAC/B,gBAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,KAAK,IAAI;AAKlD,gBAAM,oBAAoB,SAAS,MAAM,GAAG,EAAE;AAC9C,gBAAM,mBAAmB,SAAS,MAAM,GAAG,EAAE,SAAS;AACtD,cAAI,aAAa;AACjB,mBAAS,IAAI,GAAG,IAAI,kBAAkB,KAAK;AACzC,yBAAa,WAAW,QAAQ,YAAY,EAAE;;AAEhD,oBAAU;AAEV,gBAAM,SAAS,YAAY,KAAK,cAAc;AAE9C,eAAK,WAAW,UAAU,UAAU,SAAS;;AAM/C,YAAI,OAAO,MAAM,UAAU;AACzB,eAAK,UAAU;;AAGjB,YAAIA,kBAAiB;AACnB,eAAK,aAAY,IAAK;;AAIxB,YAAI,QAAQ,UAAU,CAAC,YAAY,CAAC,QAAQ,iBAAiB;AAC3D,qBAAW,QAAQ,YAAW,MAAO,QAAQ,YAAW;;AAM1D,YAAI,CAAC,UAAU;AACb,iBAAO,aAAa,EAAE;;AAGxB,cAAM,SAAS,QAAQ,SAAS,MAAM,OAAO,QAAQ,MAAM;AAC3D,YAAI;AACF,gBAAMnC,OAAM,WACR;YACE,OAAO;YACP,MAAM;YACN,MAAM;cAER;YACE,OAAO;YACP,MAAM;;AAEZ,iBAAO,OAAO,OAAO,IAAI,OAAO,MAAM,KAAK,KAAK,KAAK,GAAGA,IAAG;iBAEpD,IAAP;AAMA,eAAK,MAAM,kBAAkB,EAAE;AAC/B,iBAAO,IAAI,OAAO,IAAI;;MAG1B;MAEA,SAAM;AACJ,YAAI,KAAK,UAAU,KAAK,WAAW;AAAO,iBAAO,KAAK;AAQtD,cAAM,MAAM,KAAK;AAEjB,YAAI,CAAC,IAAI,QAAQ;AACf,eAAK,SAAS;AACd,iBAAO,KAAK;;AAEd,cAAM,UAAU,KAAK;AAErB,cAAM,UAAU,QAAQ,aACpBsB,QACA,QAAQ,MACRC,cACAC;AACJ,cAAM,QAAQ,QAAQ,SAAS,MAAM;AAQrC,YAAI,KAAK,IACN,IAAI,aAAU;AACb,gBAAM,KAAmC,QAAQ,IAAI,OACnD,OAAO,MAAM,WACTS,cAAa,CAAC,IACd,MAAM,QAAA,WACN,QAAA,WACA,EAAE,IAAI;AAEZ,aAAG,QAAQ,CAAC,GAAG,MAAK;AAClB,kBAAM,OAAO,GAAG,IAAI;AACpB,kBAAM,OAAO,GAAG,IAAI;AACpB,gBAAI,MAAM,QAAA,YAAY,SAAS,QAAA,UAAU;AACvC;;AAEF,gBAAI,SAAS,QAAW;AACtB,kBAAI,SAAS,UAAa,SAAS,QAAA,UAAU;AAC3C,mBAAG,IAAI,KAAK,YAAY,UAAU,UAAU;qBACvC;AACL,mBAAG,KAAK;;uBAED,SAAS,QAAW;AAC7B,iBAAG,IAAI,KAAK,OAAO,YAAY,UAAU;uBAChC,SAAS,QAAA,UAAU;AAC5B,iBAAG,IAAI,KAAK,OAAO,eAAe,UAAU,SAAS;AACrD,iBAAG,IAAI,KAAK,QAAA;;UAEhB,CAAC;AACD,iBAAO,GAAG,OAAO,OAAK,MAAM,QAAA,QAAQ,EAAE,KAAK,GAAG;QAChD,CAAC,EACA,KAAK,GAAG;AAIX,aAAK,SAAS,KAAK;AAGnB,YAAI,KAAK;AAAQ,eAAK,SAAS,KAAK;AAEpC,YAAI;AACF,eAAK,SAAS,IAAI,OAAO,IAAI,KAAK;iBAE3B,IAAP;AAEA,eAAK,SAAS;;AAGhB,eAAO,KAAK;MACd;MAEA,WAAW,GAAS;AAKlB,YAAI,KAAK,yBAAyB;AAChC,iBAAO,EAAE,MAAM,GAAG;mBACT,KAAK,aAAa,cAAc,KAAK,CAAC,GAAG;AAElD,iBAAO,CAAC,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;eACxB;AACL,iBAAO,EAAE,MAAM,KAAK;;MAExB;MAEA,MAAM,GAAW,UAAU,KAAK,SAAO;AACrC,aAAK,MAAM,SAAS,GAAG,KAAK,OAAO;AAGnC,YAAI,KAAK,SAAS;AAChB,iBAAO;;AAET,YAAI,KAAK,OAAO;AACd,iBAAO,MAAM;;AAGf,YAAI,MAAM,OAAO,SAAS;AACxB,iBAAO;;AAGT,cAAM,UAAU,KAAK;AAGrB,YAAI,KAAK,WAAW;AAClB,cAAI,EAAE,MAAM,IAAI,EAAE,KAAK,GAAG;;AAI5B,cAAM,KAAK,KAAK,WAAW,CAAC;AAC5B,aAAK,MAAM,KAAK,SAAS,SAAS,EAAE;AAOpC,cAAM,MAAM,KAAK;AACjB,aAAK,MAAM,KAAK,SAAS,OAAO,GAAG;AAGnC,YAAI,WAAmB,GAAG,GAAG,SAAS;AACtC,YAAI,CAAC,UAAU;AACb,mBAAS,IAAI,GAAG,SAAS,GAAG,CAAC,YAAY,KAAK,GAAG,KAAK;AACpD,uBAAW,GAAG;;;AAIlB,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,gBAAM,UAAU,IAAI;AACpB,cAAI,OAAO;AACX,cAAI,QAAQ,aAAa,QAAQ,WAAW,GAAG;AAC7C,mBAAO,CAAC,QAAQ;;AAElB,gBAAM,MAAM,KAAK,SAAS,MAAM,SAAS,OAAO;AAChD,cAAI,KAAK;AACP,gBAAI,QAAQ,YAAY;AACtB,qBAAO;;AAET,mBAAO,CAAC,KAAK;;;AAMjB,YAAI,QAAQ,YAAY;AACtB,iBAAO;;AAET,eAAO,KAAK;MACd;MAEA,OAAO,SAAS,KAAqB;AACnC,eAAO,QAAA,UAAU,SAAS,GAAG,EAAE;MACjC;;AAxrCF,YAAA,YAAApC;AA2rCA,QAAA,cAAA;AAAS,WAAA,eAAA,SAAA,UAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,YAAA;IAAM,EAAA,CAAA;AACf,QAAA,gBAAA;AAAS,WAAA,eAAA,SAAA,YAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,cAAA;IAAQ,EAAA,CAAA;AAEjB,YAAA,UAAU,YAAYA;AACtB,YAAA,UAAU,SAAS,YAAA;AACnB,YAAA,UAAU,WAAW,cAAA;;;;;;;;;;;ACrgDrB,QAAA,aAAA,gBAAA,cAAA;AAEA,WAAA,UAAS,OAAO,OAAO,WAAA,SAAW,EAAE,SAAS,WAAA,SAAW,WAAA,WAAA,QAAS,CAAE;;;;;ACFnE;AAAA;AAAC,QAAM,SAAS,UAAQ;AAAvB,QACC,QAAQ;AADT,QAECuC,aAAY;AAFb,QAGCC,QAAO,UAAQ;AAEjB,QAAM,iBAAiB;AAAA,MACrB,MAAM;AAAA,MACN,aAAa,CAAC;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,QACL,SAAS,CAAC;AAAA,QACV,SAAS,CAAC;AAAA,QACV,eAAe;AAAA,QACf,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,MAClB;AAAA,MACA,SAAS;AAAA,QACP,SAAS,CAAC;AAAA,QACV,SAAS,CAAC;AAAA,QACV,eAAe;AAAA,QACf,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,MAClB;AAAA,MACA,eAAe;AAAA,QACb,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,qBAAqB;AAAA,QACrB,+BAA+B;AAAA,MACjC;AAAA,IACF;AAGA,QAAM,MAAM;AAAA,MACV,OAAO,MAAM,aAAa;AAAA,MAC1B,QAAQ,CAAAC,YAAU;AAChB,cAAM,kBAAkB,EAAEA,OAAM;AAChC,eAAOA;AAAA,MACT;AAAA,MACA,KAAK,MAAM,WAAW;AAAA,MACtB,SAAS,MAAM,eAAe;AAAA,MAC9B,OAAO,MAAM,aAAa;AAAA,MAC1B,MAAM,MAAM,YAAY;AAAA,IAC1B;AAEA,aAAS,KAAKC,KAAI;AAChB,UAAI,QAAQ,CAAC;AACb,UAAI,aAAa;AAEjB,eAASC,aAAY,MAAM,KAAK,SAAS,UAAU;AACjD,mBAAW,UAAU,UAAU,SAAS;AAExC,eAAO,gBAAgB,SAAS,EAC7B,KAAK,CAAC,EAAE,UAAAC,WAAU,KAAAC,MAAK,SAAAC,SAAQ,MAAM;AAEpC,UAAAA,SAAQ,eAAe;AACvB,iBAAOJ,IAAG,SACP,MAAMF,MAAK,KAAKK,MAAKD,SAAQ,CAAC,EAC9B,KAAK,WAAS;AACb,kBAAM,OAAOA;AACb,mBAAO;AAAA,UACT,CAAC,EACA,KAAK,WAAS,mBAAmB,OAAOC,MAAKC,UAAS,IAAI,CAAC;AAAA,QAChE,CAAC,EACA,KAAK,YAAU;AACd,cAAIC,YAAW,QAAQ,GAAG;AACxB,mBAAO,SAAS,QAAW,MAAM;AAAA,UACnC,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF,CAAC,EACA,MAAM,YAAU;AACf,cAAI,IAAI,gBAAgB,MAAM;AAC9B,cAAIA,YAAW,QAAQ,GAAG;AACxB,mBAAO,SAAS,MAAM;AAAA,UACxB,OAAO;AACL,kBAAM;AAAA,UACR;AAAA,QACF,CAAC;AAAA,MACL;AAQA,eAAS,mBAAmB,OAAOC,UAAS,SAAS,gBAAgB,OAAO;AAC1E,cAAM,OAAO,MAAM;AACnB,YAAI,UAAU;AACd,YAAI,MAAM,YAAY,GAAG;AACvB,oBAAU,kBAAkB,MAAMA,UAAS,SAAS,aAAa;AAAA,QACnE,WAAW,MAAM,OAAO,GAAG;AACzB,oBAAU,gBAAgB,MAAMA,UAAS,SAAS,aAAa;AAAA,QACjE,WAAW,MAAM,eAAe,GAAG;AACjC,oBAAU,mBAAmB,MAAMA,UAAS,SAAS,aAAa;AAAA,QACpE,OAAO;AACL,cAAI,IAAI,qCAAqC,KAAK;AAClD,iBAAO,QAAQ,QAAQ,EAAE,MAAM,MAAM,8BAA8B,CAAC;AAAA,QACtE;AAEA,eAAO,QAAQ,MAAM,SAAO;AAC1B,cAAI,IAAI,SAAS,IAAI,SAAS,YAAY,IAAI,SAAS,WAAW;AAChE,gBAAI,MAAM,UAAUA,YAAW,mBAAmB,IAAI,MAAM;AAE5D,kBAAMC,WAAU,IAAI,QAAQ,CAACC,WAAS,WAAW;AAC/C,oBAAM,KAAK,MAAM;AACf,oBAAI,MAAM,wBAAwBF,YAAW,MAAM;AACnD,uBAAO,mBAAmB,OAAOA,UAAS,SAAS,aAAa,EAC7D,KAAK,QAAME,UAAQ,EAAE,CAAC,EACtB,MAAM,CAAAC,SAAO,OAAOA,IAAG,CAAC;AAAA,cAC7B,CAAC;AAAA,YACH,CAAC;AAED,gBAAI,eAAe,QAAW;AAC5B,2BAAa,WAAW,cAAc,CAAC;AAAA,YACzC;AACA,mBAAOF;AAAA,UACT;AAEA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAEA,eAAS,eAAe;AACtB,qBAAa;AACb,cAAM,YAAY;AAClB,gBAAQ,CAAC;AACT,kBAAU,QAAQ,SAAO,IAAI,CAAC;AAAA,MAChC;AAEA,qBAAe,kBAAkB,MAAM,KAAK,SAAS,gBAAgB,OAAO;AAC1E,cAAM,aAAaT,MAAK,KAAK,KAAK,IAAI;AACtC,YAAI,qBAAqB,QAAQ;AACjC,eAAO,QAAQ;AAEf,YAAI,QAAQ,cAAc;AAExB,cAAI,MAAM,YAAY,aAAa;AACnC,iBAAO,QAAQ;AAAA,QACjB,WAAW,OAAO,MAAM,YAAY,QAAQ,OAAO,GAAG;AACpD,iBAAO;AAAA,QACT;AAEA,cAAM,QAAQ,MAAME,IAAG,SAAS,QAAQ,YAAY,EAAE,eAAe,KAAK,CAAC;AAC3E,cAAM,WAAW,MAAM,QAAQ;AAAA,UAC7B,MACG,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,EAC3C,IAAI,WAAS,mBAAmB,OAAO,YAAY,OAAO,CAAC;AAAA,QAChE;AAEA,YAAI;AAAoB,kBAAQ,qBAAqB;AACrD,cAAM,OAAO,IAAI,aAAa,MAAM,SAAS,OAAO,YAAY,GAAG,SAAS,aAAa;AACzF,eAAO;AAAA,MACT;AAEA,eAAS,gBAAgB,MAAM,KAAK,SAAS,gBAAgB,OAAO;AAClE,cAAM,WAAWF,MAAK,KAAK,KAAK,IAAI;AAEpC,YAAI,QAAQ,cAAc;AAExB,cAAI,MAAM,YAAY,WAAW;AACjC,iBAAO,QAAQ;AAAA,QACjB,WAAW,OAAO,MAAM,UAAU,QAAQ,KAAK,GAAG;AAChD,iBAAO,QAAQ,QAAQ,MAAS;AAAA,QAClC;AAEA,eAAO,IAAI,QAAQ,CAACU,WAAS,WAAW;AACtC,cAAI;AACF,kBAAM,OAAO,OAAO,WAAW,QAAQ,MAAM,QAAQ,WAAW;AAChE,gBACE,QAAQ,MAAM,kBACd,QAAQ,sBACP,iBAAiB,QAAQ,MAAM,gBAChC;AACA,qBAAO,QAAQ;AACf,kBAAI,MAAM,mBAAmB,oBAAoB;AAAA,YACnD,OAAO;AACL,mBAAK,OAAO,IAAI;AAAA,YAClB;AAEA,kBAAM,IAAIR,IAAG,iBAAiB,QAAQ;AACtC,cAAE,GAAG,SAAS,SAAO;AACnB,qBAAO,GAAG;AAAA,YACZ,CAAC;AACD,cAAE,KAAK,MAAM,EAAE,KAAK,MAAM,CAAC;AAE3B,cAAE,GAAG,OAAO,MAAM;AAChB,oBAAM,aAAa,IAAI,WAAW,MAAM,MAAM,QAAQ,QAAQ;AAC9D,qBAAOQ,UAAQ,UAAU;AAAA,YAC3B,CAAC;AAAA,UACH,SAAS,IAAP;AACA,mBAAO,OAAO,EAAE;AAAA,UAClB;AAAA,QACF,CAAC;AAAA,MACH;AAEA,qBAAe,mBAAmB,MAAM,KAAK,SAAS,gBAAgB,OAAO;AAC3E,cAAM,SAAS,MAAMR,IAAG,SAAS,SAASF,MAAK,KAAK,KAAK,IAAI,CAAC;AAC9D,YAAI,QAAQ,0BAA0B,WAAW,QAAQ;AACzD,YAAI,QAAQ,cAAc,SAAS;AACjC,cAAI,QAAQ,cAAc,qBAAqB;AAC7C,mBAAO,2BAA2B,MAAM,QAAQ,SAAS,aAAa;AAAA,UACxE,OAAO;AACL,mBAAO,eAAe,MAAM,KAAK,QAAQ,SAAS,aAAa;AAAA,UACjE;AAAA,QACF,OAAO;AACL,cAAI,QAAQ,wBAAwB;AACpC,iBAAO,QAAQ,QAAQ,MAAS;AAAA,QAClC;AAAA,MACF;AAEA,eAAS,2BAA2B,MAAM,QAAQ,SAAS,eAAe;AACxE,eAAO,QAAQ;AACf,YAAI,QAAQ,uCAAuC;AACnD,cAAM,OAAO,OAAO,WAAW,QAAQ,MAAM,QAAQ,WAAW;AAChE,YAAI,CAAC,QAAQ,cAAc,kBAAkB,EAAE,iBAAiB,QAAQ,MAAM,iBAAiB;AAC7F,cAAI,QAAQ,eAAe;AAC3B,eAAK,OAAO,IAAI;AAAA,QAClB;AACA,YAAI,CAAC,QAAQ,cAAc,kBAAkB;AAC3C,cAAI,QAAQ,iBAAiB;AAC7B,eAAK,OAAO,MAAM;AAAA,QACpB;AACA,eAAO,QAAQ,QAAQ,IAAI,WAAW,MAAM,MAAM,QAAQ,QAAQ,CAAC;AAAA,MACrE;AAEA,qBAAe,eAAe,MAAM,KAAK,QAAQ,SAAS,eAAe;AACvE,eAAO,QAAQ;AACf,YAAI,QAAQ,cAAc,gBAAgB;AACxC,kBAAQ,qBAAqB;AAAA,QAC/B;AAEA,YAAI;AACF,gBAAM,QAAQ,MAAME,IAAG,SAAS,KAAKF,MAAK,KAAK,KAAK,IAAI,CAAC;AACzD,gBAAM,OAAO;AACb,gBAAM,OAAO,MAAM,mBAAmB,OAAO,KAAK,SAAS,aAAa;AAExE,cAAI,CAAC,QAAQ,cAAc,kBAAkB;AAC3C,kBAAM,OAAO,OAAO,WAAW,QAAQ,MAAM,QAAQ,WAAW;AAChE,iBAAK,OAAO,KAAK,IAAI;AACrB,gBAAI,QAAQ,iBAAiB;AAC7B,iBAAK,OAAO,MAAM;AAClB,iBAAK,OAAO,KAAK,OAAO,QAAQ,QAAQ;AAAA,UAC1C;AACA,iBAAO;AAAA,QACT,SAAS,KAAP;AACA,cAAI,QAAQ,cAAc,+BAA+B;AACvD,gBAAI,QAAQ,mBAAmB,IAAI,oCAAoC,QAAQ,GAAG;AAClF,kBAAM,OAAO,OAAO,WAAW,QAAQ,MAAM,QAAQ,WAAW;AAChE,gBACE,CAAC,QAAQ,cAAc,kBACvB,EAAE,iBAAiB,QAAQ,MAAM,iBACjC;AACA,mBAAK,OAAO,IAAI;AAAA,YAClB;AACA,gBAAI,CAAC,QAAQ,cAAc,kBAAkB;AAC3C,mBAAK,OAAO,MAAM;AAAA,YACpB;AACA,mBAAO,IAAI,WAAW,MAAM,MAAM,QAAQ,QAAQ;AAAA,UACpD,OAAO;AACL,gBAAI,QAAQ,UAAU,IAAI,qCAAqC,QAAQ,GAAG;AAC1E,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,eAAS,OAAO,MAAMA,QAAM,OAAO;AACjC,YAAI,MAAM,SAAS;AACjB,cAAI,MAAM,iBAAiB,MAAM,QAAQ,IAAI,GAAG;AAC9C,gBAAI,MAAM,qBAAqB,OAAO;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,aAAa,MAAM,QAAQA,MAAI,GAAG;AACjD,gBAAI,MAAM,iBAAiBA,SAAO;AAClC,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,MAAM,SAAS;AACjB,cAAI,MAAM,iBAAiB,MAAM,QAAQ,IAAI,GAAG;AAC9C,gBAAI,MAAM,qBAAqB,OAAO;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,aAAa,MAAM,QAAQA,MAAI,GAAG;AACjD,gBAAI,MAAM,iBAAiBA,SAAO;AAClC,mBAAO;AAAA,UACT,OAAO;AACL,gBAAI,MAAM,iCAAiCA,SAAO;AAClD,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,YAAI,MAAM,8BAA8BA,SAAO;AAC/C,eAAO;AAAA,MACT;AAEA,aAAOG;AAAA,IACT;AAEA,aAAS,gBAAgB,MAAM;AAC7B,UAAIC,YAAW,KAAK,IAClB,MAAM,KAAK,IACX,WAAW,KAAK;AAElB,UAAI,CAAC,SAASA,SAAQ,GAAG;AACvB,eAAO,QAAQ,OAAO,IAAI,UAAU,iCAAiC,CAAC;AAAA,MACxE;AAEA,UAAI,CAAC,SAAS,GAAG,GAAG;AAClB,cAAMJ,MAAK,QAAQI,SAAQ;AAC3B,QAAAA,YAAWJ,MAAK,SAASI,SAAQ;AACjC,mBAAW,KAAK;AAAA,MAClB;AAGA,UAAI,CAAC,SAAS,QAAQ;AAAG,mBAAW,CAAC;AACrC,YAAM,UAAU;AAAA,QACd,MAAM,SAAS,QAAQ,eAAe;AAAA,QACtC,aAAa,SAAS,eAAe,eAAe;AAAA,QACpD,UAAU,SAAS,YAAY,eAAe;AAAA,QAC9C,OAAO,OAAO,OAAO,CAAC,GAAG,eAAe,OAAO,SAAS,KAAK;AAAA,QAC7D,SAAS,OAAO,OAAO,CAAC,GAAG,eAAe,SAAS,SAAS,OAAO;AAAA,QACnE,OAAO,OAAO,OAAO,CAAC,GAAG,eAAe,OAAO,SAAS,KAAK;AAAA,QAC7D,eAAe,OAAO,OAAO,CAAC,GAAG,eAAe,eAAe,SAAS,aAAa;AAAA,MACvF;AAGA,cAAQ,MAAM,UAAU,mBAAmB,QAAQ,MAAM,SAAS,eAAe;AACjF,cAAQ,MAAM,UAAU,mBAAmB,QAAQ,MAAM,SAAS,eAAe;AACjF,cAAQ,QAAQ,UAAU,mBAAmB,QAAQ,QAAQ,SAAS,iBAAiB;AACvF,cAAQ,QAAQ,UAAU,mBAAmB,QAAQ,QAAQ,SAAS,iBAAiB;AAEvF,aAAO,QAAQ,QAAQ,IAAI,OAAO,EAAE,UAAAA,WAAU,KAAK,QAAQ,CAAC,CAAC;AAAA,IAC/D;AAEA,QAAM,eAAe,SAASQ,cAAa,MAAM,UAAU,SAAS,gBAAgB,OAAO;AACzF,WAAK,OAAO;AACZ,WAAK,WAAW;AAEhB,YAAM,OAAO,OAAO,WAAW,QAAQ,MAAM,QAAQ,WAAW;AAChE,UACE,QAAQ,QAAQ,kBAChB,QAAQ,sBACP,iBAAiB,QAAQ,QAAQ,gBAClC;AACA,eAAO,QAAQ;AACf,YAAI,MAAM,0BAA0B,gBAAgB;AAAA,MACtD,OAAO;AACL,aAAK,OAAO,IAAI;AAAA,MAClB;AACA,eAAS,QAAQ,WAAS;AACxB,YAAI,MAAM,MAAM;AACd,eAAK,OAAO,MAAM,IAAI;AAAA,QACxB;AAAA,MACF,CAAC;AAED,WAAK,OAAO,KAAK,OAAO,QAAQ,QAAQ;AAAA,IAC1C;AAEA,iBAAa,UAAU,WAAW,SAAU,UAAU,IAAI;AACxD,YAAM,QAAQ,GAAG,mBAAmB,KAAK,iBAAiB,KAAK;AAAA;AAC/D,iBAAW;AAEX,aAAO,GAAG,QAAQ,oBAAoB,KAAK,iBAAiB,OAAO;AAAA,IACrE;AAEA,iBAAa,UAAU,mBAAmB,SAAU,UAAU,IAAI;AAChE,UAAI,KAAK,SAAS,WAAW,GAAG;AAC9B,eAAO;AAAA,MACT,OAAO;AACL,cAAM,cAAc,UAAU;AAC9B,cAAM,WAAW,KAAK,SAAS,IAAI,WAAS,MAAM,SAAS,WAAW,CAAC,EAAE,KAAK,IAAI;AAClF,eAAO;AAAA,EAAM;AAAA,EAAa;AAAA,MAC5B;AAAA,IACF;AAEA,QAAM,aAAa,SAASC,YAAW,MAAM,MAAM,UAAU;AAC3D,WAAK,OAAO;AACZ,WAAK,OAAO,KAAK,OAAO,QAAQ;AAAA,IAClC;AAEA,eAAW,UAAU,WAAW,SAAU,UAAU,IAAI;AACtD,aAAO,UAAU,cAAc,KAAK,OAAO,eAAe,KAAK,OAAO;AAAA,IACxE;AAEA,aAASN,YAAW,KAAK;AACvB,aAAO,OAAO,QAAQ;AAAA,IACxB;AAEA,aAAS,SAAS,KAAK;AACrB,aAAO,OAAO,QAAQ,YAAY,eAAe;AAAA,IACnD;AAEA,aAAS,SAAS,KAAK;AACrB,aAAO,QAAQ,QAAQ,OAAO,QAAQ;AAAA,IACxC;AAEA,aAAS,aAAa,KAAK;AACzB,aAAO,OAAO,QAAQ;AAAA,IACxB;AAEA,aAAS,mBAAmB,OAAO,MAAM;AACvC,UAAIA,YAAW,KAAK,GAAG;AACrB,YAAI,KAAK,qBAAqB,MAAM;AACpC,eAAO;AAAA,MACT,WAAW,CAAC,SAAS,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AAChE,eAAO;AAAA,MACT,OAAO;AAEL,cAAM,QAAQ,IAAI;AAAA,UAChB,MACG,OAAO,CAAC,KAAK,YAAY;AACxB,mBAAO,MAAM,MAAMR,WAAU,OAAO,OAAO,EAAE;AAAA,UAC/C,GAAG,EAAE,EACJ,OAAO,CAAC;AAAA,QACb;AACA,YAAI,KAAK,4BAA4B,QAAQ,EAAE,MAAM,OAAO,IAAI,MAAM,CAAC;AACvE,eAAO,WAAS,MAAM,KAAK,KAAK;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,MACf,UAAU;AAAA,MACV,aAAa,KAAK,UAAQ,KAAK;AAAA,MAE/B;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACzaA,SAAS,gBAAgB,mBAAmB;;;ACD5C,IAAM,QAAQ;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AACZ;AACA,IAAM,MAAM;AACZ,IAAM,QAAQ;AACd,IAAM,SAAS;AACf,IAAM,OAAO;AACN,IAAM,KAAN,MAAS;AAAA,EACZ,YAAY,MAAM;AACd,QAAIe;AACJ,SAAK,QAAQ,KAAK;AAClB,SAAK,QAAQA,MAAK,KAAK,UAAU,QAAQA,QAAO,SAASA,MAAK;AAC9D,SAAK,OAAO,CAAC;AAAA,EACjB;AAAA,EACA,QAAQ,MAAM;AACV,UAAM,OAAO,KAAK,IAAI,GAAG,IAAI;AAC7B,SAAK,OAAO;AAAA,EAChB;AAAA,EACA,cAAc;AACV,SAAK,OAAO,CAAC;AAAA,EACjB;AAAA,EACA,OAAO,MAAM;AACT,QAAI,KAAK,WAAW,GAAG;AACnB,WAAK,IAAI,EAAE;AAAA,IACf;AACA,QAAI,KAAK,QAAQ,KAAK,qBAAqB,GAAG,IAAI,KAAK,OAAO,KAAK,OAAO,UAAU;AAChF,aAAO,KAAK,eAAe,KAAK,EAAE;AAAA,IACtC;AACA,UAAM,OAAO,KAAK,IAAI,SAAO;AACzB,UAAI,OAAO,QAAQ,UAAU;AACzB,eAAO,KAAK,cAAc,GAAG;AAAA,MACjC;AACA,aAAO;AAAA,IACX,CAAC;AACD,SAAK,KAAK,KAAK,IAAI;AACnB,WAAO;AAAA,EACX;AAAA,EACA,wBAAwB,MAAM;AAC1B,WAAO,KAAK,WAAW,KAAK,OAAO,KAAK,OAAO,YAC3C,SAAS,KAAK,KAAK,EAAE;AAAA,EAC7B;AAAA,EACA,eAAe,KAAK;AAChB,UAAM,OAAO,IAAI,MAAM,IAAI,EAAE,IAAI,SAAO,IAAI,MAAM,GAAI,CAAC;AACvD,QAAI,kBAAkB;AAKtB,SAAK,QAAQ,aAAW;AACpB,UAAI,QAAQ,SAAS,KAAK,MAAM,YAAY,QAAQ,EAAE,IAAI,iBAAiB;AACvE,0BAAkB,KAAK,IAAI,KAAK,MAAM,KAAK,QAAQ,GAAG,GAAG,MAAM,YAAY,QAAQ,EAAE,CAAC;AAAA,MAC1F;AAAA,IACJ,CAAC;AAID,SAAK,QAAQ,aAAW;AACpB,WAAK,IAAI,GAAG,QAAQ,IAAI,CAAC,GAAG,MAAM;AAC9B,eAAO;AAAA,UACH,MAAM,EAAE,KAAK;AAAA,UACb,SAAS,KAAK,eAAe,CAAC;AAAA,UAC9B,OAAQ,MAAM,KAAK,QAAQ,SAAS,IAAK,kBAAkB;AAAA,QAC/D;AAAA,MACJ,CAAC,CAAC;AAAA,IACN,CAAC;AACD,WAAO,KAAK,KAAK,KAAK,KAAK,SAAS;AAAA,EACxC;AAAA,EACA,cAAc,MAAM;AAChB,WAAO;AAAA,MACH;AAAA,MACA,SAAS,KAAK,eAAe,IAAI;AAAA,IACrC;AAAA,EACJ;AAAA,EACA,eAAe,KAAK;AAEhB,UAAM,SAAS,MAAM,UAAU,GAAG;AAClC,WAAO,CAAC,GAAG,OAAO,MAAM,MAAM,EAAE,GAAG,QAAQ,GAAG,OAAO,MAAM,MAAM,EAAE,GAAG,MAAM;AAAA,EAChF;AAAA,EACA,WAAW;AACP,UAAMC,SAAQ,CAAC;AACf,SAAK,KAAK,QAAQ,SAAO;AACrB,WAAK,YAAY,KAAKA,MAAK;AAAA,IAC/B,CAAC;AAGD,WAAOA,OACF,OAAO,UAAQ,CAAC,KAAK,MAAM,EAC3B,IAAI,UAAQ,KAAK,IAAI,EACrB,KAAK,IAAI;AAAA,EAClB;AAAA,EACA,YAAY,KAAKA,QAAO;AACpB,SAAK,UAAU,GAAG,EAAE,QAAQ,CAAC,MAAM,MAAM;AACrC,UAAI,MAAM;AACV,WAAK,QAAQ,CAAC,KAAK,MAAM;AACrB,cAAM,EAAE,MAAM,IAAI,IAAI;AACtB,cAAM,YAAY,KAAK,cAAc,IAAI,EAAE;AAC3C,YAAIC,MAAK;AACT,YAAI,YAAY,MAAM,YAAY,GAAG,GAAG;AACpC,UAAAA,OAAM,IAAI,OAAO,YAAY,MAAM,YAAY,GAAG,CAAC;AAAA,QACvD;AAEA,YAAI,IAAI,GAAG,SAAS,IAAI,GAAG,UAAU,UAAU,KAAK,MAAM;AACtD,gBAAM,KAAK,MAAM,IAAI,GAAG;AACxB,UAAAA,MAAK,GAAGA,KAAI,SAAS;AACrB,cAAI,MAAM,YAAYA,GAAE,IAAI,WAAW;AACnC,YAAAA,OAAM,IAAI,QAAQ,SAAS,KAAK,MAAM,YAAYA,GAAE,IAAI,CAAC;AAAA,UAC7D;AAAA,QACJ;AAEA,cAAM,UAAU,IAAI,GAAG,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC;AAC7C,YAAI,QAAQ,OAAO;AACf,iBAAO,IAAI,OAAO,QAAQ,KAAK;AAAA,QACnC;AACA,eAAO,UAAU,IAAI,IAAIA,KAAI,IAAI;AACjC,eAAOA;AACP,eAAO,UAAU,IAAI,IAAIA,KAAI,IAAI;AACjC,YAAI,QAAQ,QAAQ;AAChB,iBAAO,IAAI,OAAO,QAAQ,MAAM;AAAA,QACpC;AAGA,YAAI,MAAM,KAAKD,OAAM,SAAS,GAAG;AAC7B,gBAAM,KAAK,aAAa,KAAKA,OAAMA,OAAM,SAAS,EAAE;AAAA,QACxD;AAAA,MACJ,CAAC;AAED,MAAAA,OAAM,KAAK;AAAA,QACP,MAAM,IAAI,QAAQ,OAAO,EAAE;AAAA,QAC3B,MAAM,IAAI;AAAA,MACd,CAAC;AAAA,IACL,CAAC;AACD,WAAOA;AAAA,EACX;AAAA,EAGA,aAAa,QAAQ,cAAc;AAC/B,UAAME,SAAQ,OAAO,MAAM,KAAK;AAChC,UAAM,oBAAoBA,SAAQA,OAAM,GAAG,SAAS;AACpD,UAAM,SAAS,aAAa;AAC5B,UAAM,kBAAkB,MAAM,YAAY,OAAO,UAAU,CAAC;AAC5D,QAAI,CAAC,aAAa,MAAM;AACpB,aAAO;AAAA,IACX;AAGA,QAAI,CAAC,KAAK,MAAM;AACZ,mBAAa,SAAS;AACtB,aAAO,SAAS;AAAA,IACpB;AACA,QAAI,oBAAoB,iBAAiB;AACrC,aAAO;AAAA,IACX;AACA,iBAAa,SAAS;AACtB,WAAO,OAAO,UAAU,IAAI,IAAI,OAAO,oBAAoB,eAAe,IAAI,OAAO,SAAS;AAAA,EAClG;AAAA,EACA,UAAU,KAAK;AACX,UAAM,QAAQ,CAAC;AACf,UAAM,SAAS,KAAK,aAAa,GAAG;AACpC,QAAI;AAGJ,QAAI,QAAQ,CAAC,KAAK,MAAM;AAEpB,UAAI,QAAQ,OAAO;AACnB,UAAI,KAAK,MAAM;AACX,kBAAU,MAAM,KAAK,IAAI,MAAM,KAAK,cAAc,GAAG,GAAG,EAAE,MAAM,KAAK,CAAC,EAAE,MAAM,IAAI;AAAA,MACtF,OACK;AACD,kBAAU,IAAI,KAAK,MAAM,IAAI;AAAA,MACjC;AACA,UAAI,IAAI,QAAQ;AACZ,gBAAQ,QAAQ,MAAM,IAAI,OAAO,KAAK,cAAc,GAAG,IAAI,CAAC,IAAI,GAAG;AACnE,gBAAQ,KAAK,MAAM,IAAI,OAAO,KAAK,cAAc,GAAG,IAAI,CAAC,IAAI,GAAG;AAAA,MACpE;AAEA,UAAI,IAAI,SAAS;AACb,gBAAQ,QAAQ,GAAG,IAAI,MAAM,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;AAC5D,gBAAQ,KAAK,GAAG,IAAI,MAAM,IAAI,QAAQ,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA,MAChE;AACA,cAAQ,QAAQ,CAAC,KAAK,MAAM;AACxB,YAAI,CAAC,MAAM,IAAI;AACX,gBAAM,KAAK,CAAC,CAAC;AAAA,QACjB;AACA,cAAM,OAAO,MAAM;AACnB,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,cAAI,KAAK,OAAO,QAAW;AACvB,iBAAK,KAAK,EAAE;AAAA,UAChB;AAAA,QACJ;AACA,aAAK,KAAK,GAAG;AAAA,MACjB,CAAC;AAAA,IACL,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EACA,cAAc,KAAK;AACf,QAAI,YAAY,IAAI,SAAS;AAC7B,QAAI,IAAI,SAAS;AACb,oBAAc,IAAI,QAAQ,SAAS,MAAM,IAAI,QAAQ,UAAU;AAAA,IACnE;AACA,QAAI,IAAI,QAAQ;AACZ,mBAAa;AAAA,IACjB;AACA,WAAO;AAAA,EACX;AAAA,EACA,aAAa,KAAK;AACd,QAAI,CAAC,KAAK,MAAM;AACZ,aAAO,IAAI,IAAI,SAAO;AAClB,eAAO,IAAI,SAAS,MAAM,YAAY,IAAI,IAAI;AAAA,MAClD,CAAC;AAAA,IACL;AACA,QAAI,QAAQ,IAAI;AAChB,QAAI,iBAAiB,KAAK;AAE1B,UAAM,SAAS,IAAI,IAAI,SAAO;AAC1B,UAAI,IAAI,OAAO;AACX;AACA,0BAAkB,IAAI;AACtB,eAAO,IAAI;AAAA,MACf;AACA,aAAO;AAAA,IACX,CAAC;AAED,UAAM,aAAa,QAAQ,KAAK,MAAM,iBAAiB,KAAK,IAAI;AAChE,WAAO,OAAO,IAAI,CAAC,GAAG,MAAM;AACxB,UAAI,MAAM,QAAW;AACjB,eAAO,KAAK,IAAI,YAAY,UAAU,IAAI,EAAE,CAAC;AAAA,MACjD;AACA,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AACJ;AACA,SAAS,UAAU,KAAKD,KAAI,OAAO;AAC/B,MAAI,IAAI,QAAQ;AACZ,QAAI,aAAa,KAAKA,GAAE,GAAG;AACvB,aAAO;AAAA,IACX;AACA,QAAIA,IAAG,KAAK,EAAE,WAAW,GAAG;AACxB,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAGA,SAAS,UAAU,KAAK;AACpB,QAAM,UAAU,IAAI,WAAW,CAAC;AAChC,QAAM,WAAW,KAAK,QAAQ,SAAS,MAAM,QAAQ,UAAU;AAC/D,MAAI,IAAI,QAAQ;AACZ,WAAO,WAAW;AAAA,EACtB;AACA,SAAO;AACX;AACA,SAAS,iBAAiB;AAEtB,MAAI,OAAO,YAAY,YAAY,QAAQ,UAAU,QAAQ,OAAO,SAAS;AACzE,WAAO,QAAQ,OAAO;AAAA,EAC1B;AACA,SAAO;AACX;AACA,SAAS,WAAW,KAAK,OAAO;AAC5B,QAAM,IAAI,KAAK;AACf,QAAM,WAAW,MAAM,YAAY,GAAG;AACtC,MAAI,WAAW,OAAO;AAClB,WAAO,IAAI,OAAO,QAAQ,QAAQ,IAAI;AAAA,EAC1C;AACA,SAAO;AACX;AACA,SAAS,YAAY,KAAK,OAAO;AAC7B,QAAM,IAAI,KAAK;AACf,QAAM,WAAW,MAAM,YAAY,GAAG;AAEtC,MAAI,YAAY,OAAO;AACnB,WAAO;AAAA,EACX;AACA,SAAO,IAAI,OAAQ,QAAQ,YAAa,CAAC,IAAI;AACjD;AACA,IAAI;AACG,SAAS,MAAM,MAAM,QAAQ;AAChC,UAAQ;AACR,SAAO,IAAI,GAAG;AAAA,IACV,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,UAAU,eAAe;AAAA,IAClF,MAAM,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK;AAAA,EAC3D,CAAC;AACL;;;ACvRA,IAAM,OAAO,IAAI,OAAO,yFACsB,GAAG;AAC1C,SAAS,UAAU,KAAK;AAC3B,SAAO,IAAI,QAAQ,MAAM,EAAE;AAC/B;AACO,SAAS,KAAK,KAAK,OAAO;AAC7B,QAAM,CAAC,OAAO,GAAG,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;AAC/C,QAAM,UAAU,GAAG;AACnB,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,QAAI,MAAM,KAAM,IAAI,UAAW,GAAG;AAC9B,iBAAW;AAAA,IACf;AACA,eAAW,IAAI,OAAO,CAAC;AAAA,EAC3B;AACA,MAAI,SAAS,KAAK;AACd,cAAU,GAAG,QAAQ,UAAU;AAAA,EACnC;AACA,SAAO;AACX;;;ACtBe,SAAR,GAAqB,MAAM;AAChC,SAAO,MAAM,MAAM;AAAA,IACjB,aAAa,CAAC,QAAQ;AACpB,aAAO,CAAC,GAAG,GAAG,EAAE;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;;;ACZA,SAAS,SAAS,eAAe;AACjC,SAAS,aAAa,gBAAgB;AAEvB,SAAR,aAAkB,OAAO,UAAU;AACzC,MAAI,MAAM,QAAQ,KAAK,KAAK;AAC5B,MAAI,KAAK,QAAQ,SAAS,GAAG;AAE7B,MAAI,CAAC,MAAM,YAAY,GAAG;AACzB,UAAM,QAAQ,GAAG;AAAA,EAClB;AAEA,SAAO,MAAM;AACZ,UAAM,SAAS,KAAK,YAAY,GAAG,CAAC;AACpC,QAAI;AAAK,aAAO,QAAQ,KAAK,GAAG;AAChC,UAAM,QAAQ,MAAM,GAAG;AACvB,QAAI,QAAQ;AAAK;AAAA,EAClB;AACD;;;AJZA,SAAS,eAAe;AACxB,SAAS,gBAAAE,qBAAoB;AAC7B,SAAS,qBAAqB;;;AKE9B,SAAS,cAAc;AACvB,SAAS,WAAW,WAAAC,gBAAe;;;ACL5B,SAAS,UAAU,KAAK;AAG3B,QAAM,cAAc,QAAQ,IAAI,YAAY,KAAK,QAAQ,IAAI,YAAY;AACzE,MAAI,CAAC,aAAa;AACd,UAAM,IAAI,YAAY;AAAA,EAC1B;AACA,MAAI,IAAI,QAAQ,GAAG,MAAM,MAAM,IAAI,QAAQ,GAAG,MAAM,IAAI;AACpD,WAAO;AAAA,EACX,OACK;AACD,QAAI,YAAY;AAChB,QAAI,eAAe;AACnB,UAAM,iBAAiB,IAAI,MAAM,KAAK;AACtC,aAAS,IAAI,iBAAiB,eAAe,GAAG,SAAS,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC7E,UAAI,MAAM,IAAI,OAAO,CAAC;AACtB,UAAI,cAAc;AACd,uBAAe;AACf,cAAM,IAAI,YAAY;AAAA,MAC1B;AACA,UAAI,MAAM,MAAM,QAAQ,OAAO,QAAQ,MAAM;AACzC,uBAAe;AAAA,MACnB,WACS,QAAQ,OAAO,QAAQ,KAAK;AACjC,qBAAa;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;AACO,SAAS,WAAW,KAAK,YAAY;AACxC,QAAM,YAAY,IAAI,YAAY;AAClC,eAAa,cAAc;AAC3B,MAAI,eAAe;AACnB,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,UAAM,WAAW,UAAU,OAAO,CAAC;AACnC,UAAM,YAAY,IAAI,OAAO,CAAC;AAC9B,QAAI,aAAa,aAAa,IAAI,GAAG;AACjC,sBAAgB,GAAG,aAAa,UAAU,OAAO,CAAC;AAAA,IACtD,OACK;AACD,sBAAgB;AAAA,IACpB;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,gBAAgB,GAAG;AAC/B,MAAI,MAAM,QAAQ,MAAM;AACpB,WAAO;AAEX,MAAI,OAAO,MAAM;AACb,WAAO;AAEX,MAAI,iBAAiB,KAAK,CAAC;AACvB,WAAO;AAEX,MAAI,SAAS,KAAK,CAAC;AACf,WAAO;AACX,SAAO,4CAA4C,KAAK,CAAC;AAC7D;;;AC1DO,SAAS,kBAAkB,WAAW;AACzC,MAAI,MAAM,QAAQ,SAAS,GAAG;AAC1B,WAAO,UAAU,IAAI,OAAK,OAAO,MAAM,WAAW,IAAI,KAAK,CAAC;AAAA,EAChE;AACA,cAAY,UAAU,KAAK;AAC3B,MAAI,IAAI;AACR,MAAI,QAAQ;AACZ,MAAI,IAAI;AACR,MAAI,UAAU;AACd,QAAM,OAAO,CAAC;AACd,WAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM;AAC1C,YAAQ;AACR,QAAI,UAAU,OAAO,EAAE;AAEvB,QAAI,MAAM,OAAO,CAAC,SAAS;AACvB,UAAI,EAAE,UAAU,MAAM;AAClB;AAAA,MACJ;AACA;AAAA,IACJ;AAGA,QAAI,MAAM,SAAS;AACf,gBAAU;AAAA,IACd,YACU,MAAM,OAAO,MAAM,QAAQ,CAAC,SAAS;AAC3C,gBAAU;AAAA,IACd;AACA,QAAI,CAAC,KAAK;AACN,WAAK,KAAK;AACd,SAAK,MAAM;AAAA,EACf;AACA,SAAO;AACX;;;AClCO,IAAI;AAAA,CACV,SAAUC,0BAAyB;AAChC,EAAAA,yBAAwB,aAAa;AACrC,EAAAA,yBAAwB,YAAY;AACpC,EAAAA,yBAAwB,YAAY;AACpC,EAAAA,yBAAwB,WAAW;AACvC,GAAG,4BAA4B,0BAA0B,CAAC,EAAE;;;ACH5D,IAAIC;AACG,IAAM,cAAN,MAAkB;AAAA,EACrB,YAAY,QAAQ;AAChB,IAAAA,SAAQ;AAAA,EACZ;AAAA,EACA,MAAM,WAAW,SAAS;AACtB,UAAM,OAAO,OAAO,OAAO;AAAA,MACvB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,eAAe;AAAA,MACf,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,MAAM;AAAA,MACN,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,IAAI;AAAA,MACJ,KAAK;AAAA,IACT,GAAG,OAAO;AAGV,UAAM,OAAO,kBAAkB,SAAS;AAGxC,UAAM,gBAAgB,OAAO,cAAc;AAE3C,UAAM,UAAU,eAAe,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,KAAK,KAAK,CAAC;AAC7E,UAAM,gBAAgB,OAAO,OAAO;AAAA,MAChC,oBAAoB;AAAA,MACpB,wBAAwB;AAAA,MACxB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,6BAA6B;AAAA,MAC7B,4BAA4B;AAAA,MAC5B,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,MACjB,4BAA4B;AAAA,MAC5B,cAAc;AAAA,MACd,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,IAC/B,GAAG,KAAK,aAAa;AACrB,UAAMC,YAAW,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,KAAK,OAAO;AAChE,UAAM,gBAAgB,KAAK,iBAAiB,CAAC;AAC7C,UAAM,YAAY,KAAK;AACvB,UAAM,iBAAiB,cAAc;AACrC,UAAM,eAAe,iBAAiB,OAAO;AAC7C,UAAM,aAAa,uBAAO,OAAO,IAAI;AACrC,UAAM,YAAY,uBAAO,OAAO,IAAI;AAEpC,UAAM,KAAK,KAAK,MAAMD,OAAM;AAC5B,UAAM,QAAQ;AAAA,MACV,SAAS,uBAAO,OAAO,IAAI;AAAA,MAC3B,QAAQ,uBAAO,OAAO,IAAI;AAAA,MAC1B,OAAO,uBAAO,OAAO,IAAI;AAAA,MACzB,SAAS,uBAAO,OAAO,IAAI;AAAA,MAC3B,SAAS,uBAAO,OAAO,IAAI;AAAA,MAC3B,QAAQ,uBAAO,OAAO,IAAI;AAAA,MAC1B,WAAW,uBAAO,OAAO,IAAI;AAAA,MAC7B,SAAS,uBAAO,OAAO,IAAI;AAAA,MAC3B,OAAO,uBAAO,OAAO,IAAI;AAAA,MACzB,WAAW,uBAAO,OAAO,IAAI;AAAA,MAC7B,MAAM,CAAC;AAAA,IACX;AACA,UAAM,WAAW;AACjB,UAAM,iBAAiB,IAAI,OAAO,QAAQ,cAAc,qBAAqB,MAAM;AACnF,KAAC,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,QAAQ,SAAU,KAAK;AAC/D,YAAM,MAAM,OAAO,QAAQ,WAAW,IAAI,MAAM;AAEhD,YAAM,aAAa,OAAO,KAAK,GAAG,EAAE,IAAI,SAAUE,MAAK;AACnD,cAAM,gBAAgB;AAAA,UAClB,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,QAAQ;AAAA,QACZ;AACA,eAAO,cAAcA;AAAA,MACzB,CAAC,EAAE,OAAO,OAAO,EAAE,IAAI;AAEvB,UAAI,YAAY;AACZ,cAAM,YAAY,OAAO;AAAA,MAC7B;AACA,YAAM,OAAO,OAAO;AACpB,YAAM,KAAK,KAAK,GAAG;AAAA,IACvB,CAAC;AACD,KAAC,EAAE,OAAO,KAAK,WAAW,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,QAAQ,SAAU,KAAK;AACjE,YAAM,MAAM,OAAO;AACnB,YAAM,KAAK,KAAK,GAAG;AAAA,IACvB,CAAC;AACD,KAAC,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,QAAQ,SAAU,KAAK;AAChE,YAAM,QAAQ,OAAO;AACrB,YAAM,KAAK,KAAK,GAAG;AAAA,IACvB,CAAC;AACD,KAAC,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,QAAQ,SAAU,KAAK;AAChE,YAAM,QAAQ,OAAO;AACrB,YAAM,KAAK,KAAK,GAAG;AAAA,IACvB,CAAC;AACD,KAAC,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,QAAQ,SAAU,KAAK;AAC/D,YAAM,OAAO,OAAO;AACpB,YAAM,KAAK,KAAK,GAAG;AAAA,IACvB,CAAC;AACD,KAAC,EAAE,OAAO,KAAK,aAAa,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,QAAQ,SAAU,KAAK;AACnE,YAAM,UAAU,OAAO;AACvB,YAAM,KAAK,KAAK,GAAG;AAAA,IACvB,CAAC;AACD,QAAI,OAAO,KAAK,SAAS,UAAU;AAC/B,aAAO,QAAQ,KAAK,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAChD,YAAI,OAAO,UAAU,UAAU;AAC3B,gBAAM,MAAM,OAAO;AACnB,gBAAM,KAAK,KAAK,GAAG;AAAA,QACvB;AAAA,MACJ,CAAC;AAAA,IACL;AACA,QAAI,OAAO,KAAK,WAAW,UAAU;AACjC,aAAO,QAAQ,KAAK,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAClD,YAAI,OAAO,UAAU,YAAY;AAC7B,gBAAM,UAAU,OAAO;AACvB,gBAAM,KAAK,KAAK,GAAG;AAAA,QACvB;AAAA,MACJ,CAAC;AAAA,IACL;AACA,QAAI,OAAO,KAAK,WAAW,aAAa;AACpC,UAAI,MAAM,QAAQ,KAAK,MAAM,KAAK,OAAO,KAAK,WAAW,UAAU;AAC/D;AACA,SAAC,EAAE,OAAO,KAAK,MAAM,EAAE,OAAO,OAAO,EAAE,QAAQ,SAAU,KAAK;AAC1D,gBAAM,QAAQ,OAAO;AAAA,QACzB,CAAC;AAAA,MACL,WACS,OAAO,KAAK,WAAW,UAAU;AACtC,eAAO,QAAQ,KAAK,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAClD,cAAI,OAAO,UAAU,aAAa,OAAO,UAAU,YAAY;AAC3D,kBAAM,QAAQ,OAAO;AAAA,UACzB;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAGA,kBAAc,KAAK,KAAK,SAAS,KAAK,SAAS,MAAM,MAAM;AAE3D,WAAO,KAAKD,SAAQ,EAAE,QAAQ,SAAU,KAAK;AACzC,OAAC,MAAM,QAAQ,QAAQ,CAAC,GAAG,QAAQ,SAAUE,QAAO;AAChD,QAAAF,UAASE,UAASF,UAAS;AAAA,MAC/B,CAAC;AAAA,IACL,CAAC;AACD,QAAI,QAAQ;AACZ,uBAAmB;AACnB,QAAI,WAAW,CAAC;AAChB,UAAM,OAAO,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAIzD,UAAM,aAAa,CAAC;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,YAAM,MAAM,KAAK;AACjB,YAAM,eAAe,IAAI,QAAQ,UAAU,KAAK;AAChD,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,UAAI,QAAQ,QAAQ,KAAK,KAAK,GAAG,KAAK,qBAAqB,GAAG,GAAG;AAC7D,uBAAe,GAAG;AAAA,MAEtB,WACS,aAAa,MAAM,YAAY,GAAG;AAEvC,uBAAe,GAAG;AAClB;AAAA,MAEJ,WACS,IAAI,MAAM,QAAQ,KAAM,CAAC,cAAc,0BAA0B,IAAI,MAAM,OAAO,GAAI;AAI3F,YAAI,IAAI,MAAM,wBAAwB;AAEtC,YAAI,MAAM,QAAQ,MAAM,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG;AACjD,cAAI,gBAAgB,EAAE,IAAI,MAAM,MAAM,GAAG;AACrC,gBAAI,SAAS,GAAG,EAAE,IAAI,MAAM,EAAE,EAAE;AAAA,UACpC,WACS,gBAAgB,EAAE,IAAI,MAAM,KAAK,MAAM,OAAO;AAEnD,gBAAI,SAAS,GAAG,EAAE,IAAI,MAAM,EAAE,EAAE;AAAA,UACpC,OACK;AACD,mBAAO,EAAE,IAAI,EAAE,IAAI,IAAI;AAAA,UAC3B;AAAA,QACJ;AAAA,MACJ,WACS,IAAI,MAAM,cAAc,KAAK,cAAc,qBAAqB;AACrE,YAAI,IAAI,MAAM,cAAc;AAC5B,YAAI,MAAM,QAAQ,MAAM,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG;AACjD,gBAAM,EAAE;AACR,iBAAO,KAAK,gBAAgB,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,IAAI,KAAK;AAAA,QACpE;AAAA,MAEJ,WACS,IAAI,MAAM,OAAO,KAAM,CAAC,cAAc,0BAA0B,IAAI,MAAM,SAAS,GAAI;AAC5F,YAAI,IAAI,MAAM,UAAU;AACxB,YAAI,MAAM,QAAQ,MAAM,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG;AACjD,gBAAM,EAAE;AACR,cAAI,gBAAgB,KAAK,MAAM,MAAM,GAAG;AAEpC,gBAAI,SAAS,GAAG,KAAK,IAAI;AAAA,UAC7B,WACS,gBAAgB,KAAK,MAAM,KAAK,MAAM,OAAO;AAGlD,gBAAI,SAAS,GAAG,KAAK,IAAI;AAAA,UAC7B,OACK;AACD,mBAAO,KAAK,IAAI;AAChB,gBAAI,SAAS,WAAc,CAAC,KAAK,MAAM,IAAI,KACvC,KAAK,MAAM,QAAQ,MACnB,CAAC,gBAAgB,KAAK,MAAM,KAAK,KACjC,CAAC,gBAAgB,KAAK,MAAM,MAAM,GAAG;AACrC,qBAAO,KAAK,IAAI;AAChB;AAAA,YACJ,WACS,iBAAiB,KAAK,IAAI,GAAG;AAClC,qBAAO,KAAK,IAAI;AAChB;AAAA,YACJ,OACK;AACD,qBAAO,KAAK,aAAa,GAAG,CAAC;AAAA,YACjC;AAAA,UACJ;AAAA,QACJ;AAAA,MAEJ,WACS,IAAI,MAAM,UAAU,GAAG;AAC5B,YAAI,IAAI,MAAM,sBAAsB;AACpC,YAAI,MAAM,QAAQ,MAAM,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG;AACjD,iBAAO,EAAE,IAAI,EAAE,EAAE;AAAA,QACrB;AAAA,MAEJ,WACS,IAAI,MAAM,SAAS,KAAK,CAAC,IAAI,MAAM,QAAQ,GAAG;AACnD,eAAO,KAAK,IAAI;AAChB,YAAI,IAAI,MAAM,WAAW;AACzB,YAAI,MAAM,QAAQ,MAAM,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG;AACjD,gBAAM,EAAE;AACR,cAAI,SAAS,UAAa,CAAC,KAAK,MAAM,IAAI,KACtC,CAAC,gBAAgB,KAAK,MAAM,KAAK,KACjC,CAAC,gBAAgB,KAAK,MAAM,MAAM,GAAG;AACrC,mBAAO,KAAK,IAAI;AAChB;AAAA,UACJ,OACK;AACD,mBAAO,KAAK,aAAa,GAAG,CAAC;AAAA,UACjC;AAAA,QACJ;AAAA,MACJ,WACS,IAAI,MAAM,SAAS,KAAK,CAAC,IAAI,MAAM,QAAQ,GAAG;AACnD,kBAAU,IAAI,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE;AACnC,iBAAS;AACT,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,iBAAO,IAAI,MAAM,IAAI,CAAC;AACtB,cAAI,QAAQ,IAAI,MAAM,QAAQ,IAAI,OAAO,KAAK;AAC1C,oBAAQ,IAAI,MAAM,IAAI,CAAC;AACvB,kBAAM,QAAQ;AACd,gBAAI,gBAAgB,KAAK,MAAM,MAAM,GAAG;AAEpC,kBAAI,SAAS,GAAG,KAAK,MAAM,KAAK;AAAA,YACpC,WACS,gBAAgB,KAAK,MAAM,KAAK,MAAM,OAAO;AAElD,kBAAI,SAAS,GAAG,KAAK,MAAM,KAAK;AAAA,YACpC,OACK;AACD,qBAAO,KAAK,KAAK;AAAA,YACrB;AACA,qBAAS;AACT;AAAA,UACJ;AACA,cAAI,SAAS,KAAK;AACd,mBAAO,QAAQ,IAAI,IAAI;AACvB;AAAA,UACJ;AAEA,cAAI,WAAW,KAAK,QAAQ,EAAE,KAC1B,2BAA2B,KAAK,IAAI,KACpC,gBAAgB,MAAM,MAAM,KAAK,MAAM,OAAO;AAC9C,mBAAO,QAAQ,IAAI,IAAI;AACvB,qBAAS;AACT;AAAA,UACJ;AACA,cAAI,QAAQ,IAAI,MAAM,QAAQ,IAAI,GAAG,MAAM,IAAI,GAAG;AAC9C,mBAAO,QAAQ,IAAI,IAAI;AACvB,qBAAS;AACT;AAAA,UACJ,OACK;AACD,mBAAO,QAAQ,IAAI,aAAa,QAAQ,EAAE,CAAC;AAAA,UAC/C;AAAA,QACJ;AACA,cAAM,IAAI,MAAM,EAAE,EAAE;AACpB,YAAI,CAAC,UAAU,QAAQ,KAAK;AACxB,cAAI,gBAAgB,KAAK,MAAM,MAAM,GAAG;AAEpC,gBAAI,SAAS,GAAG,KAAK,IAAI;AAAA,UAC7B,WACS,gBAAgB,KAAK,MAAM,KAAK,MAAM,OAAO;AAGlD,gBAAI,SAAS,GAAG,KAAK,IAAI;AAAA,UAC7B,OACK;AACD,mBAAO,KAAK,IAAI;AAChB,gBAAI,SAAS,WAAc,CAAC,cAAc,KAAK,IAAI,KAC/C,KAAK,MAAM,QAAQ,MACnB,CAAC,gBAAgB,KAAK,MAAM,KAAK,KACjC,CAAC,gBAAgB,KAAK,MAAM,MAAM,GAAG;AACrC,qBAAO,KAAK,IAAI;AAChB;AAAA,YACJ,WACS,iBAAiB,KAAK,IAAI,GAAG;AAClC,qBAAO,KAAK,IAAI;AAChB;AAAA,YACJ,OACK;AACD,qBAAO,KAAK,aAAa,GAAG,CAAC;AAAA,YACjC;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,WACS,IAAI,MAAM,UAAU,KACzB,IAAI,MAAM,QAAQ,KAClB,gBAAgB,IAAI,MAAM,CAAC,GAAG,MAAM,KAAK,GAAG;AAE5C,cAAM,IAAI,MAAM,CAAC;AACjB,eAAO,KAAK,aAAa,GAAG,CAAC;AAAA,MACjC,WACS,QAAQ,MAAM;AACnB,mBAAW,KAAK,MAAM,IAAI,CAAC;AAC3B;AAAA,MACJ,WACS,cAAc,uBAAuB;AAC1C,mBAAW,KAAK,MAAM,CAAC;AACvB;AAAA,MACJ,OACK;AACD,uBAAe,GAAG;AAAA,MACtB;AAAA,IACJ;AAOA,iBAAa,MAAM,IAAI;AACvB,iBAAa,MAAM,KAAK;AACxB,cAAU,IAAI;AACd,qBAAiB;AACjB,4BAAwB,MAAM,MAAM,SAASA,WAAU,IAAI;AAC3D,mBAAe,IAAI;AACnB,QAAI,cAAc;AACd,yBAAmB,IAAI;AAE3B,WAAO,KAAK,MAAM,MAAM,EAAE,QAAQ,SAAU,KAAK;AAC7C,UAAI,CAAC,OAAO,MAAM,IAAI,MAAM,GAAG,CAAC;AAC5B,eAAO,KAAK,CAAC;AAAA,IACrB,CAAC;AAED,QAAI,kBAAkB,SAAS;AAC3B,WAAK,gBAAgB,CAAC;AAC1B,aAAS,QAAQ,SAAU,KAAK;AAC5B,WAAK,cAAc,KAAK,GAAG;AAAA,IAC/B,CAAC;AACD,QAAI,cAAc,2BAA2B,cAAc,iBAAiB;AACxE,aAAO,KAAK,IAAI,EAAE,OAAO,SAAO,QAAQ,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,SAAO;AAC9E,eAAO,KAAK;AAAA,MAChB,CAAC;AAAA,IACL;AACA,QAAI,cAAc,kBAAkB;AAChC;AACA,OAAC,EAAE,OAAO,GAAG,OAAO,KAAK,OAAO,EAAE,IAAI,OAAK,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAAE,WAAS;AACrE,YAAI,cAAc,2BAA2BA,OAAM,SAAS,GAAG,GAAG;AAC9D,iBAAO,KAAKA,OAAM,MAAM,GAAG,EAAE,IAAI,UAAQ,UAAU,IAAI,CAAC,EAAE,KAAK,GAAG;AAAA,QACtE;AACA,eAAO,KAAKA;AAAA,MAChB,CAAC;AAAA,IACL;AAEA,aAAS,eAAe,KAAK;AACzB,YAAM,qBAAqB,kBAAkB,KAAK,GAAG;AACrD,UAAI,OAAO,uBAAuB,YAAY,OAAO,uBAAuB,UAAU;AAClF,aAAK,EAAE,KAAK,kBAAkB;AAAA,MAClC;AAAA,IACJ;AAGA,aAAS,SAAS,GAAG,KAAKC,OAAM,mBAAmB;AAC/C,UAAI;AACJ,UAAI,QAAQ,gBAAgB,KAAK,MAAM,KAAK;AAG5C,cAAQ,OAAO,UAAU,YAAY,MAAM,KAAK,IAAI,IAAI;AACxD,UAAI,UAAU,GAAG;AACb,YAAI,CAAC,YAAY,iBAAiB,GAAG;AACjC,kBAAQ,MAAM,GAAG,+BAA+B,GAAG,CAAC;AAAA,QACxD;AACA,eAAO,KAAK,aAAa,GAAG,CAAC;AAC7B,eAAO;AAAA,MACX;AACA,UAAI,YAAY,YAAY,iBAAiB,IAAI,IAAI;AACrD,UAAI,cAAc,uBAAuB;AAErC,YAAIA,MAAK,UAAU,IAAI,KAAK,YAAY,OAAO;AAC3C,kBAAQ,MAAM,GAAG,sCAAsC,GAAG,CAAC;AAAA,QAC/D;AACA,oBAAY;AAAA,MAChB,OACK;AAGD,aAAK,KAAK,IAAI,GAAG,KAAKA,MAAK,QAAQ,MAAM;AACrC,cAAI,CAACA,MAAK,IAAI,MAAM,UAAU,KAAKA,MAAK,IAAI,MAAM,QAAQ,KAAK,qBAAqBA,MAAK,GAAG;AACxF;AAAA;AAEA;AAAA,QACR;AACA,YAAI,YAAY;AACZ,kBAAQ,MAAM,GAAG,sCAAsC,GAAG,CAAC;AAAA,MACnE;AACA,UAAI,WAAW,KAAK,IAAI,WAAW,KAAK;AACxC,UAAI,CAAC,YAAY,iBAAiB,KAAK,WAAW,GAAG;AACjD,eAAO,KAAK,iBAAiB;AAC7B;AAAA,MACJ;AACA,WAAK,KAAK,IAAI,GAAG,KAAM,WAAW,IAAI,GAAI,MAAM;AAC5C,eAAO,KAAKA,MAAK,GAAG;AAAA,MACxB;AACA,aAAQ,IAAI;AAAA,IAChB;AAIA,aAAS,SAAS,GAAG,KAAKA,OAAM,mBAAmB;AAC/C,UAAI,YAAY,CAAC;AACjB,UAAI,OAAO,qBAAqBA,MAAK,IAAI;AAEzC,YAAM,aAAa,gBAAgB,KAAK,MAAM,KAAK;AACnD,UAAI,gBAAgB,KAAK,MAAM,KAAK,KAAK,CAAE,iBAAiB,KAAK,IAAI,GAAI;AACrE,kBAAU,KAAK,IAAI;AAAA,MACvB,WACS,YAAY,IAAI,KACpB,YAAY,iBAAiB,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,KAAK,CAAC,qBAAqB,IAAI,GAAI;AAG5G,YAAIH,UAAS,SAAS,QAAW;AAC7B,gBAAM,SAASA,UAAS;AACxB,sBAAY,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;AAAA,QACxD;AAAA,MACJ,OACK;AAED,YAAI,CAAC,YAAY,iBAAiB,GAAG;AACjC,oBAAU,KAAK,aAAa,KAAK,mBAAmB,IAAI,CAAC;AAAA,QAC7D;AACA,iBAAS,KAAK,IAAI,GAAG,KAAKG,MAAK,QAAQ,MAAM;AACzC,cAAK,CAAC,cAAc,oBAAoB,UAAU,SAAS,KACtD,cAAc,OAAO,eAAe,YAAY,UAAU,UAAU;AACrE;AACJ,iBAAOA,MAAK;AACZ,cAAI,KAAK,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,KAAK,CAAC,qBAAqB,IAAI;AACrE;AACJ,cAAI;AACJ,oBAAU,KAAK,aAAa,KAAK,MAAM,aAAa,CAAC;AAAA,QACzD;AAAA,MACJ;AAIA,UAAI,OAAO,eAAe,aAAc,cAAc,UAAU,SAAS,cACpE,MAAM,UAAU,KAAK,UAAU,WAAW,IAAK;AAChD,gBAAQ,MAAM,GAAG,sCAAsC,GAAG,CAAC;AAAA,MAC/D;AACA,aAAO,KAAK,SAAS;AACrB,aAAO;AAAA,IACX;AACA,aAAS,OAAO,KAAK,KAAK,oBAAoB,eAAe;AACzD,UAAI,IAAI,KAAK,GAAG,KAAK,cAAc,yBAAyB;AACxD,cAAMD,SAAQ,IAAI,MAAM,GAAG,EAAE,IAAI,SAAU,MAAM;AAC7C,iBAAO,UAAU,IAAI;AAAA,QACzB,CAAC,EAAE,KAAK,GAAG;AACX,oBAAY,KAAKA,MAAK;AAAA,MAC1B;AACA,YAAM,QAAQ,aAAa,KAAK,KAAK,iBAAiB;AACtD,YAAM,WAAW,IAAI,MAAM,GAAG;AAC9B,aAAO,MAAM,UAAU,KAAK;AAE5B,UAAI,MAAM,QAAQ,MAAM;AACpB,cAAM,QAAQ,KAAK,QAAQ,SAAU,GAAG;AACpC,gBAAM,gBAAgB,EAAE,MAAM,GAAG;AACjC,iBAAO,MAAM,eAAe,KAAK;AAAA,QACrC,CAAC;AAAA,MACL;AAEA,UAAI,SAAS,SAAS,KAAK,cAAc,iBAAiB;AACtD;AACA,SAAC,MAAM,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,SAAU,GAAG;AACpD,cAAI,gBAAgB,EAAE,MAAM,GAAG;AAE/B,gBAAM,IAAI,CAAC,EAAE,OAAO,QAAQ;AAC5B,YAAE,MAAM;AACR,0BAAgB,cAAc,OAAO,CAAC;AAGtC,cAAI,EAAE,MAAM,QAAQ,QAAQ,CAAC,GAAG,SAAS,cAAc,KAAK,GAAG,CAAC,GAAG;AAC/D,mBAAO,MAAM,eAAe,KAAK;AAAA,UACrC;AAAA,QACJ,CAAC;AAAA,MACL;AAEA,UAAI,gBAAgB,KAAK,MAAM,SAAS,KAAK,CAAC,gBAAgB,KAAK,MAAM,MAAM,GAAG;AAC9E,cAAM,OAAO,CAAC,GAAG,EAAE,OAAO,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAClD,aAAK,QAAQ,SAAUD,MAAK;AACxB,iBAAO,eAAe,YAAYA,MAAK;AAAA,YACnC,YAAY;AAAA,YACZ,MAAM;AACF,qBAAO;AAAA,YACX;AAAA,YACA,IAAIG,QAAO;AACP,oBAAM,OAAOA,WAAU,WAAWL,OAAM,UAAUK,MAAK,IAAIA;AAAA,YAC/D;AAAA,UACJ,CAAC;AAAA,QACL,CAAC;AAAA,MACL;AAAA,IACJ;AACA,aAAS,YAAY,KAAKF,QAAO;AAC7B,UAAI,EAAE,MAAM,QAAQ,QAAQ,MAAM,QAAQ,KAAK,SAAS;AACpD,cAAM,QAAQ,OAAO,CAACA,MAAK;AAC3B,mBAAWA,UAAS;AAAA,MACxB;AACA,UAAI,EAAE,MAAM,QAAQA,WAAU,MAAM,QAAQA,QAAO,SAAS;AACxD,oBAAYA,QAAO,GAAG;AAAA,MAC1B;AAAA,IACJ;AACA,aAAS,aAAa,KAAK,KAAK,mBAAmB;AAE/C,UAAI,mBAAmB;AACnB,cAAM,YAAY,GAAG;AAAA,MACzB;AAEA,UAAI,gBAAgB,KAAK,MAAM,KAAK,KAAK,gBAAgB,KAAK,MAAM,MAAM,GAAG;AACzE,YAAI,OAAO,QAAQ;AACf,gBAAM,QAAQ;AAAA,MACtB;AACA,UAAI,QAAQ,MAAM,QAAQ,GAAG,IACvB,IAAI,IAAI,SAAU,GAAG;AAAE,eAAO,kBAAkB,KAAK,CAAC;AAAA,MAAG,CAAC,IAC1D,kBAAkB,KAAK,GAAG;AAEhC,UAAI,gBAAgB,KAAK,MAAM,MAAM,MAAM,YAAY,KAAK,KAAK,OAAO,UAAU,YAAY;AAC1F,gBAAQ,UAAU;AAAA,MACtB;AAEA,UAAI,gBAAgB,KAAK,MAAM,SAAS,KAAK,gBAAgB,KAAK,MAAM,MAAM,GAAG;AAC7E,YAAI,MAAM,QAAQ,GAAG;AACjB,kBAAQ,IAAI,IAAI,CAACG,SAAQ;AAAE,mBAAON,OAAM,UAAUM,IAAG;AAAA,UAAG,CAAC;AAAA;AAEzD,kBAAQN,OAAM,UAAU,GAAG;AAAA,MACnC;AACA,aAAO;AAAA,IACX;AACA,aAAS,kBAAkB,KAAK,OAAO;AACnC,UAAI,CAAC,cAAc,+BAA+B,QAAQ;AACtD,eAAO;AACX,UAAI,CAAC,gBAAgB,KAAK,MAAM,OAAO,KAAK,CAAC,gBAAgB,KAAK,MAAM,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK,GAAG;AACrG,cAAM,qBAAqB,gBAAgB,KAAK,KAAK,cAAc,oBAAqB,OAAO,cAAc,KAAK,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC;AAC/I,YAAI,sBAAuB,CAAC,YAAY,KAAK,KAAK,gBAAgB,KAAK,MAAM,OAAO,GAAI;AACpF,kBAAQ,OAAO,KAAK;AAAA,QACxB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAGA,aAAS,UAAUO,OAAM;AACrB,YAAM,eAAe,uBAAO,OAAO,IAAI;AAGvC,8BAAwB,cAAc,MAAM,SAASN,SAAQ;AAC7D,aAAO,KAAK,MAAM,OAAO,EAAE,QAAQ,SAAU,WAAW;AACpD,cAAM,aAAaM,MAAK,cAAc,aAAa;AACnD,YAAI,YAAY;AACZ,cAAI;AACA,gBAAI,SAAS;AACb,kBAAM,qBAAqBP,OAAM,QAAQA,OAAM,IAAI,GAAG,UAAU;AAChE,kBAAM,gBAAgB,MAAM,QAAQ;AACpC,gBAAI,OAAO,kBAAkB,YAAY;AACrC,kBAAI;AACA,yBAAS,cAAc,kBAAkB;AAAA,cAC7C,SACO,GAAP;AACI,yBAAS;AAAA,cACb;AACA,kBAAI,kBAAkB,OAAO;AACzB,wBAAQ;AACR;AAAA,cACJ;AAAA,YACJ,OACK;AACD,uBAASA,OAAM,QAAQ,kBAAkB;AAAA,YAC7C;AACA,4BAAgB,MAAM;AAAA,UAC1B,SACO,IAAP;AAGI,gBAAI,GAAG,SAAS;AACZ,sBAAQ;AAAA,qBACHO,MAAK;AACV,sBAAQ,MAAM,GAAG,gCAAgC,UAAU,CAAC;AAAA,UACpE;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AAGA,aAAS,gBAAgB,QAAQ,MAAM;AACnC,aAAO,KAAK,MAAM,EAAE,QAAQ,SAAU,KAAK;AACvC,cAAM,QAAQ,OAAO;AACrB,cAAM,UAAU,OAAO,OAAO,MAAM,MAAM;AAI1C,YAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,KAAK,cAAc,iBAAiB;AAEvG,0BAAgB,OAAO,OAAO;AAAA,QAClC,OACK;AAGD,cAAI,CAAC,OAAO,MAAM,QAAQ,MAAM,GAAG,CAAC,KAAM,gBAAgB,SAAS,MAAM,MAAM,KAAK,cAAc,mBAAoB;AAClH,mBAAO,SAAS,KAAK;AAAA,UACzB;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,aAAS,mBAAmB;AACxB,UAAI,OAAO,kBAAkB,aAAa;AACtC,sBAAc,QAAQ,SAAU,cAAc;AAC1C,0BAAgB,YAAY;AAAA,QAChC,CAAC;AAAA,MACL;AAAA,IACJ;AACA,aAAS,aAAaA,OAAM,YAAY;AACpC,UAAI,OAAO,cAAc;AACrB;AACJ,YAAM,SAAS,OAAO,cAAc,WAAW,YAAY;AAC3D,YAAMC,OAAMR,OAAM,IAAI;AACtB,aAAO,KAAKQ,IAAG,EAAE,QAAQ,SAAU,QAAQ;AACvC,YAAI,WAAW,MAAM,OAAO,YAAY,QAAQ,CAAC,MAAM,GAAG;AAEtD,gBAAM,OAAO,OAAO,MAAM,IAAI,EAAE,IAAI,SAAU,KAAK,GAAG;AAClD,gBAAI,MAAM,GAAG;AACT,oBAAM,IAAI,UAAU,OAAO,MAAM;AAAA,YACrC;AACA,mBAAO,UAAU,GAAG;AAAA,UACxB,CAAC;AACD,eAAM,cAAc,MAAM,QAAQ,KAAK,KAAK,GAAG,MAAO,CAAC,eAAe,CAAC,OAAOD,OAAM,IAAI,GAAG;AACvF,mBAAO,KAAK,KAAK,GAAG,GAAGC,KAAI,OAAO;AAAA,UACtC;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AACA,aAAS,eAAeD,OAAM;AAC1B,UAAI;AACJ,YAAM,UAAU,oBAAI,IAAI;AACxB,aAAO,KAAKA,KAAI,EAAE,QAAQ,SAAU,KAAK;AACrC,YAAI,CAAC,QAAQ,IAAI,GAAG,GAAG;AACnB,mBAAS,gBAAgB,KAAK,MAAM,SAAS;AAC7C,cAAI,OAAO,WAAW,YAAY;AAC9B,gBAAI;AACA,oBAAM,QAAQ,kBAAkB,KAAK,OAAOA,MAAK,IAAI,CAAC;AACtD,cAAC,CAAC,EAAE,OAAO,MAAM,QAAQ,QAAQ,CAAC,GAAG,GAAG,EAAG,QAAQ,SAAO;AACtD,wBAAQ,IAAI,GAAG;AACf,gBAAAA,MAAK,OAAO;AAAA,cAChB,CAAC;AAAA,YACL,SACO,KAAP;AACI,sBAAQ;AAAA,YACZ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AACA,aAAS,mBAAmBA,OAAM;AAC9B,YAAM,KAAK,QAAQ,CAAC,QAAQ;AAExB,YAAI,CAAC,IAAI,QAAQ,GAAG;AAChB;AACJ,YAAI,OAAOA,MAAK,SAAS;AACrB,UAAAA,MAAK,OAAO;AAAA,MACpB,CAAC;AACD,aAAOA;AAAA,IACX;AACA,aAAS,wBAAwB,KAAKE,UAASR,WAAU,SAAS,OAAO;AACrE,aAAO,KAAKA,SAAQ,EAAE,QAAQ,SAAU,KAAK;AACzC,YAAI,CAAC,OAAO,KAAK,IAAI,MAAM,GAAG,CAAC,GAAG;AAC9B,iBAAO,KAAK,IAAI,MAAM,GAAG,GAAGA,UAAS,IAAI;AACzC,cAAI;AACA,sBAAU,OAAO;AACrB,WAACQ,SAAQ,QAAQ,CAAC,GAAG,QAAQ,SAAU,GAAG;AACtC,gBAAI,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC;AACxB;AACJ,mBAAO,KAAK,EAAE,MAAM,GAAG,GAAGR,UAAS,IAAI;AAAA,UAC3C,CAAC;AAAA,QACL;AAAA,MACJ,CAAC;AAAA,IACL;AACA,aAAS,OAAO,KAAK,MAAM;AACvB,UAAI,IAAI;AACR,UAAI,CAAC,cAAc;AACf,eAAO,CAAC,KAAK,KAAK,GAAG,CAAC;AAC1B,WAAK,MAAM,GAAG,EAAE,EAAE,QAAQ,SAAUC,MAAK;AACrC,YAAK,EAAEA,SAAQ,CAAC;AAAA,MACpB,CAAC;AACD,YAAM,MAAM,KAAK,KAAK,SAAS;AAC/B,UAAI,OAAO,MAAM;AACb,eAAO;AAAA;AAEP,eAAO,OAAO;AAAA,IACtB;AACA,aAAS,OAAO,KAAK,MAAM,OAAO;AAC9B,UAAI,IAAI;AACR,UAAI,CAAC,cAAc;AACf,eAAO,CAAC,KAAK,KAAK,GAAG,CAAC;AAC1B,WAAK,MAAM,GAAG,EAAE,EAAE,QAAQ,SAAUA,MAAK;AAGrC,QAAAA,OAAM,YAAYA,IAAG;AACrB,YAAI,OAAO,MAAM,YAAY,EAAEA,UAAS,QAAW;AAC/C,YAAEA,QAAO,CAAC;AAAA,QACd;AACA,YAAI,OAAO,EAAEA,UAAS,YAAY,MAAM,QAAQ,EAAEA,KAAI,GAAG;AAErD,cAAI,MAAM,QAAQ,EAAEA,KAAI,GAAG;AACvB,cAAEA,MAAK,KAAK,CAAC,CAAC;AAAA,UAClB,OACK;AACD,cAAEA,QAAO,CAAC,EAAEA,OAAM,CAAC,CAAC;AAAA,UACxB;AAEA,cAAI,EAAEA,MAAK,EAAEA,MAAK,SAAS;AAAA,QAC/B,OACK;AACD,cAAI,EAAEA;AAAA,QACV;AAAA,MACJ,CAAC;AAGD,YAAM,MAAM,YAAY,KAAK,KAAK,SAAS,EAAE;AAC7C,YAAM,cAAc,gBAAgB,KAAK,KAAK,GAAG,GAAG,MAAM,MAAM;AAChE,YAAM,eAAe,MAAM,QAAQ,KAAK;AACxC,UAAI,YAAY,cAAc;AAE9B,UAAI,CAAC,aAAa,gBAAgB,KAAK,MAAM,KAAK,GAAG;AACjD,oBAAY;AACZ,YAAK,CAAC,YAAY,EAAE,IAAI,KAAK,MAAM,MAAM,SAAS,KAAO,MAAM,QAAQ,EAAE,IAAI,KAAK,EAAE,KAAK,WAAW,MAAM,MAAM,MAAO;AACnH,YAAE,OAAO;AAAA,QACb;AAAA,MACJ;AACA,UAAI,UAAU,UAAU,GAAG;AACvB,UAAE,OAAO,UAAU,EAAE,IAAI;AAAA,MAC7B,WACS,MAAM,QAAQ,EAAE,IAAI,GAAG;AAC5B,YAAI,aAAa,eAAe,cAAc;AAC1C,YAAE,OAAO,cAAc,8BAA8B,EAAE,KAAK,OAAO,KAAK,KAAK,MAAM,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAAA,QAC7I,WACS,CAAC,aAAa,QAAQ,WAAW,MAAM,QAAQ,YAAY,GAAG;AACnE,YAAE,OAAO;AAAA,QACb,OACK;AACD,YAAE,OAAO,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC;AAAA,QAClC;AAAA,MACJ,WACS,EAAE,SAAS,UAAa,aAAa;AAC1C,UAAE,OAAO,eAAe,QAAQ,CAAC,KAAK;AAAA,MAC1C,WACS,aAAa,EAAE,EAAE,SAAS,UAC/B,gBAAgB,KAAK,MAAM,MAAM,KACjC,gBAAgB,KAAK,MAAM,KAAK,IAAI;AACpC,UAAE,OAAO,CAAC,EAAE,MAAM,KAAK;AAAA,MAC3B,OACK;AACD,UAAE,OAAO;AAAA,MACb;AAAA,IACJ;AAEA,aAAS,iBAAiBE,OAAM;AAC5B,MAAAA,MAAK,QAAQ,SAAU,KAAK;AACxB,eAAO,KAAK,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,KAAK;AAI1C,cAAI,MAAM,QAAQ;AACd;AACJ,gBAAM,QAAQ,OAAO,CAAC,EAAE,OAAO,QAAQ,QAAQ,CAAC,CAAC;AAEjD,gBAAM,QAAQ,KAAK,OAAO,GAAG,EAAE,QAAQ,SAAU,GAAG;AAChD,gBAAI,IAAI,KAAK,CAAC,KAAK,cAAc,yBAAyB;AACtD,oBAAM,IAAI,UAAU,CAAC;AACrB,kBAAI,MAAM,OAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC,MAAM,IAAI;AACnD,sBAAM,QAAQ,KAAK,KAAK,CAAC;AACzB,2BAAW,KAAK;AAAA,cACpB;AAAA,YACJ;AAAA,UACJ,CAAC;AAED,gBAAM,QAAQ,KAAK,OAAO,GAAG,EAAE,QAAQ,SAAU,GAAG;AAChD,gBAAI,EAAE,SAAS,KAAK,QAAQ,KAAK,CAAC,KAAK,cAAc,yBAAyB;AAC1E,oBAAM,IAAI,WAAW,GAAG,GAAG;AAC3B,kBAAI,MAAM,OAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC,MAAM,IAAI;AACnD,sBAAM,QAAQ,KAAK,KAAK,CAAC;AACzB,2BAAW,KAAK;AAAA,cACpB;AAAA,YACJ;AAAA,UACJ,CAAC;AACD,gBAAM,QAAQ,KAAK,QAAQ,SAAU,GAAG;AACpC,kBAAM,QAAQ,KAAK,CAAC,GAAG,EAAE,OAAO,MAAM,QAAQ,KAAK,OAAO,SAAU,GAAG;AACnE,qBAAO,MAAM;AAAA,YACjB,CAAC,CAAC;AAAA,UACN,CAAC;AAAA,QACL,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AACA,aAAS,gBAAgB,KAAK,MAAM;AAChC,YAAM,UAAU,CAAC,EAAE,OAAO,MAAM,QAAQ,QAAQ,CAAC,GAAG,GAAG;AACvD,YAAM,OAAO,OAAO,KAAK,IAAI;AAC7B,YAAM,WAAW,QAAQ,KAAK,CAAAF,SAAO,KAAK,SAASA,IAAG,CAAC;AACvD,aAAO,WAAW,KAAK,YAAY;AAAA,IACvC;AACA,aAAS,WAAW,KAAK;AACrB,YAAM,YAAY,OAAO,KAAK,KAAK;AACnC,YAAM,UAAU,CAAC,EAAE,OAAO,UAAU,IAAI,OAAK,MAAM,EAAE,CAAC;AACtD,aAAO,QAAQ,KAAK,SAAU,MAAM;AAChC,eAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,SAAS,GAAG,IAAI,KAAK;AAAA,MAC3D,CAAC;AAAA,IACL;AACA,aAAS,iBAAiB,QAAQ,UAAU;AACxC,YAAM,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ;AACrC,aAAO,QAAQ,KAAK,SAAU,SAAS;AACnC,cAAMQ,SAAQ,IAAI,MAAM,OAAO;AAC/B,eAAOA,UAAS,WAAWA,OAAM,EAAE;AAAA,MACvC,CAAC;AAAA,IACL;AAEA,aAAS,iBAAiB,KAAK;AAE3B,UAAI,IAAI,MAAM,QAAQ,KAAK,CAAC,IAAI,MAAM,SAAS,GAAG;AAC9C,eAAO;AAAA,MACX;AACA,UAAI,cAAc;AAClB,UAAI;AACJ,YAAM,UAAU,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE;AACrC,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,eAAO,IAAI,MAAM,IAAI,CAAC;AACtB,YAAI,CAAC,WAAW,QAAQ,EAAE,GAAG;AACzB,wBAAc;AACd;AAAA,QACJ;AACA,YAAK,QAAQ,IAAI,MAAM,QAAQ,IAAI,OAAO,OACtC,SAAS,OACR,WAAW,KAAK,QAAQ,EAAE,KAAK,2BAA2B,KAAK,IAAI,KACnE,QAAQ,IAAI,MAAM,QAAQ,IAAI,GAAG,MAAM,IAAI,GAAI;AAChD;AAAA,QACJ;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,qBAAqB,KAAK;AAC/B,aAAO,cAAc,8BAA8B,gBAAgB,GAAG;AAAA,IAC1E;AACA,aAAS,gBAAgB,KAAK;AAC1B,YAAM,IAAI,QAAQ,UAAU,IAAI;AAEhC,UAAI,IAAI,MAAM,QAAQ,GAAG;AACrB,eAAO;AAAA,MACX;AAEA,UAAI,iBAAiB,GAAG,GAAG;AACvB,eAAO;AAAA,MACX;AAEA,YAAM,iBAAiB;AAEvB,YAAM,aAAa;AAEnB,YAAM,qBAAqB;AAE3B,YAAM,qBAAqB;AAE3B,YAAM,gCAAgC;AAEtC,aAAO,CAAC,iBAAiB,KAAK,gBAAgB,gBAAgB,YAAY,oBAAoB,oBAAoB,6BAA6B;AAAA,IACnJ;AAGA,aAAS,aAAa,KAAK;AACvB,UAAI,CAAC,gBAAgB,KAAK,MAAM,KAAK,KACjC,CAAC,gBAAgB,KAAK,MAAM,MAAM,KAClC,GAAG,SAAST,WAAU;AACtB,eAAOA,UAAS;AAAA,MACpB,OACK;AACD,eAAO,eAAeU,WAAU,GAAG,CAAC;AAAA,MACxC;AAAA,IACJ;AAEA,aAAS,eAAe,MAAM;AAC1B,YAAM,MAAM;AAAA,QACR,CAAC,wBAAwB,UAAU;AAAA,QACnC,CAAC,wBAAwB,SAAS;AAAA,QAClC,CAAC,wBAAwB,SAAS;AAAA,QAClC,CAAC,wBAAwB,QAAQ,CAAC;AAAA,MACtC;AACA,aAAO,IAAI;AAAA,IACf;AAEA,aAASA,WAAU,KAAK;AACpB,UAAI,OAAO,wBAAwB;AACnC,UAAI,gBAAgB,KAAK,MAAM,OAAO;AAClC,eAAO,wBAAwB;AAAA,eAC1B,gBAAgB,KAAK,MAAM,OAAO;AACvC,eAAO,wBAAwB;AAAA,eAC1B,gBAAgB,KAAK,MAAM,KAAK;AACrC,eAAO,wBAAwB;AAAA,eAC1B,gBAAgB,KAAK,MAAM,MAAM;AACtC,eAAO,wBAAwB;AACnC,aAAO;AAAA,IACX;AACA,aAAS,YAAY,KAAK;AACtB,aAAO,QAAQ;AAAA,IACnB;AAEA,aAAS,qBAAqB;AAE1B,aAAO,KAAK,MAAM,MAAM,EAAE,KAAK,SAAO;AAClC,YAAI,gBAAgB,KAAK,MAAM,MAAM,GAAG;AACpC,kBAAQ,MAAM,GAAG,8DAA8D,GAAG,CAAC;AACnF,iBAAO;AAAA,QACX,WACS,gBAAgB,KAAK,MAAM,KAAK,GAAG;AACxC,kBAAQ,MAAM,GAAG,6DAA6D,GAAG,CAAC;AAClF,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,WAAO;AAAA,MACH,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM,OAAO;AAAA,MACxC,MAAM,OAAO,OAAO,YAAY,IAAI;AAAA,MACpC;AAAA,MACA,WAAW,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA,MACtC;AAAA,MACA,YAAY,OAAO,OAAO,CAAC,GAAG,UAAU;AAAA,IAC5C;AAAA,EACJ;AACJ;AAGA,SAAS,eAAe,SAAS;AAC7B,QAAM,cAAc,CAAC;AACrB,QAAM,WAAW,uBAAO,OAAO,IAAI;AACnC,MAAI,SAAS;AAGb,SAAO,KAAK,OAAO,EAAE,QAAQ,SAAU,KAAK;AACxC,gBAAY,KAAK,CAAC,EAAE,OAAO,QAAQ,MAAM,GAAG,CAAC;AAAA,EACjD,CAAC;AAGD,SAAO,QAAQ;AACX,aAAS;AACT,aAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AACzC,eAAS,KAAK,IAAI,GAAG,KAAK,YAAY,QAAQ,MAAM;AAChD,cAAM,YAAY,YAAY,GAAG,OAAO,SAAU,GAAG;AACjD,iBAAO,YAAY,IAAI,QAAQ,CAAC,MAAM;AAAA,QAC1C,CAAC;AACD,YAAI,UAAU,QAAQ;AAClB,sBAAY,KAAK,YAAY,GAAG,OAAO,YAAY,GAAG;AACtD,sBAAY,OAAO,IAAI,CAAC;AACxB,mBAAS;AACT;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAGA,cAAY,QAAQ,SAAU,YAAY;AACtC,iBAAa,WAAW,OAAO,SAAU,GAAG,GAAG,MAAM;AACjD,aAAO,KAAK,QAAQ,CAAC,MAAM;AAAA,IAC/B,CAAC;AACD,UAAM,YAAY,WAAW,IAAI;AACjC,QAAI,cAAc,UAAa,OAAO,cAAc,UAAU;AAC1D,eAAS,aAAa;AAAA,IAC1B;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AAIA,SAAS,UAAU,MAAM;AACrB,SAAO,SAAS,SAAY,OAAO,IAAI;AAC3C;AAGA,SAAS,YAAY,KAAK;AACtB,MAAI,QAAQ;AACR,WAAO;AACX,SAAO;AACX;AACA,SAAS,YAAY,KAAK;AACtB,SAAQ,OAAO,QAAQ,aAClB,IAAI,OAAO,OAAO,IAAI,OAAO,QAC9B,IAAI,IAAI,SAAS,OAAO,IAAI,KAC1B,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC,IAC/B;AACV;;;AJvgCA,SAAS,oBAAoB;AAL7B,IAAI;AAAJ,IAAQ;AAAR,IAAY;AAQZ,IAAM,iBAAkB,WAAW,QAAQ,OAAO,QAAQ,IAAI,yBACxD,OAAO,QAAQ,IAAI,sBAAsB,IACzC;AACN,IAAM,eAAe,MAAM,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,UAAU,QAAQ,OAAO,SAAS,MAAM,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,MAAM,CAAC;AAC3S,IAAI,aAAa;AACb,QAAM,QAAQ,OAAO,YAAY,MAAM,UAAU,EAAE,EAAE;AACrD,MAAI,QAAQ,gBAAgB;AACxB,UAAM,MAAM,sDAAsD,kHAAkH;AAAA,EACxL;AACJ;AAEA,IAAM,MAAM,UAAU,QAAQ,MAAM,CAAC;AACrC,IAAM,SAAS,IAAI,YAAY;AAAA,EAC3B,KAAK,QAAQ;AAAA,EACb,KAAK,MAAM;AACP,WAAO;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAAC;AAAA,EAGA,SAAS,CAACC,UAAS;AACf,QAAI,OAAO,cAAY,aAAa;AAChC,aAAO,UAAQA;AAAA,IACnB,WACSA,MAAK,MAAM,SAAS,GAAG;AAE5B,aAAO,KAAK,MAAM,aAAaA,OAAM,MAAM,CAAC;AAAA,IAChD,OACK;AACD,YAAM,MAAM,8CAA8C;AAAA,IAC9D;AAAA,EACJ;AACJ,CAAC;AACD,IAAM,cAAc,SAAS,OAAO,MAAM,MAAM;AAC5C,QAAM,SAAS,OAAO,MAAM,KAAK,MAAM,GAAG,IAAI;AAC9C,SAAO,OAAO;AAClB;AACA,YAAY,WAAW,SAAU,MAAM,MAAM;AACzC,SAAO,OAAO,MAAM,KAAK,MAAM,GAAG,IAAI;AAC1C;AACA,YAAY,YAAY;AACxB,YAAY,aAAa;AACzB,YAAY,kBAAkB;AAC9B,IAAO,cAAQ;;;ALpDf,SAAS,UAAU,WAAAC,UAAS,SAAS,UAAU,WAAAC,gBAAe;;;AUT9D,SAAS,yBAAyB;AAC9B,MAAI,qBAAqB;AACrB,WAAO;AACX,SAAO;AACX;AACA,SAAS,uBAAuB;AAC5B,SAAO,cAAc,KAAK,CAAC,QAAQ;AACvC;AACA,SAAS,gBAAgB;AACrB,SAAO,CAAC,CAAC,QAAQ,SAAS;AAC9B;AAIO,SAAS,oBAAoB;AAChC,SAAO,QAAQ,KAAK,uBAAuB;AAC/C;;;AChBO,IAAM,SAAN,cAAqB,MAAM;AAAA,EAC9B,YAAY,KAAK;AACb,UAAM,OAAO,aAAa;AAC1B,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AACzB,YAAM,kBAAkB,MAAM,MAAM;AAAA,IACxC;AAAA,EACJ;AACJ;;;ACRA,SAAS,gBAAAC,eAAc,YAAAC,WAAU,iBAAiB;AAClD,SAAS,UAAAC,eAAc;AACvB,SAAS,WAAAC,gBAAe;AACxB,IAAO,eAAQ;AAAA,EACX,IAAI;AAAA,IACA,cAAAH;AAAA,IACA;AAAA,EACJ;AAAA,EACA,QAAAE;AAAA,EACA,SAAAC;AAAA,EACA,QAAQ,CAAC,SAAS;AACd,QAAI;AACA,aAAOF,UAAS,IAAI,EAAE,OAAO;AAAA,IACjC,SACO,KAAP;AACI,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;;;AClBA,IAAI;AACJ,IAAM,OAAN,MAAW;AAAA,EACP,YAAY,MAAM;AAEd,WAAO,QAAQ,CAAC;AAChB,SAAK,YAAY,KAAK,aAAa;AACnC,SAAK,cAAc,OAAO,KAAK,gBAAgB,YAAY,KAAK,cAAc;AAC9E,SAAK,SAAS,KAAK,UAAU;AAC7B,SAAK,qBAAqB,OAAO,KAAK,uBAAuB,YAAY,KAAK,qBAAqB;AAEnG,SAAK,QAAQ,uBAAO,OAAO,IAAI;AAC/B,SAAK,aAAa,CAAC;AAAA,EACvB;AAAA,EACA,MAAM,MAAM;AACR,QAAI,OAAO,UAAU,OAAO,UAAU;AAClC,aAAO,KAAK,eAAe,UAAU,IAAI,GAAG,SAAS;AAAA,IACzD;AACA,UAAM,MAAM,KAAK,MAAM;AACvB,QAAI,KAAK,WAAY;AAAA,IAAE;AACvB,QAAI,OAAO,KAAK,KAAK,SAAS,OAAO;AACjC,WAAK,KAAK,IAAI;AAClB,SAAK,MAAM,WAAY;AAAA,IAAE;AACzB,QAAI,CAAC,KAAK,MAAM,KAAK;AACjB,WAAK,gBAAgB;AAEzB,QAAI,CAAC,KAAK,MAAM,KAAK,QAAQ,QAAQ,KAAK,aAAa;AACnD,WAAK,MAAM,KAAK,QAAQ,OAAO;AAI/B,WAAK,cAAc;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,QAAQ,KAAK;AAAA,QACb;AAAA,MACJ,CAAC;AAAA,IACL,OACK;AACD,SAAG;AAAA,IACP;AACA,WAAO,KAAK,OAAO,MAAM,KAAK,QAAQ,CAAC,KAAK,MAAM,KAAK,QAAQ,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC;AAAA,EAC5F;AAAA,EACA,MAAM;AACF,UAAM,OAAO,MAAM,UAAU,MAAM,KAAK,SAAS;AACjD,UAAM,WAAW,KAAK,MAAM;AAC5B,UAAM,SAAS,KAAK,MAAM;AAC1B,UAAM,WAAW,KAAK,MAAM;AAC5B,QAAI,KAAK,WAAY;AAAA,IAAE;AACvB,QAAI,OAAO,KAAK,KAAK,SAAS,OAAO;AACjC,WAAK,KAAK,IAAI;AAClB,QAAI,CAAC,KAAK,MAAM,KAAK;AACjB,WAAK,gBAAgB;AACzB,QAAI,MAAM,aAAa,IAAI,WAAW;AACtC,QAAI,KAAK,MAAM,KAAK,QAAQ,WAAW;AACnC,YAAM,QAAQ,KAAK,MAAM,KAAK,QAAQ;AACtC,YAAM,MAAM,aAAa,IAAI,QAAQ;AAAA,IACzC;AAEA,QAAI,CAAC,KAAK,MAAM,KAAK,QAAQ,aAAa,KAAK,aAAa;AACxD,WAAK,MAAM,KAAK,QAAQ,YAAY;AAAA,QAChC,KAAK;AAAA,QACL,OAAO;AAAA,MACX;AAIA,WAAK,cAAc;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,QAAQ,KAAK;AAAA,QACb;AAAA,MACJ,CAAC;AAAA,IACL,OACK;AACD,SAAG;AAAA,IACP;AAGA,UAAM,SAAS,CAAC,GAAG;AACnB,QAAI,CAAC,IAAI,QAAQ,IAAI;AACjB,aAAO,KAAK,QAAQ;AACxB,WAAO,KAAK,OAAO,MAAM,KAAK,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,EAC7D;AAAA,EACA,UAAU,QAAQ;AACd,SAAK,SAAS;AAAA,EAClB;AAAA,EACA,YAAY;AACR,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,aAAa,KAAK;AACd,QAAI,CAAC,KAAK,MAAM,KAAK;AACjB,WAAK,gBAAgB;AACzB,eAAW,OAAO,KAAK;AACnB,UAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAChD,aAAK,MAAM,KAAK,QAAQ,OAAO,IAAI;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,eAAe,UAAU,MAAM;AAC3B,QAAI,MAAM;AACV,UAAM,QAAQ,SAAU,MAAM,GAAG;AAC7B,YAAM,MAAM,KAAK,IAAI;AACrB,aAAO;AACP,UAAI,OAAO,QAAQ,aAAa;AAC5B,eAAO;AAAA,MACX;AAAA,IACJ,CAAC;AACD,WAAO,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;AAAA,EACnE;AAAA,EACA,cAAc,MAAM;AAChB,SAAK,WAAW,KAAK,IAAI;AACzB,QAAI,KAAK,WAAW,WAAW;AAC3B,WAAK,mBAAmB;AAAA,EAChC;AAAA,EACA,qBAAqB;AACjB,UAAM,QAAQ;AACd,UAAM,OAAO,KAAK,WAAW;AAE7B,UAAM,YAAY,KAAK;AACvB,UAAM,SAAS,KAAK;AACpB,UAAM,KAAK,KAAK;AAChB,UAAM,eAAe,KAAK,mBAAmB,WAAW,MAAM;AAC9D,UAAM,mBAAmB,KAAK,UAAU,KAAK,MAAM,SAAS,MAAM,CAAC;AACnE,SAAK,GAAG,UAAU,cAAc,kBAAkB,SAAS,SAAU,KAAK;AACtE,YAAM,WAAW,MAAM;AACvB,UAAI,MAAM,WAAW,SAAS;AAC1B,cAAM,mBAAmB;AAC7B,SAAG,GAAG;AAAA,IACV,CAAC;AAAA,EACL;AAAA,EACA,kBAAkB;AACd,QAAI,eAAe,CAAC;AACpB,UAAM,eAAe,KAAK,mBAAmB,KAAK,WAAW,KAAK,MAAM;AACxE,QAAI;AAEA,UAAI,KAAK,GAAG,cAAc;AACtB,uBAAe,KAAK,MAAM,KAAK,GAAG,aAAa,cAAc,OAAO,CAAC;AAAA,MACzE;AAAA,IACJ,SACO,KAAP;AACI,UAAI,eAAe,aAAa;AAC5B,YAAI,UAAU,qBAAqB;AAAA,MACvC;AACA,UAAI,IAAI,SAAS;AACb,uBAAe,CAAC;AAAA;AAEhB,cAAM;AAAA,IACd;AACA,SAAK,MAAM,KAAK,UAAU;AAAA,EAC9B;AAAA,EACA,mBAAmB,WAAW,QAAQ;AAClC,QAAI,OAAO,KAAK,QAAQ,WAAW,MAAM,SAAS,OAAO;AACzD,QAAI,KAAK,sBAAsB,CAAC,KAAK,gBAAgB,IAAI,KAAK,CAAC,OAAO,YAAY,GAAG,GAAG;AAEpF,YAAM,eAAe,KAAK,QAAQ,WAAW,MAAM,OAAO,MAAM,GAAG,EAAE,KAAK,OAAO;AACjF,UAAI,KAAK,gBAAgB,YAAY;AACjC,eAAO;AAAA,IACf;AACA,WAAO;AAAA,EACX;AAAA,EACA,gBAAgB,MAAM;AAClB,WAAO,KAAK,OAAO,IAAI;AAAA,EAC3B;AACJ;AACO,SAAS,KAAK,MAAM,OAAO;AAC9B,SAAO;AACP,QAAMG,QAAO,IAAI,KAAK,IAAI;AAC1B,SAAO;AAAA,IACH,IAAIA,MAAK,GAAG,KAAKA,KAAI;AAAA,IACrB,KAAKA,MAAK,IAAI,KAAKA,KAAI;AAAA,IACvB,WAAWA,MAAK,UAAU,KAAKA,KAAI;AAAA,IACnC,WAAWA,MAAK,UAAU,KAAKA,KAAI;AAAA,IACnC,cAAcA,MAAK,aAAa,KAAKA,KAAI;AAAA,IACzC,QAAQA,MAAK;AAAA,EACjB;AACJ;;;AC1KA,IAAMC,QAAO,CAAC,SAAS;AACrB,SAAO,KAAM,MAAM,YAAI;AACzB;AAEA,IAAO,eAAQA;;;AdOf,IAAM,gBAAgB;AACtB,IAAM,0BAA0B;AAEhC,IAAI;AACJ,IAAI;AACF,cAAY,cAAc,YAAY,GAAG;AAC3C,SAAS,GAAP;AACA,cAAY,QAAQ,IAAI;AAC1B;AACA,IAAM,eAAe,UAAU,UAAU,GAAG,UAAU,YAAY,cAAc,CAAC;AAEjF,IAAO,cAAQ;AAAA,EACb,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,QAAQ,CAAC,QAAQ;AACf,WAAO,QAAQ,IAAI;AAAA,EACrB;AAAA,EACA;AAAA,EACA,eAAe,MAAM;AACnB,UAAM,IAAI,OAAO,uBAAuB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA,cAAc,gBAAgB,QAAQ,IAAI;AAAA,EAC1C;AAAA,EACA,MAAM;AAAA,IACJ;AAAA,IACA,SAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAAC;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,MAAM,MAAM,QAAQ;AAAA,IACpB,KAAK,QAAQ;AAAA,IACb,aAAa,CAAC,SAAS,SAAS,QAAQ,YAAY,SAAS,IAAI;AAAA,IACjE,UAAU,MAAM,QAAQ;AAAA,IACxB,MAAM,QAAQ;AAAA,IACd,UAAU,QAAQ;AAAA,IAClB,YAAY,OAAO,QAAQ,OAAO,YAAY,cAAc,QAAQ,OAAO,UAAU;AAAA,EACvF;AAAA,EACA,cAAAC;AAAA,EACA,SAAS,MAAM;AACb,UAAM,IAAI,OAAO,aAAa;AAAA,EAChC;AAAA,EACA,kBAAkB,MAAM;AACtB,UAAM,IAAI,OAAO,uBAAuB;AAAA,EAC1C;AAAA,EACA,aAAa,CAAC,QAAQ;AACpB,WAAO,CAAC,GAAG,GAAG,EAAE;AAAA,EAClB;AAAA,EACA,MAAM,aAAK;AAAA,IACT,WAAWD,SAAQ,WAAW,kBAAkB;AAAA,IAChD,aAAa;AAAA,EACf,CAAC;AACH;;;AexEO,SAAS,qBAAqB,QAAQ,UAAUE,OAAM,SAAS;AAClE,EAAAA,MAAK,OAAO,eAAe,QAAQ,UAAU,OAAO;AACxD;AACO,SAAS,gBAAgB,QAAQA,OAAM;AAC1C,EAAAA,MAAK,OAAO,YAAY,OAAO,QAAQ,QAAQ;AACnD;AACO,SAAS,WAAW,QAAQ;AAC/B,SAAO,OAAO,KAAK,MAAM;AAC7B;;;ACRO,SAAS,UAAU,cAAc;AACpC,SAAQ,CAAC,CAAC,gBACN,CAAC,CAAC,aAAa,QACf,OAAO,aAAa,SAAS;AACrC;;;ACJO,SAAS,aAAa,KAAK;AAC9B,QAAM,6BAA6B,IAAI,QAAQ,WAAW,GAAG;AAC7D,QAAM,eAAe,2BAA2B,MAAM,sBAAsB;AAC5E,QAAM,SAAS;AACf,QAAM,eAAe,aAAa,MAAM;AACxC,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,wBAAwB,KAAK;AACjD,QAAM,gBAAgB;AAAA,IAClB,KAAK,aAAa,QAAQ,QAAQ,EAAE;AAAA,IACpC,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,EACf;AACA,eAAa,QAAQ,CAACC,MAAK,MAAM;AAC7B,QAAI,WAAW;AACf,IAAAA,OAAMA,KAAI,QAAQ,OAAO,EAAE;AAC3B,QAAI,WAAW,KAAKA,IAAG,KAAK,MAAM,aAAa,SAAS;AACpD,iBAAW;AACf,QAAI,MAAM,KAAKA,IAAG,GAAG;AACjB,oBAAc,SAAS,KAAK;AAAA,QACxB,KAAKA,KAAI,QAAQ,QAAQ,EAAE,EAAE,MAAM,GAAG;AAAA,QACtC;AAAA,MACJ,CAAC;AAAA,IACL,OACK;AACD,oBAAc,SAAS,KAAK;AAAA,QACxB,KAAKA,KAAI,QAAQ,QAAQ,EAAE,EAAE,MAAM,GAAG;AAAA,QACtC;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ,CAAC;AACD,SAAO;AACX;;;AC7BA,IAAM,eAAe,CAAC,SAAS,UAAU,SAAS,UAAU,SAAS,OAAO;AACrE,SAAS,QAAQ,MAAM,MAAM,MAAM;AACtC,WAAS,YAAY;AACjB,WAAO,OAAO,SAAS,WACjB,CAAC,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC,EAAE,GAAG,MAAM,IAAI,IAC3C;AAAA,MACE,aAAa,OAAO,MAAM;AAAA,MAC1B;AAAA,MACA;AAAA,IACJ;AAAA,EACR;AACA,MAAI;AACA,QAAI,WAAW;AACf,UAAM,CAAC,QAAQ,iBAAiB,OAAO,IAAI,UAAU;AACrD,UAAM,OAAO,CAAC,EAAE,MAAM,KAAK,eAAe;AAC1C,WAAO,KAAK,UAAU,KAAK,KAAK,SAAS,OAAO;AAC5C,WAAK,IAAI;AACb,UAAM,SAAS,WAAW,KAAK;AAC/B,QAAI,SAAS,OAAO,SAAS,QAAQ;AACjC,YAAM,IAAI,OAAO,2CAA2C,OAAO,SAAS,uBAAuB,KAAK,SAAS;AAAA,IACrH;AACA,UAAM,gBAAgB,OAAO,SAAS,SAAS,OAAO,SAAS;AAC/D,QAAI,SAAS,eAAe;AACxB,YAAM,IAAI,OAAO,6CAA6C,8BAA8B,SAAS;AAAA,IACzG;AACA,WAAO,SAAS,QAAQ,cAAY;AAChC,YAAM,MAAM,KAAK,MAAM;AACvB,YAAM,eAAe,UAAU,GAAG;AAClC,YAAM,gBAAgB,SAAS,IAAI,OAAO,UAAQ,SAAS,gBAAgB,SAAS,GAAG;AACvF,UAAI,cAAc,WAAW;AACzB,0BAAkB,cAAc,SAAS,KAAK,QAAQ;AAC1D,kBAAY;AAAA,IAChB,CAAC;AACD,WAAO,SAAS,QAAQ,CAAAC,cAAY;AAChC,UAAI,KAAK,WAAW;AAChB;AACJ,YAAM,MAAM,KAAK,MAAM;AACvB,YAAM,eAAe,UAAU,GAAG;AAClC,YAAM,gBAAgBA,UAAS,IAAI,OAAO,UAAQ,SAAS,gBAAgB,SAAS,GAAG;AACvF,UAAI,cAAc,WAAW;AACzB,0BAAkB,cAAcA,UAAS,KAAK,QAAQ;AAC1D,kBAAY;AAAA,IAChB,CAAC;AAAA,EACL,SACO,KAAP;AACI,YAAQ,KAAK,IAAI,KAAK;AAAA,EAC1B;AACJ;AACA,SAAS,UAAU,KAAK;AACpB,MAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,WAAO;AAAA,EACX,WACS,QAAQ,MAAM;AACnB,WAAO;AAAA,EACX;AACA,SAAO,OAAO;AAClB;AACA,SAAS,kBAAkB,cAAc,cAAc,UAAU;AAC7D,QAAM,IAAI,OAAO,WAAW,aAAa,aAAa,gCAAgC,aAAa,KAAK,MAAM,kBAAkB,eAAe;AACnJ;;;AC3DO,IAAM,mBAAN,MAAuB;AAAA,EAC1B,YAAY,OAAO;AACf,SAAK,mBAAmB,CAAC;AACzB,SAAK,UAAU,CAAC;AAChB,SAAK,QAAQ;AAAA,EACjB;AAAA,EACA,cAAc,UAAU,uBAAuBC,UAAS,MAAM,UAAU,OAAO;AAC3E,YAAQ,kDAAkD,CAAC,UAAU,uBAAuBA,OAAM,GAAG,UAAU,MAAM;AACrH,QAAI,MAAM,QAAQ,QAAQ,GAAG;AACzB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,YAAI,OAAO,SAAS,OAAO,YAAY;AACnC,gBAAM,MAAM,+BAA+B;AAAA,QAC/C;AACA,cAAM,IAAI,SAAS;AACnB,UAAE,wBAAwB;AAC1B,UAAE,SAASA;AAAA,MACf;AACA,YAAM,UAAU,KAAK,MAAM,KAAK,kBAAkB,QAAQ;AAAA,IAC9D,WACS,OAAO,aAAa,YAAY;AACrC,YAAM,IAAI;AACV,QAAE,wBAAwB;AAC1B,QAAE,SAASA;AACX,QAAE,UAAU;AACZ,WAAK,iBAAiB,KAAK,QAAQ;AAAA,IACvC;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,oBAAoB,UAAU,QAAQ;AAClC,UAAM,UAAU,KAAK,MAAM,WAAW;AACtC,SAAK,mBAAmB,KAAK,iBAAiB,OAAO,OAAK;AACtD,YAAM,UAAU,CAAC,GAAI,QAAQ,WAAW,CAAC,GAAI,MAAM;AACnD,UAAI,CAAC,EAAE;AACH,eAAO;AAAA;AAEP,eAAO,CAAC,QAAQ,SAAS,EAAE,MAAM;AAAA,IACzC,CAAC;AACD,aAAS,SAAS;AAClB,WAAO,KAAK,cAAc,UAAU,MAAM,MAAM,IAAI;AAAA,EACxD;AAAA,EACA,gBAAgB;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,SAAS;AACL,SAAK,QAAQ,KAAK,CAAC,GAAG,KAAK,gBAAgB,CAAC;AAAA,EAChD;AAAA,EACA,WAAW;AACP,UAAM,SAAS,KAAK,QAAQ,IAAI;AAChC,QAAI,WAAW;AACX,WAAK,mBAAmB;AAAA,EAChC;AAAA,EACA,QAAQ;AACJ,SAAK,mBAAmB,KAAK,iBAAiB,OAAO,OAAK,EAAE,MAAM;AAAA,EACtE;AACJ;AACO,SAAS,yBAAyB,mBAAmB;AACxD,MAAI,CAAC;AACD,WAAO,CAAC;AACZ,SAAO,kBAAkB,IAAI,gBAAc;AACvC,eAAW,wBAAwB;AACnC,WAAO;AAAA,EACX,CAAC;AACL;AACO,SAAS,gBAAgB,MAAM,OAAO,aAAa,kBAAkB;AACxE,SAAO,YAAY,OAAO,CAAC,KAAK,eAAe;AAC3C,QAAI,WAAW,0BAA0B,kBAAkB;AACvD,aAAO;AAAA,IACX;AACA,QAAI,WAAW,SAAS;AACpB,UAAI,WAAW;AACX,eAAO;AACX,iBAAW,UAAU;AAAA,IACzB;AACA,QAAI,UAAU,GAAG,GAAG;AAChB,aAAO,IACF,KAAK,gBAAc,QAAQ,IAAI,CAAC,YAAY,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,EAC3E,KAAK,CAAC,CAAC,YAAY,aAAa,MAAM,OAAO,OAAO,YAAY,aAAa,CAAC;AAAA,IACvF,OACK;AACD,YAAM,SAAS,WAAW,KAAK,KAAK;AACpC,aAAO,UAAU,MAAM,IACjB,OAAO,KAAK,mBAAiB,OAAO,OAAO,KAAK,aAAa,CAAC,IAC9D,OAAO,OAAO,KAAK,MAAM;AAAA,IACnC;AAAA,EACJ,GAAG,IAAI;AACX;;;ACtFO,SAAS,iBAAiB,WAAW,eAAe,eAAe,CAAC,QAAQ;AAC/E,QAAM;AACV,GAAG;AACC,MAAI;AACA,UAAM,SAAS,WAAW,SAAS,IAAI,UAAU,IAAI;AACrD,WAAO,UAAU,MAAM,IACjB,OAAO,KAAK,CAACC,YAAW,cAAcA,OAAM,CAAC,IAC7C,cAAc,MAAM;AAAA,EAC9B,SACO,KAAP;AACI,WAAO,aAAa,GAAG;AAAA,EAC3B;AACJ;AACA,SAAS,WAAW,KAAK;AACrB,SAAO,OAAO,QAAQ;AAC1B;;;AChBe,SAAR,YAA6B,UAAU;AAC1C,MAAI,OAAO,cAAY;AACnB,WAAO;AACX,WAAS,IAAI,GAAG,QAAQ,OAAO,KAAK,UAAQ,KAAK,GAAG,KAAK,IAAI,MAAM,QAAQ,KAAK;AAC5E,UAAM,UAAQ,MAAM,MAAM;AAC1B,QAAI,IAAI,YAAY;AAChB,aAAO;AAAA,EACf;AACA,SAAO;AACX;;;ACFA,IAAM,iBAAiB;AAChB,IAAM,kBAAN,MAAsB;AAAA,EACzB,YAAYC,QAAOC,aAAY,kBAAkBC,OAAM;AACnD,SAAK,eAAe,oBAAI,IAAI;AAC5B,SAAK,WAAW,CAAC;AACjB,SAAK,WAAW,CAAC;AACjB,SAAK,UAAU,CAAC;AAChB,SAAK,OAAOA;AACZ,SAAK,QAAQF;AACb,SAAK,mBAAmB;AACxB,SAAK,aAAaC;AAAA,EACtB;AAAA,EACA,aAAa,KAAK,KAAK,YAAY,MAAM;AACrC,WAAO,QAAQ,CAAC;AAChB,QAAI,OAAO,KAAK,YAAY;AACxB,WAAK,UAAU;AACnB,QAAI,CAAC,MAAM,QAAQ,KAAK,UAAU;AAC9B,WAAK,aAAa,CAAC,IAAI;AAC3B,UAAM,cAAc,OAAO,KAAK,UAAU,aAAa,KAAK,QAAQ,CAAC,MAAM;AAC3E,SAAK,QAAQ,CAAC,KAAK,QAAQ,aAAa;AACpC,YAAM,UAAU,YAAY,KAAK,QAAQ,QAAQ;AACjD,UAAI,SAAS;AACT,YAAI,KAAK,aAAa,IAAI,MAAM;AAC5B,iBAAO;AAAA;AAEP,eAAK,aAAa,IAAI,MAAM;AAChC,aAAK,WAAW,OAAO;AAAA,MAC3B;AACA,aAAO;AAAA,IACX;AACA,SAAK,KAAK,iBAAiB,EAAE,SAAS,KAAK,UAAU,WAAW,GAAG,KAAK,IAAI;AAAA,EAChF;AAAA,EACA,WAAW,KAAK,aAAaE,WAASC,WAAS,mBAAmB,YAAY;AAC1E,QAAI,UAAU,CAAC;AACf,UAAM,cAAc,yBAAyB,iBAAiB;AAC9D,IAAAA,YAAUA,cAAY,MAAM;AAAA,IAAE;AAC9B,QAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,UAAI,oBAAoB,GAAG,GAAG;AAC1B,SAAC,KAAK,GAAG,OAAO,IAAI;AAAA,MACxB,OACK;AACD,mBAAWC,YAAW,KAAK;AACvB,eAAK,WAAWA,QAAO;AAAA,QAC3B;AAAA,MACJ;AAAA,IACJ,WACS,2BAA2B,GAAG,GAAG;AACtC,UAAIA,WAAU,MAAM,QAAQ,IAAI,OAAO,KAAK,OAAO,IAAI,YAAY,WAC7D,IAAI,UACJ,KAAK,WAAW,GAAG;AACzB,UAAI,IAAI;AACJ,QAAAA,WAAU,CAAC,EAAE,OAAOA,QAAO,EAAE,OAAO,IAAI,OAAO;AACnD,WAAK,WAAWA,UAAS,KAAK,YAAY,GAAG,GAAG,IAAI,SAAS,IAAI,SAAS,IAAI,aAAa,IAAI,UAAU;AACzG;AAAA,IACJ,WACS,2BAA2BF,SAAO,GAAG;AAC1C,WAAK,WAAW,CAAC,GAAG,EAAE,OAAO,OAAO,GAAG,aAAaA,UAAQ,SAASA,UAAQ,SAASA,UAAQ,aAAaA,UAAQ,UAAU;AAC7H;AAAA,IACJ;AACA,QAAI,OAAO,QAAQ,UAAU;AACzB,YAAM,gBAAgB,aAAa,GAAG;AACtC,gBAAU,QAAQ,IAAI,CAAAG,WAAS,aAAaA,MAAK,EAAE,GAAG;AACtD,UAAI,YAAY;AAChB,YAAM,gBAAgB,CAAC,cAAc,GAAG,EAAE,OAAO,OAAO,EAAE,OAAO,OAAK;AAClE,YAAI,eAAe,KAAK,CAAC,GAAG;AACxB,sBAAY;AACZ,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX,CAAC;AACD,UAAI,cAAc,WAAW,KAAK;AAC9B,sBAAc,KAAK,IAAI;AAC3B,UAAI,WAAW;AACX,sBAAc,MAAM,cAAc;AAClC,kBAAU,cAAc,MAAM,CAAC;AAC/B,cAAM,IAAI,QAAQ,gBAAgB,cAAc,GAAG;AAAA,MACvD;AACA,cAAQ,QAAQ,CAAAA,WAAS;AACrB,aAAK,SAASA,UAAS,cAAc;AAAA,MACzC,CAAC;AACD,UAAI,gBAAgB,OAAO;AACvB,aAAK,MAAM,QAAQ,KAAK,aAAa,WAAW,SAAS,UAAU;AAAA,MACvE;AACA,WAAK,SAAS,cAAc,OAAO;AAAA,QAC/B,UAAU;AAAA,QACV;AAAA,QACA,SAAAF;AAAA,QACA,SAASD,aAAW,CAAC;AAAA,QACrB;AAAA,QACA;AAAA,QACA,UAAU,cAAc;AAAA,QACxB,UAAU,cAAc;AAAA,MAC5B;AACA,UAAI;AACA,aAAK,iBAAiB,KAAK,SAAS,cAAc;AAAA,IAC1D;AAAA,EACJ;AAAA,EACA,qBAAqB;AACjB,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,cAAc;AACV,WAAO,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,EACvE;AAAA,EACA,oBAAoB;AAChB,WAAO,CAAC,CAAC,KAAK;AAAA,EAClB;AAAA,EACA,WAAWE,UAAS,OAAO,QAAQ,cAAc,UAAU,kBAAkB;AACzE,UAAM,iBAAiB,KAAK,SAASA,aACjC,KAAK,SAAS,KAAK,SAASA,cAC5B,KAAK;AACT,UAAM,iBAAiB,MAAM,mBAAmB,EAAE,WAAW;AAC7D,UAAM,iBAAiB,eAAe,SAAS,MAAM;AACrD,UAAM,mBAAmB,CAACA;AAC1B,QAAIA,UAAS;AACT,qBAAe,SAAS,KAAKA,QAAO;AACpC,qBAAe,aAAa,KAAK,eAAe,QAAQ;AAAA,IAC5D;AACA,UAAM,gBAAgB,KAAK,gCAAgC,kBAAkB,gBAAgB,OAAO,OAAO,SAAS,gBAAgB,cAAc,UAAU,gBAAgB;AAC5K,WAAO,UAAU,aAAa,IACxB,cAAc,KAAK,YAAU,KAAK,4BAA4B,kBAAkB,gBAAgB,OAAO,WAAW,gBAAgB,UAAU,OAAO,SAAS,KAAK,CAAC,IAClK,KAAK,4BAA4B,kBAAkB,gBAAgB,cAAc,WAAW,gBAAgB,UAAU,cAAc,SAAS,KAAK;AAAA,EAC5J;AAAA,EACA,gCAAgC,kBAAkB,gBAAgB,OAAO,SAAS,gBAAgB,cAAc,UAAU,kBAAkB;AACxI,UAAMF,YAAU,eAAe;AAC/B,QAAI,aAAa;AACjB,QAAI,yBAAyBA,SAAO,GAAG;AACnC,YAAM,mBAAmB,EAAE,iBAAiB,EAAE,OAAO;AACrD,YAAM,gBAAgBA,UAAQ,MAAM,mBAAmB,EAAE,MAAM,OAAO,GAAG,gBAAgB;AACzF,UAAI,UAAU,aAAa,GAAG;AAC1B,eAAO,cAAc,KAAK,YAAU;AAChC,uBAAa,gBAAgB,MAAM,IAAI,SAAS;AAChD,iBAAO,KAAK,oBAAoB,kBAAkB,gBAAgB,YAAY,gBAAgB,cAAc,QAAQ;AAAA,QACxH,CAAC;AAAA,MACL;AAAA,IACJ,WACS,kCAAkCA,SAAO,GAAG;AACjD,YAAM,mBAAmB,EAAE,iBAAiB,EAAE,OAAO;AACrD,mBAAa,MAAM,mBAAmB,EAAE,MAAM,OAAO;AACrD,aAAO,KAAK,eAAe,OAAO,EAAE,QAAQ,SAAO;AAC/C,mBAAW,OAAO,KAAKA,UAAQ,IAAI;AAAA,MACvC,CAAC;AAAA,IACL;AACA,WAAO,KAAK,oBAAoB,kBAAkB,gBAAgB,YAAY,gBAAgB,cAAc,QAAQ;AAAA,EACxH;AAAA,EACA,oBAAoB,kBAAkB,gBAAgB,YAAY,gBAAgB,cAAc,UAAU;AACtG,QAAI;AACA,iBAAW,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,IAAI;AACpE,QAAI,KAAK,kBAAkB,UAAU,GAAG;AACpC,iBACK,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,KAAK,sCAAsC,gBAAgB,cAAc,GAAG,eAAe,WAAW;AAAA,IACrH;AACA,UAAM,YAAY,WACb,mBAAmB,EACnB,iCAAiC,MAAM,QAAW,MAAM,cAAc,QAAQ;AACnF,WAAO,UAAU,SAAS,IACpB,UAAU,KAAK,WAAS;AAAA,MACtB,SAAS,WAAW,OAAO;AAAA,MAC3B,WAAW;AAAA,IACf,EAAE,IACA;AAAA,MACE,SAAS,WAAW,OAAO;AAAA,MAC3B;AAAA,IACJ;AAAA,EACR;AAAA,EACA,kBAAkB,OAAO;AACrB,WAAQ,CAAC,MAAM,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,KACpE,MAAM,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW;AAAA,EAC5E;AAAA,EACA,sCAAsC,gBAAgB,gBAAgB;AAClE,UAAM,IAAI,eAAe,KAAK,eAAe,QAAQ,IAC/C,eAAe,SAAS,QAAQ,gBAAgB,EAAE,EAAE,KAAK,IACzD,eAAe;AACrB,UAAM,KAAK,eAAe,OAAO,CAAAI,OAAK;AAClC,aAAO,CAAC,eAAe,KAAKA,EAAC;AAAA,IACjC,CAAC;AACD,OAAG,KAAK,CAAC;AACT,WAAO,MAAM,GAAG,KAAK,GAAG;AAAA,EAC5B;AAAA,EACA,6BAA6B,kBAAkB,gBAAgB,WAAW,gBAAgB,SAAS,OAAO,aAAa,eAAe;AAClI,QAAI,CAAC,MAAM,mBAAmB,EAAE,aAAa,GAAG;AAC5C,YAAMN,cAAa,MACd,mBAAmB,EACnB,cAAc,SAAS,eAAe,MAAM,OAAO,OAAO,gBAAgB;AAC/E,kBAAY,iBAAiB,WAAW,YAAU;AAC9C,QAAAA,YAAW,MAAM;AACjB,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,QAAI,eAAe,WAAW,CAAC,MAAM,mBAAmB,EAAE,aAAa,GAAG;AACtE,YAAM,mBAAmB,EAAE,aAAa;AACxC,YAAM,qBAAqB,CAAC,CAAC,MAAM,WAAW,EAAE,cAAc;AAC9D,YACK,mBAAmB,EACnB,YAAY,WAAW,oBAAoB,OAAO,KAAK;AAC5D,kBAAY,gBAAgB,WAAW,OAAO,aAAa,KAAK;AAChE,kBAAY,iBAAiB,WAAW,YAAU;AAC9C,cAAM,gBAAgB,eAAe,QAAQ,MAAM;AACnD,eAAO,UAAU,aAAa,IACxB,cAAc,KAAK,MAAM,MAAM,IAC/B;AAAA,MACV,CAAC;AACD,UAAI,CAAC,kBAAkB;AACnB,cAAM,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB;AAAA,MACnE;AACA,UAAI,UAAU,SAAS,KACnB,CAAC,MAAM,mBAAmB,EAAE,iBAAiB,GAAG;AAChD,kBAAU,MAAM,WAAS;AACrB,cAAI;AACA,kBAAM,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,MAAM,KAAK;AAAA,UAClE,SACO,MAAP;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AACA,QAAI,CAAC,kBAAkB;AACnB,qBAAe,SAAS,IAAI;AAC5B,qBAAe,aAAa,IAAI;AAAA,IACpC;AACA,WAAO;AAAA,EACX;AAAA,EACA,4BAA4B,kBAAkB,gBAAgB,WAAW,gBAAgB,UAAU,SAAS,OAAO;AAC/G,QAAI,gBAAgB,CAAC;AACrB,QAAI;AACA,aAAO;AACX,QAAI,CAAC,MAAM,mBAAmB,EAAE,aAAa,GAAG;AAC5C,sBAAgB,KAAK,oBAAoB,gBAAgB,WAAW,gBAAgB,KAAK;AAAA,IAC7F;AACA,UAAM,cAAc,KAAK,iBACpB,cAAc,EACd,MAAM,CAAC,EACP,OAAO,eAAe,WAAW;AACtC,UAAM,mBAAmB,gBAAgB,WAAW,OAAO,aAAa,IAAI;AAC5E,WAAO,UAAU,gBAAgB,IAC3B,iBAAiB,KAAK,uBAAqB,KAAK,6BAA6B,kBAAkB,gBAAgB,mBAAmB,gBAAgB,SAAS,OAAO,aAAa,aAAa,CAAC,IAC7L,KAAK,6BAA6B,kBAAkB,gBAAgB,kBAAkB,gBAAgB,SAAS,OAAO,aAAa,aAAa;AAAA,EAC1J;AAAA,EACA,oBAAoB,gBAAgB,MAAM,SAAS,OAAO;AACtD,SAAK,IAAI,KAAK,EAAE,MAAM,QAAQ,SAAS,MAAM;AAC7C,UAAM,WAAW,eAAe,SAAS,MAAM,CAAC;AAChD,UAAMO,YAAW,eAAe,SAAS,MAAM,CAAC;AAChD,UAAM,gBAAgB,CAAC;AACvB,SAAK,WAAW,gBAAgB,SAAS,QAAQ,KAAK,EAAE,MAAM;AAC9D,WAAO,SAAS,QAAQ;AACpB,YAAM,SAAS,SAAS,MAAM;AAC9B,WAAK,mBAAmB,QAAQ,MAAM,aAAa;AAAA,IACvD;AACA,WAAOA,UAAS,QAAQ;AACpB,YAAM,QAAQA,UAAS,MAAM;AAC7B,WAAK,mBAAmB,OAAO,MAAM,aAAa;AAAA,IACtD;AACA,SAAK,IAAI,QAAQ,SAAS,OAAO,KAAK,EAAE,IAAI,OAAK,KAAK,CAAC,CAAC;AACxD,SAAK,uBAAuB,MAAM,eAAe,KAAK,kBAAkB,eAAe,QAAQ,GAAG,KAAK;AACvG,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,YAAY,MAAM,eAAe;AAChD,UAAM,MAAM,WAAW,IAAI;AAC3B,QAAI,WAAW,UAAU;AACrB,oBAAc,OAAO,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,MAAM;AAAA,IACpD,OACK;AACD,UAAI,KAAK,EAAE;AACP,sBAAc,OAAO,CAAC,OAAO,KAAK,EAAE,MAAM,CAAC,CAAC;AAAA,IACpD;AAAA,EACJ;AAAA,EACA,kBAAkB,WAAW;AACzB,UAAMC,gBAAe;AAAA,MACjB,OAAO,CAAC;AAAA,MACR,SAAS,CAAC;AAAA,MACV,OAAO,CAAC;AAAA,MACR,QAAQ,CAAC;AAAA,IACb;AACA,UAAM,SAAS,aAAa,SAAS;AACrC,WAAO,SAAS,QAAQ,OAAK;AACzB,YAAM,CAAC,QAAQ,OAAO,IAAI,EAAE;AAC5B,UAAI,EAAE,UAAU;AACZ,QAAAA,cAAa,MAAM,KAAK,GAAG;AAC3B,QAAAA,cAAa,QAAQ,OAAO,CAAC;AAAA,MACjC;AACA,MAAAA,cAAa,MAAM,OAAO;AAC1B,MAAAA,cAAa,OAAO,OAAO;AAAA,IAC/B,CAAC;AACD,WAAO,SAAS,QAAQ,OAAK;AACzB,YAAM,CAAC,QAAQ,OAAO,IAAI,EAAE;AAC5B,UAAI,EAAE,UAAU;AACZ,QAAAA,cAAa,MAAM,KAAK,GAAG;AAC3B,QAAAA,cAAa,QAAQ,OAAO,CAAC;AAAA,MACjC;AACA,MAAAA,cAAa,MAAM,OAAO;AAAA,IAC9B,CAAC;AACD,WAAOA;AAAA,EACX;AAAA,EACA,uBAAuB,MAAM,eAAeA,eAAc,OAAO;AAC7D,UAAM,UAAU,OAAO,OAAO,CAAC,GAAG,MAAM,WAAW,CAAC;AACpD,YAAQ,UAAU,OAAO,OAAOA,cAAa,SAAS,QAAQ,OAAO;AACrE,eAAW,OAAO,OAAO,KAAKA,cAAa,KAAK,GAAG;AAC/C,cAAQ,MAAM,QAAQ,QAAQ,MAAM,QAAQ,CAAC,GAAG,OAAOA,cAAa,MAAM,IAAI;AAAA,IAClF;AACA,YAAQ,QAAQ,QAAQ,MAAM,OAAOA,cAAa,KAAK;AACvD,YAAQ,SAAS,CAAC;AAClB,UAAM,WAAW,CAAC;AAClB,WAAO,KAAK,aAAa,EAAE,QAAQ,SAAO;AACtC,oBAAc,KAAK,IAAI,WAAS;AAC5B,YAAI,QAAQ,cAAc;AACtB,kBAAQ,IAAI,OAAO;AACvB,iBAAS,KAAK,KAAK,KAAK;AACxB,iBAAS,KAAK,KAAK;AAAA,MACvB,CAAC;AAAA,IACL,CAAC;AACD,QAAI,CAAC,SAAS;AACV;AACJ,UAAM,SAAS,OAAO,OAAO,CAAC,GAAG,QAAQ,eAAe;AAAA,MACpD,cAAc;AAAA,IAClB,CAAC;AACD,UAAM,SAAS,KAAK,KAAK,OAAO,SAAS,UAAU,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA,MAC1E,eAAe;AAAA,IACnB,CAAC,CAAC;AACF,QAAI,OAAO,OAAO;AACd,YACK,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,OAAO,MAAM,SAAS,OAAO,KAAK;AAAA,IAChD,OACK;AACD,YAAM,iBAAiB,OAAO,KAAK,aAAa;AAChD,aAAO,KAAK,aAAa,EAAE,QAAQ,SAAO;AACtC,uBAAe,KAAK,GAAG,OAAO,QAAQ,IAAI;AAAA,MAC9C,CAAC;AACD,aAAO,KAAK,OAAO,IAAI,EAAE,QAAQ,SAAO;AACpC,YAAI,eAAe,SAAS,GAAG,GAAG;AAC9B,cAAI,CAAC,cAAc;AACf,0BAAc,OAAO,OAAO,KAAK;AACrC,cAAI,CAAC,KAAK,YAAY,OAAO,GAAG,KAC5B,CAAC,KAAK,YAAY,OAAO,GAAG,KAC5B,OAAO,UAAU,eAAe,KAAK,MAAM,GAAG,KAC9C,OAAO,UAAU,eAAe,KAAK,OAAO,MAAM,GAAG,MACpD,MAAM,QAAQ,KAAK,IAAI,KAAK,MAAM,QAAQ,OAAO,KAAK,IAAI,IAAI;AAC/D,iBAAK,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI;AAAA,UACrD,OACK;AACD,iBAAK,OAAO,OAAO,KAAK;AAAA,UAC5B;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EACA,YAAY,OAAO,KAAK;AACpB,UAAM,EAAE,SAASC,UAAS,IAAI,MAAM,WAAW;AAC/C,WAAQ,OAAO,UAAU,eAAe,KAAKA,WAAU,GAAG,KACtD,OAAO,UAAU,eAAe,KAAKA,WAAU,KAAK,KAAK,OAAO,UAAU,GAAG,CAAC;AAAA,EACtF;AAAA,EACA,YAAY,OAAO,KAAK;AACpB,UAAM,EAAE,cAAc,IAAI,MAAM,WAAW;AAC3C,WAAQ,cAAc,KAAK,OAAK,OAAO,UAAU,eAAe,KAAK,GAAG,GAAG,CAAC,KACxE,cAAc,KAAK,OAAK,OAAO,UAAU,eAAe,KAAK,GAAG,KAAK,KAAK,OAAO,UAAU,GAAG,CAAC,CAAC;AAAA,EACxG;AAAA,EACA,oBAAoB,OAAO;AACvB,QAAI,CAAC,KAAK;AACN;AACJ,QAAI,KAAK,kBAAkB,KAAK,GAAG;AAC/B,YAAM,gBAAgB,eAAe,KAAK,KAAK,eAAe,QAAQ,IAChE,KAAK,eAAe,WACpB,KAAK,eAAe,SAAS,QAAQ,cAAc,KAAK;AAC9D,YACK,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,eAAe,KAAK,eAAe,WAAW;AAAA,IAC7D;AACA,UAAMP,YAAU,KAAK,eAAe;AACpC,QAAI,yBAAyBA,SAAO,GAAG;AACnC,aAAOA,UAAQ,OAAO,IAAI;AAAA,IAC9B,WACS,CAAC,2BAA2BA,SAAO,GAAG;AAC3C,aAAO,KAAKA,SAAO,EAAE,QAAQ,SAAO;AAChC,cAAM,OAAO,KAAKA,UAAQ,IAAI;AAAA,MAClC,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,KAAK;AACZ,UAAM,MAAM,YAAY,GAAG;AAC3B,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,qCAAqC,KAAK,KAAK,QAAQ,GAAG,GAAG;AACjF,WAAO,KAAK,oBAAoB,IAAI,QAAQ;AAAA,EAChD;AAAA,EACA,oBAAoB,UAAU;AAC1B,WAAO,KAAK,KAAK,KAAK,SAAS,UAAU,KAAK,KAAK,KAAK,QAAQ,QAAQ,CAAC;AAAA,EAC7E;AAAA,EACA,YAAY,EAAE,UAAU,aAAa,KAAK,GAAG;AACzC,eAAW,QAAQ,CAAC,UAAU,aAAa,IAAI,GAAG;AAC9C,UAAI,OAAO,SAAS,YAAY,SAAS;AACrC,eAAO;AACX,2BAAqB,MAAM,MAAM,KAAK,IAAI;AAAA,IAC9C;AACA,WAAO;AAAA,EACX;AAAA,EACA,SAAS;AACL,SAAK,QAAQ,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,gBAAgB,KAAK;AAAA,IACzB,CAAC;AAAA,EACL;AAAA,EACA,WAAW;AACP,UAAM,SAAS,KAAK,QAAQ,IAAI;AAChC,yBAAqB,QAAQ,QAAW,KAAK,IAAI;AACjD,KAAC;AAAA,MACG,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,gBAAgB,KAAK;AAAA,IACzB,IAAI;AAAA,EACR;AAAA,EACA,QAAQ;AACJ,SAAK,WAAW,CAAC;AACjB,SAAK,WAAW,CAAC;AACjB,SAAK,iBAAiB;AACtB,SAAK,eAAe,oBAAI,IAAI;AAC5B,WAAO;AAAA,EACX;AACJ;AACO,SAAS,QAAQH,QAAOC,aAAY,kBAAkBC,OAAM;AAC/D,SAAO,IAAI,gBAAgBF,QAAOC,aAAY,kBAAkBC,KAAI;AACxE;AACO,SAAS,2BAA2BC,WAAS;AAChD,SAAQ,OAAOA,cAAY,YACvB,CAAC,CAACA,UAAQ,WACV,OAAOA,UAAQ,YAAY;AACnC;AACA,SAAS,oBAAoB,KAAK;AAC9B,SAAO,IAAI,MAAM,OAAK,OAAO,MAAM,QAAQ;AAC/C;AACO,SAAS,yBAAyBA,WAAS;AAC9C,SAAO,OAAOA,cAAY;AAC9B;AACA,SAAS,kCAAkCA,WAAS;AAChD,SAAO,OAAOA,cAAY;AAC9B;AACO,SAAS,2BAA2B,KAAK;AAC5C,SAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AACxD;;;AC/bO,SAAS,UAAU,WAAW,CAAC,GAAGQ,UAAS,MAAM,MAAM;AAC1D,QAAM,MAAM,CAAC;AACb,aAAW,QAAQ,EAAE,QAAQ,SAAO;AAChC,QAAIA,QAAO,KAAK,SAAS,IAAI,GAAG;AAC5B,UAAI,OAAO,SAAS;AAAA,IACxB;AAAA,EACJ,CAAC;AACD,SAAO;AACX;;;ACTe,SAAR,YAA6B,UAAU;AAC1C,MAAI,OAAO,YAAY;AACnB;AACJ,GAAC,QAAQ,QAAQ,QAAQ,MAAM,EAAE,QAAQ,aAAW;AAChD,UAAM,SAAS;AACf,QAAI,OAAO,WACP,OAAO,SACP,OAAO,OAAO,QAAQ,gBAAgB,YAAY;AAClD,aAAO,QAAQ,YAAY,QAAQ;AAAA,IACvC;AAAA,EACJ,CAAC;AACL;;;ACRA,SAAS,UAAU,MAAM;AACrB,SAAO,OAAO,SAAS;AAC3B;AACO,SAAS,MAAM,OAAOC,OAAM;AAC/B,QAAM,KAAKA,MAAK,KAAK;AACrB,QAAM,OAAO,CAAC;AACd,QAAM,QAAQ,CAAC;AACf,OAAK,SAAS,SAAS,OAAO,GAAG;AAC7B,UAAM,KAAK,CAAC;AAAA,EAChB;AACA,MAAI,cAAc;AAClB,MAAI,oBAAoB;AACxB,MAAI,iBAAiB;AACrB,OAAK,iBAAiB,SAAS,iBAAiB,OAAO,MAAM,MAAM;AAC/D,UAAM,CAAC,SAAS,OAAO,IAAI,OAAO,SAAS,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI;AAChF,QAAI,MAAM,mBAAmB,EAAE,gBAAgB,GAAG;AAC9C,0BAAoB;AAAA,IACxB;AACA,kBAAc;AACd,qBAAiB;AACjB,WAAO;AAAA,EACX;AACA,MAAI,gBAAgB;AACpB,OAAK,OAAO,SAAS,KAAK,KAAK,KAAK;AAChC,UAAM,SAAS,MAAM,mBAAmB,EAAE,kBAAkB;AAC5D,QAAI,MAAM,QAAQ;AACd,eAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AACxC,cAAMC,QAAO,MAAM;AACnB,YAAI,UAAUA,KAAI,GAAG;AACjB,cAAI;AACA,kBAAM;AAAA,mBACD;AACL,kBAAM,MAAM,GAAG;AAAA,QACvB,OACK;AACD,UAAAA,MAAK,KAAK,KAAK,IAAI;AAAA,QACvB;AAAA,MACJ;AAAA,IACJ,OACK;AACD,UAAI,MAAM,eAAe;AACrB,oBAAY,IAAI;AACpB,UAAI,CAAC,eAAe;AAChB,wBAAgB;AAChB,YAAI,gBAAgB;AAChB,gBAAM,SAAS,OAAO;AACtB,iBAAO,MAAM;AAAA,QACjB;AACA,YAAI,OAAO;AACP,iBAAO,MAAM,OAAO,GAAG;AAC3B,cAAM,6BAA6B,eAAe;AAClD,YAAI,4BAA4B;AAC5B,cAAI,OAAO;AACP,mBAAO,MAAM,EAAE;AACnB,iBAAO,MAAM,0BAA0B;AAAA,QAC3C;AAAA,MACJ;AACA,YAAM,OAAO,IAAI,OAAO,GAAG;AAC3B,UAAI,MAAM,eAAe,GAAG;AACxB,eAAO,MAAM,KAAK,CAAC;AAAA,MACvB,WACS,MAAM,mBAAmB,EAAE,iBAAiB,GAAG;AACpD,eAAO,MAAM,KAAK,GAAG,GAAG;AAAA,MAC5B,OACK;AACD,cAAM;AAAA,MACV;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,SAAS,CAAC;AACd,MAAI,gBAAgB;AACpB,OAAK,QAAQ,CAAC,KAAK,gBAAgB;AAC/B,QAAI,QAAQ,MAAM;AACd,sBAAgB;AAChB,eAAS,CAAC;AACV,aAAO;AAAA,IACX;AACA,oBAAgB;AAChB,WAAO,KAAK,CAAC,KAAK,eAAe,EAAE,CAAC;AACpC,WAAO;AAAA,EACX;AACA,OAAK,WAAW,MAAM;AAClB,WAAO;AAAA,EACX;AACA,OAAK,mBAAmB,MAAM;AAC1B,WAAO;AAAA,EACX;AACA,OAAK,yBAAyB,MAAM;AAChC,WAAO,GAAG,cAAc;AAAA,EAC5B;AACA,MAAI,WAAW,CAAC;AAChB,OAAK,UAAU,CAAC,KAAK,gBAAgB;AACjC,aAAS,KAAK,CAAC,KAAK,eAAe,EAAE,CAAC;AAAA,EAC1C;AACA,MAAI,WAAW,CAAC;AAChB,OAAK,UAAU,SAASC,SAAQ,KAAK,aAAa,WAAW,SAAS,aAAa,OAAO;AACtF,QAAI,WAAW;AACX,iBAAW,SAAS,IAAI,cAAY;AAChC,iBAAS,KAAK;AACd,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,aAAS,KAAK,CAAC,KAAK,eAAe,IAAI,WAAW,SAAS,UAAU,CAAC;AAAA,EAC1E;AACA,OAAK,cAAc,MAAM;AACzB,MAAI,eAAe,CAAC;AACpB,OAAK,WAAW,SAAS,SAAS,WAAW,MAAM;AAC/C,QAAI,MAAM,QAAQ,SAAS,GAAG;AAC1B,gBAAU,QAAQ,OAAK;AACnB,aAAK,SAAS,GAAG,IAAI;AAAA,MACzB,CAAC;AAAA,IACL,WACS,OAAO,cAAc,UAAU;AACpC,aAAO,KAAK,SAAS,EAAE,QAAQ,OAAK;AAChC,aAAK,SAAS,GAAG,UAAU,EAAE;AAAA,MACjC,CAAC;AAAA,IACL,OACK;AACD,mBAAa,aAAa;AAAA,IAC9B;AAAA,EACJ;AACA,OAAK,kBAAkB,MAAM;AAC7B,MAAI,UAAU,CAAC;AACf,OAAK,SAAS,SAAO;AACjB,YAAQ,KAAK,GAAG;AAAA,EACpB;AACA,MAAI,UAAU;AACd,MAAIC;AACJ,OAAK,OAAO,UAAQ;AAChB,cAAU;AACV,IAAAA,QAAO;AAAA,EACX;AACA,OAAK,UAAU,MAAM;AACjB,QAAIH,MAAK,OAAO,oBAAoB,GAAG;AACnC,aAAO;AAAA,IACX;AACA,QAAI,CAAC,SAAS;AACV,MAAAG,QAAO,YAAY;AACnB,gBAAU;AAAA,IACd;AACA,WAAOA;AAAA,EACX;AACA,QAAM,wBAAwB;AAC9B,OAAK,kBAAkB,SAAO,wBAAwB;AACtD,OAAK,OAAO,SAAS,OAAO;AACxB,QAAI;AACA,aAAO;AACX,qBAAiB;AACjB,UAAM,SAAS,MAAM,mBACf,MAAM,KACNH,MAAK,KAAK,SAAS,MAAM,EAAE;AACjC,UAAM,kBAAkB,MAAM,mBAAmB;AACjD,UAAM,mBAAmB,MAAM,oBAAoB;AACnD,UAAM,oBAAoB,MAAM,qBAAqB;AACrD,UAAM,SAAS,MAAM,UAAU;AAC/B,UAAM,UAAU,MAAM,WAAW;AACjC,QAAI,OAAO,CAAC;AACZ,WAAO,KAAK,OAAO,OAAO,KAAK,YAAY,CAAC;AAC5C,WAAO,KAAK,OAAO,OAAO,KAAK,eAAe,CAAC;AAC/C,WAAO,KAAK,OAAO,OAAO,KAAK,gBAAgB,CAAC;AAChD,WAAO,KAAK,OAAO,OAAO,KAAK,QAAQ,OAAO,CAAC;AAC/C,WAAO,KAAK,OAAO,mBAAmB;AACtC,WAAO,OAAO,KAAK,KAAK,OAAO,CAAC,KAAK,QAAQ;AACzC,UAAI,QAAQ;AACR,YAAI,OAAO;AACf,aAAO;AAAA,IACX,GAAG,CAAC,CAAC,CAAC;AACN,UAAM,UAAU,KAAK,QAAQ;AAC7B,UAAMI,MAAKJ,MAAK,MAAM;AAAA,MAClB,OAAO;AAAA,MACP,MAAM,CAAC,CAAC;AAAA,IACZ,CAAC;AACD,QAAI,CAAC,eAAe;AAChB,UAAI,OAAO,QAAQ;AACf,eAAO,QAAQ,CAAAK,WAAS;AACpB,UAAAD,IAAG,IAAI,EAAE,MAAM,GAAGC,OAAM,GAAG,QAAQ,QAAQ,MAAM,IAAI,CAAC;AACtD,cAAIA,OAAM,IAAI;AACV,YAAAD,IAAG,IAAI,EAAE,MAAM,GAAGC,OAAM,MAAM,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;AAAA,UACzD;AAAA,QACJ,CAAC;AACD,QAAAD,IAAG,IAAI;AAAA,MACX,WACS,SAAS,QAAQ;AACtB,YAAI,IAAI;AACR,YAAI,iBAAiB,GAAG;AACpB,cAAI,GAAG,WAAW,GAAG,SAAS;AAAA;AAAA,QAClC,OACK;AACD,cAAI,GAAG,WAAW,GAAG,SAAS;AAAA;AAAA,QAClC;AACA,QAAAA,IAAG,IAAI,GAAG,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,QAAI,SAAS,SAAS,KAAM,SAAS,WAAW,KAAK,CAAC,SAAS,GAAG,IAAK;AACnE,MAAAA,IAAG,IAAI,GAAG,WAAW,CAAC;AACtB,YAAM,UAAU,MAAM,mBAAmB,EAAE,WAAW;AACtD,YAAM,iBAAiB,QAAQ,SAAS,SAClC,GAAG,QAAQ,SAAS,KAAK,GAAG,OAC5B;AACN,UAAI,MAAM,mBAAmB,EAAE,uBAAuB,EAAE,qBACpD,MAAM;AACN,mBAAW,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AAAA,MAC/D;AACA,YAAM,SAAS,SAAS,GAAG,YAAY;AACvC,eAAS,QAAQ,CAAAF,aAAW;AACxB,cAAM,gBAAgB,GAAG,SAAS,iBAAiBA,SAAQ,GAAG,QAAQ,UAAU,EAAE;AAClF,QAAAE,IAAG,KAAK;AAAA,UACJ,MAAM;AAAA,UACN,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,UACpB,OAAO,SAAS,UAAU,SAAS,GAAG,SAAS,gBAAgB,IAAI;AAAA,QACvE,GAAG,EAAE,MAAMF,SAAQ,GAAG,CAAC;AACvB,cAAM,QAAQ,CAAC;AACf,YAAIA,SAAQ;AACR,gBAAM,KAAK,IAAI,GAAG,SAAS,IAAI;AACnC,YAAIA,SAAQ,MAAMA,SAAQ,GAAG,QAAQ;AACjC,gBAAM,KAAK,IAAI,GAAG,UAAU,KAAKA,SAAQ,GAAG,KAAK,IAAI,IAAI;AAAA,QAC7D;AACA,YAAIA,SAAQ,IAAI;AACZ,cAAI,OAAOA,SAAQ,OAAO,UAAU;AAChC,kBAAM,KAAK,IAAI,GAAG,kBAAkBA,SAAQ,EAAE,IAAI;AAAA,UACtD,OACK;AACD,kBAAM,KAAK,IAAI,GAAG,YAAY,IAAI;AAAA,UACtC;AAAA,QACJ;AACA,YAAI,MAAM,QAAQ;AACd,UAAAE,IAAG,IAAI;AAAA,YACH,MAAM,MAAM,KAAK,GAAG;AAAA,YACpB,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,YACpB,OAAO;AAAA,UACX,CAAC;AAAA,QACL,OACK;AACD,UAAAA,IAAG,IAAI;AAAA,QACX;AAAA,MACJ,CAAC;AACD,MAAAA,IAAG,IAAI;AAAA,IACX;AACA,UAAM,aAAa,OAAO,KAAK,QAAQ,KAAK,KAAK,CAAC,GAAG,OAAO,OAAO,KAAK,MAAM,OAAO,UAAU,KAAK,CAAC,CAAC;AACtG,WAAO,KAAK,OAAO,SAAO,CAAC,MAAM,OAAO,WAAW,QAC/C,UAAU,MAAM,CAAAE,YAAU,QAAQ,MAAMA,WAAU,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;AAC9E,UAAM,eAAe,GAAG,UAAU;AAClC,QAAI,CAAC,OAAO;AACR,aAAO,gBAAgB,CAAC;AAC5B,qBAAiB,MAAM,QAAQ,OAAO,QAAQ,YAAY;AAC1D,UAAM,eAAe,CAAC,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;AACnD,UAAM,kBAAkB,OAAO,KAAK,MAAM,EACrC,OAAO,eAAa,OAAO,WAAW,SAAS,CAAC,EAChD,IAAI,eAAa;AAClB,YAAM,iBAAiB,OAAO,WACzB,OAAO,mBAAmB,EAC1B,IAAI,SAAO;AACZ,YAAI,UAAU,SAAS,GAAG;AACtB,iBAAO;AACX,iBAAS,IAAI,GAAG,WAAW,WAAW,UAAU,QAAQ,QAAW,KAAK;AACpE,eAAK,QAAQ,MAAM,aAAa,CAAC,GAAG,SAAS,GAAG;AAC5C,mBAAO;AAAA,QACf;AACA,eAAO;AAAA,MACX,CAAC;AACD,aAAO,EAAE,WAAW,eAAe;AAAA,IACvC,CAAC,EACI,OAAO,CAAC,EAAE,eAAe,MAAM,eAAe,SAAS,CAAC,EACxD,IAAI,CAAC,EAAE,WAAW,eAAe,MAAM;AACxC,YAAM,WAAW,eAAe,OAAO,CAAC,KAAK,QAAQ;AACjD,YAAI,OAAO,CAAC,GAAG,EACV,OAAO,QAAQ,MAAM,QAAQ,CAAC,CAAC,EAC/B,IAAI,QAAM;AACX,cAAI,cAAc,KAAK,uBAAuB;AAC1C,mBAAO;AAAA,eACN;AACD,oBAAS,UAAU,KAAK,EAAE,IACpB,QAAQ,QAAQ,SAAS,GAAG,IACxB,MACA,OACJ,GAAG,SAAS,IACR,OACA,OAAO;AAAA,UACrB;AAAA,QACJ,CAAC,EACI,KAAK,CAAC,KAAK,QAAQ,aAAa,GAAG,MAAM,aAAa,GAAG,IACxD,IACA,aAAa,GAAG,IACZ,IACA,EAAE,EACP,KAAK,IAAI;AACd,eAAO;AAAA,MACX,GAAG,CAAC,CAAC;AACL,aAAO,EAAE,WAAW,gBAAgB,SAAS;AAAA,IACjD,CAAC;AACD,UAAM,oBAAoB,gBACrB,OAAO,CAAC,EAAE,UAAU,MAAM,cAAc,KAAK,uBAAuB,CAAC,EACrE,KAAK,CAAC,EAAE,gBAAgB,SAAS,MAAM,CAAC,eAAe,MAAM,SAAO,aAAa,SAAS,IAAI,CAAC,CAAC;AACrG,QAAI,mBAAmB;AACnB,sBACK,OAAO,CAAC,EAAE,UAAU,MAAM,cAAc,KAAK,uBAAuB,CAAC,EACrE,QAAQ,CAAC,EAAE,gBAAgB,SAAS,MAAM;AAC3C,uBAAe,QAAQ,SAAO;AAC1B,cAAI,aAAa,SAAS,IAAI,GAAG;AAC7B,qBAAS,OAAO,eAAe,SAAS,MAAM,OAAO,MAAM;AAAA,UAC/D;AAAA,QACJ,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AACA,oBAAgB,QAAQ,CAAC,EAAE,WAAW,gBAAgB,SAAS,MAAM;AACjE,MAAAF,IAAG,IAAI,SAAS;AAChB,qBAAe,QAAQ,SAAO;AAC1B,cAAM,UAAU,SAAS;AACzB,YAAI,OAAO,aAAa,QAAQ;AAChC,YAAI,OAAO;AACX,YAAI,KAAK,SAAS,qBAAqB;AACnC,iBAAO,GAAG,KAAK,UAAU,sBAAsB,MAAM,CAAC;AAC1D,YAAI,QAAQ,QAAQ,SAAS,GAAG;AAC5B,iBAAO,IAAI,GAAG,SAAS;AAC3B,YAAI,QAAQ,MAAM,SAAS,GAAG;AAC1B,iBAAO,IAAI,GAAG,OAAO;AACzB,YAAI,QAAQ,OAAO,SAAS,GAAG;AAC3B,iBAAO,IAAI,GAAG,QAAQ;AAC1B,YAAI,QAAQ,UAAU,SAAS,GAAG;AAC9B,iBAAO,IAAI,GAAG,QAAQ;AAC1B,YAAI,QAAQ,MAAM,SAAS,GAAG;AAC1B,iBAAO,IAAI,GAAG,OAAO;AACzB,YAAI,QAAQ,OAAO,SAAS,GAAG;AAC3B,iBAAO,IAAI,GAAG,QAAQ;AAC1B,cAAM,kBAAkB,CAAC,eAAe,OAAO,eAAe,WACxD,IAAI,GAAG,kBAAkB,UAAU,OACnC,IAAI,GAAG,YAAY;AACzB,cAAM,QAAQ;AAAA,UACV,OAAO,oBACD,gBAAgB,kBAAkB,IAAI,IACtC;AAAA,UACN;AAAA,UACA,OAAO,kBAAkB,IAAI,GAAG,UAAU,OAAO;AAAA,UACjD,QAAQ,WAAW,QAAQ,QAAQ,OAC7B,IAAI,GAAG,UAAU,KAAK,KAAK,kBAAkB,QAAQ,QAAQ,IAAI,OACjE;AAAA,UACN,cAAc,QAAQ,QAAQ,MAAM,QAAQ,mBAAmB,IAAI;AAAA,QACvE,EACK,OAAO,OAAO,EACd,KAAK,GAAG;AACb,QAAAA,IAAG,KAAK;AAAA,UACJ,MAAM,QAAQ,OAAO;AAAA,UACrB,SAAS,CAAC,GAAG,GAAG,GAAG,IAAI,eAAe,OAAO,CAAC;AAAA,UAC9C,OAAO,SAAS,UAAU,OAAO,IAAI;AAAA,QACzC,GAAG,IAAI;AACP,cAAM,yBAAyB,MAAM,mBAAmB,EAAE,sBAAsB,EAAE,kBAC9E;AACJ,YAAI,SAAS,CAAC;AACV,UAAAA,IAAG,IAAI,EAAE,MAAM,OAAO,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO,QAAQ,CAAC;AAAA;AAE7D,UAAAA,IAAG,IAAI;AAAA,MACf,CAAC;AACD,MAAAA,IAAG,IAAI;AAAA,IACX,CAAC;AACD,QAAI,SAAS,QAAQ;AACjB,MAAAA,IAAG,IAAI,GAAG,WAAW,CAAC;AACtB,eAAS,QAAQ,aAAW;AACxB,gBAAQ,KAAK,QAAQ,GAAG,QAAQ,QAAQ,MAAM;AAAA,MAClD,CAAC;AACD,eAAS,QAAQ,aAAW;AACxB,YAAI,QAAQ,OAAO,IAAI;AACnB,UAAAA,IAAG,IAAI;AAAA,YACH,MAAM,QAAQ;AAAA,YACd,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,UACxB,CAAC;AAAA,QACL,OACK;AACD,UAAAA,IAAG,IAAI;AAAA,YACH,MAAM,QAAQ;AAAA,YACd,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,YACpB,OAAO,SAAS,UAAU,OAAO,IAAI;AAAA,UACzC,GAAG;AAAA,YACC,MAAM,QAAQ;AAAA,UAClB,CAAC;AAAA,QACL;AAAA,MACJ,CAAC;AACD,MAAAA,IAAG,IAAI;AAAA,IACX;AACA,QAAI,QAAQ,SAAS,GAAG;AACpB,YAAM,IAAI,QACL,IAAI,YAAU,OAAO,QAAQ,QAAQ,MAAM,CAAC,EAC5C,KAAK,IAAI;AACd,MAAAA,IAAG,IAAI,GAAG;AAAA,CAAK;AAAA,IACnB;AACA,WAAOA,IAAG,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAAA,EAC3C;AACA,WAAS,SAAS,OAAO,SAAS,UAAU;AACxC,QAAI,QAAQ;AACZ,QAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,cAAQ,OAAO,OAAO,KAAK,EAAE,IAAI,OAAK,CAAC,CAAC,CAAC;AAAA,IAC7C;AACA,UAAM,QAAQ,OAAK;AACf,cAAQ,KAAK,IAAIJ,MAAK,YAAY,WAAW,GAAG,YAAY,QAAQ,EAAE,EAAE,MAAM,QAAQ,EAAE,EAAE,CAAC,IAAI,eAAe,EAAE,EAAE,GAAG,KAAK;AAAA,IAC9H,CAAC;AACD,QAAI;AACA,cAAQ,KAAK,IAAI,OAAO,UAAU,UAAU,KAAK,SAAS,GAAG,EAAE,CAAC;AACpE,WAAO;AAAA,EACX;AACA,WAAS,mBAAmB;AACxB,UAAM,kBAAkB,MAAM,mBAAmB;AACjD,UAAM,UAAU,MAAM,WAAW;AACjC,KAAC,OAAO,KAAK,QAAQ,KAAK,KAAK,CAAC,GAAG,QAAQ,SAAO;AAC9C,cAAQ,MAAM,KAAK,QAAQ,CAAAM,WAAS;AAChC,YAAI,aAAaA;AACb,eAAK,SAAS,KAAK,aAAaA,OAAM;AAC1C,YAAIA,UAAS;AACT,gBAAM,aAAa,KAAK,gBAAgBA,OAAM;AAClD,YAAI,QAAQ,QAAQ,SAASA,MAAK;AAC9B,gBAAM,QAAQ,GAAG;AACrB,YAAI,QAAQ,MAAM,SAASA,MAAK;AAC5B,gBAAM,MAAM,GAAG;AACnB,YAAI,QAAQ,OAAO,SAASA,MAAK;AAC7B,gBAAM,OAAO,GAAG;AACpB,YAAI,QAAQ,UAAU,SAASA,MAAK;AAChC,gBAAM,UAAU,GAAG;AACvB,YAAI,QAAQ,MAAM,SAASA,MAAK;AAC5B,gBAAM,MAAM,GAAG;AACnB,YAAI,QAAQ,OAAO,SAASA,MAAK;AAC7B,gBAAM,OAAO,GAAG;AAAA,MACxB,CAAC;AAAA,IACL,CAAC;AAAA,EACL;AACA,MAAI;AACJ,OAAK,mBAAmB,WAAY;AAChC,wBAAoB,KAAK,KAAK;AAAA,EAClC;AACA,OAAK,yBAAyB,WAAY;AACtC,wBAAoB;AAAA,EACxB;AACA,OAAK,uBAAuB,WAAY;AACpC,WAAO,CAAC,CAAC;AAAA,EACb;AACA,WAAS,iBAAiB,MAAM,SAAS,QAAQ,cAAc;AAC3D,QAAI,cAAc,CAAC;AACnB,QAAI,UAAU;AACd,WAAO,KAAK,MAAM,EAAE,QAAQ,WAAS;AACjC,oBAAc,YAAY,OAAO,OAAO,MAAM;AAAA,IAClD,CAAC;AACD,SAAK,QAAQ,SAAO;AAChB,gBAAU,CAAC,GAAG,EAAE,OAAO,QAAQ,IAAI;AACnC,UAAI,CAAC,QAAQ,KAAK,OAAK,YAAY,QAAQ,CAAC,MAAM,EAAE,GAAG;AACnD,eAAO,cAAc,KAAK,GAAG;AAAA,MACjC;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACA,WAAS,oBAAoB,KAAK;AAC9B,WAAQ,MAAM,WAAW,EAAE,cAAc,QAAQ,GAAG,IAAI,KACpD,MAAM,OAAO,KAAK,MAAM,WAAW,EAAE;AAAA,EAC7C;AACA,OAAK,WAAW,CAAC,UAAU;AACvB,UAAM,SAAS,MAAM,mBAAmB,EAAE,kBAAkB;AAC5D,QAAI,CAAC;AACD,cAAQ;AACZ,UAAM,OAAO,OAAO,UAAU,aAAa,QAAQ,OAAO;AAC1D,SAAK,KAAK,KAAK,CAAC;AAAA,EACpB;AACA,OAAK,sBAAsB,QAAM;AAC7B,UAAM,cAAc,GAAG,OACjBN,MAAK,OAAO,WAAW,GAAG,MAAM,GAAG,IACnC,GAAG,iBAAiB;AAC1B,WAAO,CAAC,KAAK,aAAa,GAAG,EAAE,KAAK,EAAE;AAAA,EAC1C;AACA,OAAK,oBAAoB,SAAS,kBAAkB,QAAQ,WAAW;AACnE,QAAI,SAAS;AACb,UAAMO,OAAM,aAAa;AACzB,UAAM,QAAQ,CAAC,EAAE,OAAO,MAAM;AAC9B,QAAI,CAAC,UAAU,CAAC,MAAM;AAClB,aAAO;AACX,UAAM,QAAQ,WAAS;AACnB,UAAI,OAAO;AACP,kBAAUA;AACd,gBAAU,KAAK,UAAU,KAAK;AAAA,IAClC,CAAC;AACD,WAAO;AAAA,EACX;AACA,WAAS,cAAc,OAAO,oBAAoB;AAC9C,QAAI,SAAS,IAAI,GAAG,UAAU;AAC9B,QAAI,UAAU,UAAa,CAAC;AACxB,aAAO;AACX,QAAI,oBAAoB;AACpB,gBAAU;AAAA,IACd,OACK;AACD,cAAQ,OAAO,OAAO;AAAA,QAClB,KAAK;AACD,oBAAU,IAAI;AACd;AAAA,QACJ,KAAK;AACD,oBAAU,KAAK,UAAU,KAAK;AAC9B;AAAA,QACJ;AACI,oBAAU;AAAA,MAClB;AAAA,IACJ;AACA,WAAO,GAAG;AAAA,EACd;AACA,WAAS,cAAc;AACnB,UAAMC,YAAW;AACjB,QAAIR,MAAK,QAAQ,YAAY;AACzB,aAAO,KAAK,IAAIQ,WAAUR,MAAK,QAAQ,UAAU;AAAA,IACrD,OACK;AACD,aAAOQ;AAAA,IACX;AAAA,EACJ;AACA,MAAI,UAAU;AACd,OAAK,UAAU,SAAO;AAClB,cAAU;AAAA,EACd;AACA,OAAK,cAAc,WAAS;AACxB,UAAM,SAAS,MAAM,mBAAmB,EAAE,kBAAkB;AAC5D,QAAI,CAAC;AACD,cAAQ;AACZ,UAAM,OAAO,OAAO,UAAU,aAAa,QAAQ,OAAO;AAC1D,SAAK,OAAO;AAAA,EAChB;AACA,OAAK,QAAQ,SAAS,MAAM,aAAa;AACrC,kBAAc;AACd,oBAAgB;AAChB,aAAS,CAAC;AACV,oBAAgB;AAChB,cAAU,CAAC;AACX,eAAW,CAAC;AACZ,eAAW,CAAC;AACZ,mBAAe,UAAU,cAAc,OAAK,CAAC,YAAY,EAAE;AAC3D,WAAO;AAAA,EACX;AACA,QAAM,UAAU,CAAC;AACjB,OAAK,SAAS,SAAS,SAAS;AAC5B,YAAQ,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACA,OAAK,WAAW,SAAS,SAAS,iBAAiB,OAAO;AACtD,UAAM,SAAS,QAAQ,IAAI;AAC3B,QAAI,CAAC;AACD;AACJ,QAAI,gBAAgB;AAChB,qBAAe,EAAE,GAAG,OAAO,cAAc,GAAG,aAAa;AACzD,iBAAW,CAAC,GAAG,OAAO,UAAU,GAAG,QAAQ;AAC3C,eAAS,CAAC,GAAG,OAAO,QAAQ,GAAG,MAAM;AACrC,iBAAW,CAAC,GAAG,OAAO,UAAU,GAAG,QAAQ;AAC3C,gBAAU,CAAC,GAAG,OAAO,SAAS,GAAG,OAAO;AAAA,IAC5C,OACK;AACD,OAAC;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ,IAAI;AAAA,IACR;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,eAAe,MAAM;AAC1B,SAAO,OAAO,SAAS;AAC3B;AACA,SAAS,eAAe,MAAM,QAAQ;AAClC,SAAO,eAAe,IAAI,IACpB,EAAE,MAAM,KAAK,MAAM,aAAa,KAAK,cAAc,OAAO,IAC1D,EAAE,MAAM,aAAa,OAAO;AACtC;AACA,SAAS,eAAe,MAAM;AAC1B,SAAO,eAAe,IAAI,IAAI,KAAK,cAAc;AACrD;AACA,SAAS,QAAQ,MAAM;AACnB,SAAO,eAAe,IAAI,IAAI,KAAK,OAAO;AAC9C;;;ACvkBO,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6B7B,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACxB9B,IAAM,aAAN,MAAiB;AAAA,EACpB,YAAY,OAAOC,QAAOC,UAASC,OAAM;AACrC,QAAIC,KAAIC,KAAIC;AACZ,SAAK,QAAQ;AACb,SAAK,QAAQL;AACb,SAAK,UAAUC;AACf,SAAK,OAAOC;AACZ,SAAK,gBAAgB;AACrB,SAAK,UAAU;AACf,SAAK,2BAA2B;AAChC,SAAK,sBAAsB;AAC3B,SAAK,YACAG,QAAQF,MAAK,KAAK,KAAK,OAAO,OAAO,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,SAAS,KAAK,QACzFC,MAAK,KAAK,KAAK,OAAO,UAAU,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,SAAS,KAAK,QAAS,QAAQC,QAAO,SAASA,MAAK;AAAA,EAC7I;AAAA,EACA,kBAAkB,MAAM,MAAM,SAAS,MAAM;AACzC,UAAM,WAAW,KAAK,QAAQ,mBAAmB;AACjD,aAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,IAAI,EAAE,GAAG;AAC3C,UAAI,SAAS,KAAK,OAAO,SAAS,KAAK,IAAI,SAAS;AAChD,cAAMC,YAAU,SAAS,KAAK,IAAI;AAClC,YAAI,yBAAyBA,SAAO,GAAG;AACnC,eAAK,sBAAsB,IAAI;AAC/B,gBAAM,IAAI,KAAK,MAAM,mBAAmB,EAAE,MAAM;AAChD,UAAAA,UAAQ,GAAG,IAAI;AACf,iBAAO,EAAE;AAAA,QACb;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,cAAc,CAAC;AACrB,SAAK,mBAAmB,aAAa,MAAM,OAAO;AAClD,SAAK,kBAAkB,aAAa,MAAM,MAAM,OAAO;AACvD,SAAK,8BAA8B,aAAa,MAAM,MAAM,OAAO;AACnE,SAAK,kCAAkC,aAAa,MAAM,MAAM,OAAO;AACvE,SAAK,MAAM,WAAW;AAAA,EAC1B;AAAA,EACA,mBAAmB,aAAa,MAAM,SAAS;AAC3C,UAAM,iBAAiB,KAAK,MACvB,mBAAmB,EACnB,WAAW,EAAE;AAClB,QAAI,CAAC,QAAQ,MAAM,IAAI,KACnB,eAAe,eAAe,SAAS,OAAO,WAC9C,CAAC,KAAK,sBAAsB,IAAI,GAAG;AACnC,WAAK,MAAM,YAAY,EAAE,QAAQ,kBAAgB;AAC7C,cAAM,cAAc,aAAa,aAAa,EAAE,EAAE;AAClD,YAAI,KAAK,QAAQ,WAAW,MAAM,IAAI;AAClC,cAAI,CAAC,KAAK,UAAU;AAChB,wBAAY,KAAK,WAAW;AAAA,UAChC,OACK;AACD,kBAAM,OAAO,aAAa,MAAM;AAChC,wBAAY,KAAK,YAAY,QAAQ,MAAM,KAAK,IAAI,MAAM,IAAI;AAAA,UAClE;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EACA,kBAAkB,aAAa,MAAM,MAAM,SAAS;AAChD,SAAK,QAAQ,MAAM,IAAI,KAAM,YAAY,MAAM,YAAY,WAAW,MAClE,CAAC,KAAK,sBAAsB,IAAI,GAAG;AACnC,YAAM,UAAU,KAAK,MAAM,WAAW;AACtC,YAAM,iBAAiB,KAAK,MAAM,UAAU,EAAE,KAAK,MAAM,uBAAuB,MAAM,CAAC;AACvF,aAAO,KAAK,QAAQ,GAAG,EAAE,QAAQ,SAAO;AACpC,cAAM,UAAU,CAAC,CAAC,QAAQ,cAAc,uBACpC,QAAQ,QAAQ,SAAS,GAAG;AAChC,cAAM,kBAAkB,eAAe,SAAS,GAAG;AACnD,YAAI,CAAC,mBACD,CAAC,QAAQ,cAAc,SAAS,GAAG,KACnC,CAAC,KAAK,eAAe,MAAM,KAAK,OAAO,GAAG;AAC1C,eAAK,kBAAkB,KAAK,aAAa,SAAS,WAAW,CAAC,CAAC,QAAQ,QAAQ,IAAI;AAAA,QACvF;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EACA,8BAA8B,aAAa,MAAM,MAAM,SAAS;AAC5D,QAAI,KAAK,sBAAsB,IAAI,GAAG;AAClC,YAAM,UAAU,KAAK,sBAAsB,IAAI;AAC/C,UAAI,WAAW,QAAQ,SAAS,GAAG;AAC/B,oBAAY,KAAK,GAAG,QAAQ,IAAI,OAAK,EAAE,QAAQ,MAAM,KAAK,CAAC,CAAC;AAAA,MAChE;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,kCAAkC,aAAa,MAAM,MAAM,SAAS;AAChE,QAAI,YAAY,MACZ,YAAY,SAAS,KACrB,KAAK,sBAAsB,IAAI,GAAG;AAClC;AAAA,IACJ;AACA,UAAM,iBAAiB,KAAK,MAAM,UAAU,EAAE,KAAK,MAAM,uBAAuB,MAAM,CAAC;AACvF,UAAM,SAAS,KAAK,IAAI,KAAK,qBAAqB,KAAK,MAAM,mBAAmB,EAAE,WAAW,EAAE,SAAS,SACpG,CAAC;AACL,UAAM,gBAAgB,eAAe,KAAK,EAAE,SAAS,SAAS;AAC9D,QAAI,CAAC,eAAe;AAChB;AAAA,IACJ;AACA,UAAM,UAAU,KAAK,MAAM,WAAW,EAAE,QAAQ,kBAAkB,CAAC;AACnE,eAAW,UAAU,SAAS;AAC1B,UAAI,OAAO,WAAW,OAAO,GAAG;AAC5B,oBAAY,KAAK,OAAO,QAAQ,MAAM,KAAK,CAAC;AAAA,MAChD;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,sBAAsB,MAAM;AACxB,QAAI,KAAK,SAAS;AACd;AACJ,QAAI,cAAc,KAAK,KAAK,SAAS;AACrC,QAAIC,UAAS;AACb,QAAI,CAAC,YAAY,WAAW,GAAG,KAAK,KAAK,SAAS,GAAG;AACjD,MAAAA,UAAS;AACT,oBAAc,KAAK,KAAK,SAAS;AAAA,IACrC;AACA,QAAI,CAAC,YAAY,WAAW,GAAG;AAC3B;AACJ,UAAM,iBAAiB,YAAY,QAAQ,OAAO,EAAE;AACpD,UAAM,UAAU,KAAK,MAAM,WAAW;AACtC,UAAM,kBAAkB;AAAA,MACpB;AAAA,MACA,GAAI,KAAK,MAAM,WAAW,EAAE,mBAAmB,CAAC;AAAA,IACpD;AACA,QAAI;AACJ,eAAW,iBAAiB,iBAAiB;AACzC,UAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,KAAK,aAAa,KAC/D,MAAM,QAAQ,QAAQ,QAAQ,cAAc,GAAG;AAC/C,kBAAU,QAAQ,QAAQ;AAC1B;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,SAAS;AACT,aAAO,QAAQ,OAAO,YAAU,CAACA,WAAU,OAAO,WAAWA,OAAM,CAAC;AAAA,IACxE;AAAA,EACJ;AAAA,EACA,sBAAsB,MAAM;AACxB,UAAM,UAAU,KAAK,sBAAsB,IAAI;AAC/C,WAAO,YAAY,UAAa,QAAQ,SAAS;AAAA,EACrD;AAAA,EACA,eAAe,MAAM,KAAK,SAAS;AAC/B,UAAM,eAAe,CAAC,MAAM,KAAK,SAAS,WAAW,KAAK,CAAC,IAAI,MAAM,QAAQ,CAAC,MAAM;AACpF,QAAI,aAAa,GAAG;AAChB,aAAO;AACX,QAAI,WAAW,aAAa,MAAM,KAAK;AACnC,aAAO;AACX,QAAI,KAAK,SAAS;AACd,iBAAWC,UAAS,KAAK,QAAQ,MAAM;AACnC,YAAI,aAAaA,MAAK;AAClB,iBAAO;AAAA,MACf;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,kBAAkB,KAAK,aAAa,SAAS,SAAS;AAClD,QAAIL,KAAIC,KAAIC,KAAI;AAChB,QAAI,cAAc;AAClB,QAAI,KAAK,UAAU;AACf,YAAM,QAAQ,KAAK,MAAM,gBAAgB;AACzC,YAAM,YAAYD,OAAMD,MAAK,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,UAAU,QAAQC,QAAO,SAAS,SAASA,IAAG,KAAK,CAAAI,WAAS;AACvL,cAAMC,QAAO,MAAMD;AACnB,eAAO,OAAOC,UAAS,YAAYA,MAAK,SAAS;AAAA,MACrD,CAAC;AACD,YAAM,gBAAgB,WAAW,MAAM,YAAY;AACnD,YAAM,QAAQ,MAAMJ,MAAK,MAAM,UAAU,QAAQA,QAAO,SAASA,MAAK,mBAAmB,QAAQ,OAAO,SAAS,KAAK;AACtH,oBAAc,GAAG,IAAI,QAAQ,MAAM,KAAK,KAAK,KACxC,QAAQ,oBAAoB,EAAE,EAC9B,QAAQ,kBAAkB,GAAG;AAAA,IACtC;AACA,UAAM,oBAAoB,CAAC,MAAM,MAAM,KAAK,CAAC;AAC7C,UAAM,gBAAgB,CAAC,MAAM,WAAW,KAAK,CAAC;AAC9C,UAAM,SAAS,CAAC,kBAAkB,OAAO,KAAK,cAAc,GAAG,IAAI,MAAM;AACzE,gBAAY,KAAK,SAAS,WAAW;AACrC,QAAI,SAAS;AACT,kBAAY,KAAK,SAAS,QAAQ,WAAW;AAAA,IACjD;AAAA,EACJ;AAAA,EACA,iBAAiB,MAAM,MAAM,SAAS,MAAM;AACxC,yBAAqB,KAAK,0BAA0B,MAAM,KAAK,IAAI;AACnE,QAAI,yBAAyB,KAAK,wBAAwB,GAAG;AACzD,YAAM,SAAS,KAAK,yBAAyB,SAAS,IAAI;AAC1D,UAAI,UAAU,MAAM,GAAG;AACnB,eAAO,OACF,KAAK,UAAQ;AACd,eAAK,KAAK,QAAQ,SAAS,MAAM;AAC7B,iBAAK,MAAM,IAAI;AAAA,UACnB,CAAC;AAAA,QACL,CAAC,EACI,MAAM,SAAO;AACd,eAAK,KAAK,QAAQ,SAAS,MAAM;AAC7B,iBAAK,KAAK,MAAS;AAAA,UACvB,CAAC;AAAA,QACL,CAAC;AAAA,MACL;AACA,aAAO,KAAK,MAAM,MAAM;AAAA,IAC5B,WACS,6BAA6B,KAAK,wBAAwB,GAAG;AAClE,aAAO,KAAK,yBAAyB,SAAS,MAAM,CAAC,cAAc,SAAS,KAAK,kBAAkB,MAAM,MAAM,SAAS,WAAW,GAAG,iBAAe;AACjJ,aAAK,MAAM,WAAW;AAAA,MAC1B,CAAC;AAAA,IACL,OACK;AACD,aAAO,KAAK,yBAAyB,SAAS,MAAM,iBAAe;AAC/D,aAAK,MAAM,WAAW;AAAA,MAC1B,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EACA,cAAc,MAAM,MAAM;AACtB,UAAM,UAAU,KAAK,SAAS,KAAK,KAAK,SAAS,KAAK;AACtD,UAAM,OAAO,KAAK,MAAM,MAAM,MAAM,IAAI;AACxC,UAAM,qBAAqB,KAAK,2BAC1B,CAACK,UAAS,KAAK,iBAAiB,MAAMA,OAAM,SAAS,IAAI,IACzD,CAACA,UAAS,KAAK,kBAAkB,MAAMA,OAAM,SAAS,IAAI;AAChE,WAAO,UAAU,IAAI,IACf,KAAK,KAAK,kBAAkB,IAC5B,mBAAmB,IAAI;AAAA,EACjC;AAAA,EACA,yBAAyB,IAAI,KAAK;AAC9B,QAAI,SAAS,KAAK,WACF,wBACA;AAChB,UAAM,OAAO,KAAK,KAAK,KAAK,SAAS,EAAE;AACvC,QAAI,GAAG,MAAM,OAAO;AAChB,WAAK,KAAK;AACd,aAAS,OAAO,QAAQ,iBAAiB,IAAI;AAC7C,aAAS,OAAO,QAAQ,2BAA2B,GAAG;AACtD,WAAO,OAAO,QAAQ,iBAAiB,EAAE;AAAA,EAC7C;AAAA,EACA,iBAAiB,IAAI;AACjB,SAAK,2BAA2B;AAAA,EACpC;AAAA,EACA,UAAU,QAAQ;AACd,SAAK,UAAU,OAAO;AAAA,EAC1B;AACJ;AACO,SAAS,WAAW,OAAOV,QAAOC,UAASC,OAAM;AACpD,SAAO,IAAI,WAAW,OAAOF,QAAOC,UAASC,KAAI;AACrD;AACA,SAAS,yBAAyB,oBAAoB;AAClD,SAAO,mBAAmB,SAAS;AACvC;AACA,SAAS,6BAA6B,oBAAoB;AACtD,SAAO,mBAAmB,SAAS;AACvC;;;AClPO,SAAS,YAAY,GAAG,GAAG;AAC9B,MAAI,EAAE,WAAW;AACb,WAAO,EAAE;AACb,MAAI,EAAE,WAAW;AACb,WAAO,EAAE;AACb,QAAM,SAAS,CAAC;AAChB,MAAI;AACJ,OAAK,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAC5B,WAAO,KAAK,CAAC,CAAC;AAAA,EAClB;AACA,MAAI;AACJ,OAAK,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAC5B,WAAO,GAAG,KAAK;AAAA,EACnB;AACA,OAAK,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAC5B,SAAK,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAC5B,UAAI,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG;AACrC,eAAO,GAAG,KAAK,OAAO,IAAI,GAAG,IAAI;AAAA,MACrC,OACK;AACD,YAAI,IAAI,KACJ,IAAI,KACJ,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAClC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG;AACrC,iBAAO,GAAG,KAAK,OAAO,IAAI,GAAG,IAAI,KAAK;AAAA,QAC1C,OACK;AACD,iBAAO,GAAG,KAAK,KAAK,IAAI,OAAO,IAAI,GAAG,IAAI,KAAK,GAAG,KAAK,IAAI,OAAO,GAAG,IAAI,KAAK,GAAG,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC;AAAA,QAC1G;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,OAAO,EAAE,QAAQ,EAAE;AAC9B;;;AC7BA,IAAM,cAAc,CAAC,MAAM,MAAM,GAAG;AAC7B,SAAS,WAAW,OAAOS,QAAOC,OAAM;AAC3C,QAAM,KAAKA,MAAK,KAAK;AACrB,QAAM,MAAMA,MAAK,KAAK;AACtB,QAAM,OAAO,CAAC;AACd,OAAK,iBAAiB,SAAS,eAAe,MAAM;AAChD,UAAM,mBAAmB,MAAM,oBAAoB;AACnD,UAAM,kBAAkB,KAAK,EAAE,UAAU,KAAK,QAAQ,KAAK,MAAM,SAAS;AAC1E,UAAM,KAAK,kBAAkB,MAAM,mBAAmB,EAAE,WAAW,EAAE,SAAS;AAC9E,QAAI,iBAAiB,MAChB,KAAK,iBAAiB,EAAE,OAAO,KAAK,iBAAiB,EAAE,MAAM;AAC9D,UAAI,KAAK,iBAAiB,EAAE,KAAK;AAC7B,YAAI,iBAAiB,EAAE,WAAW,QAAW;AACzC,UAAAD,OAAM,KAAK,iBAAiB,EAAE,SACxB,iBAAiB,EAAE,OAChB,QAAQ,QAAQ,GAAG,SAAS,CAAC,EAC7B,QAAQ,OAAO,iBAAiB,EAAE,IAAI,SAAS,CAAC,IACnD,IAAI;AAAA,QACd,OACK;AACD,UAAAA,OAAM,KAAK,IAAI,6DAA6D,6DAA6D,IAAI,GAAG,SAAS,GAAG,iBAAiB,EAAE,IAAI,SAAS,CAAC,CAAC;AAAA,QAClM;AAAA,MACJ,WACS,KAAK,iBAAiB,EAAE,KAAK;AAClC,YAAI,iBAAiB,EAAE,WAAW,QAAW;AACzC,UAAAA,OAAM,KAAK,iBAAiB,EAAE,SACxB,iBAAiB,EAAE,OAChB,QAAQ,QAAQ,GAAG,SAAS,CAAC,EAC7B,QAAQ,OAAO,iBAAiB,EAAE,IAAI,SAAS,CAAC,IACnD,IAAI;AAAA,QACd,OACK;AACD,UAAAA,OAAM,KAAK,IAAI,wDAAwD,wDAAwD,IAAI,GAAG,SAAS,GAAG,iBAAiB,EAAE,IAAI,SAAS,CAAC,CAAC;AAAA,QACxL;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,OAAK,kBAAkB,SAAS,gBAAgB,UAAU,UAAU;AAChE,QAAI,WAAW,UAAU;AACrB,MAAAA,OAAM,KAAK,IAAI,6DAA6D,6DAA6D,UAAU,WAAW,IAAI,WAAW,EAAE,CAAC;AAAA,IACpL;AAAA,EACJ;AACA,OAAK,oBAAoB,SAAS,kBAAkB,MAAM,iBAAiB;AACvE,QAAI,UAAU;AACd,eAAW,OAAO,OAAO,KAAK,eAAe,GAAG;AAC5C,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,GAAG,KAC/C,OAAO,KAAK,SAAS,aAAa;AAClC,kBAAU,WAAW,CAAC;AACtB,gBAAQ,OAAO,gBAAgB;AAAA,MACnC;AAAA,IACJ;AACA,QAAI,SAAS;AACT,YAAM,aAAa,CAAC;AACpB,iBAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AACpC,cAAM,MAAM,QAAQ;AACpB,YAAI,OAAO,WAAW,QAAQ,GAAG,IAAI,GAAG;AACpC,qBAAW,KAAK,GAAG;AAAA,QACvB;AAAA,MACJ;AACA,YAAM,YAAY,WAAW,SAAS;AAAA,EAAK,WAAW,KAAK,IAAI,MAAM;AACrE,MAAAA,OAAM,KAAK,IAAI,iCAAiC,kCAAkC,OAAO,KAAK,OAAO,EAAE,QAAQ,OAAO,KAAK,OAAO,EAAE,KAAK,IAAI,IAAI,SAAS,CAAC;AAAA,IAC/J;AAAA,EACJ;AACA,OAAK,mBAAmB,SAAS,iBAAiB,MAAM,SAAS,eAAe,kBAAkB,mBAAmB,MAAM;AACvH,QAAIE;AACJ,UAAM,cAAc,MACf,mBAAmB,EACnB,mBAAmB,EACnB,YAAY;AACjB,UAAM,UAAU,CAAC;AACjB,UAAM,iBAAiB,MAAM,mBAAmB,EAAE,WAAW;AAC7D,WAAO,KAAK,IAAI,EAAE,QAAQ,SAAO;AAC7B,UAAI,CAAC,YAAY,SAAS,GAAG,KACzB,CAAC,OAAO,UAAU,eAAe,KAAK,eAAe,GAAG,KACxD,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,mBAAmB,EAAE,gBAAgB,GAAG,GAAG,KACvF,CAAC,KAAK,4BAA4B,KAAK,OAAO,GAAG;AACjD,gBAAQ,KAAK,GAAG;AAAA,MACpB;AAAA,IACJ,CAAC;AACD,QAAI,qBACC,eAAe,SAAS,SAAS,KAC9B,YAAY,SAAS,KACrB,mBAAmB;AACvB,WAAK,EAAE,MAAM,eAAe,SAAS,MAAM,EAAE,QAAQ,SAAO;AACxD,YAAI,CAAC,YAAY,SAAS,KAAK,GAAG,GAAG;AACjC,kBAAQ,KAAK,KAAK,GAAG;AAAA,QACzB;AAAA,MACJ,CAAC;AAAA,IACL;AACA,QAAI,kBAAkB;AAClB,YAAM,mBAAmB,MAAM,oBAAoB;AACnD,YAAM,sBAAsBA,MAAK,iBAAiB,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,QAAQ;AACrG,YAAM,WAAW,eAAe,SAAS,SAAS;AAClD,UAAI,WAAW,KAAK,EAAE,QAAQ;AAC1B,aAAK,EAAE,MAAM,QAAQ,EAAE,QAAQ,SAAO;AAClC,gBAAM,OAAO,GAAG;AAChB,cAAI,CAAC,eAAe,SAAS,SAAS,GAAG,KACrC,CAAC,QAAQ,SAAS,GAAG,GAAG;AACxB,oBAAQ,KAAK,GAAG;AAAA,UACpB;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AACA,QAAI,QAAQ,QAAQ;AAChB,MAAAF,OAAM,KAAK,IAAI,wBAAwB,yBAAyB,QAAQ,QAAQ,QAAQ,IAAI,OAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAK,EAAE,KAAK,IAAI,CAAC,CAAC;AAAA,IAC3I;AAAA,EACJ;AACA,OAAK,kBAAkB,SAAS,gBAAgB,MAAM;AAClD,UAAM,cAAc,MACf,mBAAmB,EACnB,mBAAmB,EACnB,YAAY;AACjB,UAAM,UAAU,CAAC;AACjB,UAAM,iBAAiB,MAAM,mBAAmB,EAAE,WAAW;AAC7D,QAAI,eAAe,SAAS,SAAS,KAAK,YAAY,SAAS,GAAG;AAC9D,WAAK,EAAE,MAAM,eAAe,SAAS,MAAM,EAAE,QAAQ,SAAO;AACxD,YAAI,CAAC,YAAY,SAAS,KAAK,GAAG,GAAG;AACjC,kBAAQ,KAAK,KAAK,GAAG;AAAA,QACzB;AAAA,MACJ,CAAC;AAAA,IACL;AACA,QAAI,QAAQ,SAAS,GAAG;AACpB,MAAAA,OAAM,KAAK,IAAI,uBAAuB,wBAAwB,QAAQ,QAAQ,QAAQ,KAAK,IAAI,CAAC,CAAC;AACjG,aAAO;AAAA,IACX,OACK;AACD,aAAO;AAAA,IACX;AAAA,EACJ;AACA,OAAK,8BAA8B,SAAS,4BAA4B,KAAK,SAAS;AAClF,QAAI,CAAC,OAAO,UAAU,eAAe,KAAK,SAAS,GAAG,GAAG;AACrD,aAAO;AAAA,IACX;AACA,UAAM,aAAa,MAAM,OAAO;AAChC,WAAO,CAAC,KAAK,GAAG,QAAQ,IAAI,EAAE,KAAK,OAAK,CAAC,OAAO,UAAU,eAAe,KAAK,YAAY,CAAC,KAAK,CAAC,WAAW,IAAI;AAAA,EACpH;AACA,OAAK,iBAAiB,SAAS,eAAe,MAAM;AAChD,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,UAAU,CAAC;AACjB,QAAI,CAAC,OAAO,KAAK,QAAQ,OAAO,EAAE;AAC9B;AACJ,WAAO,KAAK,IAAI,EAAE,QAAQ,SAAO;AAC7B,UAAI,YAAY,QAAQ,GAAG,MAAM,MAC7B,OAAO,UAAU,eAAe,KAAK,QAAQ,SAAS,GAAG,GAAG;AAC5D,SAAC,EAAE,OAAO,KAAK,IAAI,EAAE,QAAQ,WAAS;AAClC,cAAI,QAAQ,QAAQ,KAAK,QAAQ,KAAK,MAAM,MACxC,UAAU,QAAW;AACrB,oBAAQ,QAAQ,QAAQ,QAAQ,CAAC,GAAG,OAAO,KAAK;AAAA,UACpD;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AACD,UAAM,cAAc,OAAO,KAAK,OAAO;AACvC,QAAI,CAAC,YAAY;AACb;AACJ,QAAI,MAAM,GAAG,iBAAiB;AAC9B,gBAAY,QAAQ,SAAO;AACvB,aAAO;AAAA,IAAO,GAAG,wCAAwC,KAAKA,OAAM,kBAAkB,QAAQ,IAAI,GAAGA,OAAM,kBAAkB,QAAQ,QAAQ,IAAI,CAAC;AAAA,IACtJ,CAAC;AACD,IAAAA,OAAM,KAAK,GAAG;AAAA,EAClB;AACA,MAAI,UAAU,CAAC;AACf,OAAK,UAAU,SAAS,QAAQ,KAAK,OAAO;AACxC,YAAQ,yCAAyC,CAAC,KAAK,KAAK,GAAG,UAAU,MAAM;AAC/E,QAAI,OAAO,QAAQ,UAAU;AACzB,aAAO,KAAK,GAAG,EAAE,QAAQ,OAAK;AAC1B,aAAK,QAAQ,GAAG,IAAI,EAAE;AAAA,MAC1B,CAAC;AAAA,IACL,OACK;AACD,YAAM,OAAO,GAAG;AAChB,UAAI,CAAC,QAAQ,MAAM;AACf,gBAAQ,OAAO,CAAC;AAAA,MACpB;AACA,UAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,cAAM,QAAQ,OAAK,KAAK,QAAQ,KAAK,CAAC,CAAC;AAAA,MAC3C,OACK;AACD,6BAAqB,OAAO,QAAWC,KAAI;AAC3C,gBAAQ,KAAK,KAAK,KAAK;AAAA,MAC3B;AAAA,IACJ;AAAA,EACJ;AACA,OAAK,aAAa,SAAS,aAAa;AACpC,WAAO;AAAA,EACX;AACA,WAAS,UAAU,MAAM,KAAK;AAC1B,UAAM,MAAM,OAAO,GAAG;AACtB,UAAM,MAAM,GAAG,IAAI,MAAM;AACzB,QAAI,OAAO,QAAQ,UAAU;AACzB,YAAM,KAAK,EAAE,UAAU;AAAA,IAC3B,WACS,IAAI,MAAM,UAAU,GAAG;AAC5B,YAAM,IAAI,MAAM,YAAY,EAAE;AAC9B,YAAM,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,GAAG;AAAA,IACzD,OACK;AACD,YAAM,OAAO,UAAU,eAAe,KAAK,MAAM,GAAG;AAAA,IACxD;AACA,WAAO;AAAA,EACX;AACA,OAAK,eAAe,SAAS,aAAa,MAAM;AAC5C,UAAM,YAAY,CAAC;AACnB,WAAO,KAAK,OAAO,EAAE,QAAQ,SAAO;AAChC,YAAM,UAAU;AAChB,OAAC,QAAQ,QAAQ,CAAC,GAAG,QAAQ,WAAS;AAClC,YAAIE,OAAM;AACV,cAAM,YAAY;AAClB,QAAAA,OAAM,UAAU,MAAMA,IAAG;AACzB,gBAAQ,UAAU,MAAM,KAAK;AAC7B,YAAIA,QAAO,CAAC,OAAO;AACf,oBAAU,KAAK,IAAI,cAAc,WAAW;AAAA,QAChD;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AACD,QAAI,UAAU,QAAQ;AAClB,UAAI,MAAM,GAAG,GAAG,sBAAsB;AAAA;AACtC,gBAAU,QAAQ,WAAS;AACvB,eAAO;AAAA,MACX,CAAC;AACD,MAAAH,OAAM,KAAK,GAAG;AAAA,IAClB;AAAA,EACJ;AACA,MAAI,cAAc,CAAC;AACnB,OAAK,YAAY,SAAS,UAAU,KAAK,OAAO;AAC5C,YAAQ,kCAAkC,CAAC,KAAK,KAAK,GAAG,UAAU,MAAM;AACxE,QAAI,OAAO,QAAQ,UAAU;AACzB,aAAO,KAAK,GAAG,EAAE,QAAQ,OAAK;AAC1B,aAAK,UAAU,GAAG,IAAI,EAAE;AAAA,MAC5B,CAAC;AAAA,IACL,OACK;AACD,YAAM,OAAO,GAAG;AAChB,UAAI,CAAC,YAAY,MAAM;AACnB,oBAAY,OAAO,CAAC;AAAA,MACxB;AACA,UAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,cAAM,QAAQ,OAAK,KAAK,UAAU,KAAK,CAAC,CAAC;AAAA,MAC7C,OACK;AACD,oBAAY,KAAK,KAAK,KAAK;AAAA,MAC/B;AAAA,IACJ;AAAA,EACJ;AACA,OAAK,iBAAiB,MAAM;AAC5B,OAAK,cAAc,SAAS,cAAc,MAAM;AAC5C,WAAO,KAAK,IAAI,EAAE,QAAQ,SAAO;AAC7B,UAAI,YAAY,MAAM;AAClB,oBAAY,KAAK,QAAQ,WAAS;AAC9B,cAAI,SAAS,KAAK,SAAS,UAAa,KAAK,WAAW,QAAW;AAC/D,YAAAA,OAAM,KAAK,GAAG,8CAA8C,KAAK,KAAK,CAAC;AAAA,UAC3E;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AACD,QAAI,MAAM,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB;AACrE,aAAO,KAAK,WAAW,EAAE,QAAQ,SAAO;AACpC,oBAAY,KAAK,QAAQ,WAAS;AAC9B,cAAI,SACA,KAAKC,MAAK,OAAO,UAAU,GAAG,OAAO,UACrC,KAAKA,MAAK,OAAO,UAAU,KAAK,OAAO,QAAW;AAClD,YAAAD,OAAM,KAAK,GAAG,8CAA8C,KAAK,KAAK,CAAC;AAAA,UAC3E;AAAA,QACJ,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AAAA,EACJ;AACA,OAAK,oBAAoB,SAAS,kBAAkB,KAAK,mBAAmB;AACxE,UAAM,YAAY;AAClB,wBAAoB,kBAAkB,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM;AACxE,QAAI,cAAc;AAClB,QAAI,eAAe;AACnB,aAAS,IAAI,GAAG,YAAY,YAAY,kBAAkB,QAAQ,QAAW,KAAK;AAC9E,YAAM,IAAI,YAAS,KAAK,SAAS;AACjC,UAAI,KAAK,aAAa,IAAI,cAAc;AACpC,uBAAe;AACf,sBAAc;AAAA,MAClB;AAAA,IACJ;AACA,QAAI;AACA,MAAAA,OAAM,KAAK,GAAG,oBAAoB,WAAW,CAAC;AAAA,EACtD;AACA,OAAK,QAAQ,SAAS,MAAM,aAAa;AACrC,cAAU,UAAU,SAAS,OAAK,CAAC,YAAY,EAAE;AACjD,kBAAc,UAAU,aAAa,OAAK,CAAC,YAAY,EAAE;AACzD,WAAO;AAAA,EACX;AACA,QAAM,UAAU,CAAC;AACjB,OAAK,SAAS,SAAS,SAAS;AAC5B,YAAQ,KAAK;AAAA,MACT;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACA,OAAK,WAAW,SAAS,WAAW;AAChC,UAAM,SAAS,QAAQ,IAAI;AAC3B,yBAAqB,QAAQ,QAAWC,KAAI;AAC5C,KAAC,EAAE,SAAS,YAAY,IAAI;AAAA,EAChC;AACA,SAAO;AACX;;;AC/SA,IAAI,2BAA2B,CAAC;AAChC,IAAIG;AACG,SAAS,aAAa,QAAQ,KAAK,cAAc,OAAO;AAC3D,EAAAA,QAAO;AACP,MAAIC,iBAAgB,CAAC;AACrB,MAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,SAAS,GAAG;AACzD,QAAI,OAAO,OAAO,YAAY;AAC1B,aAAOA;AACX,UAAM,SAAS,iBAAiB,KAAK,OAAO,OAAO;AACnD,QAAI,gBAAgB;AACpB,QAAI,CAAC,QAAQ;AACT,UAAI;AACA,wBAAgB,UAAQ,QAAQ,OAAO,OAAO;AAAA,MAClD,SACO,MAAP;AACI,eAAO;AAAA,MACX;AAAA,IACJ,OACK;AACD,sBAAgB,uBAAuB,KAAK,OAAO,OAAO;AAAA,IAC9D;AACA,4BAAwB,aAAa;AACrC,6BAAyB,KAAK,aAAa;AAC3C,IAAAA,iBAAgB,SACV,KAAK,MAAMD,MAAK,aAAa,eAAe,MAAM,CAAC,IACnD,UAAQ,OAAO;AACrB,WAAO,OAAO;AACd,IAAAC,iBAAgB,aAAaA,gBAAeD,MAAK,KAAK,QAAQ,aAAa,GAAG,cAAcA,KAAI;AAAA,EACpG;AACA,6BAA2B,CAAC;AAC5B,SAAO,eACD,UAAUC,gBAAe,MAAM,IAC/B,OAAO,OAAO,CAAC,GAAGA,gBAAe,MAAM;AACjD;AACA,SAAS,wBAAwB,SAAS;AACtC,MAAI,yBAAyB,QAAQ,OAAO,IAAI,IAAI;AAChD,UAAM,IAAI,OAAO,sCAAsC,WAAW;AAAA,EACtE;AACJ;AACA,SAAS,uBAAuB,KAAK,cAAc;AAC/C,SAAOD,MAAK,KAAK,QAAQ,KAAK,YAAY;AAC9C;AACA,SAAS,UAAU,SAAS,SAAS;AACjC,QAAM,SAAS,CAAC;AAChB,WAAS,SAAS,KAAK;AACnB,WAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAAA,EAC/D;AACA,SAAO,OAAO,QAAQ,OAAO;AAC7B,aAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AACpC,QAAI,SAAS,QAAQ,IAAI,KAAK,SAAS,OAAO,IAAI,GAAG;AACjD,aAAO,OAAO,UAAU,QAAQ,MAAM,QAAQ,IAAI;AAAA,IACtD,OACK;AACD,aAAO,OAAO,QAAQ;AAAA,IAC1B;AAAA,EACJ;AACA,SAAO;AACX;;;AC1DA,IAAI,yBAAkE,SAAU,UAAU,OAAO,OAAO,MAAM,GAAG;AAC7G,MAAI,SAAS;AAAK,UAAM,IAAI,UAAU,gCAAgC;AACtE,MAAI,SAAS,OAAO,CAAC;AAAG,UAAM,IAAI,UAAU,+CAA+C;AAC3F,MAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,UAAM,IAAI,UAAU,yEAAyE;AAChL,SAAQ,SAAS,MAAM,EAAE,KAAK,UAAU,KAAK,IAAI,IAAI,EAAE,QAAQ,QAAQ,MAAM,IAAI,UAAU,KAAK,GAAI;AACxG;AACA,IAAI,yBAAkE,SAAU,UAAU,OAAO,MAAM,GAAG;AACtG,MAAI,SAAS,OAAO,CAAC;AAAG,UAAM,IAAI,UAAU,+CAA+C;AAC3F,MAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,UAAM,IAAI,UAAU,0EAA0E;AACjL,SAAO,SAAS,MAAM,IAAI,SAAS,MAAM,EAAE,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,MAAM,IAAI,QAAQ;AAChG;AACA,IAAI;AAAJ,IAA4B;AAA5B,IAAgD;AAAhD,IAAwE;AAAxE,IAAmG;AAAnG,IAAqI;AAArI,IAA0K;AAA1K,IAAoM;AAApM,IAAiO;AAAjO,IAAiQ;AAAjQ,IAA6R;AAA7R,IAAqT;AAArT,IAAsV;AAAtV,IAA6W;AAA7W,IAAuY;AAAvY,IAA+Z;AAA/Z,IAA+b;AAA/b,IAAsd;AAAtd,IAA6e;AAA7e,IAAqgB;AAArgB,IAAmiB;AAAniB,IAAgkB;AAAhkB,IAAwlB;AAAxlB,IAAqnB;AAArnB,IAA0oB;AAA1oB,IAA0qB;AAA1qB,IAAssB;AAAtsB,IAAwuB;AAAxuB,IAA6vB;AAA7vB,IAAoxB;AAApxB,IAAmzB;AAAnzB,IAAi1B;AAAj1B,IAAu2B;AAAv2B,IAAm4B;AAAn4B,IAA85B;AAcv5B,SAAS,aAAa,OAAO;AAChC,SAAO,CAAC,cAAc,CAAC,GAAG,MAAM,MAAM,QAAQ,IAAI,GAAG,kBAAkB;AACnE,UAAM,QAAQ,IAAI,cAAc,aAAa,KAAK,eAAe,KAAK;AACtE,WAAO,eAAe,OAAO,QAAQ;AAAA,MACjC,KAAK,MAAM;AACP,eAAO,MAAM,MAAM;AAAA,MACvB;AAAA,MACA,YAAY;AAAA,IAChB,CAAC;AACD,UAAM,KAAK;AACX,UAAM,QAAQ;AACd,WAAO;AAAA,EACX;AACJ;AACA,IAAM,kBAAkB,OAAO,gBAAgB;AAC/C,IAAM,gBAAgB,OAAO,gBAAgB;AAC7C,IAAM,8BAA8B,OAAO,4BAA4B;AACvE,IAAM,eAAe,OAAO,aAAa;AACzC,IAAM,UAAU,OAAO,QAAQ;AAC/B,IAAM,iBAAiB,OAAO,eAAe;AAC7C,IAAM,0BAA0B,OAAO,wBAAwB;AAC/D,IAAM,yBAAyB,OAAO,uBAAuB;AAC7D,IAAM,eAAe,OAAO,aAAa;AACzC,IAAM,gBAAgB,OAAO,cAAc;AAC3C,IAAM,0BAA0B,OAAO,wBAAwB;AAC/D,IAAM,SAAS,OAAO,OAAO;AAC7B,IAAM,2BAA2B,OAAO,yBAAyB;AACjE,IAAM,2CAA2C,OAAO,yCAAyC;AACjG,IAAM,qCAAqC,OAAO,mCAAmC;AACrF,IAAM,gCAAgC,OAAO,8BAA8B;AAC3E,IAAM,eAAe,OAAO,aAAa;AACzC,IAAM,UAAU,OAAO,QAAQ;AAC/B,IAAM,YAAY,OAAO,UAAU;AACnC,IAAM,iBAAiB,OAAO,eAAe;AAC7C,IAAM,sBAAsB,OAAO,oBAAoB;AACvD,IAAM,cAAc,OAAO,YAAY;AACvC,IAAM,gBAAgB,OAAO,cAAc;AAC3C,IAAM,qBAAqB,OAAO,mBAAmB;AACrD,IAAM,mBAAmB,OAAO,iBAAiB;AACjD,IAAM,oBAAoB,OAAO,kBAAkB;AACnD,IAAM,yBAAyB,OAAO,uBAAuB;AAC7D,IAAM,oBAAoB,OAAO,kBAAkB;AACnD,IAAM,mBAAmB,OAAO,iBAAiB;AACjD,IAAM,eAAe,OAAO,aAAa;AACzC,IAAM,UAAU,OAAO,QAAQ;AAC/B,IAAM,SAAS,OAAO,OAAO;AAC7B,IAAM,oCAAoC,OAAO,kCAAkC;AACnF,IAAM,iBAAiB,OAAO,eAAe;AAC7C,IAAM,gBAAgB,OAAO,cAAc;AAC3C,IAAM,wBAAwB,OAAO,uBAAuB;AACrD,IAAM,gBAAN,MAAoB;AAAA,EACvB,YAAY,cAAc,CAAC,GAAG,KAAK,eAAeE,OAAM;AACpD,SAAK,mBAAmB;AACxB,SAAK,SAAS;AACd,2BAAuB,IAAI,MAAM,MAAM;AACvC,uBAAmB,IAAI,MAAM,MAAM;AACnC,2BAAuB,IAAI,MAAM,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC;AACnE,8BAA0B,IAAI,MAAM,IAAI;AACxC,qCAAiC,IAAI,MAAM,IAAI;AAC/C,wCAAoC,IAAI,MAAM,aAAa;AAC3D,6BAAyB,IAAI,MAAM,IAAI;AACvC,gCAA4B,IAAI,MAAM,IAAI;AAC1C,mCAA+B,IAAI,MAAM,CAAC,CAAC;AAC3C,+BAA2B,IAAI,MAAM,IAAI;AACzC,2BAAuB,IAAI,MAAM,CAAC,CAAC;AACnC,oCAAgC,IAAI,MAAM,MAAM;AAChD,0BAAsB,IAAI,MAAM,CAAC,CAAC;AAClC,6BAAyB,IAAI,MAAM,KAAK;AACxC,2BAAuB,IAAI,MAAM,IAAI;AACrC,mCAA+B,IAAI,MAAM,IAAI;AAC7C,0BAAsB,IAAI,MAAM,MAAM;AACtC,0BAAsB,IAAI,MAAM,EAAE;AAClC,2BAAuB,IAAI,MAAM,MAAM;AACvC,iCAA6B,IAAI,MAAM,MAAM;AAC7C,gCAA4B,IAAI,MAAM,CAAC,CAAC;AACxC,2BAAuB,IAAI,MAAM,IAAI;AACrC,gCAA4B,IAAI,MAAM,IAAI;AAC1C,wBAAoB,IAAI,MAAM,CAAC,CAAC;AAChC,mCAA+B,IAAI,MAAM,CAAC,CAAC;AAC3C,+BAA2B,IAAI,MAAM,MAAM;AAC3C,qCAAiC,IAAI,MAAM,KAAK;AAChD,wBAAoB,IAAI,MAAM,MAAM;AACpC,0BAAsB,IAAI,MAAM,KAAK;AACrC,kCAA8B,IAAI,MAAM,KAAK;AAC7C,iCAA6B,IAAI,MAAM,KAAK;AAC5C,yBAAqB,IAAI,MAAM,MAAM;AACrC,+BAA2B,IAAI,MAAM,CAAC,CAAC;AACvC,8BAA0B,IAAI,MAAM,IAAI;AACxC,8BAA0B,IAAI,MAAM,MAAM;AAC1C,2BAAuB,MAAM,qBAAqBA,OAAM,GAAG;AAC3D,2BAAuB,MAAM,4BAA4B,aAAa,GAAG;AACzE,2BAAuB,MAAM,oBAAoB,KAAK,GAAG;AACzD,2BAAuB,MAAM,8BAA8B,eAAe,GAAG;AAC7E,2BAAuB,MAAM,iCAAiC,IAAI,iBAAiB,IAAI,GAAG,GAAG;AAC7F,SAAK,KAAK,KAAK,gBAAgB;AAC/B,SAAK,QAAQ;AACb,2BAAuB,MAAM,wBAAwB,uBAAuB,MAAM,wBAAwB,GAAG,GAAG,GAAG;AACnH,2BAAuB,MAAM,sBAAsB,uBAAuB,MAAM,sBAAsB,GAAG,GAAG,GAAG;AAC/G,2BAAuB,MAAM,2BAA2B,uBAAuB,MAAM,2BAA2B,GAAG,GAAG,GAAG;AACzH,2BAAuB,MAAM,wBAAwB,uBAAuB,MAAM,wBAAwB,GAAG,GAAG,GAAG;AACnH,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,gBAAgB,uBAAuB,MAAM,qCAAqC,GAAG;AAC/I,2BAAuB,MAAM,uBAAuB,KAAK,eAAe,GAAG,GAAG;AAAA,EAClF;AAAA,EACA,WAAW,KAAK,KAAK;AACjB,UAAM,iBAAiB;AACvB,YAAQ,6BAA6B,CAAC,KAAK,GAAG,GAAG,UAAU,MAAM;AACjE,QAAI,uBAAuB,MAAM,wBAAwB,GAAG,GAAG;AAC3D,WAAK,6BAA6B,uBAAuB,MAAM,wBAAwB,GAAG,CAAC;AAC3F,6BAAuB,MAAM,wBAAwB,MAAM,GAAG;AAAA,IAClE;AACA,QAAI,QAAQ,SAAS,QAAQ;AACzB,aAAO;AACX,2BAAuB,MAAM,wBAAwB,OAAO,QAAQ,WAAW,MAAM,gBAAgB,GAAG;AACxG,SAAK,QAAQ,uBAAuB,MAAM,wBAAwB,GAAG,CAAC;AACtE,SAAK,SAAS,uBAAuB,MAAM,wBAAwB,GAAG,GAAG,OAAO,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,gBAAgB,WAAW,CAAC;AACpK,WAAO;AAAA,EACX;AAAA,EACA,KAAK,KAAK,KAAK;AACX,WAAO,KAAK,WAAW,KAAK,GAAG;AAAA,EACnC;AAAA,EACA,iBAAiB,KAAK,KAAK;AACvB,YAAQ,6BAA6B,CAAC,KAAK,GAAG,GAAG,UAAU,MAAM;AACjE,QAAI,QAAQ,SAAS,QAAQ;AACzB,aAAO;AACX,UAAM,gBAAgB,OAAO,QAAQ,WAAW,MAAM,uBAAuB,MAAM,qCAAqC,GAAG;AAC3H,SAAK,QAAQ,aAAa;AAC1B,SAAK,SAAS,eAAe,OAAO,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,gBAAgB,qBAAqB,CAAC;AAClI,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,gBAAgB;AAC1E,WAAO;AAAA,EACX;AAAA,EACA,WAAW,KAAK,KAAK;AACjB,WAAO,KAAK,iBAAiB,KAAK,GAAG;AAAA,EACzC;AAAA,EACA,MAAM,KAAK,OAAO;AACd,YAAQ,wCAAwC,CAAC,KAAK,KAAK,GAAG,UAAU,MAAM;AAC9E,SAAK,oCAAoC,KAAK,MAAM,KAAK,IAAI,GAAG,SAAS,KAAK,KAAK;AACnF,WAAO;AAAA,EACX;AAAA,EACA,MAAM,MAAM;AACR,YAAQ,kBAAkB,CAAC,IAAI,GAAG,UAAU,MAAM;AAClD,SAAK,0BAA0B,SAAS,IAAI;AAC5C,SAAK,uBAAuB,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,MAAM;AACV,YAAQ,kBAAkB,CAAC,IAAI,GAAG,UAAU,MAAM;AAClD,SAAK,0BAA0B,WAAW,IAAI;AAC9C,SAAK,uBAAuB,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EACA,MAAM,GAAGC,SAAQ;AACb,YAAQ,wBAAwB,CAAC,GAAGA,OAAM,GAAG,UAAU,MAAM;AAC7D,SAAK,WAAW,CAAC,MAAM,WAAW;AAC9B,aAAO,iBAAiB,MAAM;AAC1B,eAAO,EAAE,MAAM,OAAO,WAAW,CAAC;AAAA,MACtC,GAAG,CAAC,WAAW;AACX,YAAI,CAAC,QAAQ;AACT,iCAAuB,MAAM,sBAAsB,GAAG,EAAE,KAAK,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK,GAAG,6BAA6B,EAAE,SAAS,CAAC,CAAC;AAAA,QAC1K,WACS,OAAO,WAAW,YAAY,kBAAkB,OAAO;AAC5D,iCAAuB,MAAM,sBAAsB,GAAG,EAAE,KAAK,OAAO,SAAS,GAAG,MAAM;AAAA,QAC1F;AACA,eAAO;AAAA,MACX,GAAG,CAAC,QAAQ;AACR,+BAAuB,MAAM,sBAAsB,GAAG,EAAE,KAAK,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,GAAG,GAAG;AAC5G,eAAO;AAAA,MACX,CAAC;AAAA,IACL,GAAG,OAAOA,OAAM;AAChB,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,KAAK,OAAO;AAChB,YAAQ,wCAAwC,CAAC,KAAK,KAAK,GAAG,UAAU,MAAM;AAC9E,SAAK,oCAAoC,KAAK,QAAQ,KAAK,IAAI,GAAG,WAAW,KAAK,KAAK;AACvF,WAAO;AAAA,EACX;AAAA,EACA,OAAO,MAAM,OAAO;AAChB,YAAQ,oCAAoC,CAAC,MAAM,KAAK,GAAG,UAAU,MAAM;AAC3E,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,UAAI,CAAC,OAAO;AACR,cAAM,IAAI,OAAO,kCAAkC;AAAA,MACvD;AACA,iBAAW,OAAO,MAAM;AACpB,aAAK,OAAO,KAAK,KAAK;AAAA,MAC1B;AACA,aAAO;AAAA,IACX,WACS,OAAO,SAAS,UAAU;AAC/B,iBAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AACjC,aAAK,OAAO,KAAK,KAAK,IAAI;AAAA,MAC9B;AACA,aAAO;AAAA,IACX;AACA,QAAI,CAAC,OAAO;AACR,YAAM,IAAI,OAAO,kCAAkC;AAAA,IACvD;AACA,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,IAAI,QAAQ;AACtE,2BAAuB,MAAM,iCAAiC,GAAG,EAAE,oBAAoB,CAAC,MAAM,UAAU;AACpG,UAAI;AACJ,YAAM,eAAe,OAAO,UAAU,eAAe,KAAK,MAAM,IAAI;AACpE,UAAI,CAAC,cAAc;AACf,eAAO;AAAA,MACX;AACA,aAAO,iBAAiB,MAAM;AAC1B,kBAAU,MAAM,WAAW;AAC3B,eAAO,MAAM,KAAK,KAAK;AAAA,MAC3B,GAAG,CAAC,WAAW;AACX,aAAK,QAAQ;AACb,cAAM,eAAe,MAChB,mBAAmB,EACnB,uBAAuB,EAAE;AAC9B,YAAI,QAAQ,SAAS,iBAAiB,MAAM;AACxC,qBAAWC,UAAS,QAAQ,OAAO;AAC/B,iBAAKA,UAAS;AAAA,UAClB;AAAA,QACJ;AACA,eAAO;AAAA,MACX,GAAG,CAAC,QAAQ;AACR,cAAM,IAAI,OAAO,IAAI,OAAO;AAAA,MAChC,CAAC;AAAA,IACL,GAAG,IAAI;AACP,WAAO;AAAA,EACX;AAAA,EACA,UAAU,MAAM,MAAM;AAClB,YAAQ,kCAAkC,CAAC,MAAM,IAAI,GAAG,UAAU,MAAM;AACxE,2BAAuB,MAAM,2BAA2B,GAAG,EAAE,UAAU,MAAM,IAAI;AACjF,WAAO;AAAA,EACX;AAAA,EACA,OAAO,MAAM,UAAU,KAAK,SAAS;AACjC,YAAQ,gDAAgD,CAAC,KAAK,KAAK,OAAO,GAAG,UAAU,MAAM;AAC7F,QAAI,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG,GAAG;AAChD,YAAM,aAAa,KAAK,uBAAuB,MAAM,oBAAoB,GAAG,GAAG,KAAK,yBAAyB,EAAE,wBAAwB,OAAO,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AACpM,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,iBAAiB,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,iBAAiB,CAAC,GAAG,OAAO,GAAG;AACpK,aAAO;AAAA,IACX;AACA,QAAI,OAAO,QAAQ,YAAY;AAC3B,gBAAU;AACV,YAAM;AAAA,IACV;AACA,SAAK,SAAS,KAAK,OAAO,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,gBAAgB,0BAA0B,CAAC;AAC7H,KAAC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,QAAQ,OAAK;AAC5C,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,OAAO,KAAK,WAAW;AAAA,IACrF,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EACA,WAAW,KAAK,MAAM,IAAI;AACtB,YAAQ,iDAAiD,CAAC,KAAK,MAAM,EAAE,GAAG,UAAU,MAAM;AAC1F,QAAI,OAAO,SAAS,YAAY;AAC5B,WAAK;AACL,aAAO;AAAA,IACX;AACA,2BAAuB,MAAM,kCAAkC,OAAO,uBAAuB,MAAM,kCAAkC,GAAG,KAAK,cAAc,GAAG;AAC9J,QAAI,CAAC,QAAQ,SAAS,OAAO;AACzB,aAAO;AAAA,IACX;AACA,SAAK,QAAQ,uBAAuB,MAAM,kCAAkC,GAAG,GAAG,IAAI;AACtF,QAAI;AACA,6BAAuB,MAAM,2BAA2B,GAAG,EAAE,iBAAiB,EAAE;AACpF,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,KAAK,aAAaC,WAASC,WAAS,aAAa,YAAY;AACjE,YAAQ,gGAAgG,CAAC,KAAK,aAAaD,WAASC,WAAS,aAAa,UAAU,GAAG,UAAU,MAAM;AACvL,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,WAAW,KAAK,aAAaD,WAASC,WAAS,aAAa,UAAU;AAChI,WAAO;AAAA,EACX;AAAA,EACA,SAAS,KAAK,aAAaD,WAASC,WAAS,aAAa,YAAY;AAClE,WAAO,KAAK,QAAQ,KAAK,aAAaD,WAASC,WAAS,aAAa,UAAU;AAAA,EACnF;AAAA,EACA,WAAW,KAAK,MAAM;AAClB,YAAQ,qBAAqB,CAAC,KAAK,IAAI,GAAG,UAAU,MAAM;AAC1D,UAAM,MAAM,uBAAuB,MAAM,8BAA8B,GAAG,KAAK,uBAAuB,MAAM,qBAAqB,GAAG,EAAE;AACtI,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,aAAa,KAAK,KAAK,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,cAAc,GAAG,IAAI;AAC7J,WAAO;AAAA,EACX;AAAA,EACA,MAAM,MAAM;AACR,YAAQ,kBAAkB,CAAC,IAAI,GAAG,UAAU,MAAM;AAClD,SAAK,0BAA0B,SAAS,IAAI;AAC5C,SAAK,uBAAuB,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,KAAK,OAAO,oBAAoB;AACpC,YAAQ,sCAAsC,CAAC,KAAK,OAAO,kBAAkB,GAAG,UAAU,MAAM;AAChG,QAAI,oBAAoB;AACpB,sBAAgB,KAAK,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AAC3E,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,mBAAmB,OAAO;AAAA,IACxF;AACA,QAAI,OAAO,UAAU,YAAY;AAC7B,sBAAgB,KAAK,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AAC3E,UAAI,CAAC,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,mBAAmB;AAC9E,+BAAuB,MAAM,wBAAwB,GAAG,EAAE,mBAAmB,OACzE,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,oBAAoB,KAAK;AACzF,cAAQ,MAAM,KAAK;AAAA,IACvB;AACA,SAAK,0CAA0C,KAAK,QAAQ,KAAK,IAAI,GAAG,WAAW,KAAK,KAAK;AAC7F,WAAO;AAAA,EACX;AAAA,EACA,SAAS,KAAK,OAAO,oBAAoB;AACrC,WAAO,KAAK,QAAQ,KAAK,OAAO,kBAAkB;AAAA,EACtD;AAAA,EACA,cAAc,MAAM,GAAG,KAAK,QAAQ,QAAQ;AACxC,YAAQ,4EAA4E,CAAC,KAAK,KAAK,QAAQ,MAAM,GAAG,UAAU,MAAM;AAChI,QAAI,OAAO,QAAQ,UAAU;AACzB,eAAS;AACT,YAAM;AAAA,IACV;AACA,SAAK,OAAO,KAAK,KAAK;AACtB,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,iBAAiB,IAAI;AAAA,MAC3E;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,OAAO,MAAM,KAAK,KAAK;AACnB,QAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,UAAI,QAAQ,SAAO;AACf,6BAAqB,KAAK,MAAM,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AACtF,aAAK,aAAa,KAAK,GAAG;AAAA,MAC9B,CAAC;AACD,YAAM;AAAA,IACV,WACS,OAAO,QAAQ,UAAU;AAC9B,YAAM;AACN,YAAM;AAAA,IACV;AACA,QAAI,OAAO,SAAS,UAAU;AAC1B,2BAAqB,KAAK,MAAM,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AACtF,WAAK,cAAc,MAAM,KAAK,KAAK,GAAG;AAAA,IAC1C,WACS,MAAM,QAAQ,IAAI,GAAG;AAC1B,WAAK,QAAQ,SAAO;AAChB,6BAAqB,KAAK,MAAM,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AACtF,aAAK,aAAa,KAAK,GAAG;AAAA,MAC9B,CAAC;AAAA,IACL,OACK;AACD,UAAI,OAAO,QAAQ,UAAU;AACzB,aAAK,aAAa,MAAM,GAAG;AAAA,MAC/B,WACS,QAAQ,QAAQ,OAAO,QAAQ,aAAa;AACjD,aAAK,aAAa,IAAI;AAAA,MAC1B;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,aAAa,MAAM,KAAK;AACpB,YAAQ,kCAAkC,CAAC,MAAM,GAAG,GAAG,UAAU,MAAM;AACvE,SAAK,0CAA0C,KAAK,aAAa,KAAK,IAAI,GAAG,mBAAmB,MAAM,GAAG;AACzG,WAAO;AAAA,EACX;AAAA,EACA,gBAAgB,QAAQ,SAAS;AAC7B,YAAQ,6BAA6B,CAAC,QAAQ,OAAO,GAAG,UAAU,MAAM;AACxE,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,kBAAkB,UAAU;AACtF,WAAO;AAAA,EACX;AAAA,EACA,SAAS,MAAM,aAAa;AACxB,YAAQ,kCAAkC,CAAC,MAAM,WAAW,GAAG,UAAU,MAAM;AAC/E,SAAK,SAAS,MAAM,IAAI;AACxB,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,SAAS,MAAM,WAAW;AAClF,WAAO;AAAA,EACX;AAAA,EACA,aAAa,QAAQ;AACjB,YAAQ,aAAa,CAAC,MAAM,GAAG,UAAU,MAAM;AAC/C,2BAAuB,MAAM,6BAA6B,QAAQ,GAAG;AACrE,WAAO;AAAA,EACX;AAAA,EACA,IAAI,QAAQ;AACR,YAAQ,oBAAoB,CAAC,MAAM,GAAG,UAAU,MAAM;AACtD,QAAI,WAAW;AACX,aAAO,uBAAuB,MAAM,wBAAwB,GAAG,EAAE;AAAA;AAEjE,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,YAAY,UAAU;AACpF,WAAO;AAAA,EACX;AAAA,EACA,SAAS,KAAK;AACV,YAAQ,YAAY,CAAC,GAAG,GAAG,UAAU,MAAM;AAC3C,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,OAAO,GAAG;AAClE,WAAO;AAAA,EACX;AAAA,EACA,OAAO,KAAK;AACR,WAAO,KAAK,SAAS,GAAG;AAAA,EAC5B;AAAA,EACA,QAAQ,KAAK,aAAa;AACtB,YAAQ,2BAA2B,CAAC,KAAK,WAAW,GAAG,UAAU,MAAM;AACvE,QAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,UAAI,QAAQ,mBAAiB,KAAK,QAAQ,GAAG,aAAa,CAAC;AAAA,IAC/D,OACK;AACD,6BAAuB,MAAM,sBAAsB,GAAG,EAAE,QAAQ,KAAK,WAAW;AAAA,IACpF;AACA,WAAO;AAAA,EACX;AAAA,EACA,KAAK,MAAM,KAAK;AACZ,2BAAuB,MAAM,0BAA0B,MAAM,GAAG;AAChE,2BAAuB,MAAM,0BAA0B,KAAK,GAAG;AAC/D,QAAI,uBAAuB,MAAM,4BAA4B,GAAG;AAC5D,6BAAuB,MAAM,qBAAqB,GAAG,EAAE,QAAQ,KAAK,IAAI;AAAA,EAChF;AAAA,EACA,YAAY,UAAU,MAAM;AACxB,YAAQ,aAAa,CAAC,OAAO,GAAG,UAAU,MAAM;AAChD,2BAAuB,MAAM,4BAA4B,SAAS,GAAG;AACrE,WAAO;AAAA,EACX;AAAA,EACA,KAAK,GAAG;AACJ,YAAQ,sBAAsB,CAAC,CAAC,GAAG,UAAU,MAAM;AACnD,QAAI,OAAO,MAAM,aAAa,MAAM,OAAO;AACvC,YAAM,IAAI,OAAO,8DAA8D;AAAA,IACnF;AACA,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,OAAO,CAAC;AAChE,WAAO;AAAA,EACX;AAAA,EACA,aAAa;AACT,WAAO,KAAK,SAAS,KAAK,OAAO,UAAU,CAAC;AAAA,EAChD;AAAA,EACA,MAAM,cAAc,MAAM,MAAM;AAC5B,YAAQ,sBAAsB,CAAC,MAAM,IAAI,GAAG,UAAU,MAAM;AAC5D,QAAI,CAAC,MAAM;AACP,aAAO,IAAI,QAAQ,CAACC,WAAS,WAAW;AACpC,+BAAuB,MAAM,2BAA2B,GAAG,EAAE,cAAc,MAAM,CAAC,KAAK,gBAAgB;AACnG,cAAI;AACA,mBAAO,GAAG;AAAA;AAEV,YAAAA,UAAQ,WAAW;AAAA,QAC3B,CAAC;AAAA,MACL,CAAC;AAAA,IACL,OACK;AACD,aAAO,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,cAAc,MAAM,IAAI;AAAA,IAChG;AAAA,EACJ;AAAA,EACA,qBAAqB;AACjB,YAAQ,CAAC,GAAG,CAAC;AACb,WAAO,uBAAuB,MAAM,wBAAwB,GAAG,EAAE;AAAA,EACrE;AAAA,EACA,sBAAsB;AAClB,YAAQ,CAAC,GAAG,CAAC;AACb,WAAO,uBAAuB,MAAM,wBAAwB,GAAG,EAAE;AAAA,EACrE;AAAA,EACA,uBAAuB;AACnB,YAAQ,CAAC,GAAG,CAAC;AACb,WAAO,uBAAuB,MAAM,wBAAwB,GAAG,EAAE;AAAA,EACrE;AAAA,EACA,kBAAkB;AACd,WAAO,uBAAuB,MAAM,6BAA6B,GAAG;AAAA,EACxE;AAAA,EACA,iBAAiB;AACb,WAAO,uBAAuB,MAAM,4BAA4B,GAAG;AAAA,EACvE;AAAA,EACA,YAAY;AACR,WAAO,OAAO,OAAO,CAAC,GAAG,uBAAuB,MAAM,uBAAuB,GAAG,GAAG,uBAAuB,MAAM,gCAAgC,GAAG,CAAC;AAAA,EACxJ;AAAA,EACA,UAAU;AACN,2BAAuB,MAAM,0BAA0B,MAAM,GAAG;AAChE,QAAI,CAAC,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,qBAAqB,GAAG;AACjF,UAAI,CAAC,KAAK,QAAQ;AACd,cAAMC,SAAQ,KAAK,mCAAmC,uBAAuB,MAAM,4BAA4B,GAAG,GAAG,QAAW,QAAW,GAAG,IAAI;AAClJ,YAAI,UAAUA,MAAK,GAAG;AAClB,iBAAOA,OAAM,KAAK,MAAM;AACpB,mBAAO,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,KAAK;AAAA,UACxE,CAAC;AAAA,QACL;AAAA,MACJ;AACA,YAAM,kBAAkB,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,oBAAoB,IAAI;AAC1G,UAAI,UAAU,eAAe,GAAG;AAC5B,eAAO,gBAAgB,KAAK,MAAM;AAC9B,iBAAO,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,KAAK;AAAA,QACxE,CAAC;AAAA,MACL;AAAA,IACJ;AACA,WAAO,QAAQ,QAAQ,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,KAAK,CAAC;AAAA,EACzF;AAAA,EACA,aAAa;AACT,WAAO,uBAAuB,MAAM,wBAAwB,GAAG;AAAA,EACnE;AAAA,EACA,YAAY;AACR,WAAO,uBAAuB,MAAM,uBAAuB,GAAG;AAAA,EAClE;AAAA,EACA,oBAAoB;AAChB,WAAO,uBAAuB,MAAM,+BAA+B,GAAG;AAAA,EAC1E;AAAA,EACA,mBAAmB;AACf,WAAO,uBAAuB,MAAM,8BAA8B,GAAG;AAAA,EACzE;AAAA,EACA,OAAO,SAASL,SAAQ;AACpB,YAAQ,4BAA4B,CAAC,SAASA,OAAM,GAAG,UAAU,MAAM;AACvE,cAAU,CAAC,EAAE,OAAO,OAAO;AAC3B,QAAIA,YAAW,OAAO;AAClB,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,QAAQ,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,MAAM,OAAO,OAAK,QAAQ,QAAQ,CAAC,MAAM,EAAE;AAAA,IAC3K,OACK;AACD,cAAQ,QAAQ,OAAK;AACjB,YAAI,CAAC,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,MAAM,SAAS,CAAC;AAC3E,iCAAuB,MAAM,wBAAwB,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,MAC9E,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX;AAAA,EACA,MAAM,MAAM,WAAW;AACnB,YAAQ,2BAA2B,CAAC,MAAM,SAAS,GAAG,UAAU,MAAM;AACtE,UAAM,WAAW,uBAAuB,MAAM,gCAAgC,GAAG,EAAE,cAAc,uBAAuB,MAAM,uBAAuB,GAAG,EAAE;AAC1J,QAAI,uBAAuB,MAAM,gCAAgC,GAAG,EAAE,YAAY;AAC9E,aAAO,uBAAuB,MAAM,gCAAgC,GAAG,EAAE;AAAA,IAC7E;AACA,UAAM,OAAO,CAAC;AACd,2BAAuB,MAAM,uBAAuB,GAAG,EAAE,cAAc,YAAY,CAAC,GAAG,OAAO,IAAI,EAAE,OAAO,SAAO;AAC9G,UAAI,KAAK;AACL,eAAO;AACX,aAAQ,KAAK,OAAO;AAAA,IACxB,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EACA,KAAK,KAAK;AACN,YAAQ,YAAY,CAAC,GAAG,GAAG,UAAU,MAAM;AAC3C,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,cAAc,KAAK,GAAG;AAChF,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,KAAK,OAAO;AAChB,YAAQ,yCAAyC,CAAC,KAAK,KAAK,GAAG,UAAU,MAAM;AAC/E,2BAAuB,MAAM,2BAA2B,GAAG,EAAE,QAAQ,KAAK,KAAK;AAC/E,WAAO;AAAA,EACX;AAAA,EACA,OAAO,QAAQ;AACX,YAAQ,YAAY,CAAC,MAAM,GAAG,UAAU,MAAM;AAC9C,QAAI,WAAW,QAAW;AACtB,WAAK,cAAc;AACnB,aAAO,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK,UAAU;AAAA,IACjF;AACA,2BAAuB,MAAM,6BAA6B,OAAO,GAAG;AACpE,2BAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK,UAAU,MAAM;AAC5E,WAAO;AAAA,EACX;AAAA,EACA,WAAW,UAAU,uBAAuBA,SAAQ;AAChD,WAAO,uBAAuB,MAAM,iCAAiC,GAAG,EAAE,cAAc,UAAU,CAAC,CAAC,uBAAuBA,OAAM;AAAA,EACrI;AAAA,EACA,MAAM,KAAK,OAAO;AACd,YAAQ,kCAAkC,CAAC,KAAK,KAAK,GAAG,UAAU,MAAM;AACxE,SAAK,0CAA0C,KAAK,MAAM,KAAK,IAAI,GAAG,QAAQ,KAAK,KAAK;AACxF,WAAO;AAAA,EACX;AAAA,EACA,UAAU,MAAM;AACZ,YAAQ,kBAAkB,CAAC,IAAI,GAAG,UAAU,MAAM;AAClD,SAAK,0BAA0B,aAAa,IAAI;AAChD,WAAO;AAAA,EACX;AAAA,EACA,OAAO,MAAM;AACT,YAAQ,kBAAkB,CAAC,IAAI,GAAG,UAAU,MAAM;AAClD,SAAK,0BAA0B,UAAU,IAAI;AAC7C,SAAK,uBAAuB,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EACA,OAAO,KAAK,KAAK;AACb,YAAQ,4BAA4B,CAAC,KAAK,GAAG,GAAG,UAAU,MAAM;AAChE,QAAI,OAAO,QAAQ,UAAU;AACzB,aAAO,KAAK,GAAG,EAAE,QAAQ,OAAK;AAC1B,aAAK,QAAQ,GAAG,IAAI,EAAE;AAAA,MAC1B,CAAC;AAAA,IACL,OACK;AACD,UAAI,OAAO,QAAQ,UAAU;AACzB,cAAM,CAAC;AAAA,MACX;AACA,WAAK,uBAAuB,GAAG;AAC/B,UAAI,uBAAuB,MAAM,2BAA2B,GAAG,MAAM,QAAQ,cAAc,QAAQ,QAAQ,QAAQ,SAAS,SAAS,IAAI,WAAW,YAAY;AAC5J,aAAK,cAAc;AAAA,UACf;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,EAAE,KAAK,IAAI,GAAG,QAAW,gBAAgB;AAAA,MAC7C;AACA,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,IAAI,OAAO;AACrE,UAAI,IAAI;AACJ,aAAK,MAAM,KAAK,IAAI,KAAK;AAC7B,YAAM,YAAY,IAAI,aAAa,IAAI;AACvC,UAAI,WAAW;AACX,aAAK,gBAAgB,KAAK,SAAS;AAAA,MACvC;AACA,YAAM,SAAS,IAAI,UAAU,IAAI,YAAY,IAAI;AACjD,UAAI,QAAQ;AACR,aAAK,OAAO,KAAK,MAAM;AAAA,MAC3B;AACA,UAAI,IAAI,cAAc;AAClB,aAAK,aAAa,KAAK,OAAO,IAAI,iBAAiB,WAAW,IAAI,eAAe,MAAS;AAAA,MAC9F;AACA,UAAI,IAAI,WAAW;AACf,aAAK,UAAU,KAAK,IAAI,SAAS;AAAA,MACrC;AACA,UAAI,aAAa,KAAK;AAClB,aAAK,QAAQ,KAAK,IAAI,OAAO;AAAA,MACjC;AACA,UAAI,IAAI,YAAY,QAAW;AAC3B,aAAK,QAAQ,KAAK,IAAI,OAAO;AAAA,MACjC;AACA,UAAI,IAAI,UAAU,QAAW;AACzB,aAAK,MAAM,KAAK,IAAI,KAAK;AAAA,MAC7B;AACA,UAAI,IAAI,QAAQ;AACZ,aAAK,OAAO,KAAK,IAAI,YAAY;AAAA,MACrC;AACA,UAAI,IAAI,WAAW;AACf,aAAK,UAAU,GAAG;AAAA,MACtB;AACA,UAAI,IAAI,SAAS;AACb,aAAK,QAAQ,KAAK,IAAI,OAAO;AAAA,MACjC;AACA,UAAI,IAAI,QAAQ;AACZ,aAAK,OAAO,KAAK,IAAI,MAAM;AAAA,MAC/B;AACA,UAAI,IAAI,OAAO;AACX,aAAK,MAAM,KAAK,IAAI,KAAK;AAAA,MAC7B;AACA,UAAI,IAAI,WAAW,IAAI,SAAS,WAAW;AACvC,aAAK,QAAQ,GAAG;AAChB,YAAI,IAAI;AACJ,eAAK,QAAQ,IAAI,KAAK;AAAA,MAC9B;AACA,UAAI,IAAI,SAAS,IAAI,SAAS,SAAS;AACnC,aAAK,MAAM,GAAG;AACd,YAAI,IAAI;AACJ,eAAK,MAAM,IAAI,KAAK;AAAA,MAC5B;AACA,UAAI,IAAI,UAAU,IAAI,SAAS,UAAU;AACrC,aAAK,OAAO,GAAG;AACf,YAAI,IAAI;AACJ,eAAK,OAAO,IAAI,KAAK;AAAA,MAC7B;AACA,UAAI,IAAI,UAAU,IAAI,SAAS,UAAU;AACrC,aAAK,OAAO,GAAG;AACf,YAAI,IAAI;AACJ,eAAK,OAAO,IAAI,KAAK;AAAA,MAC7B;AACA,UAAI,IAAI,SAAS,IAAI,SAAS,SAAS;AACnC,aAAK,MAAM,GAAG;AAAA,MAClB;AACA,UAAI,OAAO,IAAI,WAAW,WAAW;AACjC,aAAK,OAAO,KAAK,IAAI,MAAM;AAAA,MAC/B;AACA,UAAI,IAAI,oBAAoB;AACxB,+BAAuB,MAAM,wBAAwB,GAAG,EAAE,mBAAmB,OAAO,IAAI;AAAA,MAC5F;AACA,UAAI,IAAI,gBAAgB;AACpB,aAAK,eAAe,GAAG;AAAA,MAC3B;AACA,YAAM,OAAO,IAAI,YAAY,IAAI,eAAe,IAAI;AACpD,YAAM,eAAe,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,gBAAgB;AAC7F,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,KACvD,OAAO,SAAS,UAAU;AAC1B,aAAK,SAAS,KAAK,IAAI;AAAA,MAC3B;AACA,UAAI,IAAI,QAAQ;AACZ,aAAK,KAAK,GAAG;AAAA,MACjB;AACA,UAAI,IAAI,aAAa;AACjB,aAAK,YAAY,GAAG;AAAA,MACxB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,KAAK,KAAK;AACd,WAAO,KAAK,OAAO,KAAK,GAAG;AAAA,EAC/B;AAAA,EACA,MAAM,MAAM,cAAc,UAAU;AAChC,YAAQ,uDAAuD,CAAC,MAAM,cAAc,QAAQ,GAAG,UAAU,MAAM;AAC/G,SAAK,SAAS;AACd,QAAI,OAAO,SAAS,aAAa;AAC7B,aAAO,uBAAuB,MAAM,4BAA4B,GAAG;AAAA,IACvE;AACA,QAAI,OAAO,iBAAiB,UAAU;AAClC,6BAAuB,MAAM,6BAA6B,cAAc,GAAG;AAC3E,qBAAe;AAAA,IACnB;AACA,QAAI,OAAO,iBAAiB,YAAY;AACpC,6BAAuB,MAAM,wBAAwB,cAAc,GAAG;AACtE,qBAAe;AAAA,IACnB;AACA,QAAI,CAAC;AACD,6BAAuB,MAAM,4BAA4B,MAAM,GAAG;AACtE,QAAI,uBAAuB,MAAM,wBAAwB,GAAG;AACxD,6BAAuB,MAAM,4BAA4B,OAAO,GAAG;AACvE,UAAM,SAAS,KAAK,mCAAmC,MAAM,CAAC,CAAC,YAAY;AAC3E,UAAM,YAAY,KAAK;AACvB,2BAAuB,MAAM,2BAA2B,GAAG,EAAE,UAAU,KAAK,MAAM;AAClF,QAAI,UAAU,MAAM,GAAG;AACnB,aAAO,OACF,KAAK,UAAQ;AACd,YAAI,uBAAuB,MAAM,wBAAwB,GAAG;AACxD,iCAAuB,MAAM,wBAAwB,GAAG,EAAE,KAAK,MAAM,uBAAuB,MAAM,0BAA0B,GAAG,GAAG,MAAM,uBAAuB,MAAM,uBAAuB,GAAG,CAAC;AACpM,eAAO;AAAA,MACX,CAAC,EACI,MAAM,SAAO;AACd,YAAI,uBAAuB,MAAM,wBAAwB,GAAG,GAAG;AAC3D,iCAAuB,MAAM,wBAAwB,GAAG,EAAE,KAAK,KAAK,OAAO,MAAM,uBAAuB,MAAM,uBAAuB,GAAG,CAAC;AAAA,QAC7I;AACA,cAAM;AAAA,MACV,CAAC,EACI,QAAQ,MAAM;AACf,aAAK,WAAW;AAChB,aAAK,SAAS;AAAA,MAClB,CAAC;AAAA,IACL,OACK;AACD,UAAI,uBAAuB,MAAM,wBAAwB,GAAG;AACxD,+BAAuB,MAAM,wBAAwB,GAAG,EAAE,KAAK,MAAM,uBAAuB,MAAM,0BAA0B,GAAG,GAAG,QAAQ,uBAAuB,MAAM,uBAAuB,GAAG,CAAC;AACtM,WAAK,WAAW;AAChB,WAAK,SAAS;AAAA,IAClB;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,MAAM,cAAc,UAAU;AACrC,UAAM,eAAe,KAAK,MAAM,MAAM,cAAc,QAAQ;AAC5D,WAAO,CAAC,UAAU,YAAY,IACxB,QAAQ,QAAQ,YAAY,IAC5B;AAAA,EACV;AAAA,EACA,UAAU,MAAM,cAAc,UAAU;AACpC,UAAM,eAAe,KAAK,MAAM,MAAM,cAAc,QAAQ;AAC5D,QAAI,UAAU,YAAY,GAAG;AACzB,YAAM,IAAI,OAAO,mFAAmF;AAAA,IACxG;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,QAAQ;AACxB,YAAQ,YAAY,CAAC,MAAM,GAAG,UAAU,MAAM;AAC9C,2BAAuB,MAAM,6BAA6B,QAAQ,GAAG;AACrE,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,KAAK,UAAU;AACnB,YAAQ,qBAAqB,CAAC,KAAK,QAAQ,GAAG,UAAU,MAAM;AAC9D,QAAI,OAAO;AACX,UAAM,MAAM,KAAK,QAAQ,YAAY,uBAAuB,MAAM,oBAAoB,GAAG,CAAC;AAC1F,QAAI,IAAI,QAAQ,OAAO,IAAI,SAAS,UAAU;AAC1C,aAAO,aAAa,IAAI,MAAM,YAAY,uBAAuB,MAAM,oBAAoB,GAAG,GAAG,KAAK,yBAAyB,EAAE,wBAAwB,OAAO,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AACtN,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,iBAAiB,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,iBAAiB,CAAC,GAAG,OAAO,IAAI;AAAA,IACzK;AACA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,KAAK,MAAM;AAClB,YAAQ,qBAAqB,CAAC,KAAK,IAAI,GAAG,UAAU,MAAM;AAC1D,UAAM,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AACA,WAAO,UAAU,MAAM,CAAC,GAAG,MAAM;AAC7B,UAAI,MAAM,UAAU,CAAC,CAAC,UAAU,UAAU,SAAS,EAAE,SAAS,CAAC;AAC3D,eAAO;AACX,aAAO,cAAc,SAAS,CAAC;AAAA,IACnC,CAAC;AACD,UAAM,cAAc,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,aAAa,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,aAAa,SAAS;AAC3K,UAAMM,gBAAe,cACf,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,kBAAkB,WAAW,IACvF;AAAA,MACE,OAAO,CAAC;AAAA,MACR,OAAO,CAAC;AAAA,MACR,SAAS,CAAC;AAAA,MACV,QAAQ,CAAC;AAAA,IACb;AACJ,eAAWA,aAAY,EAAE,QAAQ,QAAM;AACnC,YAAM,cAAcA,cAAa;AACjC,UAAI,MAAM,QAAQ,WAAW,GAAG;AAC5B,YAAI,YAAY,QAAQ,GAAG,MAAM;AAC7B,eAAK,MAAM;AAAA,MACnB,OACK;AACD,YAAI,YAAY,QAAQ,EAAE,MAAM;AAC5B,eAAK,MAAM,YAAY;AAAA,MAC/B;AAAA,IACJ,CAAC;AACD,SAAK,MAAM,KAAK,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,uBAAuB,CAAC;AAChG,WAAO,KAAK,OAAO,KAAK,IAAI;AAAA,EAChC;AAAA,EACA,kBAAkB,YAAY,MAAM;AAChC,YAAQ,aAAa,CAAC,SAAS,GAAG,UAAU,MAAM;AAClD,2BAAuB,MAAM,kCAAkC,WAAW,GAAG;AAC7E,WAAO;AAAA,EACX;AAAA,EACA,SAAS,MAAM,KAAK,KAAK;AACrB,WAAO,KAAK,OAAO,MAAM,KAAK,GAAG;AAAA,EACrC;AAAA,EACA,QAAQ,MAAM,KAAK,KAAK;AACpB,WAAO,KAAK,OAAO,MAAM,KAAK,GAAG;AAAA,EACrC;AAAA,EACA,YAAY,MAAM;AACd,YAAQ,kCAAkC,CAAC,IAAI,GAAG,UAAU,MAAM;AAClE,QAAI,OAAO,SAAS,YAAY,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,KAAK,OAAO;AAClG,aAAO;AAAA,IACX,OACK;AACD,WAAK,0CAA0C,KAAK,YAAY,KAAK,IAAI,GAAG,QAAQ,MAAM,GAAG;AAAA,IACjG;AACA,WAAO;AAAA,EACX;AAAA,EACA,qBAAqB,IAAI,KAAK;AAC1B,YAAQ,qBAAqB,CAAC,IAAI,GAAG,GAAG,UAAU,MAAM;AACxD,SAAK,MAAM,KAAK;AAChB,2BAAuB,MAAM,uBAAuB,GAAG,EAAE,IAAI,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,yBAAyB,IAAI,OAAO,uBAAuB,MAAM,kCAAkC,GAAG,KAAK,YAAY,CAAC;AAClP,WAAO;AAAA,EACX;AAAA,EACA,SAAS,OAAO;AACZ,YAAQ,qBAAqB,CAAC,KAAK,GAAG,UAAU,MAAM;AACtD,2BAAuB,MAAM,0BAA0B,MAAM,GAAG;AAChE,QAAI,CAAC,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,qBAAqB,GAAG;AACjF,UAAI,CAAC,KAAK,QAAQ;AACd,cAAMD,SAAQ,KAAK,mCAAmC,uBAAuB,MAAM,4BAA4B,GAAG,GAAG,QAAW,QAAW,GAAG,IAAI;AAClJ,YAAI,UAAUA,MAAK,GAAG;AAClB,UAAAA,OAAM,KAAK,MAAM;AACb,mCAAuB,MAAM,sBAAsB,GAAG,EAAE,SAAS,KAAK;AAAA,UAC1E,CAAC;AACD,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,YAAM,kBAAkB,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,oBAAoB,IAAI;AAC1G,UAAI,UAAU,eAAe,GAAG;AAC5B,wBAAgB,KAAK,MAAM;AACvB,iCAAuB,MAAM,sBAAsB,GAAG,EAAE,SAAS,KAAK;AAAA,QAC1E,CAAC;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AACA,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,SAAS,KAAK;AACtE,WAAO;AAAA,EACX;AAAA,EACA,WAAW,YAAY;AACnB,SAAK,mBAAmB;AACxB,SAAK,KAAK;AACV,WAAO;AAAA,EACX;AAAA,EACA,eAAe,SAAS,SAAS;AAC7B,YAAQ,6BAA6B,CAAC,SAAS,OAAO,GAAG,UAAU,MAAM;AACzE,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,eAAe,SAAS,OAAO;AACvF,WAAO;AAAA,EACX;AAAA,EACA,YAAY,OAAO;AACf,YAAQ,qBAAqB,CAAC,KAAK,GAAG,UAAU,MAAM;AACtD,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,YAAY,KAAK;AACzE,WAAO;AAAA,EACX;AAAA,EACA,eAAe,MAAM;AACjB,YAAQ,kBAAkB,CAAC,IAAI,GAAG,UAAU,MAAM;AAClD,SAAK,0BAA0B,kBAAkB,IAAI;AACrD,WAAO;AAAA,EACX;AAAA,EACA,OAAO,SAAS;AACZ,YAAQ,aAAa,CAAC,OAAO,GAAG,UAAU,MAAM;AAChD,2BAAuB,MAAM,uBAAuB,YAAY,OAAO,GAAG;AAC1E,WAAO;AAAA,EACX;AAAA,EACA,eAAe,SAAS;AACpB,YAAQ,aAAa,CAAC,OAAO,GAAG,UAAU,MAAM;AAChD,2BAAuB,MAAM,+BAA+B,YAAY,OAAO,GAAG;AAClF,WAAO;AAAA,EACX;AAAA,EACA,cAAc,SAAS;AACnB,YAAQ,aAAa,CAAC,OAAO,GAAG,UAAU,MAAM;AAChD,2BAAuB,MAAM,8BAA8B,YAAY,OAAO,GAAG;AACjF,WAAO;AAAA,EACX;AAAA,EACA,OAAO,MAAM;AACT,YAAQ,kBAAkB,CAAC,IAAI,GAAG,UAAU,MAAM;AAClD,SAAK,0BAA0B,UAAU,IAAI;AAC7C,SAAK,uBAAuB,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EACA,gBAAgB;AACZ,YAAQ,CAAC,GAAG,CAAC;AACb,WAAO,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,QAAQ;AAAA,EAC1E;AAAA,EACA,aAAa,KAAK;AACd,WAAO,KAAK,cAAc,GAAG;AAAA,EACjC;AAAA,EACA,cAAc,KAAK;AACf,YAAQ,YAAY,CAAC,GAAG,GAAG,UAAU,MAAM;AAC3C,2BAAuB,MAAM,6BAA6B,OAAO,GAAG;AACpE,2BAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK,aAAa,GAAG;AAC5E,WAAO;AAAA,EACX;AAAA,EACA,MAAM,KAAK,aAAaH,WAASC,WAAS;AACtC,YAAQ,yEAAyE,CAAC,KAAK,aAAaD,WAASC,SAAO,GAAG,UAAU,MAAM;AACvI,QAAI,gBAAgB,QAAW;AAC3B,2BAAqB,KAAK,MAAM,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AACtF,WAAK,OAAO,IAAI,MAAM,WAAW,GAAG;AAChC,eAAO,KAAK,QAAQ,KAAK,aAAaD,WAASC,SAAO;AAAA,MAC1D,OACK;AACD,cAAM,IAAI,OAAO,+EAA+E;AAAA,MACpG;AAAA,IACJ,OACK;AACD,6BAAuB,MAAM,sBAAsB,GAAG,EAAE,MAAM,GAAG;AACjE,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,mBAAmB,QAAQ;AACvB,YAAQ,YAAY,CAAC,MAAM,GAAG,UAAU,MAAM;AAC9C,2BAAuB,MAAM,4BAA4B,QAAQ,GAAG;AACpE,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,KAAK,KAAK,KAAK;AACnB,UAAM,oBAAoB;AAC1B,YAAQ,sCAAsC,CAAC,KAAK,KAAK,GAAG,GAAG,UAAU,MAAM;AAC/E,QAAI,uBAAuB,MAAM,2BAA2B,GAAG,GAAG;AAC9D,WAAK,6BAA6B,uBAAuB,MAAM,2BAA2B,GAAG,CAAC;AAC9F,6BAAuB,MAAM,sBAAsB,GAAG,EAAE,QAAQ,MAAS;AACzE,6BAAuB,MAAM,2BAA2B,MAAM,GAAG;AAAA,IACrE;AACA,QAAI,UAAU,WAAW,GAAG;AACxB,YAAM,KAAK,eAAe;AAC1B,YAAM;AAAA,IACV,WACS,UAAU,WAAW,GAAG;AAC7B,UAAI,QAAQ,OAAO;AACf,eAAO;AAAA,MACX;AACA,YAAM;AACN,YAAM;AAAA,IACV,WACS,UAAU,WAAW,GAAG;AAC7B,YAAM;AACN,YAAM;AAAA,IACV;AACA,2BAAuB,MAAM,2BAA2B,OAAO,QAAQ,WAAW,MAAM,mBAAmB,GAAG;AAC9G,UAAM,OAAO,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,gBAAgB,qBAAqB;AAC1G,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,QAAQ,OAAO,MAAS;AAChF,SAAK,QAAQ,uBAAuB,MAAM,2BAA2B,GAAG,CAAC;AACzE,SAAK,SAAS,uBAAuB,MAAM,2BAA2B,GAAG,GAAG,GAAG;AAC/E,WAAO;AAAA,EACX;AAAA,EACA,KAAK,MAAM;AACP,YAAQ,2BAA2B,CAAC,IAAI,GAAG,UAAU,MAAM;AAC3D,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,KAAK,IAAI;AACjE,WAAO;AAAA,EACX;AAAA,EACA,EAAE,yBAAyB,oBAAI,QAAQ,GAAG,qBAAqB,oBAAI,QAAQ,GAAG,yBAAyB,oBAAI,QAAQ,GAAG,4BAA4B,oBAAI,QAAQ,GAAG,mCAAmC,oBAAI,QAAQ,GAAG,sCAAsC,oBAAI,QAAQ,GAAG,2BAA2B,oBAAI,QAAQ,GAAG,8BAA8B,oBAAI,QAAQ,GAAG,iCAAiC,oBAAI,QAAQ,GAAG,6BAA6B,oBAAI,QAAQ,GAAG,yBAAyB,oBAAI,QAAQ,GAAG,kCAAkC,oBAAI,QAAQ,GAAG,wBAAwB,oBAAI,QAAQ,GAAG,2BAA2B,oBAAI,QAAQ,GAAG,yBAAyB,oBAAI,QAAQ,GAAG,iCAAiC,oBAAI,QAAQ,GAAG,wBAAwB,oBAAI,QAAQ,GAAG,wBAAwB,oBAAI,QAAQ,GAAG,yBAAyB,oBAAI,QAAQ,GAAG,+BAA+B,oBAAI,QAAQ,GAAG,8BAA8B,oBAAI,QAAQ,GAAG,yBAAyB,oBAAI,QAAQ,GAAG,8BAA8B,oBAAI,QAAQ,GAAG,sBAAsB,oBAAI,QAAQ,GAAG,iCAAiC,oBAAI,QAAQ,GAAG,6BAA6B,oBAAI,QAAQ,GAAG,mCAAmC,oBAAI,QAAQ,GAAG,sBAAsB,oBAAI,QAAQ,GAAG,wBAAwB,oBAAI,QAAQ,GAAG,gCAAgC,oBAAI,QAAQ,GAAG,+BAA+B,oBAAI,QAAQ,GAAG,uBAAuB,oBAAI,QAAQ,GAAG,6BAA6B,oBAAI,QAAQ,GAAG,4BAA4B,oBAAI,QAAQ,GAAG,4BAA4B,oBAAI,QAAQ,GAAG,kBAAkB,MAAM;AAC3/C,QAAI,CAAC,KAAK,KAAK,CAAC,KAAK;AACjB,aAAO;AACX,SAAK,EAAE,KAAK,MAAM,KAAK,GAAG,KAAK,KAAK;AACpC,QAAI;AACA,aAAO,KAAK;AAAA,IAChB,SACO,MAAP;AAAA,IAAe;AACf,WAAO;AAAA,EACX;AAAA,EACA,CAAC,iBAAiB;AACd,WAAO;AAAA,MACH,KAAK,IAAI,SAAS;AACd,YAAI,CAAC,KAAK,mBAAmB;AACzB,kBAAQ,IAAI,GAAG,IAAI;AACvB,+BAAuB,MAAM,0BAA0B,MAAM,GAAG;AAChE,YAAI,uBAAuB,MAAM,uBAAuB,GAAG,EAAE;AACzD,iCAAuB,MAAM,uBAAuB,uBAAuB,MAAM,uBAAuB,GAAG,IAAI,MAAM,GAAG;AAC5H,+BAAuB,MAAM,uBAAuB,uBAAuB,MAAM,uBAAuB,GAAG,IAAI,KAAK,KAAK,GAAG,GAAG,GAAG;AAAA,MACtI;AAAA,MACA,OAAO,IAAI,SAAS;AAChB,YAAI,CAAC,KAAK,mBAAmB;AACzB,kBAAQ,MAAM,GAAG,IAAI;AACzB,+BAAuB,MAAM,0BAA0B,MAAM,GAAG;AAChE,YAAI,uBAAuB,MAAM,uBAAuB,GAAG,EAAE;AACzD,iCAAuB,MAAM,uBAAuB,uBAAuB,MAAM,uBAAuB,GAAG,IAAI,MAAM,GAAG;AAC5H,+BAAuB,MAAM,uBAAuB,uBAAuB,MAAM,uBAAuB,GAAG,IAAI,KAAK,KAAK,GAAG,GAAG,GAAG;AAAA,MACtI;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,CAAC,6BAA6B,WAAW;AACrC,eAAW,uBAAuB,MAAM,wBAAwB,GAAG,CAAC,EAAE,QAAQ,CAAC,YAAY;AACvF,WAAK,CAAC,QAAQ,QAAQ,iBAAiB,OAAO;AAC1C;AACJ,YAAM,OAAO,uBAAuB,MAAM,wBAAwB,GAAG,EAAE;AACvE,UAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAI,KAAK,SAAS,SAAS;AACvB,eAAK,OAAO,KAAK,QAAQ,SAAS,GAAG,CAAC;AAAA,MAC9C,WACS,OAAO,SAAS,UAAU;AAC/B,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ,CAAC;AACD,WAAO,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,gBAAgB,EAAE;AAAA,EACrF;AAAA,EACA,CAAC,cAAc,SAAS,MAAM,iBAAiB;AAC3C,QAAI,CAAC,uBAAuB,MAAM,gCAAgC,GAAG,EAAE,kBAAkB;AACrF,6BAAuB,MAAM,qBAAqB,GAAG,EAAE,QAAQ,YAAY,SAAS,IAAI;AACxF,6BAAuB,MAAM,gCAAgC,GAAG,EAAE,mBAAmB;AAAA,IACzF;AAAA,EACJ;AAAA,EACA,CAAC,WAAW;AACR,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,KAAK;AAAA,MAC3D,SAAS,uBAAuB,MAAM,wBAAwB,GAAG;AAAA,MACjE,eAAe,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,cAAc,MAAM,CAAC;AAAA,MAC9F,aAAa,uBAAuB,MAAM,4BAA4B,GAAG;AAAA,MACzE,QAAQ,uBAAuB,MAAM,uBAAuB,GAAG;AAAA,MAC/D,QAAQ,uBAAuB,MAAM,uBAAuB,GAAG;AAAA,MAC/D,gBAAgB,uBAAuB,MAAM,+BAA+B,GAAG;AAAA,MAC/E,eAAe,uBAAuB,MAAM,8BAA8B,GAAG;AAAA,MAC7E,mBAAmB,uBAAuB,MAAM,kCAAkC,GAAG;AAAA,MACrF,QAAQ,uBAAuB,MAAM,uBAAuB,GAAG;AAAA,MAC/D,WAAW,uBAAuB,MAAM,0BAA0B,GAAG;AAAA,MACrE,WAAW,uBAAuB,MAAM,0BAA0B,GAAG;AAAA,MACrE,QAAQ,KAAK;AAAA,MACb,SAAS,uBAAuB,MAAM,wBAAwB,GAAG;AAAA,MACjE,cAAc,uBAAuB,MAAM,6BAA6B,GAAG;AAAA,IAC/E,CAAC;AACD,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,OAAO;AAC/D,2BAAuB,MAAM,2BAA2B,GAAG,EAAE,OAAO;AACpE,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,OAAO;AACjE,2BAAuB,MAAM,iCAAiC,GAAG,EAAE,OAAO;AAAA,EAC9E;AAAA,EACA,CAAC,kBAAkB;AACf,QAAI,KAAK;AACT,QAAI;AACJ,QAAI,kCAAkC,KAAK,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,QAAQ,KAAK,EAAE,EAAE,GAAG;AAClH,kBAAY,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,QAAQ,KAAK,EAAE,MAAM,GAAG,CAAC;AAAA,IAChG,OACK;AACD,kBAAY,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,QAAQ,KAAK,EAAE,MAAM,GAAG,CAAC;AAAA,IAChG;AACA,SAAK,UACA,IAAI,OAAK;AACV,YAAM,IAAI,KAAK,SAAS,uBAAuB,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAChF,aAAO,EAAE,MAAM,sBAAsB,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI;AAAA,IACxE,CAAC,EACI,KAAK,GAAG,EACR,KAAK;AACV,QAAI,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,GAAG,KACjE,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,kBAAkB,MAAM,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,GAAG,GAAG;AACnJ,WAAK,uBAAuB,MAAM,qBAAqB,GAAG,EACrD,OAAO,GAAG,EACV,QAAQ,GAAG,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK,QAAQ,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,QAAQ,SAAS,CAAC,MAAM,EAAE;AAAA,IACzK;AACA,WAAO;AAAA,EACX;AAAA,EACA,CAAC,2BAA2B;AACxB,WAAO,uBAAuB,MAAM,6BAA6B,GAAG;AAAA,EACxE;AAAA,EACA,CAAC,0BAA0B;AACvB,WAAO,uBAAuB,MAAM,4BAA4B,GAAG;AAAA,EACvE;AAAA,EACA,CAAC,gBAAgB;AACb,QAAI,CAAC,uBAAuB,MAAM,6BAA6B,GAAG;AAC9D;AACJ,UAAM,SAAS,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,QAAQ,KACjF,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,aAAa,KAC3E,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,MAAM,KACpE,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,UAAU,KACxE;AACJ,SAAK,OAAO,OAAO,QAAQ,UAAU,EAAE,CAAC;AAAA,EAC5C;AAAA,EACA,CAAC,iBAAiB;AACd,UAAM,MAAM,KAAK,QAAQ;AACzB,WAAO,IAAI,WAAW;AAAA,EAC1B;AAAA,EACA,CAAC,yBAAyB,MAAM;AAC5B,UAAM,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAC5C,aAAS,IAAI,GAAG,MAAM,MAAM,KAAK,QAAQ,QAAW,KAAK;AACrD,UAAI,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,gBAAgB,GAAG,KACjF,OAAO,cAAc,KAAK,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,GAAG;AACxD,aAAK,KAAK,OAAO,GAAG;AAAA,MACxB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,CAAC,QAAQ,UAAU;AACf,UAAM,QAAQ,YAAY;AAC1B,QAAI,uBAAuB,MAAM,qBAAqB,GAAG,EAAE;AACvD,aAAO,uBAAuB,MAAM,qBAAqB,GAAG,EAAE;AAClE,QAAI,MAAM,CAAC;AACX,QAAI;AACA,UAAI,WAAW,YAAY,uBAAuB,MAAM,qBAAqB,GAAG,EAAE;AAClF,UAAI,CAAC,YAAY,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK,QAAQ,QAAQ,GAAG;AAC5F,mBAAW,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK,QAAQ,QAAQ;AAAA,MAC3F;AACA,YAAM,cAAc,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,UAAU,CAAC,KAAK,UAAU;AACxG,YAAI,MAAM,SAAS,cAAc,GAAG;AAChC,iBAAO;AAAA,QACX,OACK;AACD,iBAAO;AAAA,QACX;AAAA,MACJ,CAAC;AACD,2BAAqB,aAAa,QAAW,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AACnG,YAAM,KAAK,MAAM,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,aAAa,aAAa,MAAM,CAAC;AAAA,IAC7G,SACO,OAAP;AAAA,IAAgB;AAChB,2BAAuB,MAAM,qBAAqB,GAAG,EAAE,SAAS,OAAO,CAAC;AACxE,WAAO,uBAAuB,MAAM,qBAAqB,GAAG,EAAE;AAAA,EAClE;AAAA,EACA,CAAC,0BAA0B,MAAM,MAAM;AACnC,WAAO,CAAC,EAAE,OAAO,IAAI;AACrB,SAAK,QAAQ,SAAO;AAChB,YAAM,KAAK,cAAc,GAAG;AAC5B,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,MAAM,KAAK,GAAG;AAAA,IAC5E,CAAC;AAAA,EACL;AAAA,EACA,CAAC,0CAA0CD,WAAS,MAAM,KAAK,OAAO;AAClE,SAAK,+BAA+BA,WAAS,MAAM,KAAK,OAAO,CAACK,OAAMC,MAAKC,WAAU;AACjF,6BAAuB,MAAM,wBAAwB,GAAG,EAAEF,OAAMC,QAAOC;AAAA,IAC3E,CAAC;AAAA,EACL;AAAA,EACA,CAAC,oCAAoCP,WAAS,MAAM,KAAK,OAAO;AAC5D,SAAK,+BAA+BA,WAAS,MAAM,KAAK,OAAO,CAACK,OAAMC,MAAKC,WAAU;AACjF,6BAAuB,MAAM,wBAAwB,GAAG,EAAEF,OAAMC,SAAQ,uBAAuB,MAAM,wBAAwB,GAAG,EAAED,OAAMC,SAAQ,CAAC,GAAG,OAAOC,MAAK;AAAA,IACpK,CAAC;AAAA,EACL;AAAA,EACA,CAAC,+BAA+BP,WAAS,MAAM,KAAK,OAAO,kBAAkB;AACzE,QAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,UAAI,QAAQ,OAAK;AACb,QAAAA,UAAQ,GAAG,KAAK;AAAA,MACpB,CAAC;AAAA,IACL,YACU,CAACM,SAAQ,OAAOA,SAAQ,UAAU,GAAG,GAAG;AAC9C,iBAAW,KAAK,WAAW,GAAG,GAAG;AAC7B,QAAAN,UAAQ,GAAG,IAAI,EAAE;AAAA,MACrB;AAAA,IACJ,OACK;AACD,uBAAiB,MAAM,KAAK,cAAc,GAAG,GAAG,KAAK;AAAA,IACzD;AAAA,EACJ;AAAA,EACA,CAAC,cAAc,KAAK;AAChB,QAAI,QAAQ;AACR,aAAO;AACX,WAAO;AAAA,EACX;AAAA,EACA,CAAC,SAAS,KAAK,KAAK;AAChB,SAAK,0CAA0C,KAAK,SAAS,KAAK,IAAI,GAAG,OAAO,KAAK,GAAG;AACxF,WAAO;AAAA,EACX;AAAA,EACA,CAAC,aAAa;AACV,QAAIQ,KAAIC,KAAIC,KAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAChD,UAAM,SAAS,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,IAAI;AAC7E,yBAAqB,QAAQ,QAAW,uBAAuB,MAAM,qBAAqB,GAAG,CAAC;AAC9F,QAAI;AACJ,IAACF,MAAK,MAAMC,MAAK,MAAMC,MAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM;AAAA,MACjI,SAAU,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuBF,KAAI,wBAAwB,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAC9F;AAAA,MACA,aAAc,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuBC,KAAI,4BAA4B,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MACtG,QAAS,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuBC,KAAI,uBAAuB,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAC5F,QAAS,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,uBAAuB,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAC5F,WAAY,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,0BAA0B,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAClG,WAAY,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,0BAA0B,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAClG,QAAQ,KAAK;AAAA,MACb,QAAS,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,uBAAuB,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAC5F,gBAAiB,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,+BAA+B,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAC5G,eAAgB,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,8BAA8B,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAC1G,mBAAoB,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,kCAAkC,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAClH,SAAU,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,wBAAwB,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,MAC9F,cAAe,EAAE,IAAI,MAAM,IAAI;AAAE,+BAAuB,IAAI,6BAA6B,IAAI,GAAG;AAAA,MAAG,EAAE,EAAG;AAAA,IAC5G,IAAI;AACJ,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,gBAAgB;AAC1E,2BAAuB,MAAM,sBAAsB,GAAG,EAAE,SAAS;AACjE,2BAAuB,MAAM,2BAA2B,GAAG,EAAE,SAAS;AACtE,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,SAAS;AACnE,2BAAuB,MAAM,iCAAiC,GAAG,EAAE,SAAS;AAAA,EAChF;AAAA,EACA,CAAC,gBAAgBC,aAAY,MAAM;AAC/B,WAAO,iBAAiB,MAAM,YAAU;AACpC,MAAAA,YAAW,MAAM;AACjB,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EACA,qBAAqB;AACjB,WAAO;AAAA,MACH,oBAAoB,KAAK,qBAAqB,KAAK,IAAI;AAAA,MACvD,YAAY,KAAK,aAAa,KAAK,IAAI;AAAA,MACvC,cAAc,KAAK,eAAe,KAAK,IAAI;AAAA,MAC3C,mBAAmB,KAAK,oBAAoB,KAAK,IAAI;AAAA,MACrD,iBAAiB,KAAK,kBAAkB,KAAK,IAAI;AAAA,MACjD,wBAAwB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC/D,uBAAuB,KAAK,wBAAwB,KAAK,IAAI;AAAA,MAC7D,kBAAkB,KAAK,mBAAmB,KAAK,IAAI;AAAA,MACnD,uBAAuB,KAAK,wBAAwB,KAAK,IAAI;AAAA,MAC7D,kBAAkB,KAAK,mBAAmB,KAAK,IAAI;AAAA,MACnD,iBAAiB,KAAK,kBAAkB,KAAK,IAAI;AAAA,MACjD,aAAa,KAAK,cAAc,KAAK,IAAI;AAAA,MACzC,OAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,MAC7B,eAAe,KAAK,gBAAgB,KAAK,IAAI;AAAA,MAC7C,kCAAkC,KAAK,mCAAmC,KAAK,IAAI;AAAA,MACnF,cAAc,KAAK,eAAe,KAAK,IAAI;AAAA,IAC/C;AAAA,EACJ;AAAA,EACA,CAAC,uBAAuB;AACpB,WAAO,uBAAuB,MAAM,wBAAwB,GAAG;AAAA,EACnE;AAAA,EACA,CAAC,eAAe;AACZ,WAAO,uBAAuB,MAAM,wBAAwB,GAAG;AAAA,EACnE;AAAA,EACA,CAAC,iBAAiB;AACd,WAAO,uBAAuB,MAAM,0BAA0B,GAAG;AAAA,EACrE;AAAA,EACA,CAAC,sBAAsB;AACnB,WAAO,uBAAuB,MAAM,uBAAuB,GAAG;AAAA,EAClE;AAAA,EACA,CAAC,oBAAoB;AACjB,WAAO,uBAAuB,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAAA,EAC9E;AAAA,EACA,CAAC,qBAAqB;AAClB,WAAO,uBAAuB,MAAM,sBAAsB,GAAG;AAAA,EACjE;AAAA,EACA,CAAC,0BAA0B;AACvB,WAAO,uBAAuB,MAAM,2BAA2B,GAAG;AAAA,EACtE;AAAA,EACA,CAAC,qBAAqB;AAClB,WAAO,CAAC,CAAC,uBAAuB,MAAM,wBAAwB,GAAG;AAAA,EACrE;AAAA,EACA,CAAC,oBAAoB;AACjB,WAAO,uBAAuB,MAAM,gCAAgC,GAAG;AAAA,EAC3E;AAAA,EACA,CAAC,cAAc,MAAM,oBAAoB,mBAAmB,qBAAqB;AAC7E,QAAI;AACA,aAAO;AACX,QAAI,UAAU,IAAI;AACd,aAAO;AACX,QAAI,CAAC,oBAAoB;AACrB,aAAO,KAAK,iBAAiB,IAAI;AAAA,IACrC;AACA,UAAM,yBAAyB,KAAK,yBAAyB,EAAE,+BAC3D,KAAK,yBAAyB,EAAE,gCAAgC;AACpE,QAAI,wBAAwB;AACxB,aAAO,KAAK,yBAAyB,IAAI;AAAA,IAC7C;AACA,QAAI,qBAAqB;AACrB,aAAO,gBAAgB,MAAM,MAAM,uBAAuB,MAAM,iCAAiC,GAAG,EAAE,cAAc,GAAG,KAAK;AAAA,IAChI;AACA,WAAO;AAAA,EACX;AAAA,EACA,CAAC,QAAQ,UAAU,CAAC,GAAG;AACnB,2BAAuB,MAAM,wBAAwB,uBAAuB,MAAM,wBAAwB,GAAG,KAAK,CAAC,GAAG,GAAG;AACzH,UAAM,aAAa,CAAC;AACpB,eAAW,QAAQ,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,SAAS,CAAC;AACvF,eAAW,gBAAgB,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,iBAAiB,CAAC;AACvG,UAAM,cAAc,CAAC;AACrB,eAAW,MAAM,QAAQ,OAAK;AAC1B,kBAAY,KAAK;AACjB,OAAC,QAAQ,MAAM,CAAC,GAAG,QAAQ,OAAK;AAC5B,oBAAY,KAAK;AAAA,MACrB,CAAC;AAAA,IACL,CAAC;AACD,WAAO,OAAO,uBAAuB,MAAM,gCAAgC,GAAG,GAAG,OAAO,KAAK,uBAAuB,MAAM,uBAAuB,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,cAAc;AAC9K,YAAM,OAAO,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,WAAW,OAAO,SAAO,EAAE,OAAO,YAAY;AACpH,UAAI,KAAK,SAAS,GAAG;AACjB,YAAI,aAAa;AAAA,MACrB;AACA,aAAO;AAAA,IACX,GAAG,CAAC,CAAC,CAAC;AACN,2BAAuB,MAAM,uBAAuB,CAAC,GAAG,GAAG;AAC3D,UAAM,eAAe;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AACA,UAAM,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AACA,iBAAa,QAAQ,OAAK;AACtB,iBAAW,MAAM,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,MAAM,CAAC,GAAG,OAAO,CAACC,OAAM,CAAC,YAAYA,GAAE;AAAA,IACtH,CAAC;AACD,kBAAc,QAAQ,CAAC,MAAM;AACzB,iBAAW,KAAK,UAAU,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,IAAI,CAAAA,OAAK,CAAC,YAAYA,GAAE;AAAA,IAChH,CAAC;AACD,eAAW,YAAY,uBAAuB,MAAM,wBAAwB,GAAG,EAAE;AACjF,2BAAuB,MAAM,wBAAwB,YAAY,GAAG;AACpE,2BAAuB,MAAM,sBAAsB,uBAAuB,MAAM,sBAAsB,GAAG,IACnG,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,MAAM,WAAW,IACzE,MAAM,MAAM,uBAAuB,MAAM,qBAAqB,GAAG,CAAC,GAAG,GAAG;AAC9E,2BAAuB,MAAM,2BAA2B,uBAAuB,MAAM,2BAA2B,GAAG,IAC7G,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,MAAM,WAAW,IAC9E,WAAW,MAAM,uBAAuB,MAAM,sBAAsB,GAAG,GAAG,uBAAuB,MAAM,qBAAqB,GAAG,CAAC,GAAG,GAAG;AAC5I,2BAAuB,MAAM,wBAAwB,uBAAuB,MAAM,wBAAwB,GAAG,IACvG,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,MAAM,IAChE,QAAQ,uBAAuB,MAAM,sBAAsB,GAAG,GAAG,uBAAuB,MAAM,2BAA2B,GAAG,GAAG,uBAAuB,MAAM,iCAAiC,GAAG,GAAG,uBAAuB,MAAM,qBAAqB,GAAG,CAAC,GAAG,GAAG;AACrQ,QAAI,CAAC,uBAAuB,MAAM,2BAA2B,GAAG;AAC5D,6BAAuB,MAAM,2BAA2B,WAAW,MAAM,uBAAuB,MAAM,sBAAsB,GAAG,GAAG,uBAAuB,MAAM,wBAAwB,GAAG,GAAG,uBAAuB,MAAM,qBAAqB,GAAG,CAAC,GAAG,GAAG;AAC7P,2BAAuB,MAAM,iCAAiC,GAAG,EAAE,MAAM;AACzE,2BAAuB,MAAM,kCAAkC,MAAM,GAAG;AACxE,2BAAuB,MAAM,uBAAuB,IAAI,GAAG;AAC3D,2BAAuB,MAAM,0BAA0B,MAAM,GAAG;AAChE,2BAAuB,MAAM,0BAA0B,OAAO,GAAG;AACjE,SAAK,SAAS;AACd,WAAO;AAAA,EACX;AAAA,EACA,CAAC,SAAS,MAAM,KAAK;AACjB,WAAO,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK,SAAS,MAAM,GAAG;AAAA,EACzF;AAAA,EACA,CAAC,mCAAmC,MAAM,cAAc,mBAAmB,eAAe,GAAG,WAAW,OAAO;AAC3G,QAAI,iBAAiB,CAAC,CAAC,qBAAqB;AAC5C,WAAO,QAAQ,uBAAuB,MAAM,4BAA4B,GAAG;AAC3E,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,KAAK,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,KAAK;AAC3H,2BAAuB,MAAM,wBAAwB,GAAG,EAAE,gBAAgB,KAAK,yBAAyB;AACxG,UAAM,qBAAqB,CAAC,CAAC,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,cAAc;AACrG,UAAM,SAAS,OAAO,OAAO,CAAC,GAAG,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,eAAe;AAAA,MACtG,cAAc;AAAA,IAClB,CAAC;AACD,UAAM,SAAS,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,OAAO,SAAS,MAAM,OAAO,OAAO,CAAC,GAAG,uBAAuB,MAAM,wBAAwB,GAAG,GAAG;AAAA,MACrK,eAAe,EAAE,4BAA4B,OAAO,GAAG,OAAO;AAAA,IAClE,CAAC,CAAC;AACF,UAAM,OAAO,OAAO,OAAO,OAAO,MAAM,uBAAuB,MAAM,6BAA6B,GAAG,CAAC;AACtG,QAAI,cAAc;AAClB,UAAM,UAAU,OAAO;AACvB,QAAI,aAAa;AACjB,QAAI,gBAAgB;AACpB,WAAO,KAAK,IAAI,EAAE,QAAQ,SAAO;AAC7B,UAAI,QAAQ,uBAAuB,MAAM,wBAAwB,GAAG,KAAK,KAAK,MAAM;AAChF,qBAAa;AAAA,MACjB,WACS,QAAQ,uBAAuB,MAAM,2BAA2B,GAAG,KAAK,KAAK,MAAM;AACxF,wBAAgB;AAAA,MACpB;AAAA,IACJ,CAAC;AACD,SAAK,KAAK,KAAK;AACf,SAAK,SAAS;AACd,QAAI,iBAAiB,GAAG;AACpB,6BAAuB,MAAM,sBAAsB,GAAG,EAAE,uBAAuB;AAAA,IACnF;AACA,QAAI;AACA,WAAK,cAAc;AACnB,UAAI,cAAc;AACd,eAAO,KAAK,cAAc,MAAM,oBAAoB,CAAC,CAAC,mBAAmB,KAAK;AAAA,MAClF;AACA,UAAI,uBAAuB,MAAM,wBAAwB,GAAG,GAAG;AAC3D,cAAM,WAAW,CAAC,uBAAuB,MAAM,wBAAwB,GAAG,CAAC,EACtE,OAAO,QAAQ,uBAAuB,MAAM,wBAAwB,GAAG,MAAM,CAAC,CAAC,EAC/E,OAAO,OAAK,EAAE,SAAS,CAAC;AAC7B,YAAI,SAAS,SAAS,KAAK,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG;AACnD,eAAK,EAAE,IAAI;AACX,uBAAa;AAAA,QACjB;AAAA,MACJ;AACA,6BAAuB,MAAM,gCAAgC,OAAO,GAAG;AACvE,YAAM,cAAc,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,YAAY;AAC1F,YAAM,qBAAqB,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,iBAAiB;AACzG,YAAM,qBAAqB,cAAc,sBAAsB;AAC/D,UAAI,KAAK,EAAE,QAAQ;AACf,YAAI,YAAY,QAAQ;AACpB,cAAI;AACJ,mBAAS,IAAI,gBAAgB,GAAG,KAAK,KAAK,EAAE,OAAO,QAAW,KAAK;AAC/D,kBAAM,OAAO,KAAK,EAAE,EAAE;AACtB,gBAAI,YAAY,SAAS,GAAG,KAAK,QAAQ,uBAAuB,MAAM,kCAAkC,GAAG,GAAG;AAC1G,oBAAM,YAAY,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,WAAW,KAAK,MAAM,QAAQ,IAAI,GAAG,UAAU,cAAc,iBAAiB,QAAQ;AAClK,qBAAO,KAAK,cAAc,WAAW,oBAAoB,CAAC,CAAC,mBAAmB,KAAK;AAAA,YACvF,WACS,CAAC,uBACN,QAAQ,uBAAuB,MAAM,kCAAkC,GAAG,GAAG;AAC7E,oCAAsB;AACtB;AAAA,YACJ;AAAA,UACJ;AACA,cAAI,CAAC,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,kBAAkB,KAC7E,uBAAuB,MAAM,kCAAkC,GAAG,KAClE,uBACA,CAAC,oBAAoB;AACrB,mCAAuB,MAAM,2BAA2B,GAAG,EAAE,kBAAkB,qBAAqB,WAAW;AAAA,UACnH;AAAA,QACJ;AACA,YAAI,uBAAuB,MAAM,kCAAkC,GAAG,KAClE,KAAK,EAAE,SAAS,uBAAuB,MAAM,kCAAkC,GAAG,CAAC,KACnF,CAAC,oBAAoB;AACrB,cAAI,uBAAuB,MAAM,4BAA4B,GAAG;AAC5D,wBAAY,IAAI;AACpB,eAAK,qBAAqB;AAC1B,eAAK,KAAK,CAAC;AAAA,QACf;AAAA,MACJ;AACA,UAAI,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,kBAAkB,KAAK,CAAC,oBAAoB;AACtG,cAAM,YAAY,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,WAAW,MAAM,MAAM,QAAQ,GAAG,UAAU,cAAc,iBAAiB,QAAQ;AAC/J,eAAO,KAAK,cAAc,WAAW,oBAAoB,CAAC,CAAC,mBAAmB,KAAK;AAAA,MACvF;AACA,UAAI,oBAAoB;AACpB,YAAI,uBAAuB,MAAM,4BAA4B,GAAG;AAC5D,sBAAY,IAAI;AACpB,eAAO,CAAC,EAAE,OAAO,IAAI;AACrB,cAAM,iBAAiB,KAAK,MAAM,KAAK,QAAQ,KAAK,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,eAAe,IAAI,CAAC;AACrI,+BAAuB,MAAM,2BAA2B,GAAG,EAAE,cAAc,gBAAgB,CAAC,KAAK,gBAAgB;AAC7G,cAAI;AACA,kBAAM,IAAI,OAAO,IAAI,OAAO;AAChC,WAAC,eAAe,CAAC,GAAG,QAAQ,CAAAC,gBAAc;AACtC,mCAAuB,MAAM,uBAAuB,GAAG,EAAE,IAAIA,WAAU;AAAA,UAC3E,CAAC;AACD,eAAK,KAAK,CAAC;AAAA,QACf,CAAC;AACD,eAAO,KAAK,cAAc,MAAM,CAAC,oBAAoB,CAAC,CAAC,mBAAmB,KAAK;AAAA,MACnF;AACA,UAAI,CAAC,uBAAuB,MAAM,0BAA0B,GAAG,GAAG;AAC9D,YAAI,YAAY;AACZ,cAAI,uBAAuB,MAAM,4BAA4B,GAAG;AAC5D,wBAAY,IAAI;AACpB,2BAAiB;AACjB,eAAK,SAAS,KAAK;AACnB,eAAK,KAAK,CAAC;AAAA,QACf,WACS,eAAe;AACpB,cAAI,uBAAuB,MAAM,4BAA4B,GAAG;AAC5D,wBAAY,IAAI;AACpB,2BAAiB;AACjB,iCAAuB,MAAM,sBAAsB,GAAG,EAAE,YAAY,KAAK;AACzE,eAAK,KAAK,CAAC;AAAA,QACf;AAAA,MACJ;AACA,UAAI,CAAC,kBAAkB,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,eAAe,SAAS,GAAG;AACxG,yBAAiB,OAAO,KAAK,IAAI,EAAE,KAAK,SAAO,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,eAAe,QAAQ,GAAG,KAAK,KAAK,KAAK,SAAS,IAAI;AAAA,MACnK;AACA,UAAI,CAAC,gBAAgB;AACjB,YAAI,OAAO;AACP,gBAAM,IAAI,OAAO,OAAO,MAAM,OAAO;AACzC,YAAI,CAAC,oBAAoB;AACrB,gBAAMF,cAAa,KAAK,gBAAgB,SAAS,CAAC,GAAG,OAAO,KAAK;AACjE,cAAI,CAAC,mBAAmB;AACpB,0BAAc,gBAAgB,MAAM,MAAM,uBAAuB,MAAM,iCAAiC,GAAG,EAAE,cAAc,GAAG,IAAI;AAAA,UACtI;AACA,wBAAc,KAAK,gBAAgBA,aAAY,gBAAgB,QAAQ,gBAAgB,SAAS,cAAc,IAAI;AAClH,cAAI,UAAU,WAAW,KAAK,CAAC,mBAAmB;AAC9C,0BAAc,YAAY,KAAK,MAAM;AACjC,qBAAO,gBAAgB,MAAM,MAAM,uBAAuB,MAAM,iCAAiC,GAAG,EAAE,cAAc,GAAG,KAAK;AAAA,YAChI,CAAC;AAAA,UACL;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,SACO,KAAP;AACI,UAAI,eAAe;AACf,+BAAuB,MAAM,sBAAsB,GAAG,EAAE,KAAK,IAAI,SAAS,GAAG;AAAA;AAE7E,cAAM;AAAA,IACd;AACA,WAAO,KAAK,cAAc,gBAAgB,QAAQ,gBAAgB,SAAS,cAAc,MAAM,oBAAoB,CAAC,CAAC,mBAAmB,IAAI;AAAA,EAChJ;AAAA,EACA,CAAC,gBAAgB,SAAS,eAAe,aAAa,kBAAkB;AACpE,UAAM,kBAAkB,EAAE,GAAG,KAAK,mBAAmB,EAAE;AACvD,WAAO,CAAC,SAAS;AACb,UAAI;AACA,cAAM,IAAI,OAAO,YAAY,OAAO;AACxC,6BAAuB,MAAM,2BAA2B,GAAG,EAAE,eAAe,IAAI;AAChF,6BAAuB,MAAM,2BAA2B,GAAG,EAAE,kBAAkB,MAAM,eAAe;AACpG,UAAI,uBAAuB;AAC3B,UAAI,uBAAuB,MAAM,+BAA+B,GAAG,GAAG;AAClE,+BAAuB,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,gBAAgB,IAAI;AAAA,MAC5G;AACA,UAAI,uBAAuB,MAAM,uBAAuB,GAAG,KAAK,CAAC,sBAAsB;AACnF,+BAAuB,MAAM,2BAA2B,GAAG,EAAE,iBAAiB,MAAM,SAAS,eAAe,CAAC,CAAC,gBAAgB;AAAA,MAClI,WACS,uBAAuB,MAAM,8BAA8B,GAAG,GAAG;AACtE,+BAAuB,MAAM,2BAA2B,GAAG,EAAE,iBAAiB,MAAM,SAAS,CAAC,GAAG,OAAO,KAAK;AAAA,MACjH;AACA,6BAAuB,MAAM,2BAA2B,GAAG,EAAE,eAAe,IAAI;AAChF,6BAAuB,MAAM,2BAA2B,GAAG,EAAE,aAAa,IAAI;AAC9E,6BAAuB,MAAM,2BAA2B,GAAG,EAAE,YAAY,IAAI;AAAA,IACjF;AAAA,EACJ;AAAA,EACA,CAAC,iBAAiB;AACd,2BAAuB,MAAM,0BAA0B,MAAM,GAAG;AAAA,EACpE;AAAA,EACA,CAAC,uBAAuB,MAAM;AAC1B,QAAI,OAAO,SAAS,UAAU;AAC1B,6BAAuB,MAAM,wBAAwB,GAAG,EAAE,IAAI,QAAQ;AAAA,IAC1E,OACK;AACD,iBAAW,KAAK,MAAM;AAClB,+BAAuB,MAAM,wBAAwB,GAAG,EAAE,IAAI,KAAK;AAAA,MACvE;AAAA,IACJ;AAAA,EACJ;AACJ;AACO,SAAS,gBAAgB,GAAG;AAC/B,SAAO,CAAC,CAAC,KAAK,OAAO,EAAE,uBAAuB;AAClD;;;ACj+CA,IAAM,QAAQ,aAAa,WAAe;AAC1C,IAAO,gBAAQ;;;ACDf,IAAM,qBAAoC,CAAA;AAW1C,eAAsB,gCAAgC,oBAAwC;AAC5F,MAAI,MAAoB;AACxB,MAAI;AACF,UAAM,mBAAmB,cAAM,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAClD,YAAY,KAAK,EACjB,MAAK;EACV,SAAS,GAAP;AACA,UAAM;AACN,QAAI,CAAC,QAAW,CAAC,EAAE,SAAS,QAAQ,QAAQ,GAAG;AAC7C,cAAQ,WAAW;IACrB;EACF;AACE,eAAW,iBAAiB,oBAAoB;AAC9C,YAAM,cAAc,GAAG;IACzB;EACF;AACF;;;ACzBA,SAAQ,YAAW;;;ACOb,SAAU,qBAAwB,MAAa;AACnD,SACE,KAIG,OAAO,gBAAiC;IACvC,MAAM;IACN,SAAS;IACT,oBAAoB;IACpB,aAAa;IAGb,QAAQ;GACT;AAEP;AAYM,SAAU,6CAA6C,OAAyB;AACpF,QAAM,cAAc,UAAU,QAAQ,IAAI,gBAAgB,QAAQ,IAAI;AACtE,MAAI,CAAC,aAAa;AAChB,QAAI,MAAM,0EAA0E;AACpF,QAAI,MAAM,6DAA6D;AACvE,QAAI,KAAK,kCAAkC,2BAA2B;AACtE,UAAM,MAAM,uCAAuC;EACrD;AAEA,yBAAuB,UAAU,WAAW;AAC9C;;;ACzCA,eAAe,mBACb,QACA,UAAgB;AAEhB,MAAI;AACF,UAAM,WAAW,MAAM,OAAO,KAAK,uBAAuB,EAAC,KAAK,YAAY,SAAQ,CAAC;AACrF,QAAK,SAAS,WAAsB,KAAK;AACvC,aAAO;IACT;EACF,QAAE;EAAO;AACT,SAAO;AACT;AAgCA,eAAe,mCACb,QACAG,SAC2E;AAE3E,QAAM,EAAC,MAAM,aAAY,IAAI,MAAM,OAAO,OAAO,WAAWA,OAAM;AAClE,QAAM,EAAC,MAAM,cAAa,IAAI,MAAM,OAAO,MAAM,wBAAwBA,OAAM;AAE/E,QAAM,UAAU;IACd,GAAG,aAAa,WAAW,IACzB,CAAC,YAAyB;MACxB,MAAM;MACN,MAAM,OAAO;MACb,QAAQ,OAAO,WAAW,cAAc,OAAO,aAAc,OAAO;MACpE,KAAK,OAAO,eAAe;MAC3B,OAAO;MACP;IAEJ,GAAG,cAAc,SAAS,IACxB,CAAC,YAA0B;MACzB,MAAM;MACN,MAAM,OAAO;MACb,QAAQ,OAAO;MACf,aAAa,OAAO,eAAe;MACnC,KAAK,OAAO,cAAc;MAC1B,QAAQ;MACR;;AAKN,SAAO;IACL,QAAQ,QAAQ,OACd,CAAC,eAAe,EAAC,OAAM,MAAK;AAC1B,UAAI,kBAAkB,aAAa,CAAC,UAAU,eAAe,SAAS,EAAE,SAAS,MAAM,GAAG;AACxF,eAAO;MACT;AAEA,UACE,kBAAkB,aAClB,CAAC,WAAW,SAAS,aAAa,WAAW,EAAE,SAAS,MAAM,GAC9D;AACA,eAAO;MACT;AAEA,aAAO;IACT,GACA,IAAgD;IAElD;;AAEJ;AAEA,IAAA,wBAAe;EACb;EACA;;;;AClGI,IAAgB,aAAhB,MAA0B;EAI9B,YACY,KACA,QAA0D;AAD1D,SAAA,MAAA;AACA,SAAA,SAAA;AAJH,SAAA,OAAO,KAAK,aAAY;EAK9B;;;;ACWC,IAAO,WAAP,cAAwB,WAAkB;EACrC,MAAM,eAAY;AACzB,UAAM,iBAAiB,kBAAkB,KAAK,OAAO,MAAM;AAC3D,UAAM,OAA2B;MAC/B,KAAK,KAAK,IAAI;MACd,GAAG,KAAK,IAAI;MACZ;;AAEF,UAAM,EAAC,QAAQ,MAAM,kBAAkB,iBAAgB,IACrD,MAAM,oBAAoB,MAAM,IAAI;AACtC,UAAM,mBAAmB,OAAO,QAAQ,EAAC,kBAAkB,kBAAkB,QAAQ,KAAI,CAAC,EAAE,IAC1F,OAAO,CAAC,WAAW,KAAK,MAAoC;AAC1D,UAAI,UAAU,MAAM;AAClB,eAAO;UACL,QAAQ;UACR,MAAM;UACN,OAAO;UACP,QAAQ;;MAEZ;AAEA,YAAM,UACJ,MAAM,sBAAa,mCAAmC,KAAK,IAAI,QAAQ;QACrE,GAAG,KAAK,IAAI;QACZ,KAAK,MAAM;OACZ,GACD;AAEF,aAAO;QACL,QAAQ;QACR,MAAM,MAAM;QACZ,OAAO,GAAG,cAAc,MAAM;QAC9B;;IAEJ,CAAC;AAGH,WAAO,MAAM,QAAQ,IAAI,gBAAgB;EAC3C;EAES,MAAM,kBAAe;AAC5B,UAAM,OAAO,MAAM,KAAK;AACxB,UAAM,iBAAiB,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,OAAO,MAAM,MAAM,CAAC;AAC5E,QAAI,KAAK,MAAM,KAAK,IAAI,CAAC;AACzB,SAAK,QAAQ,CAAC,WAAU;AACtB,UAAI,OAAO,WAAW,OAAO;AAC3B,YAAI,MAAM,+BAA+B,OAAO,MAAM;AACtD;MACF;AACA,YAAM,QAAQ,OAAO,MAAM,OAAO,cAAc;AAChD,UAAI,OAAO,WAAW,MAAM;AAC1B,YAAI,KAAK,GAAG,OAAO,iCAAiC;MACtD,WAAW,OAAO,WAAW,WAAW;AACtC,YAAI,KAAK,GAAG,SAAS,MAAM,QAAG,GAAG;MACnC,WAAW,OAAO,WAAW,WAAW;AACtC,YAAI,KAAK,GAAG,SAAS,OAAO,QAAG,GAAG;MACpC,OAAO;AACL,YAAI,KAAK,GAAG,SAAS,IAAI,QAAG,GAAG;MACjC;IACF,CAAC;AACD,QAAI,KAAK,SAAQ;AACjB,QAAI,KAAI;EACV;;;;ACpFF,OAAOC,WAAU;;;ACRjB,6BAAmB;;;ACAnB,IAAM,qBAAqB,OAAO;AAC3B,IAAM,qBAA6C,CACxD,YAC6B;AAC7B,MAAI,OAAO,YAAY,UAAU;AAC/B,UAAM,IAAI,UAAU,iBAAiB;EACvC;AAEA,MAAI,QAAQ,SAAS,oBAAoB;AACvC,UAAM,IAAI,UAAU,qBAAqB;EAC3C;AACF;;;ACPA,IAAM,eAAsE;EAC1E,aAAa,CAAC,wBAAwB,IAAI;EAC1C,aAAa,CAAC,iBAAiB,IAAI;EACnC,aAAa,CAAC,eAAyB,KAAK;EAC5C,aAAa,CAAC,cAAc,IAAI;EAChC,aAAa,CAAC,WAAW,IAAI;EAC7B,aAAa,CAAC,WAAW,IAAI;EAC7B,aAAa,CAAC,gBAAgB,MAAM,IAAI;EACxC,aAAa,CAAC,WAAW,IAAI;EAC7B,aAAa,CAAC,UAAU,IAAI;EAC5B,aAAa,CAAC,UAAU,IAAI;EAC5B,aAAa,CAAC,yBAAyB,IAAI;EAC3C,aAAa,CAAC,WAAW,IAAI;EAC7B,YAAY,CAAC,+BAA+B,IAAI;EAChD,cAAc,CAAC,aAAa,KAAK;;AAKnC,IAAM,cAAc,CAAC,MAAc,EAAE,QAAQ,aAAa,MAAM;AAEhE,IAAM,eAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAG9C,IAAM,iBAAiB,CAAC,WAA6B,OAAO,KAAK,EAAE;AAe5D,IAAM,aAAa,CACxBC,OACA,aACoB;AACpB,QAAM,MAAM;AAEZ,MAAIA,MAAK,OAAO,GAAG,MAAM,KAAK;AAC5B,UAAM,IAAI,MAAM,2BAA2B;EAC7C;AAEA,QAAM,SAAmB,CAAA;AACzB,QAAM,OAAiB,CAAA;AAEvB,MAAI,IAAI,MAAM;AACd,MAAI,WAAW;AACf,MAAI,QAAQ;AACZ,MAAI,WAAW;AACf,MAAI,SAAS;AACb,MAAI,SAAS;AACb,MAAI,aAAa;AACjB;AAAO,WAAO,IAAIA,MAAK,QAAQ;AAC7B,YAAM,IAAIA,MAAK,OAAO,CAAC;AACvB,WAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC7C,iBAAS;AACT;AACA;MACF;AAEA,UAAI,MAAM,OAAO,YAAY,CAAC,UAAU;AACtC,iBAAS,IAAI;AACb;MACF;AAEA,iBAAW;AACX,UAAI,MAAM,MAAM;AACd,YAAI,CAAC,UAAU;AACb,qBAAW;AACX;AACA;QACF;MAEF;AACA,UAAI,MAAM,OAAO,CAAC,UAAU;AAE1B,mBAAW,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,OAAO,QAAQ,YAAY,GAAG;AAChE,cAAIA,MAAK,WAAW,KAAK,CAAC,GAAG;AAE3B,gBAAI,YAAY;AACd,qBAAO,CAAC,MAAM,OAAOA,MAAK,SAAS,KAAK,IAAI;YAC9C;AACA,iBAAK,IAAI;AACT,gBAAI;AAAK,mBAAK,KAAK,IAAI;;AAClB,qBAAO,KAAK,IAAI;AACrB,oBAAQ,SAAS;AACjB,qBAAS;UACX;QACF;MACF;AAGA,iBAAW;AACX,UAAI,YAAY;AAGd,YAAI,IAAI,YAAY;AAClB,iBAAO,KAAK,YAAY,UAAU,IAAI,MAAM,YAAY,CAAC,CAAC;QAC5D,WAAW,MAAM,YAAY;AAC3B,iBAAO,KAAK,YAAY,CAAC,CAAC;QAC5B;AACA,qBAAa;AACb;AACA;MACF;AAIA,UAAIA,MAAK,WAAW,MAAM,IAAI,CAAC,GAAG;AAChC,eAAO,KAAK,YAAY,IAAI,GAAG,CAAC;AAChC,aAAK;AACL;MACF;AACA,UAAIA,MAAK,WAAW,KAAK,IAAI,CAAC,GAAG;AAC/B,qBAAa;AACb,aAAK;AACL;MACF;AAGA,aAAO,KAAK,YAAY,CAAC,CAAC;AAC1B;IACF;AAEA,MAAI,SAAS,GAAG;AAGd,WAAO,CAAC,IAAI,OAAO,GAAG,KAAK;EAC7B;AAIA,MAAI,CAAC,OAAO,UAAU,CAAC,KAAK,QAAQ;AAClC,WAAO,CAAC,MAAM,OAAOA,MAAK,SAAS,KAAK,IAAI;EAC9C;AAMA,MACE,KAAK,WAAW,KAChB,OAAO,WAAW,KAClB,SAAS,KAAK,OAAO,EAAE,KACvB,CAAC,QACD;AACA,UAAM,IAAI,OAAO,GAAG,WAAW,IAAI,OAAO,GAAG,MAAM,EAAE,IAAI,OAAO;AAChE,WAAO,CAAC,aAAa,CAAC,GAAG,OAAO,SAAS,KAAK,KAAK;EACrD;AAEA,QAAM,UAAU,OAAO,SAAS,MAAM,MAAM,eAAe,MAAM,IAAI;AACrE,QAAM,QAAQ,OAAO,SAAS,KAAK,OAAO,eAAe,IAAI,IAAI;AACjE,QAAM,OACJ,OAAO,UAAU,KAAK,SAClB,MAAM,UAAU,MAAM,QAAQ,MAC9B,OAAO,SACP,UACA;AAEN,SAAO,CAAC,MAAM,OAAO,SAAS,KAAK,IAAI;AACzC;;;AC7JO,IAAM,WAAW,CACtB,GACA,EACE,uBAAuB,MAAK,IACsB,CAAA,MAClD;AACF,SAAO,uBACH,EAAE,QAAQ,kBAAkB,IAAI,IAChC,EAAE,QAAQ,6BAA6B,MAAM,EAAE,QAAQ,cAAc,IAAI;AAC/E;;;ACoBA,IAAM,QAAQ,oBAAI,IAAiB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5D,IAAM,gBAAgB,CAAC,MACrB,MAAM,IAAI,CAAgB;AAM5B,IAAM,mBAAmB;AACzB,IAAM,aAAa;AAKnB,IAAM,kBAAkB,oBAAI,IAAI,CAAC,KAAK,GAAG,CAAC;AAE1C,IAAM,WAAW,oBAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACpC,IAAM,aAAa,IAAI,IAAI,iBAAiB;AAC5C,IAAM,eAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAG9C,IAAM,QAAQ;AAGd,IAAM,OAAO,QAAQ;AAGrB,IAAM,cAAc,QAAQ;AAxE5B;AA6EM,IAAO,OAAP,MAAU;EAiBd,YACE,MACA,QACA,UAA4B,CAAA,GAAE;AAoChC;AAqdA;AA5gBA;AACS;AAET;AACA,+BAAkB;AAClB,+BAA2B,CAAA;AAClB;AACA;AACT;AACA,oCAAuB;AACvB;AACA;AAGA,kCAAqB;AAOnB,SAAK,OAAO;AAEZ,QAAI;AAAM,yBAAK,WAAY;AAC3B,uBAAK,SAAU;AACf,uBAAK,OAAQ,mBAAK,WAAU,gCAAK,UAAQ,SAAQ;AACjD,uBAAK,UAAW,mBAAK,WAAU,OAAO,UAAU,gCAAK,QAAM;AAC3D,uBAAK,OAAQ,mBAAK,WAAU,OAAO,CAAA,IAAK,gCAAK,QAAM;AACnD,QAAI,SAAS,OAAO,CAAC,gCAAK,QAAM;AAAa,yBAAK,OAAM,KAAK,IAAI;AACjE,uBAAK,cAAe,mBAAK,WAAU,gCAAK,UAAQ,QAAO,SAAS;EAClE;EAEA,IAAI,WAAQ;AAEV,QAAI,mBAAK,eAAc;AAAW,aAAO,mBAAK;AAE9C,eAAW,KAAK,mBAAK,SAAQ;AAC3B,UAAI,OAAO,MAAM;AAAU;AAC3B,UAAI,EAAE,QAAQ,EAAE;AAAU,eAAQ,mBAAK,WAAY;IACrD;AAEA,WAAO,mBAAK;EACd;EAGA,WAAQ;AACN,QAAI,mBAAK,eAAc;AAAW,aAAO,mBAAK;AAC9C,QAAI,CAAC,KAAK,MAAM;AACd,aAAQ,mBAAK,WAAY,mBAAK,QAAO,IAAI,OAAK,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;IAClE,OAAO;AACL,aAAQ,mBAAK,WACX,KAAK,OAAO,MAAM,mBAAK,QAAO,IAAI,OAAK,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAClE;EACF;EAuCA,QAAQ,OAAuB;AAC7B,eAAW,KAAK,OAAO;AACrB,UAAI,MAAM;AAAI;AAEd,UAAI,OAAO,MAAM,YAAY,EAAE,aAAa,QAAO,gBAAE,aAAY,OAAO;AACtE,cAAM,IAAI,MAAM,mBAAmB,CAAC;MACtC;AAEA,yBAAK,QAAO,KAAK,CAAC;IACpB;EACF;EAEA,SAAM;AAtLR,QAAAC;AAuLI,UAAM,MACJ,KAAK,SAAS,OACV,mBAAK,QAAO,MAAK,EAAG,IAAI,OAAM,OAAO,MAAM,WAAW,IAAI,EAAE,OAAM,CAAG,IACrE,CAAC,KAAK,MAAM,GAAG,mBAAK,QAAO,IAAI,OAAM,EAAU,OAAM,CAAE,CAAC;AAC9D,QAAI,KAAK,QAAO,KAAM,CAAC,KAAK;AAAM,UAAI,QAAQ,CAAA,CAAE;AAChD,QACE,KAAK,MAAK,MACT,SAAS,mBAAK,UACZ,gCAAK,QAAM,kBAAeA,MAAA,mBAAK,aAAL,gBAAAA,IAAc,UAAS,MACpD;AACA,UAAI,KAAK,CAAA,CAAE;IACb;AACA,WAAO;EACT;EAEA,UAAO;AAtMT,QAAAA;AAuMI,QAAI,mBAAK,WAAU;AAAM,aAAO;AAEhC,QAAI,GAACA,MAAA,mBAAK,aAAL,gBAAAA,IAAc;AAAW,aAAO;AACrC,QAAI,mBAAK,kBAAiB;AAAG,aAAO;AAEpC,UAAM,IAAI,mBAAK;AACf,aAAS,IAAI,GAAG,IAAI,mBAAK,eAAc,KAAK;AAC1C,YAAM,KAAK,gBAAE,QAAO;AACpB,UAAI,EAAE,cAAc,QAAO,GAAG,SAAS,MAAM;AAC3C,eAAO;MACT;IACF;AACA,WAAO;EACT;EAEA,QAAK;AAtNP,QAAAA,KAAAC,KAAAC;AAuNI,QAAI,mBAAK,WAAU;AAAM,aAAO;AAChC,UAAIF,MAAA,mBAAK,aAAL,gBAAAA,IAAc,UAAS;AAAK,aAAO;AACvC,QAAI,GAACC,MAAA,mBAAK,aAAL,gBAAAA,IAAc;AAAS,aAAO;AACnC,QAAI,CAAC,KAAK;AAAM,cAAOC,MAAA,mBAAK,aAAL,gBAAAA,IAAc;AAGrC,UAAM,KAAK,mBAAK,WAAU,gCAAK,UAAQ,QAAO,SAAS;AAEvD,WAAO,mBAAK,kBAAiB,KAAK;EACpC;EAEA,OAAO,MAAkB;AACvB,QAAI,OAAO,SAAS;AAAU,WAAK,KAAK,IAAI;;AACvC,WAAK,KAAK,KAAK,MAAM,IAAI,CAAC;EACjC;EAEA,MAAM,QAAW;AACf,UAAM,IAAI,IAAI,KAAI,KAAK,MAAM,MAAM;AACnC,eAAW,KAAK,mBAAK,SAAQ;AAC3B,QAAE,OAAO,CAAC;IACZ;AACA,WAAO;EACT;EAgIA,OAAO,SAAS,SAAiB,UAA4B,CAAA,GAAE;AA7WjE,QAAAF;AA8WI,UAAM,MAAM,IAAI,KAAI,MAAM,QAAW,OAAO;AAC5C,oBAAAA,MAAA,MAAI,wBAAJ,KAAAA,KAAc,SAAS,KAAK,GAAG;AAC/B,WAAO;EACT;EAIA,cAAW;AAGT,QAAI,SAAS,mBAAK;AAAO,aAAO,mBAAK,OAAM,YAAW;AAEtD,UAAMG,QAAO,KAAK,SAAQ;AAC1B,UAAM,CAAC,IAAI,MAAM,UAAU,KAAK,IAAI,KAAK,eAAc;AAIvD,UAAM,WACJ,YACA,mBAAK,cACJ,mBAAK,UAAS,UACb,CAAC,mBAAK,UAAS,mBACfA,MAAK,YAAW,MAAOA,MAAK,YAAW;AAC3C,QAAI,CAAC,UAAU;AACb,aAAO;IACT;AAEA,UAAM,SAAS,mBAAK,UAAS,SAAS,MAAM,OAAO,QAAQ,MAAM;AACjE,WAAO,OAAO,OAAO,IAAI,OAAO,IAAI,OAAO,KAAK,GAAG;MACjD,MAAM;MACN,OAAOA;KACR;EACH;EAEA,IAAI,UAAO;AACT,WAAO,mBAAK;EACd;EAuEA,eACE,UAAkB;AA1dtB,QAAAH;AA4dI,UAAM,MAAM,YAAY,CAAC,CAAC,mBAAK,UAAS;AACxC,QAAI,mBAAK,WAAU;AAAM,4BAAK,wBAAL;AACzB,QAAI,CAAC,KAAK,MAAM;AACd,YAAM,UAAU,KAAK,QAAO,KAAM,KAAK,MAAK;AAC5C,YAAM,MAAM,mBAAK,QACd,IAAI,OAAI;AAjejB,YAAAA;AAkeU,cAAM,CAAC,IAAI,GAAG,UAAU,KAAK,IAC3B,OAAO,MAAM,WACT,gBAAAA,MAAA,MAAI,0BAAJ,KAAAA,KAAe,GAAG,mBAAK,YAAW,WAClC,EAAE,eAAe,QAAQ;AAC/B,2BAAK,WAAY,mBAAK,cAAa;AACnC,2BAAK,QAAS,mBAAK,WAAU;AAC7B,eAAO;MACT,CAAC,EACA,KAAK,EAAE;AAEV,UAAII,SAAQ;AACZ,UAAI,KAAK,QAAO,GAAI;AAClB,YAAI,OAAO,mBAAK,QAAO,OAAO,UAAU;AAMtC,gBAAM,iBACJ,mBAAK,QAAO,WAAW,KAAK,SAAS,IAAI,mBAAK,QAAO,EAAE;AACzD,cAAI,CAAC,gBAAgB;AACnB,kBAAM,MAAM;AAGZ,kBAAM,aAEH,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,KAE5B,IAAI,WAAW,KAAK,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,KAE9C,IAAI,WAAW,QAAQ,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;AAGpD,kBAAM,YAAY,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;AAE5D,YAAAA,SAAQ,aAAa,mBAAmB,YAAY,aAAa;UACnE;QACF;MACF;AAGA,UAAI,MAAM;AACV,UACE,KAAK,MAAK,KACV,gCAAK,QAAM,kBACXJ,MAAA,mBAAK,aAAL,gBAAAA,IAAc,UAAS,KACvB;AACA,cAAM;MACR;AACA,YAAMK,SAAQD,SAAQ,MAAM;AAC5B,aAAO;QACLC;QACA,SAAS,GAAG;QACX,mBAAK,WAAY,CAAC,CAAC,mBAAK;QACzB,mBAAK;;IAET;AAMA,UAAM,WAAW,KAAK,SAAS,OAAO,KAAK,SAAS;AAEpD,UAAM,QAAQ,KAAK,SAAS,MAAM,cAAc;AAChD,QAAI,OAAO,sBAAK,kCAAL,WAAoB;AAE/B,QAAI,KAAK,QAAO,KAAM,KAAK,MAAK,KAAM,CAAC,QAAQ,KAAK,SAAS,KAAK;AAGhE,YAAM,IAAI,KAAK,SAAQ;AACvB,yBAAK,QAAS,CAAC,CAAC;AAChB,WAAK,OAAO;AACZ,yBAAK,WAAY;AACjB,aAAO,CAAC,GAAG,SAAS,KAAK,SAAQ,CAAE,GAAG,OAAO,KAAK;IACpD;AAGA,QAAI,iBACF,CAAC,YAAY,YAAY,OAAO,CAAC,aAC7B,KACA,sBAAK,kCAAL,WAAoB;AAC1B,QAAI,mBAAmB,MAAM;AAC3B,uBAAiB;IACnB;AACA,QAAI,gBAAgB;AAClB,aAAO,MAAM,WAAW;IAC1B;AAGA,QAAI,QAAQ;AACZ,QAAI,KAAK,SAAS,OAAO,mBAAK,YAAW;AACvC,eAAS,KAAK,QAAO,KAAM,CAAC,MAAM,aAAa,MAAM;IACvD,OAAO;AACL,YAAM,QACJ,KAAK,SAAS,MAEV,QACC,KAAK,QAAO,KAAM,CAAC,OAAO,CAAC,WAAW,aAAa,MACpD,OACA,MACA,KAAK,SAAS,MACd,MACA,KAAK,SAAS,MACd,OACA,KAAK,SAAS,OAAO,iBACrB,MACA,KAAK,SAAS,OAAO,iBACrB,OACA,IAAI,KAAK;AACf,cAAQ,QAAQ,OAAO;IACzB;AACA,WAAO;MACL;MACA,SAAS,IAAI;MACZ,mBAAK,WAAY,CAAC,CAAC,mBAAK;MACzB,mBAAK;;EAET;;AA3gBI,IAAO,MAAP;AAEK;AAET;AACA;AACA;AACS;AACA;AACT;AACA;AACA;AACA;AAGA;AAyCA;cAAS,WAAA;AAEP,MAAI,SAAS,mBAAK;AAAO,UAAM,IAAI,MAAM,0BAA0B;AACnE,MAAI,mBAAK;AAAa,WAAO;AAI7B,OAAK,SAAQ;AACb,qBAAK,aAAc;AACnB,MAAI;AACJ,SAAQ,IAAI,mBAAK,OAAM,IAAG,GAAK;AAC7B,QAAI,EAAE,SAAS;AAAK;AAEpB,QAAI,IAAqB;AACzB,QAAI,KAAK,gBAAE;AACX,WAAO,IAAI;AACT,eACM,IAAI,gBAAE,gBAAe,GACzB,CAAC,GAAG,QAAQ,IAAI,iBAAG,QAAO,QAC1B,KACA;AACA,mBAAW,QAAQ,gBAAE,SAAQ;AAE3B,cAAI,OAAO,SAAS,UAAU;AAC5B,kBAAM,IAAI,MAAM,8BAA8B;UAChD;AAEA,eAAK,OAAO,iBAAG,QAAO,EAAE;QAC1B;MACF;AACA,UAAI;AACJ,WAAK,gBAAE;IACT;EACF;AACA,SAAO;AACT;AAuEO;cAAS,SACd,KACA,KACA,KACA,KAAqB;AAnPzB,MAAAL,KAAAC;AAqPI,MAAI,WAAW;AACf,MAAI,UAAU;AACd,MAAI,aAAa;AACjB,MAAI,WAAW;AACf,MAAI,IAAI,SAAS,MAAM;AAErB,QAAIK,KAAI;AACR,QAAIC,OAAM;AACV,WAAOD,KAAI,IAAI,QAAQ;AACrB,YAAM,IAAI,IAAI,OAAOA,IAAG;AAGxB,UAAI,YAAY,MAAM,MAAM;AAC1B,mBAAW,CAAC;AACZ,QAAAC,QAAO;AACP;MACF;AAEA,UAAI,SAAS;AACX,YAAID,OAAM,aAAa,GAAG;AACxB,cAAI,MAAM,OAAO,MAAM,KAAK;AAC1B,uBAAW;UACb;QACF,WAAW,MAAM,OAAO,EAAEA,OAAM,aAAa,KAAK,WAAW;AAC3D,oBAAU;QACZ;AACA,QAAAC,QAAO;AACP;MACF,WAAW,MAAM,KAAK;AACpB,kBAAU;AACV,qBAAaD;AACb,mBAAW;AACX,QAAAC,QAAO;AACP;MACF;AAEA,UAAI,CAAC,IAAI,SAAS,cAAc,CAAC,KAAK,IAAI,OAAOD,EAAC,MAAM,KAAK;AAC3D,YAAI,KAAKC,IAAG;AACZ,QAAAA,OAAM;AACN,cAAMC,OAAM,IAAI,KAAI,GAAG,GAAG;AAC1B,QAAAF,KAAI,gBAAAN,MAAA,MAAI,wBAAJ,KAAAA,KAAc,KAAKQ,MAAKF,IAAG;AAC/B,YAAI,KAAKE,IAAG;AACZ;MACF;AACA,MAAAD,QAAO;IACT;AACA,QAAI,KAAKA,IAAG;AACZ,WAAOD;EACT;AAIA,MAAI,IAAI,MAAM;AACd,MAAI,OAAO,IAAI,KAAI,MAAM,GAAG;AAC5B,QAAM,QAAe,CAAA;AACrB,MAAI,MAAM;AACV,SAAO,IAAI,IAAI,QAAQ;AACrB,UAAM,IAAI,IAAI,OAAO,GAAG;AAGxB,QAAI,YAAY,MAAM,MAAM;AAC1B,iBAAW,CAAC;AACZ,aAAO;AACP;IACF;AAEA,QAAI,SAAS;AACX,UAAI,MAAM,aAAa,GAAG;AACxB,YAAI,MAAM,OAAO,MAAM,KAAK;AAC1B,qBAAW;QACb;MACF,WAAW,MAAM,OAAO,EAAE,MAAM,aAAa,KAAK,WAAW;AAC3D,kBAAU;MACZ;AACA,aAAO;AACP;IACF,WAAW,MAAM,KAAK;AACpB,gBAAU;AACV,mBAAa;AACb,iBAAW;AACX,aAAO;AACP;IACF;AAEA,QAAI,cAAc,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK;AAC7C,WAAK,KAAK,GAAG;AACb,YAAM;AACN,YAAME,OAAM,IAAI,KAAI,GAAG,IAAI;AAC3B,WAAK,KAAKA,IAAG;AACb,UAAI,gBAAAP,MAAA,MAAI,wBAAJ,KAAAA,KAAc,KAAKO,MAAK,GAAG;AAC/B;IACF;AACA,QAAI,MAAM,KAAK;AACb,WAAK,KAAK,GAAG;AACb,YAAM;AACN,YAAM,KAAK,IAAI;AACf,aAAO,IAAI,KAAI,MAAM,GAAG;AACxB;IACF;AACA,QAAI,MAAM,KAAK;AACb,UAAI,QAAQ,MAAM,kBAAI,QAAO,WAAW,GAAG;AACzC,0BAAI,WAAY;MAClB;AACA,WAAK,KAAK,GAAG;AACb,YAAM;AACN,UAAI,KAAK,GAAG,OAAO,IAAI;AACvB,aAAO;IACT;AACA,WAAO;EACT;AAKA,MAAI,OAAO;AACX,oBAAI,WAAY;AAChB,oBAAI,QAAS,CAAC,IAAI,UAAU,MAAM,CAAC,CAAC;AACpC,SAAO;AACT;AA+OA;mBAAc,SAAC,KAAY;AACzB,SAAO,mBAAK,QACT,IAAI,OAAI;AAGP,QAAI,OAAO,MAAM,UAAU;AACzB,YAAM,IAAI,MAAM,8BAA8B;IAChD;AAGA,UAAM,CAAC,IAAI,GAAGC,YAAW,KAAK,IAAI,EAAE,eAAe,GAAG;AACtD,uBAAK,QAAS,mBAAK,WAAU;AAC7B,WAAO;EACT,CAAC,EACA,OAAO,OAAK,EAAE,KAAK,QAAO,KAAM,KAAK,MAAK,MAAO,CAAC,CAAC,CAAC,EACpD,KAAK,GAAG;AACb;AAEO;eAAU,SACfN,OACA,UACA,UAAmB,OAAK;AAExB,MAAI,WAAW;AACf,MAAI,KAAK;AACT,MAAI,QAAQ;AACZ,WAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACpC,UAAM,IAAIA,MAAK,OAAO,CAAC;AACvB,QAAI,UAAU;AACZ,iBAAW;AACX,aAAO,WAAW,IAAI,CAAC,IAAI,OAAO,MAAM;AACxC;IACF;AACA,QAAI,MAAM,MAAM;AACd,UAAI,MAAMA,MAAK,SAAS,GAAG;AACzB,cAAM;MACR,OAAO;AACL,mBAAW;MACb;AACA;IACF;AACA,QAAI,MAAM,KAAK;AACb,YAAM,CAAC,KAAK,WAAW,UAAU,KAAK,IAAI,WAAWA,OAAM,CAAC;AAC5D,UAAI,UAAU;AACZ,cAAM;AACN,gBAAQ,SAAS;AACjB,aAAK,WAAW;AAChB,mBAAW,YAAY;AACvB;MACF;IACF;AACA,QAAI,MAAM,KAAK;AACb,UAAI,WAAWA,UAAS;AAAK,cAAM;;AAC9B,cAAM;AACX,iBAAW;AACX;IACF;AACA,QAAI,MAAM,KAAK;AACb,YAAM;AACN,iBAAW;AACX;IACF;AACA,UAAM,aAAa,CAAC;EACtB;AACA,SAAO,CAAC,IAAI,SAASA,KAAI,GAAG,CAAC,CAAC,UAAU,KAAK;AAC/C;AA5aA,aAlKW,KAkKJ;AA6XP,aA/hBW,KA+hBJ;;;AClmBF,IAAM,SAAS,CACpB,GACA,EACE,uBAAuB,MAAK,IACsB,CAAA,MAClD;AAIF,SAAO,uBACH,EAAE,QAAQ,cAAc,MAAM,IAC9B,EAAE,QAAQ,gBAAgB,MAAM;AACtC;;;ALoBO,IAAM,YAAY,CACvB,GACA,SACA,UAA4B,CAAA,MAC1B;AACF,qBAAmB,OAAO;AAG1B,MAAI,CAAC,QAAQ,aAAa,QAAQ,OAAO,CAAC,MAAM,KAAK;AACnD,WAAO;EACT;AAEA,SAAO,IAAI,UAAU,SAAS,OAAO,EAAE,MAAM,CAAC;AAChD;AAGA,IAAM,eAAe;AACrB,IAAM,iBAAiB,CAACO,SAAgB,CAAC,MACvC,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAASA,IAAG;AACtC,IAAM,oBAAoB,CAACA,SAAgB,CAAC,MAAc,EAAE,SAASA,IAAG;AACxE,IAAM,uBAAuB,CAACA,SAAe;AAC3C,EAAAA,OAAMA,KAAI,YAAW;AACrB,SAAO,CAAC,MAAc,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;AAC1E;AACA,IAAM,0BAA0B,CAACA,SAAe;AAC9C,EAAAA,OAAMA,KAAI,YAAW;AACrB,SAAO,CAAC,MAAc,EAAE,YAAW,EAAG,SAASA,IAAG;AACpD;AACA,IAAM,gBAAgB;AACtB,IAAM,kBAAkB,CAAC,MAAc,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,GAAG;AAC3E,IAAM,qBAAqB,CAAC,MAC1B,MAAM,OAAO,MAAM,QAAQ,EAAE,SAAS,GAAG;AAC3C,IAAM,YAAY;AAClB,IAAM,cAAc,CAAC,MAAc,MAAM,OAAO,MAAM,QAAQ,EAAE,WAAW,GAAG;AAC9E,IAAM,SAAS;AACf,IAAM,WAAW,CAAC,MAAc,EAAE,WAAW,KAAK,CAAC,EAAE,WAAW,GAAG;AACnE,IAAM,cAAc,CAAC,MAAc,EAAE,WAAW,KAAK,MAAM,OAAO,MAAM;AACxE,IAAM,WAAW;AACjB,IAAM,mBAAmB,CAAC,CAAC,IAAIA,OAAM,EAAE,MAAuB;AAC5D,QAAM,QAAQ,gBAAgB,CAAC,EAAE,CAAC;AAClC,MAAI,CAACA;AAAK,WAAO;AACjB,EAAAA,OAAMA,KAAI,YAAW;AACrB,SAAO,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;AAChE;AACA,IAAM,sBAAsB,CAAC,CAAC,IAAIA,OAAM,EAAE,MAAuB;AAC/D,QAAM,QAAQ,mBAAmB,CAAC,EAAE,CAAC;AACrC,MAAI,CAACA;AAAK,WAAO;AACjB,EAAAA,OAAMA,KAAI,YAAW;AACrB,SAAO,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;AAChE;AACA,IAAM,gBAAgB,CAAC,CAAC,IAAIA,OAAM,EAAE,MAAuB;AACzD,QAAM,QAAQ,mBAAmB,CAAC,EAAE,CAAC;AACrC,SAAO,CAACA,OAAM,QAAQ,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,SAASA,IAAG;AACjE;AACA,IAAM,aAAa,CAAC,CAAC,IAAIA,OAAM,EAAE,MAAuB;AACtD,QAAM,QAAQ,gBAAgB,CAAC,EAAE,CAAC;AAClC,SAAO,CAACA,OAAM,QAAQ,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,SAASA,IAAG;AACjE;AACA,IAAM,kBAAkB,CAAC,CAAC,EAAE,MAAuB;AACjD,QAAM,MAAM,GAAG;AACf,SAAO,CAAC,MAAc,EAAE,WAAW,OAAO,CAAC,EAAE,WAAW,GAAG;AAC7D;AACA,IAAM,qBAAqB,CAAC,CAAC,EAAE,MAAuB;AACpD,QAAM,MAAM,GAAG;AACf,SAAO,CAAC,MAAc,EAAE,WAAW,OAAO,MAAM,OAAO,MAAM;AAC/D;AAGA,IAAM,kBACJ,OAAO,YAAY,YAAY,UAC1B,OAAO,QAAQ,QAAQ,YACtB,QAAQ,OACR,QAAQ,IAAI,kCACd,QAAQ,WACR;AAGN,IAAM,OAAsC;EAC1C,OAAO,EAAE,KAAK,KAAI;EAClB,OAAO,EAAE,KAAK,IAAG;;AAIZ,IAAM,MAAM,oBAAoB,UAAU,KAAK,MAAM,MAAM,KAAK,MAAM;AAC7E,UAAU,MAAM;AAET,IAAM,WAAW,OAAO,aAAa;AAC5C,UAAU,WAAW;AAIrB,IAAMC,SAAQ;AAGd,IAAMC,QAAOD,SAAQ;AAKrB,IAAM,aAAa;AAInB,IAAM,eAAe;AAEd,IAAM,SACX,CAAC,SAAiB,UAA4B,CAAA,MAC9C,CAAC,MACC,UAAU,GAAG,SAAS,OAAO;AACjC,UAAU,SAAS;AAEnB,IAAM,MAAM,CAAC,GAAqB,IAAsB,CAAA,MACtD,OAAO,OAAO,CAAA,GAAI,GAAG,CAAC;AAEjB,IAAM,WAAW,CAAC,QAA2C;AAClE,MAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,KAAK,GAAG,EAAE,QAAQ;AAC/D,WAAO;EACT;AAEA,QAAM,OAAO;AAEb,QAAM,IAAI,CAAC,GAAW,SAAiB,UAA4B,CAAA,MACjE,KAAK,GAAG,SAAS,IAAI,KAAK,OAAO,CAAC;AAEpC,SAAO,OAAO,OAAO,GAAG;IACtB,WAAW,MAAM,kBAAkB,KAAK,UAAS;MAC/C,YAAY,SAAiB,UAA4B,CAAA,GAAE;AACzD,cAAM,SAAS,IAAI,KAAK,OAAO,CAAC;MAClC;MACA,OAAO,SAAS,SAAyB;AACvC,eAAO,KAAK,SAAS,IAAI,KAAK,OAAO,CAAC,EAAE;MAC1C;;IAGF,KAAK,MAAM,YAAY,KAAK,IAAG;MAE7B,YACE,MACA,QACA,UAA4B,CAAA,GAAE;AAE9B,cAAM,MAAM,QAAQ,IAAI,KAAK,OAAO,CAAC;MACvC;MAGA,OAAO,SAAS,SAAiB,UAA4B,CAAA,GAAE;AAC7D,eAAO,KAAK,IAAI,SAAS,SAAS,IAAI,KAAK,OAAO,CAAC;MACrD;;IAGF,UAAU,CACR,GACA,UAA0D,CAAA,MACvD,KAAK,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC;IAEvC,QAAQ,CACN,GACA,UAA0D,CAAA,MACvD,KAAK,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC;IAErC,QAAQ,CAAC,SAAiB,UAA4B,CAAA,MACpD,KAAK,OAAO,SAAS,IAAI,KAAK,OAAO,CAAC;IAExC,UAAU,CAAC,YAA8B,KAAK,SAAS,IAAI,KAAK,OAAO,CAAC;IAExE,QAAQ,CAAC,SAAiB,UAA4B,CAAA,MACpD,KAAK,OAAO,SAAS,IAAI,KAAK,OAAO,CAAC;IAExC,aAAa,CAAC,SAAiB,UAA4B,CAAA,MACzD,KAAK,YAAY,SAAS,IAAI,KAAK,OAAO,CAAC;IAE7C,OAAO,CAAC,MAAgB,SAAiB,UAA4B,CAAA,MACnE,KAAK,MAAM,MAAM,SAAS,IAAI,KAAK,OAAO,CAAC;IAE7C,KAAK,KAAK;IACV;GACD;AACH;AACA,UAAU,WAAW;AAYd,IAAM,cAAc,CACzB,SACA,UAA4B,CAAA,MAC1B;AACF,qBAAmB,OAAO;AAI1B,MAAI,QAAQ,WAAW,CAAC,mBAAmB,KAAK,OAAO,GAAG;AAExD,WAAO,CAAC,OAAO;EACjB;AAEA,aAAO,uBAAAE,SAAO,OAAO;AACvB;AACA,UAAU,cAAc;AAcjB,IAAM,SAAS,CAAC,SAAiB,UAA4B,CAAA,MAClE,IAAI,UAAU,SAAS,OAAO,EAAE,OAAM;AACxC,UAAU,SAAS;AAEZ,IAAM,QAAQ,CACnB,MACA,SACA,UAA4B,CAAA,MAC1B;AACF,QAAM,KAAK,IAAI,UAAU,SAAS,OAAO;AACzC,SAAO,KAAK,OAAO,OAAK,GAAG,MAAM,CAAC,CAAC;AACnC,MAAI,GAAG,QAAQ,UAAU,CAAC,KAAK,QAAQ;AACrC,SAAK,KAAK,OAAO;EACnB;AACA,SAAO;AACT;AACA,UAAU,QAAQ;AAGlB,IAAM,YAAY;AAClB,IAAMC,gBAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAUxC,IAAO,YAAP,MAAgB;EACpB;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA,YAAY,SAAiB,UAA4B,CAAA,GAAE;AACzD,uBAAmB,OAAO;AAE1B,cAAU,WAAW,CAAA;AACrB,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,WAAW,QAAQ,YAAY;AACpC,SAAK,YAAY,KAAK,aAAa;AACnC,SAAK,uBACH,CAAC,CAAC,QAAQ,wBAAwB,QAAQ,uBAAuB;AACnE,QAAI,KAAK,sBAAsB;AAC7B,WAAK,UAAU,KAAK,QAAQ,QAAQ,OAAO,GAAG;IAChD;AACA,SAAK,0BAA0B,CAAC,CAAC,QAAQ;AACzC,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,WAAW,CAAC,CAAC,QAAQ;AAC1B,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,SAAK,UAAU,CAAC,CAAC,QAAQ;AACzB,SAAK,SAAS,CAAC,CAAC,KAAK,QAAQ;AAC7B,SAAK,qBACH,QAAQ,uBAAuB,SAC3B,QAAQ,qBACR,CAAC,EAAE,KAAK,aAAa,KAAK;AAEhC,SAAK,UAAU,CAAA;AACf,SAAK,YAAY,CAAA;AACjB,SAAK,MAAM,CAAA;AAGX,SAAK,KAAI;EACX;EAEA,WAAQ;AACN,QAAI,KAAK,QAAQ,iBAAiB,KAAK,IAAI,SAAS,GAAG;AACrD,aAAO;IACT;AACA,eAAW,WAAW,KAAK,KAAK;AAC9B,iBAAW,QAAQ,SAAS;AAC1B,YAAI,OAAO,SAAS;AAAU,iBAAO;MACvC;IACF;AACA,WAAO;EACT;EAEA,SAAS,GAAQ;EAAG;EAEpB,OAAI;AACF,UAAM,UAAU,KAAK;AACrB,UAAM,UAAU,KAAK;AAGrB,QAAI,CAAC,QAAQ,aAAa,QAAQ,OAAO,CAAC,MAAM,KAAK;AACnD,WAAK,UAAU;AACf;IACF;AAEA,QAAI,CAAC,SAAS;AACZ,WAAK,QAAQ;AACb;IACF;AAGA,SAAK,YAAW;AAGhB,SAAK,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,YAAW,CAAE,CAAC;AAE9C,QAAI,QAAQ,OAAO;AACjB,WAAK,QAAQ,IAAI,SAAgB,QAAQ,MAAM,GAAG,IAAI;IACxD;AAEA,SAAK,MAAM,KAAK,SAAS,KAAK,OAAO;AAWrC,UAAM,eAAe,KAAK,QAAQ,IAAI,OAAK,KAAK,WAAW,CAAC,CAAC;AAC7D,SAAK,YAAY,KAAK,WAAW,YAAY;AAC7C,SAAK,MAAM,KAAK,SAAS,KAAK,SAAS;AAGvC,QAAI,MAAM,KAAK,UAAU,IAAI,CAAC,GAAG,GAAG,OAAM;AACxC,UAAI,KAAK,aAAa,KAAK,oBAAoB;AAE7C,cAAM,QACJ,EAAE,OAAO,MACT,EAAE,OAAO,OACR,EAAE,OAAO,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,MACrC,CAAC,UAAU,KAAK,EAAE,EAAE;AACtB,cAAM,UAAU,WAAW,KAAK,EAAE,EAAE;AACpC,YAAI,OAAO;AACT,iBAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC,CAAC;QACnE,WAAW,SAAS;AAClB,iBAAO,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC,CAAC;QACvD;MACF;AACA,aAAO,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC;IACnC,CAAC;AAED,SAAK,MAAM,KAAK,SAAS,GAAG;AAG5B,SAAK,MAAM,IAAI,OACb,OAAK,EAAE,QAAQ,KAAK,MAAM,EAAE;AAI9B,QAAI,KAAK,WAAW;AAClB,eAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,cAAM,IAAI,KAAK,IAAI;AACnB,YACE,EAAE,OAAO,MACT,EAAE,OAAO,MACT,KAAK,UAAU,GAAG,OAAO,OACzB,OAAO,EAAE,OAAO,YAChB,YAAY,KAAK,EAAE,EAAE,GACrB;AACA,YAAE,KAAK;QACT;MACF;IACF;AAEA,SAAK,MAAM,KAAK,SAAS,KAAK,GAAG;EACnC;EAOA,WAAW,WAAqB;AAE9B,QAAI,KAAK,QAAQ,YAAY;AAC3B,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,iBAAS,IAAI,GAAG,IAAI,UAAU,GAAG,QAAQ,KAAK;AAC5C,cAAI,UAAU,GAAG,OAAO,MAAM;AAC5B,sBAAU,GAAG,KAAK;UACpB;QACF;MACF;IACF;AAEA,UAAM,EAAE,oBAAoB,EAAC,IAAK,KAAK;AAEvC,QAAI,qBAAqB,GAAG;AAE1B,kBAAY,KAAK,qBAAqB,SAAS;AAC/C,kBAAY,KAAK,sBAAsB,SAAS;IAClD,WAAW,qBAAqB,GAAG;AAEjC,kBAAY,KAAK,iBAAiB,SAAS;IAC7C,OAAO;AAEL,kBAAY,KAAK,0BAA0B,SAAS;IACtD;AAEA,WAAO;EACT;EAGA,0BAA0B,WAAqB;AAC7C,WAAO,UAAU,IAAI,WAAQ;AAC3B,UAAI,KAAa;AACjB,aAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,YAAI,IAAI;AACR,eAAO,MAAM,IAAI,OAAO,MAAM;AAC5B;QACF;AACA,YAAI,MAAM,IAAI;AACZ,gBAAM,OAAO,IAAI,IAAI,EAAE;QACzB;MACF;AACA,aAAO;IACT,CAAC;EACH;EAGA,iBAAiB,WAAqB;AACpC,WAAO,UAAU,IAAI,WAAQ;AAC3B,cAAQ,MAAM,OAAO,CAAC,KAAe,SAAQ;AAC3C,cAAM,OAAO,IAAI,IAAI,SAAS;AAC9B,YAAI,SAAS,QAAQ,SAAS,MAAM;AAClC,iBAAO;QACT;AACA,YAAI,SAAS,MAAM;AACjB,cAAI,QAAQ,SAAS,QAAQ,SAAS,OAAO,SAAS,MAAM;AAC1D,gBAAI,IAAG;AACP,mBAAO;UACT;QACF;AACA,YAAI,KAAK,IAAI;AACb,eAAO;MACT,GAAG,CAAA,CAAE;AACL,aAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;IACrC,CAAC;EACH;EAEA,qBAAqB,OAAwB;AAC3C,QAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,cAAQ,KAAK,WAAW,KAAK;IAC/B;AACA,QAAI,eAAwB;AAC5B,OAAG;AACD,qBAAe;AAEf,UAAI,CAAC,KAAK,yBAAyB;AACjC,iBAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,gBAAM,IAAI,MAAM;AAEhB,cAAI,MAAM,KAAK,MAAM,MAAM,MAAM,OAAO;AAAI;AAC5C,cAAI,MAAM,OAAO,MAAM,IAAI;AACzB,2BAAe;AACf,kBAAM,OAAO,GAAG,CAAC;AACjB;UACF;QACF;AACA,YACE,MAAM,OAAO,OACb,MAAM,WAAW,MAChB,MAAM,OAAO,OAAO,MAAM,OAAO,KAClC;AACA,yBAAe;AACf,gBAAM,IAAG;QACX;MACF;AAGA,UAAI,KAAa;AACjB,aAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,cAAM,IAAI,MAAM,KAAK;AACrB,YAAI,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM;AAC9C,yBAAe;AACf,gBAAM,OAAO,KAAK,GAAG,CAAC;AACtB,gBAAM;QACR;MACF;IACF,SAAS;AACT,WAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;EACrC;EAoBA,qBAAqB,WAAqB;AACxC,QAAI,eAAe;AACnB,OAAG;AACD,qBAAe;AAEf,eAAS,SAAS,WAAW;AAC3B,YAAI,KAAa;AACjB,eAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,cAAI,MAAc;AAClB,iBAAO,MAAM,MAAM,OAAO,MAAM;AAE9B;UACF;AAGA,cAAI,MAAM,IAAI;AACZ,kBAAM,OAAO,KAAK,GAAG,MAAM,EAAE;UAC/B;AAEA,cAAI,OAAO,MAAM,KAAK;AACtB,gBAAM,IAAI,MAAM,KAAK;AACrB,gBAAM,KAAK,MAAM,KAAK;AACtB,cAAI,SAAS;AAAM;AACnB,cACE,CAAC,KACD,MAAM,OACN,MAAM,QACN,CAAC,MACD,OAAO,OACP,OAAO,MACP;AACA;UACF;AACA,yBAAe;AAEf,gBAAM,OAAO,IAAI,CAAC;AAClB,gBAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,gBAAM,MAAM;AACZ,oBAAU,KAAK,KAAK;AACpB;QACF;AAGA,YAAI,CAAC,KAAK,yBAAyB;AACjC,mBAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,kBAAM,IAAI,MAAM;AAEhB,gBAAI,MAAM,KAAK,MAAM,MAAM,MAAM,OAAO;AAAI;AAC5C,gBAAI,MAAM,OAAO,MAAM,IAAI;AACzB,6BAAe;AACf,oBAAM,OAAO,GAAG,CAAC;AACjB;YACF;UACF;AACA,cACE,MAAM,OAAO,OACb,MAAM,WAAW,MAChB,MAAM,OAAO,OAAO,MAAM,OAAO,KAClC;AACA,2BAAe;AACf,kBAAM,IAAG;UACX;QACF;AAGA,YAAI,KAAa;AACjB,eAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,gBAAM,IAAI,MAAM,KAAK;AACrB,cAAI,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM;AAC9C,2BAAe;AACf,kBAAM,UAAU,OAAO,KAAK,MAAM,KAAK,OAAO;AAC9C,kBAAM,QAAQ,UAAU,CAAC,GAAG,IAAI,CAAA;AAChC,kBAAM,OAAO,KAAK,GAAG,GAAG,GAAG,KAAK;AAChC,gBAAI,MAAM,WAAW;AAAG,oBAAM,KAAK,EAAE;AACrC,kBAAM;UACR;QACF;MACF;IACF,SAAS;AAET,WAAO;EACT;EASA,sBAAsB,WAAqB;AACzC,aAAS,IAAI,GAAG,IAAI,UAAU,SAAS,GAAG,KAAK;AAC7C,eAAS,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC7C,cAAM,UAAU,KAAK,WACnB,UAAU,IACV,UAAU,IACV,CAAC,KAAK,uBAAuB;AAE/B,YAAI,SAAS;AACX,oBAAU,KAAK,CAAA;AACf,oBAAU,KAAK;AACf;QACF;MACF;IACF;AACA,WAAO,UAAU,OAAO,QAAM,GAAG,MAAM;EACzC;EAEA,WACE,GACA,GACA,eAAwB,OAAK;AAE7B,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,SAAmB,CAAA;AACvB,QAAIC,SAAgB;AACpB,WAAO,KAAK,EAAE,UAAU,KAAK,EAAE,QAAQ;AACrC,UAAI,EAAE,QAAQ,EAAE,KAAK;AACnB,eAAO,KAAKA,WAAU,MAAM,EAAE,MAAM,EAAE,GAAG;AACzC;AACA;MACF,WAAW,gBAAgB,EAAE,QAAQ,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI;AAChE,eAAO,KAAK,EAAE,GAAG;AACjB;MACF,WAAW,gBAAgB,EAAE,QAAQ,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI;AAChE,eAAO,KAAK,EAAE,GAAG;AACjB;MACF,WACE,EAAE,QAAQ,OACV,EAAE,QACD,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAI,WAAW,GAAG,MAC1C,EAAE,QAAQ,MACV;AACA,YAAIA,WAAU;AAAK,iBAAO;AAC1B,QAAAA,SAAQ;AACR,eAAO,KAAK,EAAE,GAAG;AACjB;AACA;MACF,WACE,EAAE,QAAQ,OACV,EAAE,QACD,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAI,WAAW,GAAG,MAC1C,EAAE,QAAQ,MACV;AACA,YAAIA,WAAU;AAAK,iBAAO;AAC1B,QAAAA,SAAQ;AACR,eAAO,KAAK,EAAE,GAAG;AACjB;AACA;MACF,OAAO;AACL,eAAO;MACT;IACF;AAGA,WAAO,EAAE,WAAW,EAAE,UAAU;EAClC;EAEA,cAAW;AACT,QAAI,KAAK;AAAU;AAEnB,UAAM,UAAU,KAAK;AACrB,QAAI,SAAS;AACb,QAAI,eAAe;AAEnB,aAAS,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ,OAAO,CAAC,MAAM,KAAK,KAAK;AACpE,eAAS,CAAC;AACV;IACF;AAEA,QAAI;AAAc,WAAK,UAAU,QAAQ,MAAM,YAAY;AAC3D,SAAK,SAAS;EAChB;EAOA,SAAS,MAAgB,SAAwB,UAAmB,OAAK;AACvE,UAAM,UAAU,KAAK;AAKrB,QAAI,KAAK,WAAW;AAClB,YAAM,YAAY,OAAO,KAAK,OAAO,YAAY,YAAY,KAAK,KAAK,EAAE;AACzE,YAAM,UACJ,CAAC,aACD,KAAK,OAAO,MACZ,KAAK,OAAO,MACZ,KAAK,OAAO,OACZ,YAAY,KAAK,KAAK,EAAE;AAE1B,YAAM,eACJ,OAAO,QAAQ,OAAO,YAAY,YAAY,KAAK,QAAQ,EAAE;AAC/D,YAAM,aACJ,CAAC,gBACD,QAAQ,OAAO,MACf,QAAQ,OAAO,MACf,QAAQ,OAAO,OACf,OAAO,QAAQ,OAAO,YACtB,YAAY,KAAK,QAAQ,EAAE;AAE7B,YAAM,MAAM,UAAU,IAAI,YAAY,IAAI;AAC1C,YAAM,MAAM,aAAa,IAAI,eAAe,IAAI;AAChD,UAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AACtD,cAAM,CAAC,IAAI,EAAE,IAAsB,CAAC,KAAK,MAAM,QAAQ,IAAc;AACrE,YAAI,GAAG,YAAW,MAAO,GAAG,YAAW,GAAI;AACzC,kBAAQ,OAAO;AACf,cAAI,MAAM,KAAK;AACb,sBAAU,QAAQ,MAAM,GAAG;UAC7B,WAAW,MAAM,KAAK;AACpB,mBAAO,KAAK,MAAM,GAAG;UACvB;QACF;MACF;IACF;AAIA,UAAM,EAAE,oBAAoB,EAAC,IAAK,KAAK;AACvC,QAAI,qBAAqB,GAAG;AAC1B,aAAO,KAAK,qBAAqB,IAAI;IACvC;AAEA,SAAK,MAAM,YAAY,MAAM,EAAE,MAAM,QAAO,CAAE;AAC9C,SAAK,MAAM,YAAY,KAAK,QAAQ,QAAQ,MAAM;AAElD,aACM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,QAAQ,KAAK,QAAQ,QACnD,KAAK,MAAM,KAAK,IAChB,MAAM,MACN;AACA,WAAK,MAAM,eAAe;AAC1B,UAAI,IAAI,QAAQ;AAChB,UAAI,IAAI,KAAK;AAEb,WAAK,MAAM,SAAS,GAAG,CAAC;AAKxB,UAAI,MAAM,OAAO;AACf,eAAO;MACT;AAGA,UAAI,MAAM,UAAU;AAClB,aAAK,MAAM,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC;AAwBtC,YAAI,KAAK;AACT,YAAI,KAAK,KAAK;AACd,YAAI,OAAO,IAAI;AACb,eAAK,MAAM,eAAe;AAO1B,iBAAO,KAAK,IAAI,MAAM;AACpB,gBACE,KAAK,QAAQ,OACb,KAAK,QAAQ,QACZ,CAAC,QAAQ,OAAO,KAAK,IAAI,OAAO,CAAC,MAAM;AAExC,qBAAO;UACX;AACA,iBAAO;QACT;AAGA,eAAO,KAAK,IAAI;AACd,cAAI,YAAY,KAAK;AAErB,eAAK,MAAM,oBAAoB,MAAM,IAAI,SAAS,IAAI,SAAS;AAG/D,cAAI,KAAK,SAAS,KAAK,MAAM,EAAE,GAAG,QAAQ,MAAM,EAAE,GAAG,OAAO,GAAG;AAC7D,iBAAK,MAAM,yBAAyB,IAAI,IAAI,SAAS;AAErD,mBAAO;UACT,OAAO;AAGL,gBACE,cAAc,OACd,cAAc,QACb,CAAC,QAAQ,OAAO,UAAU,OAAO,CAAC,MAAM,KACzC;AACA,mBAAK,MAAM,iBAAiB,MAAM,IAAI,SAAS,EAAE;AACjD;YACF;AAGA,iBAAK,MAAM,0CAA0C;AACrD;UACF;QACF;AAKA,YAAI,SAAS;AAEX,eAAK,MAAM,4BAA4B,MAAM,IAAI,SAAS,EAAE;AAC5D,cAAI,OAAO,IAAI;AACb,mBAAO;UACT;QACF;AAEA,eAAO;MACT;AAKA,UAAI;AACJ,UAAI,OAAO,MAAM,UAAU;AACzB,cAAM,MAAM;AACZ,aAAK,MAAM,gBAAgB,GAAG,GAAG,GAAG;MACtC,OAAO;AACL,cAAM,EAAE,KAAK,CAAC;AACd,aAAK,MAAM,iBAAiB,GAAG,GAAG,GAAG;MACvC;AAEA,UAAI,CAAC;AAAK,eAAO;IACnB;AAcA,QAAI,OAAO,MAAM,OAAO,IAAI;AAG1B,aAAO;IACT,WAAW,OAAO,IAAI;AAIpB,aAAO;IACT,WAAW,OAAO,IAAI;AAKpB,aAAO,OAAO,KAAK,KAAK,KAAK,QAAQ;IAGvC,OAAO;AAEL,YAAM,IAAI,MAAM,MAAM;IACxB;EAEF;EAEA,cAAW;AACT,WAAO,YAAY,KAAK,SAAS,KAAK,OAAO;EAC/C;EAEA,MAAM,SAAe;AACnB,uBAAmB,OAAO;AAE1B,UAAM,UAAU,KAAK;AAGrB,QAAI,YAAY;AAAM,aAAO;AAC7B,QAAI,YAAY;AAAI,aAAO;AAI3B,QAAI;AACJ,QAAI,WAA4C;AAChD,QAAK,IAAI,QAAQ,MAAM,MAAM,GAAI;AAC/B,iBAAW,QAAQ,MAAM,cAAc;IACzC,WAAY,IAAI,QAAQ,MAAM,YAAY,GAAI;AAC5C,kBACE,QAAQ,SACJ,QAAQ,MACN,0BACA,uBACF,QAAQ,MACR,oBACA,gBACJ,EAAE,EAAE;IACR,WAAY,IAAI,QAAQ,MAAM,QAAQ,GAAI;AACxC,kBACE,QAAQ,SACJ,QAAQ,MACN,sBACA,mBACF,QAAQ,MACR,gBACA,YACJ,CAAC;IACL,WAAY,IAAI,QAAQ,MAAM,aAAa,GAAI;AAC7C,iBAAW,QAAQ,MAAM,qBAAqB;IAChD,WAAY,IAAI,QAAQ,MAAM,SAAS,GAAI;AACzC,iBAAW;IACb;AAEA,UAAM,KAAK,IAAI,SAAS,SAAS,KAAK,OAAO,EAAE,YAAW;AAC1D,QAAI,YAAY,OAAO,OAAO,UAAU;AAEtC,cAAQ,eAAe,IAAI,QAAQ,EAAE,OAAO,SAAQ,CAAE;IACxD;AACA,WAAO;EACT;EAEA,SAAM;AACJ,QAAI,KAAK,UAAU,KAAK,WAAW;AAAO,aAAO,KAAK;AAQtD,UAAM,MAAM,KAAK;AAEjB,QAAI,CAAC,IAAI,QAAQ;AACf,WAAK,SAAS;AACd,aAAO,KAAK;IACd;AACA,UAAM,UAAU,KAAK;AAErB,UAAM,UAAU,QAAQ,aACpBH,QACA,QAAQ,MACR,aACA;AACJ,UAAM,QAAQ,IAAI,IAAI,QAAQ,SAAS,CAAC,GAAG,IAAI,CAAA,CAAE;AAQjD,QAAI,KAAK,IACN,IAAI,aAAU;AACb,YAAM,KAAmC,QAAQ,IAAI,OAAI;AACvD,YAAI,aAAa,QAAQ;AACvB,qBAAW,KAAK,EAAE,MAAM,MAAM,EAAE;AAAG,kBAAM,IAAI,CAAC;QAChD;AACA,eAAO,OAAO,MAAM,WAChBE,cAAa,CAAC,IACd,MAAM,WACN,WACA,EAAE;MACR,CAAC;AACD,SAAG,QAAQ,CAAC,GAAG,MAAK;AAClB,cAAM,OAAO,GAAG,IAAI;AACpB,cAAM,OAAO,GAAG,IAAI;AACpB,YAAI,MAAM,YAAY,SAAS,UAAU;AACvC;QACF;AACA,YAAI,SAAS,QAAW;AACtB,cAAI,SAAS,UAAa,SAAS,UAAU;AAC3C,eAAG,IAAI,KAAK,YAAY,UAAU,UAAU;UAC9C,OAAO;AACL,eAAG,KAAK;UACV;QACF,WAAW,SAAS,QAAW;AAC7B,aAAG,IAAI,KAAK,OAAO,YAAY,UAAU;QAC3C,WAAW,SAAS,UAAU;AAC5B,aAAG,IAAI,KAAK,OAAO,eAAe,UAAU,SAAS;AACrD,aAAG,IAAI,KAAK;QACd;MACF,CAAC;AACD,aAAO,GAAG,OAAO,OAAK,MAAM,QAAQ,EAAE,KAAK,GAAG;IAChD,CAAC,EACA,KAAK,GAAG;AAIX,UAAM,CAAC,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAG7D,SAAK,MAAM,OAAO,KAAK,QAAQ;AAG/B,QAAI,KAAK;AAAQ,WAAK,SAAS,KAAK;AAEpC,QAAI;AACF,WAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;IAElD,SAAS,IAAP;AAEA,WAAK,SAAS;IAChB;AAEA,WAAO,KAAK;EACd;EAEA,WAAW,GAAS;AAKlB,QAAI,KAAK,yBAAyB;AAChC,aAAO,EAAE,MAAM,GAAG;IACpB,WAAW,KAAK,aAAa,cAAc,KAAK,CAAC,GAAG;AAElD,aAAO,CAAC,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;IAC/B,OAAO;AACL,aAAO,EAAE,MAAM,KAAK;IACtB;EACF;EAEA,MAAM,GAAW,UAAU,KAAK,SAAO;AACrC,SAAK,MAAM,SAAS,GAAG,KAAK,OAAO;AAGnC,QAAI,KAAK,SAAS;AAChB,aAAO;IACT;AACA,QAAI,KAAK,OAAO;AACd,aAAO,MAAM;IACf;AAEA,QAAI,MAAM,OAAO,SAAS;AACxB,aAAO;IACT;AAEA,UAAM,UAAU,KAAK;AAGrB,QAAI,KAAK,WAAW;AAClB,UAAI,EAAE,MAAM,IAAI,EAAE,KAAK,GAAG;IAC5B;AAGA,UAAM,KAAK,KAAK,WAAW,CAAC;AAC5B,SAAK,MAAM,KAAK,SAAS,SAAS,EAAE;AAOpC,UAAM,MAAM,KAAK;AACjB,SAAK,MAAM,KAAK,SAAS,OAAO,GAAG;AAGnC,QAAI,WAAmB,GAAG,GAAG,SAAS;AACtC,QAAI,CAAC,UAAU;AACb,eAAS,IAAI,GAAG,SAAS,GAAG,CAAC,YAAY,KAAK,GAAG,KAAK;AACpD,mBAAW,GAAG;MAChB;IACF;AAEA,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAM,UAAU,IAAI;AACpB,UAAI,OAAO;AACX,UAAI,QAAQ,aAAa,QAAQ,WAAW,GAAG;AAC7C,eAAO,CAAC,QAAQ;MAClB;AACA,YAAM,MAAM,KAAK,SAAS,MAAM,SAAS,OAAO;AAChD,UAAI,KAAK;AACP,YAAI,QAAQ,YAAY;AACtB,iBAAO;QACT;AACA,eAAO,CAAC,KAAK;MACf;IACF;AAIA,QAAI,QAAQ,YAAY;AACtB,aAAO;IACT;AACA,WAAO,KAAK;EACd;EAEA,OAAO,SAAS,KAAqB;AACnC,WAAO,UAAU,SAAS,GAAG,EAAE;EACjC;;AAOF,UAAU,MAAM;AAChB,UAAU,YAAY;AACtB,UAAU,SAAS;AACnB,UAAU,WAAW;;;AMrqCrB,YAAuB;AADvB,OAAO,QAAQ;AA0BT,IAAO,+BAAP,cAA4C,MAAK;;AAGjD,SAAU,2BAA2B,QAAwB;AAIjE,QAAM,qBAAqB,OAAO,mBAAmB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;AAChF,QAAM,6BAA6B,OAAO,2BAA2B,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;AAChG,QAAM,uBAAuB,OAAO,qBAAqB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;AAGpF,QAAM,gBAAgB,CAAC,wBACrB,mBAAmB,KAAK,CAAC,MAAM,EAAE,MAAM,mBAAmB,CAAC,KAC3D,2BAA2B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,mBAAmB,CAAC,KACrE,qBAAqB,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAGjE,QAAM,sBAAsB,CAAC,wBAC3B,qBAAqB,KAAK,CAAC,MAAM,EAAE,MAAM,mBAAmB,CAAC,KAC7D,2BAA2B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEvE,SAAO,EAAC,eAAe,oBAAmB;AAC5C;AAOA,eAAsB,oBAAoB,cAAoB;AAK5D,QAAM,UAAU,MAAM,GAAG,SAAS,SAAS,cAAc,MAAM;AAC/D,QAAM,SAA6B,CAAA;AACnC,QAAM,SAAe,YAAM,SAAS,MAAM;AAC1C,MAAI,OAAO,WAAW,GAAG;AACvB,UAAM,IAAI,6BACR,2CACE,OAAO,IAAI,CAAC,MAAY,0BAAoB,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;EAEtE;AACA,QAAM,WAAW,2BAA2B,MAAM;AAClD,SAAO;IACL;IACA,WAAW,SAAS;IACpB,iBAAiB,SAAS;;AAE9B;;;AP9DM,IAAO,UAAP,MAAc;EAClB,aAAa,kBACX,KACA,QAA0D;AAE1D,UAAM,eAAe,MAAM,KAAK,sBAAsB,KAAK,MAAM;AACjE,UAAM,YAAY,KAAK,cAAc,GAAG;AAExC,QACE,iBAAiB,QACjB,aAAa,cAAc,QAC3B,aAAa,oBAAoB,QACjC,cAAc,MACd;AACA;IACF;AAEA,WAAO,KAAK,aAAa,KAAK,UAAU,IAAI,UAAU,MAAM,YAAY;EAC1E;EAMA,OAAO,aACL,KACA,OACA,SACA,cAA4E;AAG5E,UAAM,QAAQ;MACZ,YAAY;MACZ,WAAW;MACX,OAAO;MACP,eAAe;MACf,SAAS;;AAIX,UAAM,UAAU,SAAS,IAAI,IAAI,CAAC,YAAY,WAAW,GAAG,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE;AAG5F,UAAM,cAAc,IACjB,IAAI,CAAC,QAAQ,GAAG,WAAW,WAAW,WAAW,CAAC,EAClD,OACA,KAAI;AAGP,QAAI,gBAAgB,IAAI;AACtB,aAAO;IACT;AAGA,gBACG,MAAM,IAAI,EAGV,IAAI,CAAC,SAAS,KAAK,KAAI,EAAG,MAAM,GAAI,CAAC,EAIrC,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,EAAE,GAAG,OAAO,KAAK,EAAE,GAAG,KAAK,EAAE,CAA6B,EAGrF,QAAQ,CAAC,CAAC,YAAY,WAAW,QAAQ,MAAK;AAC7C,UAAI,aAAa,UAAU,QAAQ,GAAG;AACpC,cAAM,cAAc;AACpB,cAAM,aAAa;AACnB,cAAM,SAAS;MACjB,WAAW,aAAa,gBAAgB,QAAQ,GAAG;AACjD,cAAM,cAAc;AACpB,cAAM,aAAa;AACnB,cAAM,iBAAiB;MACzB;IACF,CAAC;AAEH,WAAO;EACT;EAGA,OAAO,sBAAsB,KAA6B,QAAc;AAEtE,QAAI,IAAI,YAAY,CAAC,aAAa,eAAe,IAAI,cAAa,GAAI,MAAM,CAAC,EAAE,WAAW,GAAG;AAC3F,UAAI,MAAM,OAAO,8CAA8C;AAC/D,aAAO;IACT;AAGA,QAAI,YAAY,CAAC,SAAS,MAAM,IAAI,cAAa,GAAI,MAAM,CAAC;AAC5D,WAAO,IAAI,YAAY,CAAC,aAAa,YAAY,CAAC,EAAE,OAAO,KAAI;EACjE;EAEA,aAAa,sBACX,KACA,SAA2D;AAK3D;AACA,QAAI,QAAQ,UAAU,qBAAqB,QAAW;AACpD,UAAI,MAAM,yCAAyC;AACnD,aAAO;IACT;AAEA,UAAM,aAAaE,MAAK,KAAK,IAAI,SAAS,QAAQ,UAAU,gBAAgB;AAC5E,UAAM,EAAC,WAAW,iBAAiB,OAAM,IAAI,MAAM,oBAAoB,UAAU;AACjF,QAAI,OAAO,mBAAmB,WAAW,GAAG;AAC1C,UAAI,KAAK,oEAAoE;IAC/E;AACA,WAAO,EAAC,WAAW,gBAAe;EACpC;EAEA,OAAO,cAAc,KAA2B;AAE9C,UAAM,KAAK,KAAK,sBAAsB,KAAK,IAAI;AAE/C,UAAMC,QAAO,KAAK,sBAAsB,KAAK,IAAI,cAAc;AAE/D,QAAI,OAAO,QAAQA,UAAS,MAAM;AAChC,UAAI,MAAM,oBAAoB,IAAI,2CAA2C;AAC7E,aAAO;IACT;AAEA,WAAO,EAAC,IAAI,MAAAA,MAAI;EAClB;;;;AQxII,IAAO,WAAP,cAAwB,WAA8B;EACjD,MAAM,eAAY;AACzB,WAAO,MAAM,QAAQ,kBAAkB,KAAK,KAAK,KAAK,MAAM;EAC9D;EAES,MAAM,kBAAe;AAC5B,UAAM,QAAQ,MAAM,KAAK;AACzB,QAAI,CAAC,OAAO;AACV;IACF;AACA,QAAI,KAAK,MAAM,KAAK,iBAAiB,CAAC;AACtC,QAAI,MAAM,UAAU,KAAK,MAAM,kBAAkB,GAAG;AAClD,UAAI,KAAK,GAAG,MAAM,kCAAkC,KAAK,IAAI,gBAAgB;AAC7E,UAAI,KAAK,IAAI,MAAM,QAAG,kCAAkC;IAC1D,WAAW,MAAM,gBAAgB,GAAG;AAClC,UAAI,KACF,GAAG,MAAM,2CAA2C,MAAM,gCACrD,MAAM,6BAA6B,MAAM,+BACzC,MAAM;2HAE6B;IAE5C,OAAO;AACL,UAAI,KACF,GAAG,MAAM,wBAAwB,MAAM,6BAA6B,MAAM,+BACnD,MAAM,mDAAmD;IAEpF;AACA,QAAI,KAAK,SAAQ;AACjB,QAAI,KAAI;EACV;;;;ACnCF,8BAA4C;AAe5C,IAAM,4BAA4B;EAChC,YAAY,8BAAM;EAClB,OAAO;IACL;MACE,OAAG,iCAAQ;QACT,aAAa;UACX,KAAK,8BAAM;;QAEb,OAAO;UACL,KAAK,8BAAM;;OAEd;;;;AAcP,IAAM,sBAAsB;AAEtB,IAAO,sBAAP,cAAmC,WAAqC;EACnE,MAAM,eAAY;AAnD7B,QAAAC;AAuDI,QAAI,WAAUA,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB;AACrC,QAAI,YAAY,UAAa,QAAQ,WAAW,GAAG;AACjD,UAAI,MAAM,0DAA0D;AACpE;IACF;AAGA,UAAM,cAAc,MAAM,KAAK,IAAI,OAAO,QAAQ,KAAK,kBAAkB,OAAO,CAAC;AACjF,UAAM,UAAU,OAAO,OAAO,WAAW;AAEzC,UAAM,EAAC,OAAO,MAAM,KAAI,IAAI,KAAK,IAAI;AAErC,WAAO,QAAQ,IAAI,CAAC,QAAQ,MAAK;AAC/B,YAAM,QAAQ,QAAQ;AACtB,YAAM,gBAAgB,mBAAmB,MAAM,KAAK;AAEpD,aAAO;QACL,WAAW,MAAM;QACjB,OAAO,OAAO;QACd,UAAU,sBAAsB,SAAS,iBAAiB;QAC1D,aAAa,OAAO,MAAM,IAAI,CAAC,SAAS,KAAK,GAAG;;IAEpD,CAAC;EACH;EAGQ,kBAAkB,SAAsD;AAE9E,UAAM,eAAkC,CAAA;AACxC,UAAM,EAAC,OAAO,MAAM,KAAI,IAAI,KAAK,IAAI;AAErC,UAAM,aAAa,QAAQ,SAAS;AAEpC,YAAQ,QAAQ,CAAC,EAAC,MAAM,MAAK,MAAK;AAEhC,YAAM,eAAW,+BAAM,KAAK,QAAQ,MAAM,EAAE,GAAG,QAAQ;AACvD,mBAAa,gBAAY,gCACvB;QACE,MAAM;QACN,OAAO;QACP,OAAO,IAAI,cAAc,MAAM,QAAQ,OAAO,KAAK;SAErD,EAAC,GAAG,0BAAyB,CAAC;IAElC,CAAC;AAED,WAAO;EACT;EAES,MAAM,kBAAe;AAC5B,UAAM,eAAe,MAAM,KAAK;AAChC,QAAI,CAAC,cAAc;AACjB;IACF;AACA,QAAI,KAAK,MAAM,KAAK,cAAc,CAAC;AACnC,UAAM,qBAAqB,KAAK,IAAI,GAAG,aAAa,IAAI,CAAC,WAAW,OAAO,UAAU,MAAM,CAAC;AAC5F,eAAW,eAAe,cAAc;AACtC,UAAI,KAAK,GAAG,YAAY,UAAU,OAAO,kBAAkB,MAAM,YAAY,OAAO;AAEpF,UAAI,YAAY,QAAQ,GAAG;AACzB,YAAI,KAAK,MAAM,YAAY,QAAQ;AACnC,oBAAY,YAAY,QAAQ,CAACC,SAAQ,IAAI,KAAK,KAAKA,MAAK,CAAC;AAC7D,YAAI,YAAY,QAAQ,qBAAqB;AAC3C,cAAI,KAAK,OAAO,YAAY,QAAQ,wCAAwC;QAC9E;AACA,YAAI,KAAK,SAAQ;MACnB;IACF;AACA,QAAI,KAAK,SAAQ;AACjB,QAAI,KAAI;EACV;;;;ACpFK,IAAM,WAA4B;EACvC;IACE,WAAW;IACX,KAAK;IACL,MAAM;;EAER;IACE,WAAW;IACX,KAAK;IACL,MAAM;;EAER;IACE,WAAW;IACX,KAAK;IACL,MAAM;;;AAIJ,IAAO,iBAAP,cAA8B,WAA+B;EACxD,MAAM,eAAY;AACzB,WAAO,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY,KAAK,yBAAyB,OAAO,CAAC,CAAC;EACtF;EAES,MAAM,kBAAe;AAC5B,UAAM,WAAW,MAAM,KAAK;AAC5B,UAAM,uBAAuB,KAAK,IAAI,GAAG,SAAS,IAAI,CAAC,YAAY,QAAQ,KAAK,MAAM,CAAC;AACvF,QAAI,KAAK,MAAM,KAAK,kBAAkB,CAAC;AACvC,eAAW,UAAU,UAAU;AAC7B,YAAM,OAAO,OAAO,KAAK,OAAO,oBAAoB;AACpD,UAAI,OAAO,WAAW,WAAW;AAC/B,YAAI,KAAK,GAAG,QAAQ,MAAM,QAAG,GAAG;MAClC,OAAO;AACL,YAAI,KAAK,MAAM,GAAG,QAAQ,IAAI,QAAG,eAAe,OAAO,YAAY,eAAc,IAAK;AACtF,YAAI,KAAK,cAAc,OAAO,aAAa;AAC3C,YAAI,KAAK,iBAAiB,OAAO,WAAW;AAC5C,YAAI,KAAK,SAAQ;MACnB;IACF;AACA,QAAI,KAAK,SAAQ;AACjB,QAAI,KAAI;EACV;EAGA,MAAM,yBAAyB,SAAsB;AACnD,QAAI;AACF,YAAM,SAAU,MAAM,MAAM,QAAQ,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,KAAI,CAAE;AAC7D,YAAM,SAAS,OAAO,OAAO,cAAc,SAAS,YAAY;AAChE,aAAO;QACL,MAAM,QAAQ;QACd,WAAW,QAAQ;QACnB;QACA,aAAa,OAAO,OAAO;QAC3B,aAAa,IAAI,KAAK,OAAO,KAAK,UAAU;;IAEhD,QAAE;AACA,aAAO;QACL,MAAM,QAAQ;QACd,WAAW,QAAQ;QACnB,QAAQ;QACR,aAAa,kCAAkC,QAAQ;QACvD,aAAa,IAAI,KAAI;;IAEzB;EACF;;;;ACtFF,IAAM,aAAa,CAAC,qBAAqB,gBAAgB,UAAU,QAAQ;AAG3E,eAAsB,uBAAoB;AAExC,QAAM,SAAS,MAAM,UAAS;AAC9B,6BAA2B,MAAM;AACjC,0BAAwB,MAAM;AAG9B,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAG5C,QAAM,wBAAwB,WAAW,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,MAAM,CAAC;AAKhF,QAAM,QAAQ,IAAI,sBAAsB,IAAI,CAAC,WAAW,OAAO,IAAwB,CAAC;AAExF,aAAW,UAAU,uBAAuB;AAC1C,UAAM,OAAO,gBAAe;EAC9B;AACF;;;ACxBA,SAAS,QAAQ,MAAU;AACzB,SAAO,qBAAqB,IAAI;AAClC;AAGA,eAAe,UAAO;AACpB,QAAM,qBAAoB;AAC5B;AAGO,IAAM,cAAwD;EACnE;EACA;EACA,SAAS;EACT,UAAU;;;;AC/BL,IAAM,UAAU,CAAC,QAExB,IAAI,SAAS,QAET,IAAI,SAAS,OAEZ,IAAI,QAAQ,IAAI,SAAS;AACvB,IAAM,YAAY,CAAC,QAE1B,IAAI,SAAS,UAET,IAAI,SAAS,OAEZ,IAAI,QAAQ,IAAI,SAAS;AACvB,IAAM,aAAa,CAAC,QAAQ,IAAI,SAAS;AACzC,IAAM,iBAAiB,CAAC,QAAQ,IAAI,SAAS;AAC7C,IAAM,cAAc,CAAC,QAAQ,YAAY,SAAS,IAAI,IAAI;AAC1D,IAAM,aAAa,CAAC,QAAQ,IAAI,SAAS,WAAW,IAAI,SAAS;;;ACjBjE,IAAM,mBAAN,cAA+B,MAAM;AAAA,EACxC,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY,SAAS;AACjB,UAAM;AACN,SAAK,QAAQ,mCAAS;AAAA,EAC1B;AACJ;AACO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EACzC,OAAO;AAAA,EACP,UAAU;AACd;AACO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACvC,OAAO;AACX;AACO,IAAM,YAAN,cAAwB,MAAM;AAAA,EACjC,OAAO;AACX;AACO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACvC,OAAO;AACX;;;ACpBA,SAAS,iBAAAC,sBAAqB;;;ACC9B,SAAS,mBAAmB,qBAAqB;AAEjD,IAAM,cAAc,IAAI,kBAAkB;AAC1C,SAAS,YAAY,IAAI;AACrB,QAAM,QAAQ;AAAA,IACV;AAAA,IACA,OAAO,CAAC;AAAA,IACR,cAAc,CAAC;AAAA,IACf,aAAa,CAAC;AAAA,IACd,OAAO;AAAA,IACP,eAAe;AAAA,IAAE;AAAA,EACrB;AACA,SAAO;AACX;AAEO,SAAS,UAAU,IAAI,IAAI;AAC9B,QAAM,QAAQ,YAAY,EAAE;AAC5B,SAAO,YAAY,IAAI,OAAO,MAAM;AAChC,aAAS,MAAMC,SAAQ;AACnB,YAAM,eAAe,MAAM;AACvB,cAAM,QAAQ;AACd,QAAAA,QAAO;AAAA,MACX;AACA,YAAM,aAAa;AAAA,IACvB;AACA,WAAO,GAAG,KAAK;AAAA,EACnB,CAAC;AACL;AAEA,SAAS,WAAW;AAChB,QAAM,QAAQ,YAAY,SAAS;AACnC,MAAI,CAAC,OAAO;AACR,UAAM,IAAI,UAAU,mEAAmE;AAAA,EAC3F;AACA,SAAO;AACX;AACO,SAAS,WAAW;AACvB,SAAO,SAAS,EAAE;AACtB;AAEO,SAAS,YAAY,IAAI;AAC5B,QAAM,UAAU,IAAI,SAAS;AACzB,UAAM,QAAQ,SAAS;AACvB,QAAI,eAAe;AACnB,UAAM,kBAAkB,MAAM;AAC9B,UAAM,eAAe,MAAM;AACvB,qBAAe;AAAA,IACnB;AACA,UAAM,cAAc,GAAG,GAAG,IAAI;AAC9B,QAAI,cAAc;AACd,sBAAgB;AAAA,IACpB;AACA,UAAM,eAAe;AACrB,WAAO;AAAA,EACX;AACA,SAAO,cAAc,KAAK,OAAO;AACrC;AACO,SAAS,YAAY,IAAI;AAC5B,QAAM,QAAQ,SAAS;AACvB,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,UAAU;AAAA,IACZ,MAAM;AACF,aAAO,MAAM,MAAM;AAAA,IACvB;AAAA,IACA,IAAI,OAAO;AACP,YAAM,MAAM,SAAS;AAAA,IACzB;AAAA,IACA,aAAa,SAAS,MAAM;AAAA,EAChC;AACA,QAAM,cAAc,GAAG,OAAO;AAC9B,QAAM;AACN,SAAO;AACX;AACO,SAAS,eAAe;AAC3B,WAAS,EAAE,aAAa;AAC5B;AACO,IAAM,kBAAkB;AAAA,EAC3B,MAAM,IAAI;AACN,UAAM,QAAQ,SAAS;AACvB,UAAM,EAAE,MAAM,IAAI;AAClB,UAAM,YAAY,KAAK,MAAM;AAjFrC,UAAAC,KAAAC;AAkFY,OAAAA,OAAAD,MAAA,MAAM,cAAa,WAAnB,gBAAAC,IAAA,KAAAD;AACA,YAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,UAAI,WAAW,QAAQ,OAAO,YAAY,YAAY;AAClD,cAAM,IAAI,gBAAgB,+DAA+D;AAAA,MAC7F;AACA,YAAM,aAAa,SAAS;AAAA,IAChC,CAAC;AAAA,EACL;AAAA,EACA,MAAM;AACF,UAAM,QAAQ,SAAS;AACvB,gBAAY,MAAM;AACd,YAAM,YAAY,QAAQ,CAAC,WAAW;AAClC,eAAO;AAAA,MACX,CAAC;AAGD,YAAM,YAAY,SAAS;AAAA,IAC/B,CAAC,EAAE;AAAA,EACP;AAAA,EACA,WAAW;AACP,UAAM,QAAQ,SAAS;AACvB,UAAM,aAAa,QAAQ,CAAC,YAAY;AACpC;AAAA,IACJ,CAAC;AACD,UAAM,YAAY,SAAS;AAC3B,UAAM,aAAa,SAAS;AAAA,EAChC;AACJ;;;AC5GO,SAAS,SAAS,cAAc;AACnC,SAAO,YAAY,CAAC,YAAY;AAC5B,UAAM,QAAQ,CAAC,aAAa;AAExB,UAAI,QAAQ,IAAI,MAAM,UAAU;AAC5B,gBAAQ,IAAI,QAAQ;AAEpB,qBAAa;AAAA,MACjB;AAAA,IACJ;AACA,QAAI,QAAQ,aAAa;AACrB,aAAO,CAAC,QAAQ,IAAI,GAAG,KAAK;AAAA,IAChC;AACA,UAAM,QAAQ,OAAO,iBAAiB,aAAa,aAAa,IAAI;AACpE,YAAQ,IAAI,KAAK;AACjB,WAAO,CAAC,OAAO,KAAK;AAAA,EACxB,CAAC;AACL;;;ACjBO,SAAS,UAAU,IAAI,UAAU;AACpC,cAAY,CAAC,YAAY;AACrB,UAAM,UAAU,QAAQ,IAAI;AAC5B,UAAM,aAAa,CAAC,MAAM,QAAQ,OAAO,KAAK,SAAS,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;AACnG,QAAI,YAAY;AACZ,sBAAgB,MAAM,EAAE;AAAA,IAC5B;AACA,YAAQ,IAAI,QAAQ;AAAA,EACxB,CAAC;AACL;;;ACVA,6BAAmB;;;ACGnB,OAAOE,cAAa;AAEpB,SAAS,qBAAqB;AAC1B,MAAIA,SAAQ,aAAa,SAAS;AAC9B,WAAOA,SAAQ,IAAI,YAAY;AAAA,EACnC;AACA,SAAQ,QAAQA,SAAQ,IAAI,aAAa,KACrC,QAAQA,SAAQ,IAAI,mBAAmB,KACvCA,SAAQ,IAAI,kBAAkB,kBAC9BA,SAAQ,IAAI,oBAAoB,sBAChCA,SAAQ,IAAI,oBAAoB,YAChCA,SAAQ,IAAI,YAAY,oBACxBA,SAAQ,IAAI,YAAY,eACxBA,SAAQ,IAAI,yBAAyB;AAC7C;AAEA,IAAM,SAAS;AAAA,EACX,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,UAAU;AAAA,EACV,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,eAAe;AAAA,EACf,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,MAAM;AAAA,EACN,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,2BAA2B;AAAA,EAC3B,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,4BAA4B;AAAA,EAC5B,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,kCAAkC;AAAA,EAClC,4BAA4B;AAAA,EAC5B,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,6BAA6B;AAAA,EAC7B,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,mCAAmC;AAAA,EACnC,6BAA6B;AAAA,EAC7B,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,+BAA+B;AAAA,EAC/B,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,qCAAqC;AAAA,EACrC,yBAAyB;AAAA,EACzB,+BAA+B;AAAA,EAC/B,iBAAiB;AAAA,EACjB,6BAA6B;AAAA,EAC7B,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,mCAAmC;AAAA,EACnC,uBAAuB;AAAA,EACvB,6BAA6B;AAAA,EAC7B,qBAAqB;AAAA,EACrB,qCAAqC;AAAA,EACrC,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6CAA6C;AAAA,EAC7C,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,WAAW;AAAA,EACX,eAAe;AAAA,EACf,WAAW;AACf;AACA,IAAM,qBAAqB;AAAA,EACvB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AACd;AACA,IAAM,yBAAyB;AAAA,EAC3B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AACd;AACO,IAAM,cAAc,EAAE,GAAG,QAAQ,GAAG,mBAAmB;AACvD,IAAM,kBAAkB;AAAA,EAC3B,GAAG;AAAA,EACH,GAAG;AACP;AACA,IAAM,gBAAgB,mBAAmB;AACzC,IAAM,UAAU,gBAAgB,cAAc;AAC9C,IAAOC,eAAQ;AACf,IAAM,eAAe,OAAO,QAAQ,kBAAkB;;;ADrS/C,IAAM,eAAe;AAAA,EACxB,QAAQ;AAAA,IACJ,MAAM,uBAAAC,QAAO,KAAK,GAAG;AAAA,IAErB,MAAM,uBAAAA,QAAO,MAAMC,aAAQ,IAAI;AAAA,EACnC;AAAA,EACA,SAAS;AAAA,IACL,UAAU;AAAA,IACV,QAAQ,CAAC,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,QAAG,EAAE,IAAI,CAAC,UAAU,uBAAAD,QAAO,OAAO,KAAK,CAAC;AAAA,EAClG;AAAA,EACA,OAAO;AAAA,IACH,QAAQ,uBAAAA,QAAO;AAAA,IACf,SAAS,uBAAAA,QAAO;AAAA,IAChB,OAAO,CAAC,SAAS,uBAAAA,QAAO,IAAI,KAAK,MAAM;AAAA,IACvC,eAAe,CAAC,SAAS,uBAAAA,QAAO,IAAI,IAAI,OAAO;AAAA,IAC/C,MAAM,uBAAAA,QAAO;AAAA,IACb,WAAW,uBAAAA,QAAO;AAAA,IAClB,KAAK,CAAC,SAAS,uBAAAA,QAAO,KAAK,uBAAAA,QAAO,KAAK,IAAI,OAAO,CAAC;AAAA,EACvD;AACJ;;;AEpBA,SAAS,cAAc,OAAO;AAC1B,MAAI,OAAO,UAAU,YAAY,UAAU;AACvC,WAAO;AACX,MAAI,QAAQ;AACZ,SAAO,OAAO,eAAe,KAAK,MAAM,MAAM;AAC1C,YAAQ,OAAO,eAAe,KAAK;AAAA,EACvC;AACA,SAAO,OAAO,eAAe,KAAK,MAAM;AAC5C;AACA,SAAS,aAAa,SAAS;AAC3B,QAAM,SAAS,CAAC;AAChB,aAAW,OAAO,SAAS;AACvB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC5C,YAAM,YAAY,OAAO;AACzB,aAAO,OACH,cAAc,SAAS,KAAK,cAAc,KAAK,IACzC,UAAU,WAAW,KAAK,IAC1B;AAAA,IACd;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,aAAa,QAAQ;AACjC,QAAM,gBAAgB;AAAA,IAClB;AAAA,IACA,GAAG,OAAO,OAAO,CAAC,UAAU,SAAS,IAAI;AAAA,EAC7C;AACA,SAAO,UAAU,GAAG,aAAa;AACrC;;;ANzBO,SAAS,UAAU,EAAE,SAAS,QAAQ,MAAO,GAAG;AACnD,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,CAAC;AAClC,QAAM,EAAE,QAAQ,QAAQ,IAAI,UAAU,KAAK;AAC3C,YAAU,MAAM;AACZ,QAAI,WAAW,WAAW;AACtB,UAAI;AACJ,UAAI,MAAM;AAEV,YAAM,eAAe,WAAWE,eAAc,KAAK,MAAM;AACrD,sBAAc,IAAI;AAClB,uBAAe,YAAYA,eAAc,KAAK,MAAM;AAChD,gBAAM,MAAM;AACZ,kBAAQ,MAAM,QAAQ,OAAO,MAAM;AAAA,QACvC,CAAC,GAAG,QAAQ,QAAQ;AAAA,MACxB,CAAC,GAAG,GAAG;AACP,aAAO,MAAM;AACT,qBAAa,YAAY;AACzB,sBAAc,YAAY;AAAA,MAC9B;AAAA,IACJ,OACK;AACD,oBAAc,KAAK;AAAA,IACvB;AAAA,EACJ,GAAG,CAAC,MAAM,CAAC;AACX,MAAI,YAAY;AACZ,WAAO,QAAQ,OAAO;AAAA,EAC1B;AAEA,QAAM,WAAW,WAAW,YAAY,SAAS;AACjD,SAAO,OAAO,WAAW,WAAW,SAAU,OAAO,aAAa,OAAO;AAC7E;;;AOlCO,SAAS,QAAQ,IAAI,cAAc;AACtC,SAAO,YAAY,CAAC,YAAY;AAC5B,UAAM,OAAO,QAAQ,IAAI;AACzB,QAAI,CAAC,QACD,KAAK,aAAa,WAAW,aAAa,UAC1C,KAAK,aAAa,KAAK,CAAC,KAAK,MAAM,QAAQ,aAAa,EAAE,GAAG;AAC7D,YAAM,QAAQ,GAAG;AACjB,cAAQ,IAAI,EAAE,OAAO,aAAa,CAAC;AACnC,aAAO;AAAA,IACX;AACA,WAAO,KAAK;AAAA,EAChB,CAAC;AACL;;;ACZO,SAAS,OAAO,KAAK;AACxB,SAAO,SAAS,EAAE,SAAS,IAAI,CAAC,EAAE;AACtC;;;ACAO,SAAS,YAAY,aAAa;AACrC,QAAM,SAAS,OAAO,WAAW;AACjC,SAAO,UAAU;AACjB,YAAU,CAAC,OAAO;AACd,QAAI,SAAS;AACb,UAAMC,YAAU,YAAY,CAAC,QAAQ,UAAU;AAC3C,UAAI;AACA;AACJ,WAAK,OAAO,QAAQ,OAAO,EAAE;AAAA,IACjC,CAAC;AACD,OAAG,MAAM,GAAG,YAAYA,SAAO;AAC/B,WAAO,MAAM;AACT,eAAS;AACT,SAAG,MAAM,eAAe,YAAYA,SAAO;AAAA,IAC/C;AAAA,EACJ,GAAG,CAAC,CAAC;AACT;;;ACnBA,uBAAqB;AACrB,uBAAqB;AASd,SAAS,WAAW,SAAS,OAAO;AACvC,SAAO,QACF,MAAM,IAAI,EACV,QAAQ,CAAC,aAAS,iBAAAC,SAAS,MAAM,OAAO,EAAE,MAAM,OAAO,MAAM,KAAK,CAAC,EACnE,MAAM,IAAI,EACV,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,EAC3B,KAAK,IAAI;AAClB;AAKO,SAAS,gBAAgB;AAC5B,aAAO,iBAAAC,SAAS,EAAE,cAAc,IAAI,QAAQ,SAAS,EAAE,OAAO,CAAC;AACnE;;;ACvBA,SAAS,MAAM,SAAS,OAAO;AAC3B,SAAO,WAAW,SAAS,KAAK,EAAE,MAAM,IAAI;AAChD;AAMA,SAAS,OAAO,OAAO,OAAO;AAC1B,QAAM,MAAM,MAAM;AAClB,QAAM,UAAW,QAAQ,MAAO,OAAO;AACvC,SAAO,CAAC,GAAG,MAAM,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,MAAM,CAAC;AAC7D;AAOO,SAAS,MAAM,EAAE,OAAO,OAAO,YAAY,QAAQ,UAAU,WAAW,SAAU,GAAG;AACxF,QAAM,UAAU,MAAM,IAAI,CAAC,MAAM,WAAW;AAAA,IACxC;AAAA,IACA;AAAA,IACA,UAAU,UAAU;AAAA,EACxB,EAAE;AACF,QAAM,gBAAgB,OAAO,SAAS,WAAW,OAAO,EAAE,MAAM,GAAG,QAAQ;AAC3E,QAAM,eAAe,CAAC,UAAU,cAAc,UAAU,OAAO,CAAC,IAAI,MAAM,WAAW,cAAc,MAAM,GAAG,KAAK;AAEjH,QAAM,aAAa,MAAM,KAAK,EAAE,QAAQ,SAAS,CAAC;AAElD,QAAM,aAAa,aAAa,SAAS,EAAE,MAAM,GAAG,QAAQ;AAC5D,QAAM,WAAW,YAAY,WAAW,UAAU,WAAW,YAAY,WAAW,WAAW;AAE/F,aAAW,OAAO,UAAU,WAAW,QAAQ,GAAG,UAAU;AAE5D,MAAI,gBAAgB,WAAW,WAAW;AAC1C,MAAI,gBAAgB,YAAY;AAChC,SAAO,gBAAgB,YAAY,gBAAgB,cAAc,QAAQ;AACrE,eAAW,QAAQ,aAAa,aAAa,GAAG;AAC5C,iBAAW,mBAAmB;AAC9B,UAAI,iBAAiB;AACjB;AAAA,IACR;AACA;AAAA,EACJ;AAEA,kBAAgB,WAAW;AAC3B,kBAAgB,YAAY;AAC5B,SAAO,iBAAiB,KAAK,iBAAiB,GAAG;AAC7C,eAAW,QAAQ,aAAa,aAAa,EAAE,QAAQ,GAAG;AACtD,iBAAW,mBAAmB;AAC9B,UAAI,gBAAgB;AAChB;AAAA,IACR;AACA;AAAA,EACJ;AACA,SAAO,WAAW,OAAO,CAAC,SAAS,OAAO,SAAS,QAAQ;AAC/D;;;ACtDO,SAAS,OAAO,EAAE,QAAQ,UAAU,MAAO,GAAG;AACjD,QAAM,SAAS,KAAK,MAAM,WAAW,CAAC;AACtC,MAAI,SAAS,YAAY,SAAS;AAC9B,WAAO;AACX,MAAI,UAAU,QAAQ;AAClB,WAAO,SAAS,WAAW;AAC/B,SAAO;AACX;AAKO,SAAS,SAAS,EAAE,QAAQ,YAAY,OAAO,UAAU,QAAS,GAAG;AACxE,MAAI,SAAS;AACT,WAAO;AAGX,MAAI,aAAa,UAAU,SAAS,aAAa,UAAU;AAEvD,WAAO,KAAK,IAAI,KAAK,MAAM,WAAW,CAAC,GAAG,UAAU,SAAS,UAAU;AAAA,EAC3E;AACA,SAAO;AACX;;;ACtBO,SAAS,cAAc,EAAE,OAAO,QAAQ,YAAY,UAAU,OAAO,KAAM,GAAG;AACjF,QAAM,QAAQ,OAAO,EAAE,UAAU,GAAG,YAAY,EAAE,CAAC;AACnD,QAAM,WAAW,OACX,SAAS;AAAA,IACP;AAAA,IACA,YAAY,MAAM,QAAQ;AAAA,IAC1B,OAAO,MAAM;AAAA,IACb;AAAA,IACA,SAAS,MAAM,QAAQ;AAAA,EAC3B,CAAC,IACC,OAAO;AAAA,IACL;AAAA,IACA,OAAO,MAAM;AAAA,IACb;AAAA,EACJ,CAAC;AACL,QAAM,QAAQ,WAAW;AACzB,QAAM,QAAQ,aAAa;AAC3B,SAAO,MAAM;AAAA,IACT;AAAA,IACA,OAAO,cAAc;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC,EAAE,KAAK,IAAI;AAChB;;;AC3BA,yBAAuB;AAFvB,YAAYC,eAAc;AAC1B,SAAS,iBAAAC,sBAAqB;;;ACyBvB,IAAM,UAA4B,CAAA;AACzC,QAAQ,KAAK,UAAU,UAAU,SAAS;AAE1C,IAAI,QAAQ,aAAa,SAAS;AAChC,UAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;AAOJ,IAAI,QAAQ,aAAa,SAAS;AAChC,UAAQ,KAAK,SAAS,WAAW,UAAU,WAAW;;;;ACnCxD,IAAM,YAAY,CAACC,aACjB,CAAC,CAACA,YACF,OAAOA,aAAY,YACnB,OAAOA,SAAQ,mBAAmB,cAClC,OAAOA,SAAQ,SAAS,cACxB,OAAOA,SAAQ,eAAe,cAC9B,OAAOA,SAAQ,cAAc,cAC7B,OAAOA,SAAQ,SAAS,cACxB,OAAOA,SAAQ,QAAQ,YACvB,OAAOA,SAAQ,OAAO;AAExB,IAAM,eAAe,OAAO,IAAI,qBAAqB;AACrD,IAAMC,UAA2D;AACjE,IAAM,uBAAuB,OAAO,eAAe,KAAK,MAAM;AAyB9D,IAAM,UAAN,MAAa;EACX,UAAmB;IACjB,WAAW;IACX,MAAM;;EAGR,YAAuB;IACrB,WAAW,CAAA;IACX,MAAM,CAAA;;EAGR,QAAgB;EAChB,KAAa,KAAK,OAAM;EAExB,cAAA;AACE,QAAIA,QAAO,eAAe;AACxB,aAAOA,QAAO;;AAEhB,yBAAqBA,SAAQ,cAAc;MACzC,OAAO;MACP,UAAU;MACV,YAAY;MACZ,cAAc;KACf;EACH;EAEA,GAAG,IAAe,IAAW;AAC3B,SAAK,UAAU,IAAI,KAAK,EAAE;EAC5B;EAEA,eAAe,IAAe,IAAW;AACvC,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,IAAI,KAAK,QAAQ,EAAE;AAEzB,QAAI,MAAM,IAAI;AACZ;;AAGF,QAAI,MAAM,KAAK,KAAK,WAAW,GAAG;AAChC,WAAK,SAAS;WACT;AACL,WAAK,OAAO,GAAG,CAAC;;EAEpB;EAEA,KACE,IACA,MACA,QAA6B;AAE7B,QAAI,KAAK,QAAQ,KAAK;AACpB,aAAO;;AAET,SAAK,QAAQ,MAAM;AACnB,QAAI,MAAe;AACnB,eAAW,MAAM,KAAK,UAAU,KAAK;AACnC,YAAM,GAAG,MAAM,MAAM,MAAM,QAAQ;;AAErC,QAAI,OAAO,QAAQ;AACjB,YAAM,KAAK,KAAK,aAAa,MAAM,MAAM,KAAK;;AAEhD,WAAO;EACT;;AAGF,IAAe,iBAAf,MAA6B;;AAM7B,IAAM,iBAAiB,CAA2BC,cAAc;AAC9D,SAAO;IACL,OAAO,IAAa,MAA+B;AACjD,aAAOA,UAAQ,OAAO,IAAI,IAAI;IAChC;IACA,OAAI;AACF,aAAOA,UAAQ,KAAI;IACrB;IACA,SAAM;AACJ,aAAOA,UAAQ,OAAM;IACvB;;AAEJ;AAEA,IAAM,qBAAN,cAAiC,eAAc;EAC7C,SAAM;AACJ,WAAO,MAAK;IAAE;EAChB;EACA,OAAI;EAAI;EACR,SAAM;EAAI;;AA7IZ;AAgJA,IAAM,aAAN,cAAyB,eAAc;EAcrC,YAAYF,UAAkB;AAC5B,UAAK;AAuHP;AAeA;AAjJA,gCAAUA,SAAQ,aAAa,UAAU,WAAW;AAEpD,iCAAW,IAAI,QAAO;AACtB;AACA;AACA;AAEA,sCAAwD,CAAA;AACxD,gCAAmB;AAIjB,uBAAK,UAAWA;AAEhB,uBAAK,eAAgB,CAAA;AACrB,eAAW,OAAO,SAAS;AACzB,yBAAK,eAAc,OAAO,MAAK;AAK7B,cAAM,YAAY,mBAAK,UAAS,UAAU,GAAG;AAC7C,YAAI,EAAE,MAAK,IAAK,mBAAK;AAQrB,cAAM,IAAIA;AAGV,YACE,OAAO,EAAE,4BAA4B,YACrC,OAAO,EAAE,wBAAwB,UAAU,UAC3C;AACA,mBAAS,EAAE,wBAAwB;;AAGrC,YAAI,UAAU,WAAW,OAAO;AAC9B,eAAK,OAAM;AACX,gBAAM,MAAM,mBAAK,UAAS,KAAK,QAAQ,MAAM,GAAG;AAEhD,gBAAM,IAAI,QAAQ,WAAW,mBAAK,WAAU;AAC5C,cAAI,CAAC;AAAK,YAAAA,SAAQ,KAAKA,SAAQ,KAAK,CAAC;;MAGzC;;AAGF,uBAAK,4BAA6BA,SAAQ;AAC1C,uBAAK,sBAAuBA,SAAQ;EACtC;EAEA,OAAO,IAAa,MAA+B;AAEjD,QAAI,CAAC,UAAU,mBAAK,SAAQ,GAAG;AAC7B,aAAO,MAAK;MAAE;;AAIhB,QAAI,mBAAK,aAAY,OAAO;AAC1B,WAAK,KAAI;;AAGX,UAAM,MAAK,6BAAM,cAAa,cAAc;AAC5C,uBAAK,UAAS,GAAG,IAAI,EAAE;AACvB,WAAO,MAAK;AACV,yBAAK,UAAS,eAAe,IAAI,EAAE;AACnC,UACE,mBAAK,UAAS,UAAU,QAAQ,WAAW,KAC3C,mBAAK,UAAS,UAAU,aAAa,WAAW,GAChD;AACA,aAAK,OAAM;;IAEf;EACF;EAEA,OAAI;AACF,QAAI,mBAAK,UAAS;AAChB;;AAEF,uBAAK,SAAU;AAMf,uBAAK,UAAS,SAAS;AAEvB,eAAW,OAAO,SAAS;AACzB,UAAI;AACF,cAAM,KAAK,mBAAK,eAAc;AAC9B,YAAI;AAAI,6BAAK,UAAS,GAAG,KAAK,EAAE;eACzB,GAAP;MAAU;;AAGd,uBAAK,UAAS,OAAO,CAAC,OAAe,MAAY;AAC/C,aAAO,sBAAK,8BAAL,WAAkB,IAAI,GAAG;IAClC;AACA,uBAAK,UAAS,aAAa,CAAC,SAAoC;AAC9D,aAAO,sBAAK,0CAAL,WAAwB;IACjC;EACF;EAEA,SAAM;AACJ,QAAI,CAAC,mBAAK,UAAS;AACjB;;AAEF,uBAAK,SAAU;AAEf,YAAQ,QAAQ,SAAM;AACpB,YAAM,WAAW,mBAAK,eAAc;AAEpC,UAAI,CAAC,UAAU;AACb,cAAM,IAAI,MAAM,sCAAsC,GAAG;;AAG3D,UAAI;AACF,2BAAK,UAAS,eAAe,KAAK,QAAQ;eAEnC,GAAP;MAAU;IAEd,CAAC;AACD,uBAAK,UAAS,OAAO,mBAAK;AAC1B,uBAAK,UAAS,aAAa,mBAAK;AAChC,uBAAK,UAAS,SAAS;EACzB;;AAhIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AA0HA;uBAAkB,SAAC,MAAgC;AAEjD,MAAI,CAAC,UAAU,mBAAK,SAAQ,GAAG;AAC7B,WAAO;;AAET,qBAAK,UAAS,WAAW,QAAQ;AAGjC,qBAAK,UAAS,KAAK,QAAQ,mBAAK,UAAS,UAAU,IAAI;AACvD,SAAO,mBAAK,4BAA2B,KACrC,mBAAK,WACL,mBAAK,UAAS,QAAQ;AAE1B;AAEA;iBAAY,SAAC,OAAe,MAAW;AACrC,QAAM,KAAK,mBAAK;AAChB,MAAI,OAAO,UAAU,UAAU,mBAAK,SAAQ,GAAG;AAC7C,QAAI,OAAO,KAAK,OAAO,UAAU;AAC/B,yBAAK,UAAS,WAAW,KAAK;;AAIhC,UAAM,MAAM,GAAG,KAAK,mBAAK,WAAU,IAAI,GAAG,IAAI;AAE9C,uBAAK,UAAS,KAAK,QAAQ,mBAAK,UAAS,UAAU,IAAI;AAEvD,WAAO;SACF;AACL,WAAO,GAAG,KAAK,mBAAK,WAAU,IAAI,GAAG,IAAI;;AAE7C;AAGF,IAAMA,WAAU,WAAW;AAGpB,IAAM;EAUX;EASA;EASA;AAAM,IACJ,eACF,UAAUA,QAAO,IAAI,IAAI,WAAWA,QAAO,IAAI,IAAI,mBAAkB,CAAE;;;ACzVzE,wBAAsB;AACtB,0BAAwB;AAExB,IAAM,SAAS,CAAC,YAAY,QAAQ,MAAM,IAAI,EAAE;AAChD,IAAM,WAAW,CAAC,YAAY,QAAQ,MAAM,IAAI,EAAE,IAAI,KAAK;AAC3D,SAAS,WAAW,GAAG;AACnB,SAAO,IAAI,IAAI,oBAAAG,QAAY,WAAW,CAAC,IAAI;AAC/C;AACA,IAAqB,gBAArB,MAAmC;AAAA,EAC/B;AAAA,EAEA,SAAS;AAAA,EACT,wBAAwB;AAAA,EACxB;AAAA,EACA,YAAY,IAAI;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,YAAY,GAAG,aAAa;AAAA,EACrC;AAAA,EACA,MAAM,SAAS;AACX,SAAK,GAAG,OAAO,OAAO;AACtB,SAAK,GAAG,OAAO,MAAM,OAAO;AAC5B,SAAK,GAAG,OAAO,KAAK;AAAA,EACxB;AAAA,EACA,OAAO,SAAS,gBAAgB,IAAI;AAEhC,UAAM,aAAa,SAAS,OAAO;AACnC,UAAM,oBAAgB,kBAAAC,SAAU,UAAU;AAI1C,QAAI,SAAS;AACb,QAAI,KAAK,GAAG,KAAK,SAAS,GAAG;AACzB,eAAS,OAAO,MAAM,GAAG,CAAC,KAAK,GAAG,KAAK,MAAM;AAAA,IACjD;AACA,SAAK,GAAG,UAAU,MAAM;AAExB,SAAK,YAAY,KAAK,GAAG,aAAa;AACtC,UAAM,QAAQ,cAAc;AAC5B,cAAU,WAAW,SAAS,KAAK;AACnC,oBAAgB,WAAW,eAAe,KAAK;AAI/C,QAAI,cAAc,SAAS,UAAU,GAAG;AACpC,iBAAW;AAAA,IACf;AACA,QAAI,SAAS,WAAW,gBAAgB,OAAO,gBAAgB;AAM/D,UAAM,mBAAmB,KAAK,MAAM,cAAc,SAAS,KAAK,IAAI,KAAK,UAAU;AACnF,UAAM,sBAAsB,oBAAoB,gBAAgB,OAAO,aAAa,IAAI;AAExF,QAAI,sBAAsB;AACtB,gBAAU,oBAAAD,QAAY,SAAS,mBAAmB;AAEtD,cAAU,oBAAAA,QAAY,SAAS,KAAK,UAAU,IAAI;AAIlD,SAAK,MAAM,WAAW,KAAK,qBAAqB,IAC5C,oBAAAA,QAAY,WAAW,KAAK,MAAM,IAClC,MAAM;AACV,SAAK,wBAAwB;AAC7B,SAAK,SAAS,OAAO,MAAM;AAAA,EAC/B;AAAA,EACA,iBAAiB;AACb,UAAM,YAAY,KAAK,GAAG,aAAa;AACvC,QAAI,UAAU,SAAS,KAAK,UAAU,MAAM;AACxC,WAAK,MAAM,oBAAAA,QAAY,SAAS,UAAU,IAAI,CAAC;AAC/C,WAAK,YAAY;AAAA,IACrB;AAAA,EACJ;AAAA,EACA,KAAK,EAAE,aAAa,GAAG;AACnB,SAAK,GAAG,UAAU,EAAE;AACpB,QAAI,SAAS,WAAW,KAAK,qBAAqB;AAClD,cAAU,eAAe,oBAAAA,QAAY,WAAW,KAAK,MAAM,IAAI;AAC/D,cAAU,oBAAAA,QAAY;AACtB,SAAK,MAAM,MAAM;AACjB,SAAK,GAAG,MAAM;AAAA,EAClB;AACJ;;;ACnFO,IAAM,kBAAN,cAA8B,QAAQ;AAAA,EAGzC,OAAO,eAAe;AAClB,QAAIE;AACJ,QAAI;AACJ,UAAM,UAAU,IAAI,QAAQ,CAAC,KAAK,QAAQ;AACtC,MAAAA,YAAU;AACV,eAAS;AAAA,IACb,CAAC;AACD,WAAO,EAAE,SAAS,SAASA,WAAS,OAAe;AAAA,EACvD;AACJ;;;AJLA,SAAS,eAAe;AACpB,QAAM,qBAAqB,MAAM;AACjC,MAAI;AACA,QAAI,SAAS,CAAC;AACd,UAAM,oBAAoB,CAAC,GAAG,cAAc;AACxC,YAAM,0BAA0B,UAAU,MAAM,CAAC;AACjD,eAAS;AACT,aAAO;AAAA,IACX;AAEA,QAAI,MAAM,EAAE;AACZ,WAAO;AAAA,EACX,UACA;AACI,UAAM,oBAAoB;AAAA,EAC9B;AACJ;AACO,SAAS,aAAa,MAAM;AAzBnC,MAAAC,KAAAC;AA0BI,QAAM,YAAY,aAAa;AAC/B,QAAM,kBAAiBA,OAAAD,MAAA,UAAU,OAAV,gBAAAA,IAAc,gBAAd,gBAAAC,IAAA,KAAAD;AACvB,QAAM,SAAS,CAAC,QAAQ,UAAU,CAAC,MAAM;AAErC,UAAM,EAAE,QAAQ,QAAQ,OAAO,OAAO,IAAI;AAC1C,UAAM,WAAW,oBAAI,IAAI;AAEzB,UAAM,SAAS,IAAI,mBAAAE,QAAW;AAC9B,WAAO,KAAK,QAAQ,UAAU,QAAQ,MAAM;AAC5C,UAAM,KAAc,0BAAgB;AAAA,MAChC,UAAU;AAAA,MACV;AAAA,MACA;AAAA,IACJ,CAAC;AACD,UAAM,SAAS,IAAI,cAAc,EAAE;AACnC,UAAM,EAAE,SAAS,SAAAC,WAAS,OAAO,IAAI,gBAAgB,aAAa;AAClE,UAAM,SAAS,MAAM,OAAO,IAAI,kBAAkB,CAAC;AACnD,QAAI,QAAQ;AACR,YAAM,QAAQ,MAAM,OAAO,IAAI,iBAAiB,EAAE,OAAO,OAAO,OAAO,CAAC,CAAC;AACzE,UAAI,OAAO,SAAS;AAChB,cAAM;AACN,eAAO,OAAO,OAAO,SAAS,EAAE,OAAO,CAAC;AAAA,MAC5C;AACA,aAAO,iBAAiB,SAAS,KAAK;AACtC,eAAS,IAAI,MAAM,OAAO,oBAAoB,SAAS,KAAK,CAAC;AAAA,IACjE;AACA,aAAS,IAAI,OAAa,CAAC,MAAMC,YAAW;AACxC,aAAO,IAAI,gBAAgB,qCAAqC,QAAQA,SAAQ,CAAC;AAAA,IACrF,CAAC,CAAC;AAKF,UAAM,iBAAiB,MAAM,OAAO,eAAe;AACnD,OAAG,MAAM,GAAG,YAAY,cAAc;AACtC,aAAS,IAAI,MAAM,GAAG,MAAM,eAAe,YAAY,cAAc,CAAC;AACtE,WAAO,UAAU,IAAI,CAAC,UAAU;AAI5B,YAAM,eAAeC,eAAc,KAAK,MAAM,gBAAgB,SAAS,CAAC;AACxE,SAAG,GAAG,SAAS,YAAY;AAC3B,eAAS,IAAI,MAAM,GAAG,eAAe,SAAS,YAAY,CAAC;AAC3D,YAAM,MAAM;AACR,YAAI;AACA,gBAAM,WAAW,KAAK,QAAQ,CAAC,UAAU;AACrC,yBAAa,MAAMF,UAAQ,KAAK,CAAC;AAAA,UACrC,CAAC;AAGD,cAAI,aAAa,QAAW;AACxB,kBAAM,IAAI,MAAM;AAAA,SAAkD,gBAAgB;AAAA,UACtF;AACA,gBAAM,CAAC,SAAS,aAAa,IAAI,OAAO,aAAa,WAAW,CAAC,QAAQ,IAAI;AAC7E,iBAAO,OAAO,SAAS,aAAa;AACpC,0BAAgB,IAAI;AAAA,QACxB,SACO,OAAP;AACI,iBAAO,KAAK;AAAA,QAChB;AAAA,MACJ,CAAC;AACD,aAAO,OAAO,OAAO,QAChB,KAAK,CAAC,WAAW;AAClB,wBAAgB,SAAS;AACzB,eAAO;AAAA,MACX,GAAG,CAAC,UAAU;AACV,wBAAgB,SAAS;AACzB,cAAM;AAAA,MACV,CAAC,EAEI,QAAQ,MAAM;AACf,iBAAS,QAAQ,CAAC,YAAY,QAAQ,CAAC;AACvC,eAAO,KAAK,EAAE,cAAc,QAAQ,QAAQ,iBAAiB,EAAE,CAAC;AAChE,eAAO,IAAI;AAAA,MACf,CAAC,EAEI,KAAK,MAAM,OAAO,GAAG,EAAE,OAAO,CAAC;AAAA,IACxC,CAAC;AAAA,EACL;AACA,SAAO;AACX;;;AK1GA,IAAAG,0BAAmB;AAMZ,IAAM,YAAN,MAAgB;AAAA,EACnB,YAAY,wBAAAC,QAAO,IAAI,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAKC,aAAQ,IAAI,CAAC;AAAA,EACpE,OAAO;AAAA,EACP,YAAY,WAAW;AACnB,QAAI,WAAW;AACX,WAAK,YAAY;AAAA,IACrB;AAAA,EACJ;AAAA,EACA,OAAO,YAAY,QAAQ;AACvB,WAAO,QAAQ,UACX,OAAO,WAAW,YAClB,UAAU,UACV,OAAO,SAAS,WAAW;AAAA,EACnC;AACJ;;;ACnBA,IAAAC,0BAAmB;AAEnB,IAAAC,uBAAwB;AACxB,IAAM,gBAAgB;AAAA,EAClB,MAAM;AAAA,IACF,SAAS,wBAAAC,QAAO,MAAMC,aAAQ,YAAY;AAAA,IAC1C,WAAWA,aAAQ;AAAA,IACnB,QAAQA,aAAQ;AAAA,EACpB;AAAA,EACA,OAAO;AAAA,IACH,gBAAgB,CAAC,SAAS,wBAAAD,QAAO,IAAI,KAAK,MAAM;AAAA,IAChD,uBAAuB,CAAC,oBAAoB,gBAAgB,IAAI,CAAC,WAAW,OAAO,KAAK,EAAE,KAAK,IAAI;AAAA,IACnG,aAAa,CAAC,SAAS,wBAAAA,QAAO,KAAK,IAAI;AAAA,EAC3C;AAAA,EACA,UAAU;AACd;AACA,SAAS,aAAa,MAAM;AACxB,SAAO,CAAC,UAAU,YAAY,IAAI,KAAK,CAAC,KAAK;AACjD;AACA,SAAS,UAAU,MAAM;AACrB,SAAO,aAAa,IAAI,KAAK,QAAQ,KAAK,OAAO;AACrD;AACA,SAAS,OAAO,MAAM;AAClB,SAAO,aAAa,IAAI,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,QAAQ,IAAI;AACtE;AACA,SAAS,MAAM,SAAS;AACpB,SAAO,SAAU,MAAM;AACnB,WAAO,aAAa,IAAI,IAAI,EAAE,GAAG,MAAM,QAAQ,IAAI;AAAA,EACvD;AACJ;AACA,SAAS,iBAAiB,SAAS;AAC/B,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC3B,QAAI,UAAU,YAAY,MAAM;AAC5B,aAAO;AACX,QAAI,OAAO,WAAW,UAAU;AAC5B,aAAO;AAAA,QACH,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAS;AAAA,MACb;AAAA,IACJ;AACA,UAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK;AAC/C,WAAO;AAAA,MACH,OAAO,OAAO;AAAA,MACd;AAAA,MACA,OAAO,OAAO,SAAS;AAAA,MACvB,aAAa,OAAO;AAAA,MACpB,UAAU,OAAO,YAAY;AAAA,MAC7B,SAAS,OAAO,WAAW;AAAA,IAC/B;AAAA,EACJ,CAAC;AACL;AACA,IAAOC,eAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,EAAE,cAAc,WAAW,GAAG,OAAO,MAAM,UAAU,WAAW,MAAM,KAAM,IAAI;AACtF,QAAM,QAAQ,UAAU,eAAe,OAAO,KAAK;AACnD,QAAM,cAAc,OAAO,IAAI;AAC/B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,iBAAiB,OAAO,OAAO,CAAC;AACnE,QAAM,SAAS,QAAQ,MAAM;AACzB,UAAM,QAAQ,MAAM,UAAU,YAAY;AAC1C,UAAM,OAAO,MAAM,cAAc,YAAY;AAC7C,QAAI,UAAU,IAAI;AACd,YAAM,IAAI,gBAAgB,oEAAoE;AAAA,IAClG;AACA,WAAO,EAAE,OAAO,KAAK;AAAA,EACzB,GAAG,CAAC,KAAK,CAAC;AACV,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,OAAO,KAAK;AACjD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,IAAI;AACnD,QAAM,CAAC,UAAU,QAAQ,IAAI,SAAS;AACtC,cAAY,OAAO,QAAQ;AACvB,QAAI,WAAW,GAAG,GAAG;AACjB,YAAM,YAAY,MAAM,OAAO,SAAS;AACxC,YAAM,UAAU,MAAM,SAAS,CAAC,GAAG,SAAS,CAAC;AAC7C,UAAI,YAAY,CAAC,MAAM,KAAK,SAAS,GAAG;AACpC,iBAAS,sCAAsC;AAAA,MACnD,WACS,YAAY,MAAM;AACvB,kBAAU,MAAM;AAChB,aAAK,UAAU,IAAI,CAAC,WAAW,OAAO,KAAK,CAAC;AAAA,MAChD,OACK;AACD,iBAAS,WAAW,+BAA+B;AAAA,MACvD;AAAA,IACJ,WACS,QAAQ,GAAG,KAAK,UAAU,GAAG,GAAG;AACrC,UAAI,QACC,QAAQ,GAAG,KAAK,WAAW,OAAO,SAClC,UAAU,GAAG,KAAK,WAAW,OAAO,MAAO;AAC5C,cAAM,SAAS,QAAQ,GAAG,IAAI,KAAK;AACnC,YAAI,OAAO;AACX,WAAG;AACC,kBAAQ,OAAO,SAAS,MAAM,UAAU,MAAM;AAAA,QAClD,SAAS,CAAC,aAAa,MAAM,KAAK;AAClC,kBAAU,IAAI;AAAA,MAClB;AAAA,IACJ,WACS,WAAW,GAAG,GAAG;AACtB,eAAS,MAAS;AAClB,qBAAe,KAAK;AACpB,eAAS,MAAM,IAAI,CAAC,QAAQ,MAAO,MAAM,SAAS,OAAO,MAAM,IAAI,MAAO,CAAC;AAAA,IAC/E,WACS,IAAI,SAAS,KAAK;AACvB,YAAM,YAAY,MAAM,KAAK,CAAC,WAAW,aAAa,MAAM,KAAK,CAAC,OAAO,OAAO;AAChF,eAAS,MAAM,IAAI,MAAM,SAAS,CAAC,CAAC;AAAA,IACxC,WACS,IAAI,SAAS,KAAK;AACvB,eAAS,MAAM,IAAI,MAAM,CAAC;AAAA,IAC9B,WACS,YAAY,GAAG,GAAG;AAEvB,YAAM,WAAW,OAAO,IAAI,IAAI,IAAI;AACpC,YAAM,OAAO,MAAM;AACnB,UAAI,QAAQ,QAAQ,aAAa,IAAI,GAAG;AACpC,kBAAU,QAAQ;AAClB,iBAAS,MAAM,IAAI,CAAC,QAAQ,MAAO,MAAM,WAAW,OAAO,MAAM,IAAI,MAAO,CAAC;AAAA,MACjF;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI;AACJ,QAAM,OAAO,cAAc;AAAA,IACvB;AAAA,IACA;AAAA,IACA,WAAW,EAAE,MAAM,SAAS,GAAG;AAC3B,UAAI,UAAU,YAAY,IAAI,GAAG;AAC7B,eAAO,IAAI,KAAK;AAAA,MACpB;AACA,UAAI,KAAK,UAAU;AACf,cAAM,gBAAgB,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW;AAC1E,eAAO,MAAM,MAAM,eAAe,GAAG,KAAK,QAAQ,eAAe;AAAA,MACrE;AACA,UAAI,UAAU;AACV,sBAAc,KAAK;AAAA,MACvB;AACA,YAAM,WAAW,KAAK,UAAU,MAAM,KAAK,UAAU,MAAM,KAAK;AAChE,YAAM,QAAQ,WAAW,MAAM,MAAM,YAAY,CAAC,MAAM;AACxD,YAAM,SAAS,WAAW,MAAM,KAAK,SAAS;AAC9C,aAAO,MAAM,GAAG,SAAS,YAAY,KAAK,MAAM;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACD,MAAI,WAAW,QAAQ;AACnB,UAAM,YAAY,MAAM,OAAO,SAAS;AACxC,UAAM,SAAS,MAAM,MAAM,OAAO,MAAM,MAAM,sBAAsB,WAAW,KAAK,CAAC;AACrF,WAAO,GAAG,UAAU,WAAW;AAAA,EACnC;AACA,MAAI,aAAa;AACjB,MAAI,gBAAgB;AACpB,MAAI,MAAM,aAAa,YAClB,MAAM,aAAa,UAChB,gBACC,iBAAiB,UAAa,eAAgB;AACnD,QAAI,OAAO,iBAAiB,UAAU;AAClC,mBAAa;AAAA,IACjB,OACK;AACD,YAAM,OAAO;AAAA,QACT,GAAG,MAAM,MAAM,IAAI,OAAO;AAAA,QAC1B,GAAG,MAAM,MAAM,IAAI,GAAG;AAAA,QACtB,GAAG,MAAM,MAAM,IAAI,GAAG;AAAA,QACtB,OAAO,MAAM,MAAM,IAAI,OAAO;AAAA,MAClC;AACA,mBAAa,WAAW,KAAK,KAAK,IAAI;AAAA,IAC1C;AACA,QAAI,MAAM,SAAS,aACd,MAAM,aAAa,YAEf,MAAM,aAAa,UAAU,YAAY,UAAW;AACzD,sBAAgB;AAAA,EAAK,MAAM,MAAM,KAAK,yCAAyC;AAC/E,kBAAY,UAAU;AAAA,IAC1B;AAAA,EACJ;AACA,QAAM,oBAAoB,cACpB;AAAA,EAAK,MAAM,MAAM,YAAY,WAAW,MACxC;AACN,MAAI,QAAQ;AACZ,MAAI,UAAU;AACV,YAAQ;AAAA,EAAK,MAAM,MAAM,MAAM,QAAQ;AAAA,EAC3C;AACA,SAAO,GAAG,UAAU,UAAU;AAAA,EAAe,OAAO,gBAAgB,oBAAoB,QAAQ,qBAAAC,QAAY;AAChH,CAAC;;;ACxLD,6BAA0B;AAD1B,SAAS,iBAAAC,sBAAqB;AAG9B,IAAM,cAAc;AAAA,EAChB,uBAAuB;AAC3B;AACA,IAAOC,eAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,EAAE,kBAAkB,MAAM,MAAM,EAAE,UAAU,OAAO,WAAW,WAAW,UAAU,IAAI,CAAC,GAAG,WAAW,MAAM,KAAM,IAAI;AAC5H,QAAM,QAAQ,UAAU,aAAa,OAAO,KAAK;AACjD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,CAAC,QAAQ,IAAI,QAAQ,IAAI,SAAS,OAAO,OAAO;AACtD,QAAM,CAAC,UAAU,QAAQ,IAAI,SAAS;AACtC,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,WAAS,YAAY,IAAI;AACrB,OAAG,MAAM;AAET,UAAM,eAAeC,eAAc,KAAK,OAAOC,QAAO,WAAW;AAC7D,SAAG,OAAO;AACV,UAAIA,QAAO;AACP,iBAASA,OAAM,SAAS,CAAC;AAAA,MAC7B,OACK;AACD,kBAAU,SAAS;AACnB,cAAM,UAAU,MAAM,SAAS,MAAM;AACrC,YAAI,YAAY,MAAM;AAClB,mBAAS,MAAS;AAClB,oBAAU,MAAM;AAChB,eAAK,MAAM;AAAA,QACf,OACK;AACD,cAAI,MAAM,0BAA0B,SAAS;AACzC,qBAAS,OAAO,OAAO;AAAA,UAC3B,OACK;AACD,qBAAS,MAAM;AAAA,UACnB;AACA,mBAAS,WAAW,gCAAgC;AACpD,oBAAU,MAAM;AAAA,QACpB;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,0CAAU,OAAO,CAACA,QAAO,WAAW,KAAK,aAAaA,QAAO,MAAM,GAAG;AAAA,MAClE;AAAA,MACA,GAAG;AAAA,IACP,CAAC;AAAA,EACL;AACA,YAAU,CAAC,OAAO;AACd,QAAI,CAAC,iBAAiB;AAClB,kBAAY,EAAE;AAAA,IAClB;AAAA,EACJ,GAAG,CAAC,CAAC;AACL,cAAY,CAAC,KAAK,OAAO;AAErB,QAAI,WAAW,QAAQ;AACnB;AAAA,IACJ;AACA,QAAI,WAAW,GAAG,GAAG;AACjB,kBAAY,EAAE;AAAA,IAClB;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI,UAAU;AACd,MAAI,WAAW,WAAW;AACtB,cAAU,MAAM,MAAM,KAAK,UAAU;AAAA,EACzC,WACS,WAAW,QAAQ;AACxB,UAAM,WAAW,MAAM,MAAM,IAAI,OAAO;AACxC,cAAU,MAAM,MAAM,KAAK,SAAS,2CAA2C;AAAA,EACnF;AACA,MAAI,QAAQ;AACZ,MAAI,UAAU;AACV,YAAQ,MAAM,MAAM,MAAM,QAAQ;AAAA,EACtC;AACA,SAAO,CAAC,CAAC,QAAQ,SAAS,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,KAAK;AACvE,CAAC;;;ACzED,SAAS,gBAAgB,OAAO,cAAc;AAC1C,MAAI,SAAS,iBAAiB;AAC9B,MAAI,YAAY,KAAK,KAAK;AACtB,aAAS;AAAA,WACJ,WAAW,KAAK,KAAK;AAC1B,aAAS;AACb,SAAO;AACX;AACA,SAAS,aAAa,OAAO;AACzB,SAAO,QAAQ,QAAQ;AAC3B;AACA,IAAOC,eAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,EAAE,cAAc,aAAa,IAAI;AACvC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,QAAQ,UAAU,OAAO,KAAK;AACpC,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,cAAY,CAAC,KAAK,OAAO;AACrB,QAAI,WAAW,GAAG,GAAG;AACjB,YAAM,SAAS,gBAAgB,OAAO,OAAO,OAAO;AACpD,eAAS,YAAY,MAAM,CAAC;AAC5B,gBAAU,MAAM;AAChB,WAAK,MAAM;AAAA,IACf,WACS,IAAI,SAAS,OAAO;AACzB,YAAM,SAAS,aAAa,CAAC,gBAAgB,OAAO,OAAO,OAAO,CAAC;AACnE,SAAG,UAAU,CAAC;AACd,SAAG,MAAM,MAAM;AACf,eAAS,MAAM;AAAA,IACnB,OACK;AACD,eAAS,GAAG,IAAI;AAAA,IACpB;AAAA,EACJ,CAAC;AACD,MAAI,iBAAiB;AACrB,MAAI,eAAe;AACnB,MAAI,WAAW,QAAQ;AACnB,qBAAiB,MAAM,MAAM,OAAO,KAAK;AAAA,EAC7C,OACK;AACD,mBAAe,IAAI,MAAM,MAAM,cAAc,OAAO,YAAY,QAAQ,QAAQ,KAAK;AAAA,EACzF;AACA,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,SAAO,GAAG,UAAU,UAAU,gBAAgB;AAClD,CAAC;;;AC5CD,IAAM,aAAa;AAAA,EACf,uBAAuB;AAC3B;AACA,IAAOC,eAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,EAAE,UAAU,WAAW,MAAM,KAAK,IAAI;AAC5C,QAAM,QAAQ,UAAU,YAAY,OAAO,KAAK;AAChD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,CAAC,eAAe,IAAI,eAAe,IAAI,SAAS,OAAO,OAAO;AACpE,QAAM,CAAC,UAAU,QAAQ,IAAI,SAAS;AACtC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,cAAY,OAAO,KAAK,OAAO;AAE3B,QAAI,WAAW,QAAQ;AACnB;AAAA,IACJ;AACA,QAAI,WAAW,GAAG,GAAG;AACjB,YAAM,SAAS,SAAS;AACxB,gBAAU,SAAS;AACnB,YAAM,UAAU,YAAY,CAAC,SAAS,6BAA6B,MAAM,SAAS,MAAM;AACxF,UAAI,YAAY,MAAM;AAClB,iBAAS,MAAM;AACf,kBAAU,MAAM;AAChB,aAAK,MAAM;AAAA,MACf,OACK;AACD,YAAI,MAAM,0BAA0B,SAAS;AACzC,mBAAS,EAAE;AAAA,QACf,OACK;AAGD,aAAG,MAAM,KAAK;AAAA,QAClB;AACA,iBAAS,WAAW,gCAAgC;AACpD,kBAAU,MAAM;AAAA,MACpB;AAAA,IACJ,WACS,eAAe,GAAG,KAAK,CAAC,OAAO;AACpC,sBAAgB,MAAS;AAAA,IAC7B,WACS,IAAI,SAAS,SAAS,CAAC,OAAO;AACnC,sBAAgB,MAAS;AACzB,SAAG,UAAU,CAAC;AACd,SAAG,MAAM,YAAY;AACrB,eAAS,YAAY;AAAA,IACzB,OACK;AACD,eAAS,GAAG,IAAI;AAChB,eAAS,MAAS;AAAA,IACtB;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI,iBAAiB;AACrB,MAAI,OAAO,OAAO,gBAAgB,YAAY;AAC1C,qBAAiB,OAAO,YAAY,OAAO,EAAE,SAAS,WAAW,OAAO,CAAC;AAAA,EAC7E,WACS,WAAW,QAAQ;AACxB,qBAAiB,MAAM,MAAM,OAAO,KAAK;AAAA,EAC7C;AACA,MAAI;AACJ,MAAI,gBAAgB,WAAW,UAAU,CAAC,OAAO;AAC7C,iBAAa,MAAM,MAAM,cAAc,YAAY;AAAA,EACvD;AACA,MAAI,QAAQ;AACZ,MAAI,UAAU;AACV,YAAQ,MAAM,MAAM,MAAM,QAAQ;AAAA,EACtC;AACA,SAAO;AAAA,IACH,CAAC,QAAQ,SAAS,YAAY,cAAc,EACvC,OAAO,CAAC,MAAM,MAAM,MAAS,EAC7B,KAAK,GAAG;AAAA,IACb;AAAA,EACJ;AACJ,CAAC;;;AC1ED,SAAS,SAAS,OAAO,MAAM,KAAK;AAChC,QAAM,WAAW,QAAQ,KAAK,IAAI,IAAI,CAAC;AACvC,QAAM,UAAU,OAAO,KAAK,IAAI,IAAI,CAAC;AACrC,QAAM,SAAS,MAAM,KAAK,IAAI,IAAI,CAAC;AACnC,UAAQ,YAAY,OAAO,SAAS,GAAG,IAAI,SAAS,MAAM,YAAY;AAC1E;AACA,SAAS,eAAe,OAAO,EAAE,KAAK,KAAK,KAAM,GAAG;AAChD,MAAI,SAAS,QAAQ,OAAO,MAAM,KAAK,GAAG;AACtC,WAAO;AAAA,EACX,WACS,QAAQ,OAAO,QAAQ,KAAK;AACjC,WAAO,yBAAyB,WAAW;AAAA,EAC/C,WACS,SAAS,SAAS,CAAC,SAAS,OAAO,MAAM,GAAG,GAAG;AACpD,WAAO,+BAA+B,OAAO,OAAO,SAAS,GAAG,IAAI,kBAAkB,QAAQ;AAAA,EAClG;AACA,SAAO;AACX;AACA,IAAOC,eAAQ,aAAa,CAAC,QAAQ,SAAS;AAnB9C,MAAAC;AAoBI,QAAM,EAAE,WAAW,MAAM,MAAM,MAAM,WAAW,MAAM,UAAU,OAAO,GAAG,WAAW,MAAO,IAAI;AAChG,QAAM,QAAQ,UAAU,OAAO,KAAK;AACpC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AAErC,QAAM,eAAe,eAAe,OAAO,SAAS,EAAE,KAAK,KAAK,KAAK,CAAC,MAAM,QACtEA,MAAA,OAAO,YAAP,gBAAAA,IAAgB,aAChB;AACN,QAAM,CAAC,eAAe,IAAI,eAAe,IAAI,SAAS,YAAY;AAClE,QAAM,CAAC,UAAU,QAAQ,IAAI,SAAS;AACtC,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,cAAY,OAAO,KAAK,OAAO;AAE3B,QAAI,WAAW,QAAQ;AACnB;AAAA,IACJ;AACA,QAAI,WAAW,GAAG,GAAG;AACjB,YAAM,QAAQ,SAAS;AACvB,YAAM,SAAS,UAAU,KAAK,SAAY,OAAO,KAAK;AACtD,gBAAU,SAAS;AACnB,UAAI,UAAU;AACd,UAAI,YAAY,UAAU,MAAM;AAC5B,kBAAU,eAAe,QAAQ,EAAE,KAAK,KAAK,KAAK,CAAC;AAAA,MACvD;AACA,UAAI,YAAY,MAAM;AAClB,kBAAU,MAAM,SAAS,MAAM;AAAA,MACnC;AACA,UAAI,YAAY,MAAM;AAClB,iBAAS,OAAO,UAAU,EAAE,CAAC;AAC7B,kBAAU,MAAM;AAChB,aAAK,MAAM;AAAA,MACf,OACK;AAGD,WAAG,MAAM,KAAK;AACd,iBAAS,WAAW,wCAAwC;AAC5D,kBAAU,MAAM;AAAA,MACpB;AAAA,IACJ,WACS,eAAe,GAAG,KAAK,CAAC,OAAO;AACpC,sBAAgB,MAAS;AAAA,IAC7B,WACS,IAAI,SAAS,SAAS,CAAC,OAAO;AACnC,sBAAgB,MAAS;AACzB,SAAG,UAAU,CAAC;AACd,SAAG,MAAM,YAAY;AACrB,eAAS,YAAY;AAAA,IACzB,OACK;AACD,eAAS,GAAG,IAAI;AAChB,eAAS,MAAS;AAAA,IACtB;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI,iBAAiB;AACrB,MAAI,WAAW,QAAQ;AACnB,qBAAiB,MAAM,MAAM,OAAO,KAAK;AAAA,EAC7C;AACA,MAAI;AACJ,MAAI,gBAAgB,WAAW,UAAU,CAAC,OAAO;AAC7C,iBAAa,MAAM,MAAM,cAAc,YAAY;AAAA,EACvD;AACA,MAAI,QAAQ;AACZ,MAAI,UAAU;AACV,YAAQ,MAAM,MAAM,MAAM,QAAQ;AAAA,EACtC;AACA,SAAO;AAAA,IACH,CAAC,QAAQ,SAAS,YAAY,cAAc,EACvC,OAAO,CAAC,MAAM,MAAM,MAAS,EAC7B,KAAK,GAAG;AAAA,IACb;AAAA,EACJ;AACJ,CAAC;;;AC5FD,IAAAC,0BAAmB;AACnB,SAASC,kBAAiB,SAAS;AAC/B,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC3B,QAAI,UAAU,YAAY,MAAM,GAAG;AAC/B,aAAO;AAAA,IACX;AACA,UAAM,OAAO,UAAU,SAAS,OAAO,OAAO,OAAO,OAAO,KAAK;AACjE,UAAM,QAAQ,WAAW,SAAS,OAAO,QAAQ;AACjD,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA,KAAK,OAAO,IAAI,YAAY;AAAA,IAChC;AAAA,EACJ,CAAC;AACL;AACA,IAAM,aAAa;AAAA,EACf,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AACX;AACA,IAAOC,eAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,EAAE,SAAS,aAAa,IAAI,IAAI;AACtC,QAAM,UAAU,QAAQ,MAAMD,kBAAiB,OAAO,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC;AAChF,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,OAAO,YAAY,KAAK;AACjE,QAAM,CAAC,UAAU,QAAQ,IAAI,SAAS;AACtC,QAAM,QAAQ,UAAU,OAAO,KAAK;AACpC,QAAM,SAAS,UAAU,EAAE,OAAO,OAAO,CAAC;AAC1C,cAAY,CAAC,OAAO,OAAO;AACvB,QAAI,WAAW,KAAK,GAAG;AACnB,YAAM,UAAU,SAAS,YAAY,YAAY;AACjD,UAAI,WAAW,OAAO,CAAC,UAAU;AAC7B,oBAAY,IAAI;AAAA,MACpB,OACK;AACD,cAAM,iBAAiB,QAAQ,KAAK,CAAC,WAAW,CAAC,UAAU,YAAY,MAAM,KAAK,OAAO,QAAQ,MAAM;AACvG,YAAI,gBAAgB;AAChB,oBAAU,MAAM;AAEhB,mBAAS,MAAM;AACf,eAAK,eAAe,KAAK;AAAA,QAC7B,WACS,UAAU,IAAI;AACnB,mBAAS,sBAAsB;AAAA,QACnC,OACK;AACD,mBAAS,IAAI,wBAAAE,QAAO,IAAI,KAAK,8BAA8B;AAAA,QAC/D;AAAA,MACJ;AAAA,IACJ,OACK;AACD,eAAS,GAAG,IAAI;AAChB,eAAS,MAAS;AAAA,IACtB;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI,WAAW,QAAQ;AAEnB,UAAM,iBAAiB,QAAQ,KAAK,CAAC,WAAW,CAAC,UAAU,YAAY,MAAM,KAAK,OAAO,QAAQ,MAAM,YAAY,CAAC;AACpH,WAAO,GAAG,UAAU,WAAW,MAAM,MAAM,OAAO,eAAe,IAAI;AAAA,EACzE;AACA,QAAM,aAAa,WAAW,UAAU,CAAC,GAAG,SAAS,UAAU;AAE/D,MAAI,cAAc;AAClB,MAAI,eAAe,WACd,IAAI,CAAC,WAAW;AACjB,QAAI,UAAU,YAAY,MAAM;AAC5B,aAAO;AACX,QAAI,OAAO,QAAQ,YAAY;AAC3B,aAAO,OAAO,IAAI,YAAY;AAAA,IAClC;AACA,WAAO,OAAO;AAAA,EAClB,CAAC,EACI,KAAK,EAAE;AACZ,iBAAe,IAAI,MAAM,MAAM,cAAc,YAAY;AAEzD,MAAI,UAAU;AACV,mBAAe;AACf,kBAAc,WACT,IAAI,CAAC,WAAW;AACjB,UAAI,UAAU,YAAY,MAAM,GAAG;AAC/B,eAAO,IAAI,OAAO;AAAA,MACtB;AACA,YAAM,OAAO,KAAK,OAAO,QAAQ,OAAO;AACxC,UAAI,OAAO,QAAQ,MAAM,YAAY,GAAG;AACpC,eAAO,MAAM,MAAM,UAAU,IAAI;AAAA,MACrC;AACA,aAAO;AAAA,IACX,CAAC,EACI,KAAK,IAAI;AAAA,EAClB;AACA,MAAI,UAAU;AACd,QAAM,gBAAgB,QAAQ,KAAK,CAAC,WAAW,CAAC,UAAU,YAAY,MAAM,KAAK,OAAO,QAAQ,MAAM,YAAY,CAAC;AACnH,MAAI,eAAe;AACf,cAAU,GAAG,wBAAAA,QAAO,KAAK,IAAI,KAAK,cAAc;AAAA,EACpD;AACA,MAAI,QAAQ;AACZ,MAAI,UAAU;AACV,YAAQ,MAAM,MAAM,MAAM,QAAQ;AAAA,EACtC;AACA,SAAO;AAAA,IACH,GAAG,UAAU,UAAU,gBAAgB;AAAA,IACvC,CAAC,aAAa,SAAS,KAAK,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,EAC3D;AACJ,CAAC;;;ACzGD,IAAAC,0BAAmB;AACnB,IAAM,cAAc;AACpB,SAAS,mBAAmB,QAAQ;AAChC,SAAO,UAAU,QAAQ,CAAC,UAAU,YAAY,MAAM;AAC1D;AACA,SAASC,kBAAiB,SAAS;AAC/B,MAAI,QAAQ;AACZ,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC3B,QAAI,UAAU,YAAY,MAAM;AAC5B,aAAO;AACX,aAAS;AACT,QAAI,OAAO,WAAW,UAAU;AAC5B,aAAO;AAAA,QACH,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK,OAAO,KAAK;AAAA,MACrB;AAAA,IACJ;AACA,UAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK;AAC/C,WAAO;AAAA,MACH,OAAO,OAAO;AAAA,MACd;AAAA,MACA,OAAO,OAAO,SAAS;AAAA,MACvB,KAAK,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,EACJ,CAAC;AACL;AACA,IAAOC,eAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,UAAU,QAAQ,MAAMD,kBAAiB,OAAO,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC;AAChF,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,UAAU,QAAQ,IAAI,SAAS;AACtC,QAAM,QAAQ,UAAU,OAAO,KAAK;AACpC,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,cAAY,CAAC,KAAK,OAAO;AACrB,QAAI,WAAW,GAAG,GAAG;AACjB,UAAI;AACJ,UAAI,YAAY,KAAK,KAAK,GAAG;AACzB,cAAM,SAAS,OAAO,SAAS,OAAO,EAAE,IAAI;AAC5C,yBAAiB,QAAQ,OAAO,kBAAkB,EAAE;AAAA,MACxD,OACK;AACD,yBAAiB,QAAQ,KAAK,CAAC,WAAW,mBAAmB,MAAM,KAAK,OAAO,QAAQ,KAAK;AAAA,MAChG;AACA,UAAI,mBAAmB,cAAc,GAAG;AACpC,iBAAS,eAAe,KAAK;AAC7B,kBAAU,MAAM;AAChB,aAAK,eAAe,KAAK;AAAA,MAC7B,WACS,UAAU,IAAI;AACnB,iBAAS,sBAAsB;AAAA,MACnC,OACK;AACD,iBAAS,IAAI,wBAAAE,QAAO,IAAI,KAAK,8BAA8B;AAAA,MAC/D;AAAA,IACJ,OACK;AACD,eAAS,GAAG,IAAI;AAChB,eAAS,MAAS;AAAA,IACtB;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI,WAAW,QAAQ;AACnB,WAAO,GAAG,UAAU,WAAW,MAAM,MAAM,OAAO,KAAK;AAAA,EAC3D;AACA,QAAM,aAAa,QACd,IAAI,CAAC,WAAW;AACjB,QAAI,UAAU,YAAY,MAAM,GAAG;AAC/B,aAAO,IAAI,OAAO;AAAA,IACtB;AACA,UAAM,OAAO,KAAK,OAAO,QAAQ,OAAO;AACxC,QAAI,OAAO,QAAQ,MAAM,YAAY,GAAG;AACpC,aAAO,MAAM,MAAM,UAAU,IAAI;AAAA,IACrC;AACA,WAAO;AAAA,EACX,CAAC,EACI,KAAK,IAAI;AACd,MAAI,QAAQ;AACZ,MAAI,UAAU;AACV,YAAQ,MAAM,MAAM,MAAM,QAAQ;AAAA,EACtC;AACA,SAAO;AAAA,IACH,GAAG,UAAU,WAAW;AAAA,IACxB,CAAC,YAAY,KAAK,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,EACjD;AACJ,CAAC;;;ACtFD,IAAAC,uBAAwB;AACxB,IAAOC,gBAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,EAAE,WAAW,MAAM,KAAK,IAAI;AAClC,QAAM,QAAQ,UAAU,OAAO,KAAK;AACpC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,CAAC,UAAU,QAAQ,IAAI,SAAS;AACtC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,cAAY,OAAO,KAAK,OAAO;AAE3B,QAAI,WAAW,QAAQ;AACnB;AAAA,IACJ;AACA,QAAI,WAAW,GAAG,GAAG;AACjB,YAAM,SAAS;AACf,gBAAU,SAAS;AACnB,YAAM,UAAU,MAAM,SAAS,MAAM;AACrC,UAAI,YAAY,MAAM;AAClB,iBAAS,MAAM;AACf,kBAAU,MAAM;AAChB,aAAK,MAAM;AAAA,MACf,OACK;AAGD,WAAG,MAAM,KAAK;AACd,iBAAS,WAAW,gCAAgC;AACpD,kBAAU,MAAM;AAAA,MACpB;AAAA,IACJ,OACK;AACD,eAAS,GAAG,IAAI;AAChB,eAAS,MAAS;AAAA,IACtB;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI,iBAAiB;AACrB,MAAI;AACJ,MAAI,OAAO,MAAM;AACb,UAAM,WAAW,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO;AACjE,qBAAiB,SAAS,OAAO,MAAM,MAAM;AAAA,EACjD,WACS,WAAW,QAAQ;AACxB,cAAU,GAAG,MAAM,MAAM,KAAK,mBAAmB,IAAI,qBAAAC,QAAY;AAAA,EACrE;AACA,MAAI,WAAW,QAAQ;AACnB,qBAAiB,MAAM,MAAM,OAAO,cAAc;AAAA,EACtD;AACA,MAAI,QAAQ;AACZ,MAAI,UAAU;AACV,YAAQ,MAAM,MAAM,MAAM,QAAQ;AAAA,EACtC;AACA,SAAO,CAAC,CAAC,QAAQ,SAAS,OAAO,OAAO,iBAAiB,OAAO,EAAE,KAAK,GAAG,GAAG,KAAK;AACtF,CAAC;;;ACrDD,IAAAC,0BAAmB;AAEnB,IAAM,cAAc;AAAA,EAChB,MAAM,EAAE,QAAQC,aAAQ,QAAQ;AAAA,EAChC,OAAO;AAAA,IACH,UAAU,CAAC,SAAS,wBAAAC,QAAO,IAAI,KAAK,MAAM;AAAA,IAC1C,YAAY,CAAC,SAAS,wBAAAA,QAAO,KAAK,IAAI;AAAA,IACtC,aAAa,CAAC,SAAS,wBAAAA,QAAO,KAAK,IAAI;AAAA,EAC3C;AAAA,EACA,UAAU;AACd;AACA,SAASC,cAAa,MAAM;AACxB,SAAO,CAAC,UAAU,YAAY,IAAI,KAAK,CAAC,KAAK;AACjD;AACA,SAASC,kBAAiB,SAAS;AAC/B,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC3B,QAAI,UAAU,YAAY,MAAM;AAC5B,aAAO;AACX,QAAI,OAAO,WAAW,UAAU;AAC5B,aAAO;AAAA,QACH,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,MACd;AAAA,IACJ;AACA,UAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK;AAC/C,WAAO;AAAA,MACH,OAAO,OAAO;AAAA,MACd;AAAA,MACA,aAAa,OAAO;AAAA,MACpB,OAAO,OAAO,SAAS;AAAA,MACvB,UAAU,OAAO,YAAY;AAAA,IACjC;AAAA,EACJ,CAAC;AACL;AACA,IAAOH,gBAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,EAAE,WAAW,GAAG,WAAW,MAAM,KAAK,IAAI;AAChD,QAAM,QAAQ,UAAU,aAAa,OAAO,KAAK;AACjD,QAAM,cAAc,OAAO,IAAI;AAC/B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,SAAS;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,EAAE;AAC/C,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,CAAC,CAAC;AACrD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS;AAC/C,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,QAAM,SAAS,QAAQ,MAAM;AACzB,UAAM,QAAQ,cAAc,UAAUE,aAAY;AAClD,UAAM,OAAO,cAAc,cAAcA,aAAY;AACrD,WAAO,EAAE,OAAO,KAAK;AAAA,EACzB,GAAG,CAAC,aAAa,CAAC;AAClB,QAAM,CAAC,SAAS,OAAO,OAAO,SAAS,IAAI,SAAS;AACpD,YAAU,MAAM;AACZ,UAAM,aAAa,IAAI,gBAAgB;AACvC,cAAU,SAAS;AACnB,mBAAe,MAAS;AACxB,UAAM,eAAe,YAAY;AAC7B,UAAI;AACA,cAAM,UAAU,MAAM,OAAO,OAAO,cAAc,QAAW;AAAA,UACzD,QAAQ,WAAW;AAAA,QACvB,CAAC;AACD,YAAI,CAAC,WAAW,OAAO,SAAS;AAE5B,oBAAU,MAAS;AACnB,yBAAe,MAAS;AACxB,2BAAiBC,kBAAiB,OAAO,CAAC;AAC1C,oBAAU,MAAM;AAAA,QACpB;AAAA,MACJ,SACOC,QAAP;AACI,YAAI,CAAC,WAAW,OAAO,WAAWA,kBAAiB,OAAO;AACtD,yBAAeA,OAAM,OAAO;AAAA,QAChC;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,aAAa;AAClB,WAAO,MAAM;AACT,iBAAW,MAAM;AAAA,IACrB;AAAA,EACJ,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,iBAAiB,cAAc;AACrC,cAAY,OAAO,KAAK,OAAO;AAC3B,QAAI,WAAW,GAAG,GAAG;AACjB,UAAI,gBAAgB;AAChB,kBAAU,SAAS;AACnB,cAAM,UAAU,MAAM,SAAS,eAAe,KAAK;AACnD,kBAAU,MAAM;AAChB,YAAI,YAAY,MAAM;AAClB,oBAAU,MAAM;AAChB,eAAK,eAAe,KAAK;AAAA,QAC7B,WACS,eAAe,SAAS,YAAY;AACzC,yBAAe,WAAW,gCAAgC;AAAA,QAC9D,OACK;AAED,aAAG,MAAM,eAAe,IAAI;AAC5B,wBAAc,eAAe,IAAI;AAAA,QACrC;AAAA,MACJ,OACK;AAGD,WAAG,MAAM,UAAU;AAAA,MACvB;AAAA,IACJ,WACS,IAAI,SAAS,SAAS,gBAAgB;AAC3C,SAAG,UAAU,CAAC;AACd,SAAG,MAAM,eAAe,IAAI;AAC5B,oBAAc,eAAe,IAAI;AAAA,IACrC,WACS,WAAW,cAAc,IAAI,SAAS,QAAQ,IAAI,SAAS,SAAS;AACzE,SAAG,UAAU,CAAC;AACd,UAAK,IAAI,SAAS,QAAQ,WAAW,OAAO,SACvC,IAAI,SAAS,UAAU,WAAW,OAAO,MAAO;AACjD,cAAM,SAAS,IAAI,SAAS,OAAO,KAAK;AACxC,YAAI,OAAO;AACX,WAAG;AACC,kBAAQ,OAAO,SAAS,cAAc,UAAU,cAAc;AAAA,QAClE,SAAS,CAACF,cAAa,cAAc,KAAK;AAC1C,kBAAU,IAAI;AAAA,MAClB;AAAA,IACJ,OACK;AACD,oBAAc,GAAG,IAAI;AAAA,IACzB;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI,SAAS,GAAG;AACZ,gBAAY,UAAU;AAAA,EAC1B;AACA,MAAI,UAAU;AACd,MAAI,cAAc,SAAS,MACtB,MAAM,aAAa,YAAa,MAAM,aAAa,UAAU,YAAY,UAAW;AACrF,cACI,cAAc,SAAS,WACjB;AAAA,EAAK,MAAM,MAAM,KAAK,yCAAyC,MAC/D;AAAA,EAAK,MAAM,MAAM,KAAK,kBAAkB;AAAA,EACtD;AAEA,QAAM,OAAO,cAAc;AAAA,IACvB,OAAO;AAAA,IACP;AAAA,IACA,WAAW,EAAE,MAAM,SAAS,GAAG;AAC3B,UAAI,UAAU,YAAY,IAAI,GAAG;AAC7B,eAAO,IAAI,KAAK;AAAA,MACpB;AACA,UAAI,KAAK,UAAU;AACf,cAAM,gBAAgB,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW;AAC1E,eAAO,MAAM,MAAM,SAAS,GAAG,KAAK,QAAQ,eAAe;AAAA,MAC/D;AACA,YAAM,QAAQ,WAAW,MAAM,MAAM,YAAY,CAAC,MAAM;AACxD,YAAM,SAAS,WAAW,MAAM,KAAK,SAAS;AAC9C,aAAO,MAAM,GAAG,UAAU,KAAK,MAAM;AAAA,IACzC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACV,CAAC;AACD,MAAI;AACJ,MAAI,aAAa;AACb,YAAQ,MAAM,MAAM,MAAM,WAAW;AAAA,EACzC,WACS,cAAc,WAAW,KAAK,eAAe,MAAM,WAAW,QAAQ;AAC3E,YAAQ,MAAM,MAAM,MAAM,kBAAkB;AAAA,EAChD;AACA,MAAI;AACJ,MAAI,WAAW,UAAU,gBAAgB;AACrC,UAAM,SAAS,eAAe;AAC9B,WAAO,GAAG,UAAU,WAAW,MAAM,MAAM,OAAO,MAAM;AAAA,EAC5D,OACK;AACD,gBAAY,MAAM,MAAM,WAAW,UAAU;AAAA,EACjD;AACA,QAAM,qBAAoB,iDAAgB,eACpC;AAAA,EAAK,MAAM,MAAM,YAAY,eAAe,WAAW,MACvD;AACN,SAAO;AAAA,IACH,CAAC,QAAQ,SAAS,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IACrD,GAAG,SAAS,OAAO,UAAU;AAAA,EACjC;AACJ,CAAC;;;ACpLD,IAAAG,0BAAmB;AAEnB,IAAAC,uBAAwB;AACxB,IAAM,cAAc;AAAA,EAChB,MAAM,EAAE,QAAQC,aAAQ,QAAQ;AAAA,EAChC,OAAO;AAAA,IACH,UAAU,CAAC,SAAS,wBAAAC,QAAO,IAAI,KAAK,MAAM;AAAA,IAC1C,aAAa,CAAC,SAAS,wBAAAA,QAAO,KAAK,IAAI;AAAA,EAC3C;AAAA,EACA,UAAU;AACd;AACA,SAASC,cAAa,MAAM;AACxB,SAAO,CAAC,UAAU,YAAY,IAAI,KAAK,CAAC,KAAK;AACjD;AACA,SAASC,kBAAiB,SAAS;AAC/B,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC3B,QAAI,UAAU,YAAY,MAAM;AAC5B,aAAO;AACX,QAAI,OAAO,WAAW,UAAU;AAC5B,aAAO;AAAA,QACH,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,MACd;AAAA,IACJ;AACA,UAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK;AAC/C,WAAO;AAAA,MACH,OAAO,OAAO;AAAA,MACd;AAAA,MACA,aAAa,OAAO;AAAA,MACpB,OAAO,OAAO,SAAS;AAAA,MACvB,UAAU,OAAO,YAAY;AAAA,IACjC;AAAA,EACJ,CAAC;AACL;AACA,IAAOH,gBAAQ,aAAa,CAAC,QAAQ,SAAS;AAC1C,QAAM,EAAE,OAAO,MAAM,WAAW,EAAE,IAAI;AACtC,QAAM,cAAc,OAAO,IAAI;AAC/B,QAAM,QAAQ,UAAU,aAAa,OAAO,KAAK;AACjD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAC3C,QAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAC1C,QAAM,mBAAmB,OAAO;AAChC,QAAM,QAAQ,QAAQ,MAAMG,kBAAiB,OAAO,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC;AAC9E,QAAM,SAAS,QAAQ,MAAM;AACzB,UAAM,QAAQ,MAAM,UAAUD,aAAY;AAC1C,UAAM,OAAO,MAAM,cAAcA,aAAY;AAC7C,QAAI,UAAU,IAAI;AACd,YAAM,IAAI,gBAAgB,kEAAkE;AAAA,IAChG;AACA,WAAO,EAAE,OAAO,KAAK;AAAA,EACzB,GAAG,CAAC,KAAK,CAAC;AACV,QAAM,mBAAmB,QAAQ,MAAM;AACnC,QAAI,EAAE,aAAa;AACf,aAAO;AACX,WAAO,MAAM,UAAU,CAAC,SAASA,cAAa,IAAI,KAAK,KAAK,UAAU,OAAO,OAAO;AAAA,EACxF,GAAG,CAAC,OAAO,SAAS,KAAK,CAAC;AAC1B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,qBAAqB,KAAK,OAAO,QAAQ,gBAAgB;AAE9F,QAAM,iBAAiB,MAAM;AAC7B,cAAY,CAAC,KAAK,OAAO;AACrB,iBAAa,iBAAiB,OAAO;AACrC,QAAI,WAAW,GAAG,GAAG;AACjB,gBAAU,MAAM;AAChB,WAAK,eAAe,KAAK;AAAA,IAC7B,WACS,QAAQ,GAAG,KAAK,UAAU,GAAG,GAAG;AACrC,SAAG,UAAU,CAAC;AACd,UAAI,QACC,QAAQ,GAAG,KAAK,WAAW,OAAO,SAClC,UAAU,GAAG,KAAK,WAAW,OAAO,MAAO;AAC5C,cAAM,SAAS,QAAQ,GAAG,IAAI,KAAK;AACnC,YAAI,OAAO;AACX,WAAG;AACC,kBAAQ,OAAO,SAAS,MAAM,UAAU,MAAM;AAAA,QAClD,SAAS,CAACA,cAAa,MAAM,KAAK;AAClC,kBAAU,IAAI;AAAA,MAClB;AAAA,IACJ,WACS,YAAY,GAAG,GAAG;AACvB,SAAG,UAAU,CAAC;AACd,YAAM,WAAW,OAAO,IAAI,IAAI,IAAI;AACpC,YAAM,OAAO,MAAM;AACnB,UAAI,QAAQ,QAAQA,cAAa,IAAI,GAAG;AACpC,kBAAU,QAAQ;AAAA,MACtB;AAAA,IACJ,WACS,eAAe,GAAG,GAAG;AAC1B,SAAG,UAAU,CAAC;AAAA,IAClB,OACK;AAED,YAAM,aAAa,GAAG,KAAK,YAAY;AACvC,YAAM,aAAa,MAAM,UAAU,CAAC,SAAS;AACzC,YAAI,UAAU,YAAY,IAAI,KAAK,CAACA,cAAa,IAAI;AACjD,iBAAO;AACX,eAAO,KAAK,KAAK,YAAY,EAAE,WAAW,UAAU;AAAA,MACxD,CAAC;AACD,UAAI,eAAe,IAAI;AACnB,kBAAU,UAAU;AAAA,MACxB;AACA,uBAAiB,UAAU,WAAW,MAAM;AACxC,WAAG,UAAU,CAAC;AAAA,MAClB,GAAG,GAAG;AAAA,IACV;AAAA,EACJ,CAAC;AACD,YAAU,MAAM,MAAM;AAClB,iBAAa,iBAAiB,OAAO;AAAA,EACzC,GAAG,CAAC,CAAC;AACL,QAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAC1D,MAAI,aAAa;AACjB,MAAI,gBAAgB;AACpB,MAAI,MAAM,aAAa,YAClB,MAAM,aAAa,UAAU,YAAY,SAAU;AACpD,gBAAY,UAAU;AACtB,QAAI,MAAM,SAAS,UAAU;AACzB,sBAAgB;AAAA,EAAK,MAAM,MAAM,KAAK,yCAAyC;AAAA,IACnF,OACK;AACD,mBAAa,MAAM,MAAM,KAAK,kBAAkB;AAAA,IACpD;AAAA,EACJ;AACA,QAAM,OAAO,cAAc;AAAA,IACvB;AAAA,IACA;AAAA,IACA,WAAW,EAAE,MAAM,SAAS,GAAG;AAC3B,UAAI,UAAU,YAAY,IAAI,GAAG;AAC7B,eAAO,IAAI,KAAK;AAAA,MACpB;AACA,UAAI,KAAK,UAAU;AACf,cAAM,gBAAgB,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW;AAC1E,eAAO,MAAM,MAAM,SAAS,GAAG,KAAK,QAAQ,eAAe;AAAA,MAC/D;AACA,YAAM,QAAQ,WAAW,MAAM,MAAM,YAAY,CAAC,MAAM;AACxD,YAAM,SAAS,WAAW,MAAM,KAAK,SAAS;AAC9C,aAAO,MAAM,GAAG,UAAU,KAAK,MAAM;AAAA,IACzC;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACD,MAAI,WAAW,QAAQ;AACnB,WAAO,GAAG,UAAU,WAAW,MAAM,MAAM,OAAO,eAAe,KAAK;AAAA,EAC1E;AACA,QAAM,oBAAoB,eAAe,cACnC;AAAA,EAAK,MAAM,MAAM,YAAY,eAAe,WAAW,MACvD;AACN,SAAO,GAAG,CAAC,QAAQ,SAAS,UAAU,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAAM,OAAO,gBAAgB,oBAAoB,qBAAAE,QAAY;AACjI,CAAC;;;ACtIK,IAAO,SAAP,MAAa;;AACV,OAAA,UAA0B,CAE/B,SACA,aACE;AAEF,QAAM,SAAS;IACb,SAAS;IACT,GAAG;;AAEL,SAAOC,aAAQ,QAAQ,QAAQ;AACjC;AACO,OAAA,QAAsBA;AACtB,OAAA,WAA4BA;AAC5B,OAAA,SAAwBA;AACxB,OAAA,SAAwBA;;;ACfjC,eAAsB,+BAA4B;AAEhD,QAAM,SAAS,MAAM,UAAU,CAAC,0BAA0B,CAAC;AAC3D,QAAM,EAAC,eAAc,IAAI,OAAO;AAEhC,MAAI,mBAAmB,QAAW;AAChC,UAAM,MAAM,2DAA2D;EACzE;AAGA,QAAM,UAAU,IAAI,IAAI,MAAM,gBAAgB,cAAc,CAAC;AAE7D,QAAM,UAAU,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,IAAI,CAAC,YAAY;IAClF,OAAO;IACP,SAAS,QAAQ,IAAI,MAAM;IAC3B;AAGF,QAAM,WAAW,MAAM,OAAO,SAAS;IACrC,SAAS;IACT,SAAS;IACT,UAAU,CAAC,UAAS;AAClB,UAAI,MAAM,WAAW,GAAG;AACtB,eAAO;MACT;AACA,aAAO;IACT;GACD;AAGD,QAAM,eAAe,MAAM,OAAO,QAAQ;IACxC,SAAS;IACT,SAAS;GACV;AAED,MAAI,iBAAiB,OAAO;AAC1B,QAAI,KAAK,4CAAuC;AAChD;EACF;AAEA,MAAI,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,OAAO,GAAG;AACxD,QAAI,KAAK,MAAM,+CAA0C,CAAC;AAC1D;EACF;AAEA,MAAI;AACF,UAAM,kBAAkB,gBAAgB,QAAQ;EAClD,QAAE;AACA,QAAI,MAAM,6CAAwC;AAClD;EACF;AACA,MAAI,KAAK,MAAM,gDAA2C,CAAC;AAC7D;AAGA,eAAe,gBAAgB,OAAa;AAE1C,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAE5C,UACE,MAAM,IAAI,OAAO,MAAM,iBAAiB;IACtC,KAAK,IAAI,aAAa;IACtB,WAAW;GACZ,GACD,KACC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,WAAW,OAAQ,KAAK;AAClC;AAEA,eAAe,kBAAkB,OAAe,SAAiB;AAE/D,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAE5C,QAAM,WAAW,GAAG,IAAI,aAAa,SAAS;AAE9C,QAAM,UAAU,MAAM,gBAAgB,KAAK;AAE3C,QAAM,UAAU,QAAQ,OAAO,CAAC,UAAU,CAAC,QAAQ,SAAS,KAAK,CAAC;AAElE,QAAM,MAAM,OAAO,aAAoB;AACrC,QAAI,MAAM,UAAU,eAAe,WAAW;AAC9C,UAAM,IAAI,OAAO,MAAM,kCAAkC;MACvD,KAAK,IAAI,aAAa;MACtB,WAAW;MACX;MACA,MAAM;KACP;EACH;AAEA,QAAM,SAAS,OAAO,aAAoB;AACxC,QAAI,MAAM,YAAY,iBAAiB,WAAW;AAClD,UAAM,IAAI,OAAO,MAAM,6BAA6B;MAClD,KAAK,IAAI,aAAa;MACtB,WAAW;MACX;KACD;EACH;AAEA,MAAI,MAAM,MAAM,oBAAoB,UAAU;AAC9C,MAAI,MAAM,uBAAuB,QAAQ,KAAK,IAAI,GAAG;AACrD,MAAI,MAAM,uBAAuB,QAAQ,KAAK,IAAI,GAAG;AACrD,MAAI,MAAM,uBAAuB,QAAQ,KAAK,IAAI,GAAG;AACrD,MAAI,MAAM,SAAQ;AAIlB,QAAM,QAAQ,IAAI,QAAQ,IAAI,GAAG,CAAC;AAClC,QAAM,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC;AAErC,MAAI,MAAM,MAAM,wBAAwB,UAAU,CAAC;AACrD;;;AC5GA,SAASC,SAAQ,MAAU;AACzB,SAAO,qBAAqB,IAAI;AAClC;AAGA,eAAeC,WAAO;AACpB,QAAM,6BAA4B;AACpC;AAGO,IAAM,gBAA4D;EACvE,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;ApDhBN,SAAU,qBAAqB,MAAU;AAC7C,SAAO,KAAK,WAAW,wBAAwB,KAAK,EAAE,QAAQ,WAAW,EAAE,QAAQ,aAAa;AAClG;AAEA,SAAS,yBAAsB;AAC7B,MAAI;AACF,cAAU,CAAC,4BAA4B,uBAAuB,CAAC;EACjE,QAAE;AACA,SAAK,4DAA4D;AACjE,SAAK,oFAAoF;AACzF,YAAQ,KAAK,CAAC;EAChB;AACF;;;AqDnBA,SAAQ,iBAAAE,sBAAoB;;;ACD5B,SAAQ,YAAY,gBAAAC,eAAc,YAAY,qBAAoB;AAG5D,SAAU,uBAAuB,UAAgB;AACrD,QAAM,yBAAyB,GAAG;AAClC,MAAI,WAAW,sBAAsB,GAAG;AACtC,WAAOA,cAAa,sBAAsB,EAAE,SAAQ;EACtD;AACA,SAAO;AACT;AAGM,SAAU,yBAAyB,UAAgB;AACvD,QAAM,yBAAyB,GAAG;AAClC,MAAI,WAAW,sBAAsB,GAAG;AACtC,eAAW,sBAAsB;EACnC;AACF;AAGM,SAAU,uBAAuB,UAAkB,eAAqB;AAC5E,gBAAc,GAAG,sBAAsB,aAAa;AACtD;;;ADRM,SAAU,qBAAqB,UAAkB,QAAwB;AAC7E,MAAI,CAAC,CAAC,QAAQ;AACZ,QAAI,WAAW,WAAW;AACxB,UAAI,MAAM,4EAA4E;IACxF;AACA,QAAI,WAAW,YAAY;AACzB,UAAI,MAAM,kFAAkF;IAC9F;AACA,QAAI,WAAW,UAAU;AACvB,UAAI,MAAM,+EAA+E;IAC3F;AACA,QAAI,WAAW,UAAU;AACvB,UAAI,MACF,qFAAqF;AAEvF,UAAI,MAAM,oBAAoB;IAChC;AACA,YAAQ,KAAK,CAAC;EAChB;AAEA,QAAM,gBAAgB,uBAAuB,QAAQ;AAGrD,MAAI,eAAe;AACjB,IAAAC,eAAc,UAAU,aAAa;EACvC;AAEA,UAAQ,KAAK,CAAC;AAChB;;;AE5BA,SAASC,SAAQ,MAAU;AACzB,SAAO,KACJ,OAAO,qBAA0C;IAChD,MAAM;IACN,aACE;GAGH,EACA,WAAW,QAAQ,EAAC,MAAM,SAAQ,CAAC,EACnC,WAAW,UAAU,EAAC,MAAM,SAAQ,CAAC;AAC1C;AAGA,eAAeC,SAAQ,EAAC,iBAAiB,MAAM,OAAM,GAAyC;AAE5F,MAAI,SAAS,QAAW;AACtB,yBAAqB,MAAM,MAAyB;AACpD;EACF;AAGA,MAAI,oBAAoB,QAAW;AACjC,UAAM,CAAC,aAAa,aAAa,KAAK,QAAQ,IAAI,oBAAqB,IAAI,MAAM,GAAG;AACpF,QAAI,CAAC,aAAa;AAChB,YAAM,IAAI,MAAM,kCAAkC,iCAAiC;IACrF;AACA,yBAAqB,aAAa,aAAgC;AAClE;EACF;AAEA,QAAM,IAAI,MACR,sIACkD;AAEtD;AAGO,IAAM,6BAA6E;EACxF,SAAAA;EACA,SAAAD;EACA,SAAS;EAGT,UAAU;;;;AC1DZ,SAAQ,gBAAAE,qBAAmB;AAC3B,SAAQ,WAAAC,gBAAc;;;ACAtB,yCAA6D;AA4C7D,IAAM,eAAe;EACnB,MAAM;EACN,WAAW;EACX,QAAQ;;AAKH,IAAM,uBAAuB,CAAC,WAAwB;AAC3D,SAAO,OAAO,QAAQ,MAAM,EACzB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,SAAS,OAAO,EAC5C,KAAK,EAAE;AACZ;AAQO,IAAM,yBAAyB,KAAK,qBAAqB,YAAY;AAE5E,IAAK;CAAL,SAAKC,eAAY;AACf,EAAAA,cAAA,qBAAA;AACA,EAAAA,cAAA,gBAAA;AACF,GAHK,iBAAA,eAAY,CAAA,EAAA;AAKjB,IAAM,kBAAkB;AAExB,IAAM,mBAAmB;AAEzB,IAAM,mBAAmB;AAYzB,IAAM,gBAAgB;AAKtB,IAAM,uBAAuB,CAAC,QAAQ,SAAS,SAAS;AAOxD,IAAM,eAAuE;EAC3E,aAAa;EACb;EACA;EACA,cAAc,CAAC,aAAa,iBAAiB,aAAa,UAAU;EACpE,cAAc,CAAC,aAAqB,IAAI,OAAO,SAAS,kBAAkB;;AAIrE,IAAM,qBAAmD;AAGzD,IAAM,wBAAgE;AAK7E,SAAS,cAAc,UAAyB;AAE9C,aAAW,SAAS,SAAQ;AAE5B,QAAM,oBAAoB,SACvB,QAAQ,iBAAiB,EAAE,EAC3B,QAAQ,kBAAkB,EAAE,EAC5B,QAAQ,kBAAkB,EAAE;AAE/B,QAAM,aAAS,mCAAAC,MAAM,mBAAmB,YAAY;AAEpD,QAAM,kBAAuC,CAAA;AAE7C,QAAM,eAAoC,CAAA;AAG1C,SAAO,MAAM,QAAQ,CAAC,SAA2B;AAC/C,QAAI,KAAK,UAAU,aAAa,iBAAiB;AAC/C,sBAAgB,KAAK,IAAI;IAC3B,WAAW,KAAK,UAAU,aAAa,YAAY;AACjD,mBAAa,KAAK,IAAI;IACxB;EACF,CAAC;AAED,SAAO;IACL;IACA;IACA;IACA,MAAM,OAAO,QAAQ;IACrB,QAAQ,OAAO,UAAU;IACzB,QAAQ,OAAO,UAAU;IACzB,YAAY,OAAO;IACnB,OAAO,OAAO,SAAS;IACvB,SAAS,OAAO,WAAW;IAC3B,MAAM,OAAO,QAAQ;IACrB,SAAS,gBAAgB,KAAK,QAAQ;IACtC,UAAU,iBAAiB,KAAK,QAAQ;IACxC,UAAU,iBAAiB,KAAK,QAAQ;IACxC,QAAQ,OAAO,UAAU;IACzB,MAAM,OAAO,QAAQ;IACrB,WAAW,OAAO,aAAa;;AAEnC;;;AC1IA,IAAM,0BAA0B;AAWhC,IAAM,oCACJ;AAYF,IAAM,gCAAgC;AAGtC,eAAsB,sBACpB,WACA,UAAwC,CAAA,GAAE;AAE1C,QAAM,UAAU,MAAM,UAAS;AAC/B,iCAA+B,OAAO;AACtC,QAAM,SAAS,QAAQ;AACvB,QAAM,SAAS,OAAO,cAAc,WAAW,mBAAmB,SAAS,IAAI;AAC/E,QAAM,SAAmB,CAAA;AAGzB,WAAS,iCAA8B;AAlEzC,QAAAC;AAwEI,QAAI,OAAO,UAAU;AACnB,aAAO;IACT;AAIA,QAAI,OAAO,UAAU;AACnB,UAAI,QAAQ,gBAAgB;AAC1B,eAAO,KAAK,6DAA6D;AACzE,eAAO;MACT;AACA,aAAO;IACT;AAOA,QAAI,OAAO,SAAS;AAClB,UAAI,OAAO,eAAe;AACxB,eAAO,KACL,6FAA6F;AAG/F,eAAO;MACT;AAEA,UAAI,QAAQ,yBAAyB,CAAC,QAAQ,sBAAsB,SAAS,OAAO,MAAM,GAAG;AAC3F,eAAO,KACL,iEACG,QAAQ,sBAAsB,IAAI,CAAC,MAAM;QAAW,GAAG,EAAE,KAAK,EAAE,KAAK,IAAI;AAE9E,eAAO;MACT;AAEA,aAAO;IACT;AAKA,QAAI,OAAO,OAAO,SAAS,OAAO,eAAe;AAC/C,aAAO,KAAK,4CAA4C,OAAO,0BAA0B;AACzF,aAAO;IACT;AAEA,QAAI,CAAC,OAAO,MAAM;AAChB,aAAO,KAAK,+DAA+D;AAC3E,aAAO;IACT;AAEA,QAAI,aAAa,OAAO,UAAU,QAAW;AAC3C,aAAO,KACL,IAAI,OAAO;aAA6C,OAAO,KAAK,YAAY,EAAE,KAChF,IAAI,GACH;AAEL,aAAO;IACT;AAGA,UAAM,0BAA0B,aAAa,OAAO,MAAM;AAE1D,QAAI,4BAA4B,iBAAiB,aAAa,OAAO,OAAO;AAC1E,aAAO,KACL,+CAA+C,OAAO,0BAA0B,OAAO,sBAAsB;AAE/G,aAAO;IACT;AAEA,QAAI,4BAA4B,iBAAiB,YAAY,CAAC,OAAO,OAAO;AAC1E,aAAO,KACL,8CAA8C,OAAO,mCAAmC;AAE1F,aAAO;IACT;AAEA,QAAI,OAAO,SAAS,CAAC,OAAO,OAAO,SAAS,OAAO,KAAK,GAAG;AACzD,aAAO,KACL,IAAI,OAAO;cAAgD,OAAO,OAAO,KAAK,IAAI,GAAG;AAEvF,aAAO;IACT;AAGA,QAAI,OAAO,SAAS,WAAW;AAC7B,aAAO;IACT;AAUA,UAAM,sBAAsB,GAAG,OAAO,KAAK,KAAI;EAAO,OAAO,OAAO,KAAI;AAExE,QACE,GAACA,MAAA,OAAO,8BAAP,gBAAAA,IAAkC,SAAS,OAAO,UACnD,oBAAoB,SAAS,OAAO,eACpC;AACA,aAAO,KACL,+DAA+D,OAAO,0BAA0B;AAElG,aAAO;IACT;AAEA,UAAM,aAAa,OAAO,KAAK,MAAM,IAAI;AACzC,UAAM,uBAAuB,WAAW,KAAK,CAAC,SAAgB;AAG5D,aAAO,KAAK,SAAS,OAAO,iBAAiB,CAAC,wBAAwB,KAAK,IAAI;IACjF,CAAC;AAED,QAAI,sBAAsB;AACxB,aAAO,KACL,uDAAuD,OAAO,2BAA2B;AAE3F,aAAO;IACT;AAKA,QAAI,kCAAkC,KAAK,OAAO,QAAQ,GAAG;AAC3D,aAAO,KAAK,mEAAmE;AAC/E,aAAO;IACT;AAEA,QAAI,8BAA8B,KAAK,OAAO,QAAQ,GAAG;AACvD,aAAO,KAAK,+DAA+D;AAC3E,aAAO;IACT;AAEA,WAAO;EACT;AAEA,SAAO,EAAC,OAAO,+BAA8B,GAAI,QAAQ,OAAM;AACjE;AAGM,SAAU,sBAAsB,QAAkB,QAAQ,IAAI,OAAK;AACvE,QAAM,MAAM,QAAQ,OAAO,WAAW,IAAI,KAAK,MAAM;AACrD,SAAO,QAAQ,CAAC,SAAS,MAAM,IAAI,CAAC;AACpC,QAAM,SAAQ;AACd,QAAK;AACL,QAAM,uCAAuC;AAC7C,QAAM,4BAA4B;AAClC,QAAK;AACL,QAAM,QAAQ;AACd,QAAK;AACL,QAAM,4CAA4C;AAClD,QAAK;AACL,QAAM,+BAA+B;AACrC,QAAK;AACL,QAAK;AACP;;;AFnNA,eAAsB,aAAa,UAAkB,aAAoB;AACvE,QAAM,MAAM,MAAM,UAAU,IAAG;AAC/B,QAAM,gBAAgBC,cAAaC,SAAQ,IAAI,SAAS,QAAQ,GAAG,MAAM;AACzE,QAAM,EAAC,OAAO,OAAM,IAAI,MAAM,sBAAsB,aAAa;AACjE,MAAI,OAAO;AACT,QAAI,KAAK,GAAG,MAAM,QAAG,yBAAyB;AAC9C,6BAAyB,QAAQ;AACjC,YAAQ,WAAW;AACnB;EACF;AAGA,MAAI,UAAU,cAAc,IAAI,QAAQ,IAAI;AAE5C,UAAQ,cAAc,mCAA8B,OAAO,2BAA2B,CAAC;AACvF,wBAAsB,QAAQ,OAAO;AACrC,MAAI,aAAa;AACf,YAAQ,wDAAwD;AAChE,YAAQ,mFAAmF;EAC7F,OAAO;AACL,YAAQ,OAAO,2EAA2E,CAAC;AAC3F,YAAQ,OAAO,8CAA8C,CAAC;EAChE;AAIA,yBAAuB,UAAU,aAAa;AAE9C,UAAQ,WAAW,cAAc,IAAI;AACvC;;;AG5BA,SAASC,SAAQ,MAAU;AACzB,SAAO,KACJ,OAAO,QAAQ;IACd,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,aAAa;GACd,EACA,OAAO,qBAA0C;IAChD,MAAM;IACN,WAAW,CAAC,MAAM;IAClB,aAAa;IACb,QAAQ,CAAC,QAA2B;AAClC,UAAI,QAAQ,QAAW;AACrB,eAAO;MACT;AACA,YAAM,OAAO,QAAQ,IAAI;AACzB,UAAI,CAAC,MAAM;AACT,cAAM,IAAI,MAAM,kCAAkC,qBAAqB;MACzE;AACA,aAAO;IACT;GACD,EACA,OAAO,SAAS;IACf,MAAM;IACN,aACE;IACF,SAAS;IACT,oBAAoB;GACrB;AACL;AAGA,eAAeC,SAAQ,EAAC,OAAO,MAAM,gBAAe,GAAiC;AACnF,QAAM,cAAc,UAAU,OAAO,MAAM,sBAAqB,IAAK;AACrE,QAAM,WAAW,QAAQ,mBAAmB;AAE5C,QAAM,aAAa,UAAU,WAAW;AAC1C;AAEA,eAAe,wBAAqB;AA5DpC,MAAAC;AA6DE,SAAO,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,GAAEA,OAAA,MAAM,cAAa,GAAI,kBAAvB,gBAAAA,IAAsC;AACzE;AAGO,IAAM,qBAA6D;EACxE,SAAAD;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;AC9DZ,6BAAuB;AAOjB,SAAU,kBAAkB,MAAc,KAAa,QAAM;AACjE,SAAO,IAAI,QAAQ,CAACG,WAAS,WAAU;AAErC,UAAM,UAA8B,CAAA;AAEpC,UAAM,mBAAe,uBAAAC,SAAW,EAAC,MAAM,IAAI,QAAQ,uBAAsB,CAAC;AAI1E,iBAAa,GAAG,QAAQ,CAAC,WAAmB,QAAQ,KAAK,sBAAsB,MAAM,CAAC,CAAC;AACvF,iBAAa,GAAG,SAAS,CAAC,QAAe,OAAO,GAAG,CAAC;AACpD,iBAAa,GAAG,OAAO,MAAMD,UAAQ,OAAO,CAAC;EAC/C,CAAC;AACH;;;ACVA,IAAM,aAAa,CAAC,WAAmB,CAAC,OAAO;AAG/C,IAAM,sBAAsB,CAAC,WAAmB,OAAO;AAGvD,eAAsB,oBAAoB,MAAc,IAAU;AAEhE,QAAM,SAAqD,CAAA;AAG3D,QAAM,UAAU,MAAM,kBAAkB,MAAM,EAAE;AAChD,MAAI,KAAK,aAAa,QAAQ,2CAA2C,SAAS,IAAI;AAMtF,MAAI,yBAAyB;AAE7B,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,SAAS,QAAQ;AACvB,UAAM,UAAwC;MAC5C,gBAAgB;MAChB,uBAAuB,WAAW,MAAM,IACpC,SACA,QACG,MAAM,IAAI,CAAC,EACX,OAAO,UAAU,EACjB,IAAI,mBAAmB;;AAGhC,UAAM,EAAC,OAAO,QAAQ,YAAW,IAAI,MAAM,sBAAsB,QAAQ,OAAO;AAChF,QAAI,YAAY,QAAQ;AACtB,aAAO,KAAK,CAAC,OAAO,QAAQ,WAAW,CAAC;IAC1C;AAEA,6BAAyB,0BAA0B;EACrD;AAEA,MAAI,wBAAwB;AAC1B,QAAI,KAAK,MAAM,6CAAwC,CAAC;EAC1D,OAAO;AACL,QAAI,MAAM,gCAA2B;AACrC,WAAO,QAAQ,CAAC,CAAC,QAAQ,gBAAgB,MAAK;AAC5C,UAAI,MAAM,MAAM,MAAM;AACtB,4BAAsB,gBAAgB;AACtC,UAAI,MAAM,SAAQ;IACpB,CAAC;AAGD,YAAQ,KAAK,CAAC;EAChB;AACF;;;AClDA,SAASE,SAAQ,MAAU;AACzB,SAAO,KACJ,WAAW,eAAe;IACzB,aAAa;IACb,MAAM;IACN,cAAc;GACf,EACA,WAAW,aAAa;IACvB,aAAa;IACb,MAAM;IACN,SAAS;GACV;AACL;AAGA,eAAeC,SAAQ,EAAC,aAAa,UAAS,GAAkC;AAG9E,MAAI,QAAQ,IAAI,SAAS,QAAQ,IAAI,uBAAuB,SAAS;AACnE,QAAI,KAAK,yEAAyE;AAClF,QAAI,KAAK,mEAAmE;AAC5E,QAAI,KAAI;AACR,QAAI,KAAK,yCAAyC;AAClD;EACF;AACA,QAAM,oBAAoB,aAAa,SAAS;AAClD;AAGO,IAAM,sBAA+D;EAC1E,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;ACvCN,SAAU,yBAAyB,YAAgB;AACvD,SAAO,WACJ,KAAI,EACJ,OAAM,EACN,QAAQ,0BAA0B,EAClC,QAAQ,kBAAkB,EAC1B,QAAQ,mBAAmB;AAChC;;;ACbA,0BAAkB;;;ACRlB,IAAAE,0BAAmB;;;ACAnB,IAAMC,sBAAqB,OAAO;AAC3B,IAAMC,sBAA6C,CACxD,YAC6B;AAC7B,MAAI,OAAO,YAAY,UAAU;AAC/B,UAAM,IAAI,UAAU,iBAAiB;;AAGvC,MAAI,QAAQ,SAASD,qBAAoB;AACvC,UAAM,IAAI,UAAU,qBAAqB;;AAE7C;;;ACPA,IAAME,gBAAsE;EAC1E,aAAa,CAAC,wBAAwB,IAAI;EAC1C,aAAa,CAAC,iBAAiB,IAAI;EACnC,aAAa,CAAC,eAAyB,KAAK;EAC5C,aAAa,CAAC,cAAc,IAAI;EAChC,aAAa,CAAC,WAAW,IAAI;EAC7B,aAAa,CAAC,WAAW,IAAI;EAC7B,aAAa,CAAC,gBAAgB,MAAM,IAAI;EACxC,aAAa,CAAC,WAAW,IAAI;EAC7B,aAAa,CAAC,UAAU,IAAI;EAC5B,aAAa,CAAC,UAAU,IAAI;EAC5B,aAAa,CAAC,yBAAyB,IAAI;EAC3C,aAAa,CAAC,WAAW,IAAI;EAC7B,YAAY,CAAC,+BAA+B,IAAI;EAChD,cAAc,CAAC,aAAa,KAAK;;AAKnC,IAAMC,eAAc,CAAC,MAAc,EAAE,QAAQ,aAAa,MAAM;AAEhE,IAAMC,gBAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAG9C,IAAMC,kBAAiB,CAAC,WAA6B,OAAO,KAAK,EAAE;AAe5D,IAAMC,cAAa,CACxBC,OACA,aACoB;AACpB,QAAM,MAAM;AAEZ,MAAIA,MAAK,OAAO,GAAG,MAAM,KAAK;AAC5B,UAAM,IAAI,MAAM,2BAA2B;;AAG7C,QAAM,SAAmB,CAAA;AACzB,QAAM,OAAiB,CAAA;AAEvB,MAAI,IAAI,MAAM;AACd,MAAI,WAAW;AACf,MAAI,QAAQ;AACZ,MAAI,WAAW;AACf,MAAI,SAAS;AACb,MAAI,SAAS;AACb,MAAI,aAAa;AACjB;AAAO,WAAO,IAAIA,MAAK,QAAQ;AAC7B,YAAM,IAAIA,MAAK,OAAO,CAAC;AACvB,WAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC7C,iBAAS;AACT;AACA;;AAGF,UAAI,MAAM,OAAO,YAAY,CAAC,UAAU;AACtC,iBAAS,IAAI;AACb;;AAGF,iBAAW;AACX,UAAI,MAAM,MAAM;AACd,YAAI,CAAC,UAAU;AACb,qBAAW;AACX;AACA;;;AAIJ,UAAI,MAAM,OAAO,CAAC,UAAU;AAE1B,mBAAW,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,OAAO,QAAQL,aAAY,GAAG;AAChE,cAAIK,MAAK,WAAW,KAAK,CAAC,GAAG;AAE3B,gBAAI,YAAY;AACd,qBAAO,CAAC,MAAM,OAAOA,MAAK,SAAS,KAAK,IAAI;;AAE9C,iBAAK,IAAI;AACT,gBAAI;AAAK,mBAAK,KAAK,IAAI;;AAClB,qBAAO,KAAK,IAAI;AACrB,oBAAQ,SAAS;AACjB,qBAAS;;;;AAMf,iBAAW;AACX,UAAI,YAAY;AAGd,YAAI,IAAI,YAAY;AAClB,iBAAO,KAAKJ,aAAY,UAAU,IAAI,MAAMA,aAAY,CAAC,CAAC;mBACjD,MAAM,YAAY;AAC3B,iBAAO,KAAKA,aAAY,CAAC,CAAC;;AAE5B,qBAAa;AACb;AACA;;AAKF,UAAII,MAAK,WAAW,MAAM,IAAI,CAAC,GAAG;AAChC,eAAO,KAAKJ,aAAY,IAAI,GAAG,CAAC;AAChC,aAAK;AACL;;AAEF,UAAII,MAAK,WAAW,KAAK,IAAI,CAAC,GAAG;AAC/B,qBAAa;AACb,aAAK;AACL;;AAIF,aAAO,KAAKJ,aAAY,CAAC,CAAC;AAC1B;;AAGF,MAAI,SAAS,GAAG;AAGd,WAAO,CAAC,IAAI,OAAO,GAAG,KAAK;;AAK7B,MAAI,CAAC,OAAO,UAAU,CAAC,KAAK,QAAQ;AAClC,WAAO,CAAC,MAAM,OAAOI,MAAK,SAAS,KAAK,IAAI;;AAO9C,MACE,KAAK,WAAW,KAChB,OAAO,WAAW,KAClB,SAAS,KAAK,OAAO,EAAE,KACvB,CAAC,QACD;AACA,UAAM,IAAI,OAAO,GAAG,WAAW,IAAI,OAAO,GAAG,MAAM,EAAE,IAAI,OAAO;AAChE,WAAO,CAACH,cAAa,CAAC,GAAG,OAAO,SAAS,KAAK,KAAK;;AAGrD,QAAM,UAAU,OAAO,SAAS,MAAM,MAAMC,gBAAe,MAAM,IAAI;AACrE,QAAM,QAAQ,OAAO,SAAS,KAAK,OAAOA,gBAAe,IAAI,IAAI;AACjE,QAAM,OACJ,OAAO,UAAU,KAAK,SAClB,MAAM,UAAU,MAAM,QAAQ,MAC9B,OAAO,SACP,UACA;AAEN,SAAO,CAAC,MAAM,OAAO,SAAS,KAAK,IAAI;AACzC;;;AC7JO,IAAMG,YAAW,CACtB,GACA,EACE,uBAAuB,MAAK,IACsB,CAAA,MAClD;AACF,SAAO,uBACH,EAAE,QAAQ,kBAAkB,IAAI,IAChC,EAAE,QAAQ,6BAA6B,MAAM,EAAE,QAAQ,cAAc,IAAI;AAC/E;;;ACoBA,IAAMC,SAAQ,oBAAI,IAAiB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5D,IAAMC,iBAAgB,CAAC,MACrBD,OAAM,IAAI,CAAgB;AAM5B,IAAME,oBAAmB;AACzB,IAAMC,cAAa;AAKnB,IAAMC,mBAAkB,oBAAI,IAAI,CAAC,KAAK,GAAG,CAAC;AAE1C,IAAMC,YAAW,oBAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACpC,IAAMC,cAAa,IAAI,IAAI,iBAAiB;AAC5C,IAAMC,gBAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAG9C,IAAMC,SAAQ;AAGd,IAAMC,QAAOD,SAAQ;AAGrB,IAAME,eAAcF,SAAQ;AAxE5B,IAAAG,QAAAC,YAAAC,SAAAC,SAAAC,UAAAC,eAAAC,QAAAC,cAAAC,WAAAC,YAAAC,YAAAC,YAAAC,cAAAC,YAAAC,cAAAC,iBAAAC,mBAAAC,aAAAC;AA6EM,IAAOC,QAAP,MAAU;EAiBd,YACE,MACA,QACA,UAA4B,CAAA,GAAE;AAoChC,uBAAAR;AAqdA,uBAAAI;AA5gBA;AACS,uBAAAf,QAAA;AAET,uBAAAC,YAAA;AACA,uBAAAC,SAAkB;AAClB,uBAAAC,SAA2B,CAAA;AAClB,uBAAAC,UAAA;AACA,uBAAAC,eAAA;AACT,uBAAAC,QAAA;AACA,uBAAAC,cAAuB;AACvB,uBAAAC,WAAA;AACA,uBAAAC,YAAA;AAGA,uBAAAC,YAAqB;AAOnB,SAAK,OAAO;AAEZ,QAAI;AAAM,yBAAKT,YAAY;AAC3B,uBAAKG,UAAU;AACf,uBAAKJ,QAAQ,mBAAKI,YAAU,gCAAKA,WAAQJ,UAAQ;AACjD,uBAAKQ,WAAW,mBAAKR,YAAU,OAAO,UAAU,gCAAKA,SAAMQ;AAC3D,uBAAKF,QAAQ,mBAAKN,YAAU,OAAO,CAAA,IAAK,gCAAKA,SAAMM;AACnD,QAAI,SAAS,OAAO,CAAC,gCAAKN,SAAMO;AAAa,yBAAKD,QAAM,KAAK,IAAI;AACjE,uBAAKD,eAAe,mBAAKD,YAAU,gCAAKA,WAAQD,SAAO,SAAS;EAClE;EAEA,IAAI,WAAQ;AAEV,QAAI,mBAAKF,gBAAc;AAAW,aAAO,mBAAKA;AAE9C,eAAW,KAAK,mBAAKE,UAAQ;AAC3B,UAAI,OAAO,MAAM;AAAU;AAC3B,UAAI,EAAE,QAAQ,EAAE;AAAU,eAAQ,mBAAKF,YAAY;;AAGrD,WAAO,mBAAKA;EACd;EAGA,WAAQ;AACN,QAAI,mBAAKQ,gBAAc;AAAW,aAAO,mBAAKA;AAC9C,QAAI,CAAC,KAAK,MAAM;AACd,aAAQ,mBAAKA,YAAY,mBAAKN,SAAO,IAAI,OAAK,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;WAC3D;AACL,aAAQ,mBAAKM,YACX,KAAK,OAAO,MAAM,mBAAKN,SAAO,IAAI,OAAK,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;;EAEpE;EAuCA,QAAQ,OAAuB;AAC7B,eAAW,KAAK,OAAO;AACrB,UAAI,MAAM;AAAI;AAEd,UAAI,OAAO,MAAM,YAAY,EAAE,aAAagB,SAAO,gBAAEf,cAAY,OAAO;AACtE,cAAM,IAAI,MAAM,mBAAmB,CAAC;;AAGtC,yBAAKD,SAAO,KAAK,CAAC;;EAEtB;EAEA,SAAM;AAtLR,QAAAiB;AAuLI,UAAM,MACJ,KAAK,SAAS,OACV,mBAAKjB,SAAO,MAAK,EAAG,IAAI,OAAM,OAAO,MAAM,WAAW,IAAI,EAAE,OAAM,CAAG,IACrE,CAAC,KAAK,MAAM,GAAG,mBAAKA,SAAO,IAAI,OAAM,EAAU,OAAM,CAAE,CAAC;AAC9D,QAAI,KAAK,QAAO,KAAM,CAAC,KAAK;AAAM,UAAI,QAAQ,CAAA,CAAE;AAChD,QACE,KAAK,MAAK,MACT,SAAS,mBAAKH,WACZ,gCAAKA,SAAMO,mBAAea,MAAA,mBAAKhB,cAAL,gBAAAgB,IAAc,UAAS,MACpD;AACA,UAAI,KAAK,CAAA,CAAE;;AAEb,WAAO;EACT;EAEA,UAAO;AAtMT,QAAAA;AAuMI,QAAI,mBAAKpB,YAAU;AAAM,aAAO;AAEhC,QAAI,GAACoB,MAAA,mBAAKhB,cAAL,gBAAAgB,IAAc;AAAW,aAAO;AACrC,QAAI,mBAAKf,mBAAiB;AAAG,aAAO;AAEpC,UAAM,IAAI,mBAAKD;AACf,aAAS,IAAI,GAAG,IAAI,mBAAKC,gBAAc,KAAK;AAC1C,YAAM,KAAK,gBAAEF,SAAO;AACpB,UAAI,EAAE,cAAcgB,SAAO,GAAG,SAAS,MAAM;AAC3C,eAAO;;;AAGX,WAAO;EACT;EAEA,QAAK;AAtNP,QAAAC,KAAAC,KAAAC;AAuNI,QAAI,mBAAKtB,YAAU;AAAM,aAAO;AAChC,UAAIoB,MAAA,mBAAKhB,cAAL,gBAAAgB,IAAc,UAAS;AAAK,aAAO;AACvC,QAAI,GAACC,MAAA,mBAAKjB,cAAL,gBAAAiB,IAAc;AAAS,aAAO;AACnC,QAAI,CAAC,KAAK;AAAM,cAAOC,MAAA,mBAAKlB,cAAL,gBAAAkB,IAAc;AAGrC,UAAM,KAAK,mBAAKlB,YAAU,gCAAKA,WAAQD,SAAO,SAAS;AAEvD,WAAO,mBAAKE,mBAAiB,KAAK;EACpC;EAEA,OAAO,MAAkB;AACvB,QAAI,OAAO,SAAS;AAAU,WAAK,KAAK,IAAI;;AACvC,WAAK,KAAK,KAAK,MAAM,IAAI,CAAC;EACjC;EAEA,MAAM,QAAW;AACf,UAAM,IAAI,IAAIc,MAAI,KAAK,MAAM,MAAM;AACnC,eAAW,KAAK,mBAAKhB,UAAQ;AAC3B,QAAE,OAAO,CAAC;;AAEZ,WAAO;EACT;EAgIA,OAAO,SAAS,SAAiB,UAA4B,CAAA,GAAE;AA7WjE,QAAAiB;AA8WI,UAAM,MAAM,IAAID,MAAI,MAAM,QAAW,OAAO;AAC5C,oBAAAC,MAAAD,OAAIN,YAAAC,cAAJ,KAAAM,KAAc,SAAS,KAAK,GAAG;AAC/B,WAAO;EACT;EAIA,cAAW;AAGT,QAAI,SAAS,mBAAKpB;AAAO,aAAO,mBAAKA,QAAM,YAAW;AAEtD,UAAMuB,QAAO,KAAK,SAAQ;AAC1B,UAAM,CAAC,IAAI,MAAM,UAAU,KAAK,IAAI,KAAK,eAAc;AAIvD,UAAM,WACJ,YACA,mBAAKtB,eACJ,mBAAKO,WAAS,UACb,CAAC,mBAAKA,WAAS,mBACfe,MAAK,YAAW,MAAOA,MAAK,YAAW;AAC3C,QAAI,CAAC,UAAU;AACb,aAAO;;AAGT,UAAM,SAAS,mBAAKf,WAAS,SAAS,MAAM,OAAO,QAAQ,MAAM;AACjE,WAAO,OAAO,OAAO,IAAI,OAAO,IAAI,OAAO,KAAK,GAAG;MACjD,MAAM;MACN,OAAOe;KACR;EACH;EAEA,IAAI,UAAO;AACT,WAAO,mBAAKf;EACd;EAuEA,eACE,UAAkB;AA1dtB,QAAAY;AA4dI,UAAM,MAAM,YAAY,CAAC,CAAC,mBAAKZ,WAAS;AACxC,QAAI,mBAAKR,YAAU;AAAM,4BAAKW,YAAAC,cAAL;AACzB,QAAI,CAAC,KAAK,MAAM;AACd,YAAM,UAAU,KAAK,QAAO,KAAM,KAAK,MAAK;AAC5C,YAAM,MAAM,mBAAKT,SACd,IAAI,OAAI;AAjejB,YAAAiB;AAkeU,cAAM,CAAC,IAAI,GAAG,UAAU,KAAK,IAC3B,OAAO,MAAM,WACT,gBAAAA,MAAAD,OAAIF,aAAAC,eAAJ,KAAAE,KAAe,GAAG,mBAAKnB,aAAW,WAClC,EAAE,eAAe,QAAQ;AAC/B,2BAAKA,YAAY,mBAAKA,eAAa;AACnC,2BAAKC,SAAS,mBAAKA,YAAU;AAC7B,eAAO;MACT,CAAC,EACA,KAAK,EAAE;AAEV,UAAIsB,SAAQ;AACZ,UAAI,KAAK,QAAO,GAAI;AAClB,YAAI,OAAO,mBAAKrB,SAAO,OAAO,UAAU;AAMtC,gBAAM,iBACJ,mBAAKA,SAAO,WAAW,KAAKT,UAAS,IAAI,mBAAKS,SAAO,EAAE;AACzD,cAAI,CAAC,gBAAgB;AACnB,kBAAM,MAAMV;AAGZ,kBAAM,aAEH,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,KAE5B,IAAI,WAAW,KAAK,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,KAE9C,IAAI,WAAW,QAAQ,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;AAGpD,kBAAM,YAAY,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;AAE5D,YAAA+B,SAAQ,aAAajC,oBAAmB,YAAYC,cAAa;;;;AAMvE,UAAI,MAAM;AACV,UACE,KAAK,MAAK,KACV,gCAAKQ,SAAMO,mBACXa,MAAA,mBAAKhB,cAAL,gBAAAgB,IAAc,UAAS,KACvB;AACA,cAAM;;AAER,YAAMK,SAAQD,SAAQ,MAAM;AAC5B,aAAO;QACLC;QACAC,UAAS,GAAG;QACX,mBAAKzB,YAAY,CAAC,CAAC,mBAAKA;QACzB,mBAAKC;;;AAQT,UAAM,WAAW,KAAK,SAAS,OAAO,KAAK,SAAS;AAEpD,UAAM,QAAQ,KAAK,SAAS,MAAM,cAAc;AAChD,QAAI,OAAO,sBAAKa,iBAAAC,mBAAL,WAAoB;AAE/B,QAAI,KAAK,QAAO,KAAM,KAAK,MAAK,KAAM,CAAC,QAAQ,KAAK,SAAS,KAAK;AAGhE,YAAM,IAAI,KAAK,SAAQ;AACvB,yBAAKb,SAAS,CAAC,CAAC;AAChB,WAAK,OAAO;AACZ,yBAAKF,YAAY;AACjB,aAAO,CAAC,GAAGyB,UAAS,KAAK,SAAQ,CAAE,GAAG,OAAO,KAAK;;AAIpD,QAAI,iBACF,CAAC,YAAY,YAAY,OAAO,CAAClC,cAC7B,KACA,sBAAKuB,iBAAAC,mBAAL,WAAoB;AAC1B,QAAI,mBAAmB,MAAM;AAC3B,uBAAiB;;AAEnB,QAAI,gBAAgB;AAClB,aAAO,MAAM,WAAW;;AAI1B,QAAI,QAAQ;AACZ,QAAI,KAAK,SAAS,OAAO,mBAAKN,aAAW;AACvC,eAAS,KAAK,QAAO,KAAM,CAAC,MAAMlB,cAAa,MAAMO;WAChD;AACL,YAAM,QACJ,KAAK,SAAS,MAEV,QACC,KAAK,QAAO,KAAM,CAAC,OAAO,CAAC,WAAWP,cAAa,MACpDM,QACA,MACA,KAAK,SAAS,MACd,MACA,KAAK,SAAS,MACd,OACA,KAAK,SAAS,OAAO,iBACrB,MACA,KAAK,SAAS,OAAO,iBACrB,OACA,IAAI,KAAK;AACf,cAAQ,QAAQ,OAAO;;AAEzB,WAAO;MACL;MACA4B,UAAS,IAAI;MACZ,mBAAKzB,YAAY,CAAC,CAAC,mBAAKA;MACzB,mBAAKC;;EAET;;AA3gBI,IAAOyB,OAAPR;AAEKnB,SAAA;AAETC,aAAA;AACAC,UAAA;AACAC,UAAA;AACSC,WAAA;AACAC,gBAAA;AACTC,SAAA;AACAC,eAAA;AACAC,YAAA;AACAC,aAAA;AAGAC,aAAA;AAyCAC,aAAA;AAAAC,eAAS,WAAA;AAEP,MAAI,SAAS,mBAAKZ;AAAO,UAAM,IAAI,MAAM,0BAA0B;AACnE,MAAI,mBAAKO;AAAa,WAAO;AAI7B,OAAK,SAAQ;AACb,qBAAKA,cAAc;AACnB,MAAI;AACJ,SAAQ,IAAI,mBAAKD,QAAM,IAAG,GAAK;AAC7B,QAAI,EAAE,SAAS;AAAK;AAEpB,QAAI,IAAqB;AACzB,QAAI,KAAK,gBAAEF;AACX,WAAO,IAAI;AACT,eACM,IAAI,gBAAEC,iBAAe,GACzB,CAAC,GAAG,QAAQ,IAAI,iBAAGF,SAAO,QAC1B,KACA;AACA,mBAAW,QAAQ,gBAAEA,UAAQ;AAE3B,cAAI,OAAO,SAAS,UAAU;AAC5B,kBAAM,IAAI,MAAM,8BAA8B;;AAGhD,eAAK,OAAO,iBAAGA,SAAO,EAAE;;;AAG5B,UAAI;AACJ,WAAK,gBAAEC;;;AAGX,SAAO;AACT;AAuEOS,aAAA;AAAAC,eAAS,SACd,KACA,KACA,KACA,KAAqB;AAnPzB,MAAAM,KAAAC;AAqPI,MAAI,WAAW;AACf,MAAI,UAAU;AACd,MAAI,aAAa;AACjB,MAAI,WAAW;AACf,MAAI,IAAI,SAAS,MAAM;AAErB,QAAIO,KAAI;AACR,QAAIC,OAAM;AACV,WAAOD,KAAI,IAAI,QAAQ;AACrB,YAAM,IAAI,IAAI,OAAOA,IAAG;AAGxB,UAAI,YAAY,MAAM,MAAM;AAC1B,mBAAW,CAAC;AACZ,QAAAC,QAAO;AACP;;AAGF,UAAI,SAAS;AACX,YAAID,OAAM,aAAa,GAAG;AACxB,cAAI,MAAM,OAAO,MAAM,KAAK;AAC1B,uBAAW;;mBAEJ,MAAM,OAAO,EAAEA,OAAM,aAAa,KAAK,WAAW;AAC3D,oBAAU;;AAEZ,QAAAC,QAAO;AACP;iBACS,MAAM,KAAK;AACpB,kBAAU;AACV,qBAAaD;AACb,mBAAW;AACX,QAAAC,QAAO;AACP;;AAGF,UAAI,CAAC,IAAI,SAASvC,eAAc,CAAC,KAAK,IAAI,OAAOsC,EAAC,MAAM,KAAK;AAC3D,YAAI,KAAKC,IAAG;AACZ,QAAAA,OAAM;AACN,cAAMC,OAAM,IAAIX,MAAI,GAAG,GAAG;AAC1B,QAAAS,KAAI,gBAAAR,MAAAD,OAAIN,YAAAC,cAAJ,KAAAM,KAAc,KAAKU,MAAKF,IAAG;AAC/B,YAAI,KAAKE,IAAG;AACZ;;AAEF,MAAAD,QAAO;;AAET,QAAI,KAAKA,IAAG;AACZ,WAAOD;;AAKT,MAAI,IAAI,MAAM;AACd,MAAI,OAAO,IAAIT,MAAI,MAAM,GAAG;AAC5B,QAAM,QAAe,CAAA;AACrB,MAAI,MAAM;AACV,SAAO,IAAI,IAAI,QAAQ;AACrB,UAAM,IAAI,IAAI,OAAO,GAAG;AAGxB,QAAI,YAAY,MAAM,MAAM;AAC1B,iBAAW,CAAC;AACZ,aAAO;AACP;;AAGF,QAAI,SAAS;AACX,UAAI,MAAM,aAAa,GAAG;AACxB,YAAI,MAAM,OAAO,MAAM,KAAK;AAC1B,qBAAW;;iBAEJ,MAAM,OAAO,EAAE,MAAM,aAAa,KAAK,WAAW;AAC3D,kBAAU;;AAEZ,aAAO;AACP;eACS,MAAM,KAAK;AACpB,gBAAU;AACV,mBAAa;AACb,iBAAW;AACX,aAAO;AACP;;AAGF,QAAI7B,eAAc,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK;AAC7C,WAAK,KAAK,GAAG;AACb,YAAM;AACN,YAAMwC,OAAM,IAAIX,MAAI,GAAG,IAAI;AAC3B,WAAK,KAAKW,IAAG;AACb,UAAI,gBAAAT,MAAAF,OAAIN,YAAAC,cAAJ,KAAAO,KAAc,KAAKS,MAAK,GAAG;AAC/B;;AAEF,QAAI,MAAM,KAAK;AACb,WAAK,KAAK,GAAG;AACb,YAAM;AACN,YAAM,KAAK,IAAI;AACf,aAAO,IAAIX,MAAI,MAAM,GAAG;AACxB;;AAEF,QAAI,MAAM,KAAK;AACb,UAAI,QAAQ,MAAM,kBAAIhB,SAAO,WAAW,GAAG;AACzC,0BAAIO,YAAY;;AAElB,WAAK,KAAK,GAAG;AACb,YAAM;AACN,UAAI,KAAK,GAAG,OAAO,IAAI;AACvB,aAAO;;AAET,WAAO;;AAMT,MAAI,OAAO;AACX,oBAAIT,YAAY;AAChB,oBAAIE,SAAS,CAAC,IAAI,UAAU,MAAM,CAAC,CAAC;AACpC,SAAO;AACT;AA+OAY,kBAAA;AAAAC,oBAAc,SAAC,KAAY;AACzB,SAAO,mBAAKb,SACT,IAAI,OAAI;AAGP,QAAI,OAAO,MAAM,UAAU;AACzB,YAAM,IAAI,MAAM,8BAA8B;;AAIhD,UAAM,CAAC,IAAI,GAAGF,YAAW,KAAK,IAAI,EAAE,eAAe,GAAG;AACtD,uBAAKC,SAAS,mBAAKA,YAAU;AAC7B,WAAO;EACT,CAAC,EACA,OAAO,OAAK,EAAE,KAAK,QAAO,KAAM,KAAK,MAAK,MAAO,CAAC,CAAC,CAAC,EACpD,KAAK,GAAG;AACb;AAEOe,cAAA;AAAAC,gBAAU,SACfK,OACA,UACA,UAAmB,OAAK;AAExB,MAAI,WAAW;AACf,MAAI,KAAK;AACT,MAAI,QAAQ;AACZ,WAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACpC,UAAM,IAAIA,MAAK,OAAO,CAAC;AACvB,QAAI,UAAU;AACZ,iBAAW;AACX,aAAO5B,YAAW,IAAI,CAAC,IAAI,OAAO,MAAM;AACxC;;AAEF,QAAI,MAAM,MAAM;AACd,UAAI,MAAM4B,MAAK,SAAS,GAAG;AACzB,cAAM;aACD;AACL,mBAAW;;AAEb;;AAEF,QAAI,MAAM,KAAK;AACb,YAAM,CAAC,KAAK,WAAW,UAAU,KAAK,IAAIQ,YAAWR,OAAM,CAAC;AAC5D,UAAI,UAAU;AACZ,cAAM;AACN,gBAAQ,SAAS;AACjB,aAAK,WAAW;AAChB,mBAAW,YAAY;AACvB;;;AAGJ,QAAI,MAAM,KAAK;AACb,UAAI,WAAWA,UAAS;AAAK,cAAMxB;;AAC9B,cAAMD;AACX,iBAAW;AACX;;AAEF,QAAI,MAAM,KAAK;AACb,YAAMD;AACN,iBAAW;AACX;;AAEF,UAAMD,cAAa,CAAC;;AAEtB,SAAO,CAAC,IAAI8B,UAASH,KAAI,GAAG,CAAC,CAAC,UAAU,KAAK;AAC/C;AA5aA,aAlKWI,MAkKJd;AA6XP,aA/hBWc,MA+hBJV;;;AClmBF,IAAMe,UAAS,CACpB,GACA,EACE,uBAAuB,MAAK,IACsB,CAAA,MAClD;AAIF,SAAO,uBACH,EAAE,QAAQ,cAAc,MAAM,IAC9B,EAAE,QAAQ,gBAAgB,MAAM;AACtC;;;ALoBO,IAAMC,aAAY,CACvB,GACA,SACA,UAA4B,CAAA,MAC1B;AACF,EAAAC,oBAAmB,OAAO;AAG1B,MAAI,CAAC,QAAQ,aAAa,QAAQ,OAAO,CAAC,MAAM,KAAK;AACnD,WAAO;;AAGT,SAAO,IAAIC,WAAU,SAAS,OAAO,EAAE,MAAM,CAAC;AAChD;AAGA,IAAMC,gBAAe;AACrB,IAAMC,kBAAiB,CAACC,SAAgB,CAAC,MACvC,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAASA,IAAG;AACtC,IAAMC,qBAAoB,CAACD,SAAgB,CAAC,MAAc,EAAE,SAASA,IAAG;AACxE,IAAME,wBAAuB,CAACF,SAAe;AAC3C,EAAAA,OAAMA,KAAI,YAAW;AACrB,SAAO,CAAC,MAAc,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;AAC1E;AACA,IAAMG,2BAA0B,CAACH,SAAe;AAC9C,EAAAA,OAAMA,KAAI,YAAW;AACrB,SAAO,CAAC,MAAc,EAAE,YAAW,EAAG,SAASA,IAAG;AACpD;AACA,IAAMI,iBAAgB;AACtB,IAAMC,mBAAkB,CAAC,MAAc,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,GAAG;AAC3E,IAAMC,sBAAqB,CAAC,MAC1B,MAAM,OAAO,MAAM,QAAQ,EAAE,SAAS,GAAG;AAC3C,IAAMC,aAAY;AAClB,IAAMC,eAAc,CAAC,MAAc,MAAM,OAAO,MAAM,QAAQ,EAAE,WAAW,GAAG;AAC9E,IAAMC,UAAS;AACf,IAAMC,YAAW,CAAC,MAAc,EAAE,WAAW,KAAK,CAAC,EAAE,WAAW,GAAG;AACnE,IAAMC,eAAc,CAAC,MAAc,EAAE,WAAW,KAAK,MAAM,OAAO,MAAM;AACxE,IAAMC,YAAW;AACjB,IAAMC,oBAAmB,CAAC,CAAC,IAAIb,OAAM,EAAE,MAAuB;AAC5D,QAAM,QAAQc,iBAAgB,CAAC,EAAE,CAAC;AAClC,MAAI,CAACd;AAAK,WAAO;AACjB,EAAAA,OAAMA,KAAI,YAAW;AACrB,SAAO,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;AAChE;AACA,IAAMe,uBAAsB,CAAC,CAAC,IAAIf,OAAM,EAAE,MAAuB;AAC/D,QAAM,QAAQgB,oBAAmB,CAAC,EAAE,CAAC;AACrC,MAAI,CAAChB;AAAK,WAAO;AACjB,EAAAA,OAAMA,KAAI,YAAW;AACrB,SAAO,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,YAAW,EAAG,SAASA,IAAG;AAChE;AACA,IAAMiB,iBAAgB,CAAC,CAAC,IAAIjB,OAAM,EAAE,MAAuB;AACzD,QAAM,QAAQgB,oBAAmB,CAAC,EAAE,CAAC;AACrC,SAAO,CAAChB,OAAM,QAAQ,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,SAASA,IAAG;AACjE;AACA,IAAMkB,cAAa,CAAC,CAAC,IAAIlB,OAAM,EAAE,MAAuB;AACtD,QAAM,QAAQc,iBAAgB,CAAC,EAAE,CAAC;AAClC,SAAO,CAACd,OAAM,QAAQ,CAAC,MAAc,MAAM,CAAC,KAAK,EAAE,SAASA,IAAG;AACjE;AACA,IAAMc,mBAAkB,CAAC,CAAC,EAAE,MAAuB;AACjD,QAAM,MAAM,GAAG;AACf,SAAO,CAAC,MAAc,EAAE,WAAW,OAAO,CAAC,EAAE,WAAW,GAAG;AAC7D;AACA,IAAME,sBAAqB,CAAC,CAAC,EAAE,MAAuB;AACpD,QAAM,MAAM,GAAG;AACf,SAAO,CAAC,MAAc,EAAE,WAAW,OAAO,MAAM,OAAO,MAAM;AAC/D;AAGA,IAAMG,mBACJ,OAAO,YAAY,YAAY,UAC1B,OAAO,QAAQ,QAAQ,YACtB,QAAQ,OACR,QAAQ,IAAI,kCACd,QAAQ,WACR;AAGN,IAAMC,QAAsC;EAC1C,OAAO,EAAE,KAAK,KAAI;EAClB,OAAO,EAAE,KAAK,IAAG;;AAIZ,IAAMC,OAAMF,qBAAoB,UAAUC,MAAK,MAAM,MAAMA,MAAK,MAAM;AAC7EzB,WAAU,MAAM0B;AAET,IAAMC,YAAW,OAAO,aAAa;AAC5C3B,WAAU,WAAW2B;AAIrB,IAAMC,SAAQ;AAGd,IAAMC,QAAOD,SAAQ;AAKrB,IAAME,cAAa;AAInB,IAAMC,gBAAe;AAEd,IAAMC,UACX,CAAC,SAAiB,UAA4B,CAAA,MAC9C,CAAC,MACChC,WAAU,GAAG,SAAS,OAAO;AACjCA,WAAU,SAASgC;AAEnB,IAAM3B,OAAM,CAAC,GAAqB,IAAsB,CAAA,MACtD,OAAO,OAAO,CAAA,GAAI,GAAG,CAAC;AAEjB,IAAM4B,YAAW,CAAC,QAA2C;AAClE,MAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,KAAK,GAAG,EAAE,QAAQ;AAC/D,WAAOjC;;AAGT,QAAM,OAAOA;AAEb,QAAM,IAAI,CAAC,GAAW,SAAiB,UAA4B,CAAA,MACjE,KAAK,GAAG,SAASK,KAAI,KAAK,OAAO,CAAC;AAEpC,SAAO,OAAO,OAAO,GAAG;IACtB,WAAW,MAAM,kBAAkB,KAAK,UAAS;MAC/C,YAAY,SAAiB,UAA4B,CAAA,GAAE;AACzD,cAAM,SAASA,KAAI,KAAK,OAAO,CAAC;MAClC;MACA,OAAO,SAAS,SAAyB;AACvC,eAAO,KAAK,SAASA,KAAI,KAAK,OAAO,CAAC,EAAE;MAC1C;;IAGF,KAAK,MAAM,YAAY,KAAK,IAAG;MAE7B,YACE,MACA,QACA,UAA4B,CAAA,GAAE;AAE9B,cAAM,MAAM,QAAQA,KAAI,KAAK,OAAO,CAAC;MACvC;MAGA,OAAO,SAAS,SAAiB,UAA4B,CAAA,GAAE;AAC7D,eAAO,KAAK,IAAI,SAAS,SAASA,KAAI,KAAK,OAAO,CAAC;MACrD;;IAGF,UAAU,CACR,GACA,UAA0D,CAAA,MACvD,KAAK,SAAS,GAAGA,KAAI,KAAK,OAAO,CAAC;IAEvC,QAAQ,CACN,GACA,UAA0D,CAAA,MACvD,KAAK,OAAO,GAAGA,KAAI,KAAK,OAAO,CAAC;IAErC,QAAQ,CAAC,SAAiB,UAA4B,CAAA,MACpD,KAAK,OAAO,SAASA,KAAI,KAAK,OAAO,CAAC;IAExC,UAAU,CAAC,YAA8B,KAAK,SAASA,KAAI,KAAK,OAAO,CAAC;IAExE,QAAQ,CAAC,SAAiB,UAA4B,CAAA,MACpD,KAAK,OAAO,SAASA,KAAI,KAAK,OAAO,CAAC;IAExC,aAAa,CAAC,SAAiB,UAA4B,CAAA,MACzD,KAAK,YAAY,SAASA,KAAI,KAAK,OAAO,CAAC;IAE7C,OAAO,CAAC,MAAgB,SAAiB,UAA4B,CAAA,MACnE,KAAK,MAAM,MAAM,SAASA,KAAI,KAAK,OAAO,CAAC;IAE7C,KAAK,KAAK;IACV,UAAUsB;GACX;AACH;AACA3B,WAAU,WAAWiC;AAYd,IAAMC,eAAc,CACzB,SACA,UAA4B,CAAA,MAC1B;AACF,EAAAjC,oBAAmB,OAAO;AAI1B,MAAI,QAAQ,WAAW,CAAC,mBAAmB,KAAK,OAAO,GAAG;AAExD,WAAO,CAAC,OAAO;;AAGjB,aAAO,wBAAAkC,SAAO,OAAO;AACvB;AACAnC,WAAU,cAAckC;AAcjB,IAAME,UAAS,CAAC,SAAiB,UAA4B,CAAA,MAClE,IAAIlC,WAAU,SAAS,OAAO,EAAE,OAAM;AACxCF,WAAU,SAASoC;AAEZ,IAAMC,SAAQ,CACnB,MACA,SACA,UAA4B,CAAA,MAC1B;AACF,QAAM,KAAK,IAAInC,WAAU,SAAS,OAAO;AACzC,SAAO,KAAK,OAAO,OAAK,GAAG,MAAM,CAAC,CAAC;AACnC,MAAI,GAAG,QAAQ,UAAU,CAAC,KAAK,QAAQ;AACrC,SAAK,KAAK,OAAO;;AAEnB,SAAO;AACT;AACAF,WAAU,QAAQqC;AAGlB,IAAMC,aAAY;AAClB,IAAMC,gBAAe,CAAC,MACpB,EAAE,QAAQ,4BAA4B,MAAM;AAUxC,IAAOrC,aAAP,MAAgB;EACpB;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA,YAAY,SAAiB,UAA4B,CAAA,GAAE;AACzD,IAAAD,oBAAmB,OAAO;AAE1B,cAAU,WAAW,CAAA;AACrB,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,WAAW,QAAQ,YAAYuB;AACpC,SAAK,YAAY,KAAK,aAAa;AACnC,SAAK,uBACH,CAAC,CAAC,QAAQ,wBAAwB,QAAQ,uBAAuB;AACnE,QAAI,KAAK,sBAAsB;AAC7B,WAAK,UAAU,KAAK,QAAQ,QAAQ,OAAO,GAAG;;AAEhD,SAAK,0BAA0B,CAAC,CAAC,QAAQ;AACzC,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,WAAW,CAAC,CAAC,QAAQ;AAC1B,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,SAAK,UAAU,CAAC,CAAC,QAAQ;AACzB,SAAK,SAAS,CAAC,CAAC,KAAK,QAAQ;AAC7B,SAAK,qBACH,QAAQ,uBAAuB,SAC3B,QAAQ,qBACR,CAAC,EAAE,KAAK,aAAa,KAAK;AAEhC,SAAK,UAAU,CAAA;AACf,SAAK,YAAY,CAAA;AACjB,SAAK,MAAM,CAAA;AAGX,SAAK,KAAI;EACX;EAEA,WAAQ;AACN,QAAI,KAAK,QAAQ,iBAAiB,KAAK,IAAI,SAAS,GAAG;AACrD,aAAO;;AAET,eAAW,WAAW,KAAK,KAAK;AAC9B,iBAAW,QAAQ,SAAS;AAC1B,YAAI,OAAO,SAAS;AAAU,iBAAO;;;AAGzC,WAAO;EACT;EAEA,SAAS,GAAQ;EAAG;EAEpB,OAAI;AACF,UAAM,UAAU,KAAK;AACrB,UAAM,UAAU,KAAK;AAGrB,QAAI,CAAC,QAAQ,aAAa,QAAQ,OAAO,CAAC,MAAM,KAAK;AACnD,WAAK,UAAU;AACf;;AAGF,QAAI,CAAC,SAAS;AACZ,WAAK,QAAQ;AACb;;AAIF,SAAK,YAAW;AAGhB,SAAK,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,YAAW,CAAE,CAAC;AAE9C,QAAI,QAAQ,OAAO;AACjB,WAAK,QAAQ,IAAI,SAAgB,QAAQ,MAAM,GAAG,IAAI;;AAGxD,SAAK,MAAM,KAAK,SAAS,KAAK,OAAO;AAWrC,UAAM,eAAe,KAAK,QAAQ,IAAI,OAAK,KAAK,WAAW,CAAC,CAAC;AAC7D,SAAK,YAAY,KAAK,WAAW,YAAY;AAC7C,SAAK,MAAM,KAAK,SAAS,KAAK,SAAS;AAGvC,QAAI,MAAM,KAAK,UAAU,IAAI,CAAC,GAAG,GAAG,OAAM;AACxC,UAAI,KAAK,aAAa,KAAK,oBAAoB;AAE7C,cAAM,QACJ,EAAE,OAAO,MACT,EAAE,OAAO,OACR,EAAE,OAAO,OAAO,CAACc,WAAU,KAAK,EAAE,EAAE,MACrC,CAACA,WAAU,KAAK,EAAE,EAAE;AACtB,cAAM,UAAU,WAAW,KAAK,EAAE,EAAE;AACpC,YAAI,OAAO;AACT,iBAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC,CAAC;mBACxD,SAAS;AAClB,iBAAO,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC,CAAC;;;AAGzD,aAAO,EAAE,IAAI,QAAM,KAAK,MAAM,EAAE,CAAC;IACnC,CAAC;AAED,SAAK,MAAM,KAAK,SAAS,GAAG;AAG5B,SAAK,MAAM,IAAI,OACb,OAAK,EAAE,QAAQ,KAAK,MAAM,EAAE;AAI9B,QAAI,KAAK,WAAW;AAClB,eAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,cAAM,IAAI,KAAK,IAAI;AACnB,YACE,EAAE,OAAO,MACT,EAAE,OAAO,MACT,KAAK,UAAU,GAAG,OAAO,OACzB,OAAO,EAAE,OAAO,YAChB,YAAY,KAAK,EAAE,EAAE,GACrB;AACA,YAAE,KAAK;;;;AAKb,SAAK,MAAM,KAAK,SAAS,KAAK,GAAG;EACnC;EAOA,WAAW,WAAqB;AAE9B,QAAI,KAAK,QAAQ,YAAY;AAC3B,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,iBAAS,IAAI,GAAG,IAAI,UAAU,GAAG,QAAQ,KAAK;AAC5C,cAAI,UAAU,GAAG,OAAO,MAAM;AAC5B,sBAAU,GAAG,KAAK;;;;;AAM1B,UAAM,EAAE,oBAAoB,EAAC,IAAK,KAAK;AAEvC,QAAI,qBAAqB,GAAG;AAE1B,kBAAY,KAAK,qBAAqB,SAAS;AAC/C,kBAAY,KAAK,sBAAsB,SAAS;eACvC,qBAAqB,GAAG;AAEjC,kBAAY,KAAK,iBAAiB,SAAS;WACtC;AAEL,kBAAY,KAAK,0BAA0B,SAAS;;AAGtD,WAAO;EACT;EAGA,0BAA0B,WAAqB;AAC7C,WAAO,UAAU,IAAI,WAAQ;AAC3B,UAAI,KAAa;AACjB,aAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,YAAI,IAAI;AACR,eAAO,MAAM,IAAI,OAAO,MAAM;AAC5B;;AAEF,YAAI,MAAM,IAAI;AACZ,gBAAM,OAAO,IAAI,IAAI,EAAE;;;AAG3B,aAAO;IACT,CAAC;EACH;EAGA,iBAAiB,WAAqB;AACpC,WAAO,UAAU,IAAI,WAAQ;AAC3B,cAAQ,MAAM,OAAO,CAAC,KAAe,SAAQ;AAC3C,cAAM,OAAO,IAAI,IAAI,SAAS;AAC9B,YAAI,SAAS,QAAQ,SAAS,MAAM;AAClC,iBAAO;;AAET,YAAI,SAAS,MAAM;AACjB,cAAI,QAAQ,SAAS,QAAQ,SAAS,OAAO,SAAS,MAAM;AAC1D,gBAAI,IAAG;AACP,mBAAO;;;AAGX,YAAI,KAAK,IAAI;AACb,eAAO;MACT,GAAG,CAAA,CAAE;AACL,aAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;IACrC,CAAC;EACH;EAEA,qBAAqB,OAAwB;AAC3C,QAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,cAAQ,KAAK,WAAW,KAAK;;AAE/B,QAAI,eAAwB;AAC5B,OAAG;AACD,qBAAe;AAEf,UAAI,CAAC,KAAK,yBAAyB;AACjC,iBAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,gBAAM,IAAI,MAAM;AAEhB,cAAI,MAAM,KAAK,MAAM,MAAM,MAAM,OAAO;AAAI;AAC5C,cAAI,MAAM,OAAO,MAAM,IAAI;AACzB,2BAAe;AACf,kBAAM,OAAO,GAAG,CAAC;AACjB;;;AAGJ,YACE,MAAM,OAAO,OACb,MAAM,WAAW,MAChB,MAAM,OAAO,OAAO,MAAM,OAAO,KAClC;AACA,yBAAe;AACf,gBAAM,IAAG;;;AAKb,UAAI,KAAa;AACjB,aAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,cAAM,IAAI,MAAM,KAAK;AACrB,YAAI,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM;AAC9C,yBAAe;AACf,gBAAM,OAAO,KAAK,GAAG,CAAC;AACtB,gBAAM;;;aAGH;AACT,WAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;EACrC;EAoBA,qBAAqB,WAAqB;AACxC,QAAI,eAAe;AACnB,OAAG;AACD,qBAAe;AAEf,eAAS,SAAS,WAAW;AAC3B,YAAI,KAAa;AACjB,eAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,cAAI,MAAc;AAClB,iBAAO,MAAM,MAAM,OAAO,MAAM;AAE9B;;AAIF,cAAI,MAAM,IAAI;AACZ,kBAAM,OAAO,KAAK,GAAG,MAAM,EAAE;;AAG/B,cAAI,OAAO,MAAM,KAAK;AACtB,gBAAM,IAAI,MAAM,KAAK;AACrB,gBAAM,KAAK,MAAM,KAAK;AACtB,cAAI,SAAS;AAAM;AACnB,cACE,CAAC,KACD,MAAM,OACN,MAAM,QACN,CAAC,MACD,OAAO,OACP,OAAO,MACP;AACA;;AAEF,yBAAe;AAEf,gBAAM,OAAO,IAAI,CAAC;AAClB,gBAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,gBAAM,MAAM;AACZ,oBAAU,KAAK,KAAK;AACpB;;AAIF,YAAI,CAAC,KAAK,yBAAyB;AACjC,mBAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,kBAAM,IAAI,MAAM;AAEhB,gBAAI,MAAM,KAAK,MAAM,MAAM,MAAM,OAAO;AAAI;AAC5C,gBAAI,MAAM,OAAO,MAAM,IAAI;AACzB,6BAAe;AACf,oBAAM,OAAO,GAAG,CAAC;AACjB;;;AAGJ,cACE,MAAM,OAAO,OACb,MAAM,WAAW,MAChB,MAAM,OAAO,OAAO,MAAM,OAAO,KAClC;AACA,2BAAe;AACf,kBAAM,IAAG;;;AAKb,YAAI,KAAa;AACjB,eAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,CAAC,IAAI;AAChD,gBAAM,IAAI,MAAM,KAAK;AACrB,cAAI,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM;AAC9C,2BAAe;AACf,kBAAM,UAAU,OAAO,KAAK,MAAM,KAAK,OAAO;AAC9C,kBAAM,QAAQ,UAAU,CAAC,GAAG,IAAI,CAAA;AAChC,kBAAM,OAAO,KAAK,GAAG,GAAG,GAAG,KAAK;AAChC,gBAAI,MAAM,WAAW;AAAG,oBAAM,KAAK,EAAE;AACrC,kBAAM;;;;aAIL;AAET,WAAO;EACT;EASA,sBAAsB,WAAqB;AACzC,aAAS,IAAI,GAAG,IAAI,UAAU,SAAS,GAAG,KAAK;AAC7C,eAAS,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC7C,cAAM,UAAU,KAAK,WACnB,UAAU,IACV,UAAU,IACV,CAAC,KAAK,uBAAuB;AAE/B,YAAI,SAAS;AACX,oBAAU,KAAK,CAAA;AACf,oBAAU,KAAK;AACf;;;;AAIN,WAAO,UAAU,OAAO,QAAM,GAAG,MAAM;EACzC;EAEA,WACE,GACA,GACA,eAAwB,OAAK;AAE7B,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,SAAmB,CAAA;AACvB,QAAIE,SAAgB;AACpB,WAAO,KAAK,EAAE,UAAU,KAAK,EAAE,QAAQ;AACrC,UAAI,EAAE,QAAQ,EAAE,KAAK;AACnB,eAAO,KAAKA,WAAU,MAAM,EAAE,MAAM,EAAE,GAAG;AACzC;AACA;iBACS,gBAAgB,EAAE,QAAQ,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI;AAChE,eAAO,KAAK,EAAE,GAAG;AACjB;iBACS,gBAAgB,EAAE,QAAQ,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI;AAChE,eAAO,KAAK,EAAE,GAAG;AACjB;iBAEA,EAAE,QAAQ,OACV,EAAE,QACD,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAI,WAAW,GAAG,MAC1C,EAAE,QAAQ,MACV;AACA,YAAIA,WAAU;AAAK,iBAAO;AAC1B,QAAAA,SAAQ;AACR,eAAO,KAAK,EAAE,GAAG;AACjB;AACA;iBAEA,EAAE,QAAQ,OACV,EAAE,QACD,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAI,WAAW,GAAG,MAC1C,EAAE,QAAQ,MACV;AACA,YAAIA,WAAU;AAAK,iBAAO;AAC1B,QAAAA,SAAQ;AACR,eAAO,KAAK,EAAE,GAAG;AACjB;AACA;aACK;AACL,eAAO;;;AAKX,WAAO,EAAE,WAAW,EAAE,UAAU;EAClC;EAEA,cAAW;AACT,QAAI,KAAK;AAAU;AAEnB,UAAM,UAAU,KAAK;AACrB,QAAI,SAAS;AACb,QAAI,eAAe;AAEnB,aAAS,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ,OAAO,CAAC,MAAM,KAAK,KAAK;AACpE,eAAS,CAAC;AACV;;AAGF,QAAI;AAAc,WAAK,UAAU,QAAQ,MAAM,YAAY;AAC3D,SAAK,SAAS;EAChB;EAOA,SAAS,MAAgB,SAAwB,UAAmB,OAAK;AACvE,UAAM,UAAU,KAAK;AAKrB,QAAI,KAAK,WAAW;AAClB,YAAM,YAAY,OAAO,KAAK,OAAO,YAAY,YAAY,KAAK,KAAK,EAAE;AACzE,YAAM,UACJ,CAAC,aACD,KAAK,OAAO,MACZ,KAAK,OAAO,MACZ,KAAK,OAAO,OACZ,YAAY,KAAK,KAAK,EAAE;AAE1B,YAAM,eACJ,OAAO,QAAQ,OAAO,YAAY,YAAY,KAAK,QAAQ,EAAE;AAC/D,YAAM,aACJ,CAAC,gBACD,QAAQ,OAAO,MACf,QAAQ,OAAO,MACf,QAAQ,OAAO,OACf,OAAO,QAAQ,OAAO,YACtB,YAAY,KAAK,QAAQ,EAAE;AAE7B,YAAM,MAAM,UAAU,IAAI,YAAY,IAAI;AAC1C,YAAM,MAAM,aAAa,IAAI,eAAe,IAAI;AAChD,UAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AACtD,cAAM,CAAC,IAAI,EAAE,IAAsB,CAAC,KAAK,MAAM,QAAQ,IAAc;AACrE,YAAI,GAAG,YAAW,MAAO,GAAG,YAAW,GAAI;AACzC,kBAAQ,OAAO;AACf,cAAI,MAAM,KAAK;AACb,sBAAU,QAAQ,MAAM,GAAG;qBAClB,MAAM,KAAK;AACpB,mBAAO,KAAK,MAAM,GAAG;;;;;AAQ7B,UAAM,EAAE,oBAAoB,EAAC,IAAK,KAAK;AACvC,QAAI,qBAAqB,GAAG;AAC1B,aAAO,KAAK,qBAAqB,IAAI;;AAGvC,SAAK,MAAM,YAAY,MAAM,EAAE,MAAM,QAAO,CAAE;AAC9C,SAAK,MAAM,YAAY,KAAK,QAAQ,QAAQ,MAAM;AAElD,aACM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,QAAQ,KAAK,QAAQ,QACnD,KAAK,MAAM,KAAK,IAChB,MAAM,MACN;AACA,WAAK,MAAM,eAAe;AAC1B,UAAI,IAAI,QAAQ;AAChB,UAAI,IAAI,KAAK;AAEb,WAAK,MAAM,SAAS,GAAG,CAAC;AAKxB,UAAI,MAAM,OAAO;AACf,eAAO;;AAIT,UAAI,MAAMb,WAAU;AAClB,aAAK,MAAM,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC;AAwBtC,YAAI,KAAK;AACT,YAAI,KAAK,KAAK;AACd,YAAI,OAAO,IAAI;AACb,eAAK,MAAM,eAAe;AAO1B,iBAAO,KAAK,IAAI,MAAM;AACpB,gBACE,KAAK,QAAQ,OACb,KAAK,QAAQ,QACZ,CAAC,QAAQ,OAAO,KAAK,IAAI,OAAO,CAAC,MAAM;AAExC,qBAAO;;AAEX,iBAAO;;AAIT,eAAO,KAAK,IAAI;AACd,cAAI,YAAY,KAAK;AAErB,eAAK,MAAM,oBAAoB,MAAM,IAAI,SAAS,IAAI,SAAS;AAG/D,cAAI,KAAK,SAAS,KAAK,MAAM,EAAE,GAAG,QAAQ,MAAM,EAAE,GAAG,OAAO,GAAG;AAC7D,iBAAK,MAAM,yBAAyB,IAAI,IAAI,SAAS;AAErD,mBAAO;iBACF;AAGL,gBACE,cAAc,OACd,cAAc,QACb,CAAC,QAAQ,OAAO,UAAU,OAAO,CAAC,MAAM,KACzC;AACA,mBAAK,MAAM,iBAAiB,MAAM,IAAI,SAAS,EAAE;AACjD;;AAIF,iBAAK,MAAM,0CAA0C;AACrD;;;AAOJ,YAAI,SAAS;AAEX,eAAK,MAAM,4BAA4B,MAAM,IAAI,SAAS,EAAE;AAC5D,cAAI,OAAO,IAAI;AACb,mBAAO;;;AAIX,eAAO;;AAMT,UAAI;AACJ,UAAI,OAAO,MAAM,UAAU;AACzB,cAAM,MAAM;AACZ,aAAK,MAAM,gBAAgB,GAAG,GAAG,GAAG;aAC/B;AACL,cAAM,EAAE,KAAK,CAAC;AACd,aAAK,MAAM,iBAAiB,GAAG,GAAG,GAAG;;AAGvC,UAAI,CAAC;AAAK,eAAO;;AAenB,QAAI,OAAO,MAAM,OAAO,IAAI;AAG1B,aAAO;eACE,OAAO,IAAI;AAIpB,aAAO;eACE,OAAO,IAAI;AAKpB,aAAO,OAAO,KAAK,KAAK,KAAK,QAAQ;WAGhC;AAEL,YAAM,IAAI,MAAM,MAAM;;EAG1B;EAEA,cAAW;AACT,WAAOO,aAAY,KAAK,SAAS,KAAK,OAAO;EAC/C;EAEA,MAAM,SAAe;AACnB,IAAAjC,oBAAmB,OAAO;AAE1B,UAAM,UAAU,KAAK;AAGrB,QAAI,YAAY;AAAM,aAAO0B;AAC7B,QAAI,YAAY;AAAI,aAAO;AAI3B,QAAI;AACJ,QAAI,WAA4C;AAChD,QAAK,IAAI,QAAQ,MAAMb,OAAM,GAAI;AAC/B,iBAAW,QAAQ,MAAME,eAAcD;eAC7B,IAAI,QAAQ,MAAMZ,aAAY,GAAI;AAC5C,kBACE,QAAQ,SACJ,QAAQ,MACNK,2BACAD,wBACF,QAAQ,MACRD,qBACAF,iBACJ,EAAE,EAAE;eACI,IAAI,QAAQ,MAAMa,SAAQ,GAAI;AACxC,kBACE,QAAQ,SACJ,QAAQ,MACNG,uBACAF,oBACF,QAAQ,MACRI,iBACAC,aACJ,CAAC;eACO,IAAI,QAAQ,MAAMd,cAAa,GAAI;AAC7C,iBAAW,QAAQ,MAAME,sBAAqBD;eACpC,IAAI,QAAQ,MAAME,UAAS,GAAI;AACzC,iBAAWC;;AAGb,UAAM,KAAK4B,KAAI,SAAS,SAAS,KAAK,OAAO,EAAE,YAAW;AAC1D,QAAI,YAAY,OAAO,OAAO,UAAU;AAEtC,cAAQ,eAAe,IAAI,QAAQ,EAAE,OAAO,SAAQ,CAAE;;AAExD,WAAO;EACT;EAEA,SAAM;AACJ,QAAI,KAAK,UAAU,KAAK,WAAW;AAAO,aAAO,KAAK;AAQtD,UAAM,MAAM,KAAK;AAEjB,QAAI,CAAC,IAAI,QAAQ;AACf,WAAK,SAAS;AACd,aAAO,KAAK;;AAEd,UAAM,UAAU,KAAK;AAErB,UAAM,UAAU,QAAQ,aACpBZ,QACA,QAAQ,MACRC,cACAC;AACJ,UAAM,QAAQ,IAAI,IAAI,QAAQ,SAAS,CAAC,GAAG,IAAI,CAAA,CAAE;AAQjD,QAAI,KAAK,IACN,IAAI,aAAU;AACb,YAAM,KAAmC,QAAQ,IAAI,OAAI;AACvD,YAAI,aAAa,QAAQ;AACvB,qBAAW,KAAK,EAAE,MAAM,MAAM,EAAE;AAAG,kBAAM,IAAI,CAAC;;AAEhD,eAAO,OAAO,MAAM,WAChBQ,cAAa,CAAC,IACd,MAAMZ,YACNA,YACA,EAAE;MACR,CAAC;AACD,SAAG,QAAQ,CAAC,GAAG,MAAK;AAClB,cAAM,OAAO,GAAG,IAAI;AACpB,cAAM,OAAO,GAAG,IAAI;AACpB,YAAI,MAAMA,aAAY,SAASA,WAAU;AACvC;;AAEF,YAAI,SAAS,QAAW;AACtB,cAAI,SAAS,UAAa,SAASA,WAAU;AAC3C,eAAG,IAAI,KAAK,YAAY,UAAU,UAAU;iBACvC;AACL,eAAG,KAAK;;mBAED,SAAS,QAAW;AAC7B,aAAG,IAAI,KAAK,OAAO,YAAY,UAAU;mBAChC,SAASA,WAAU;AAC5B,aAAG,IAAI,KAAK,OAAO,eAAe,UAAU,SAAS;AACrD,aAAG,IAAI,KAAKA;;MAEhB,CAAC;AACD,aAAO,GAAG,OAAO,OAAK,MAAMA,SAAQ,EAAE,KAAK,GAAG;IAChD,CAAC,EACA,KAAK,GAAG;AAIX,UAAM,CAAC,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAG7D,SAAK,MAAM,OAAO,KAAK,QAAQ;AAG/B,QAAI,KAAK;AAAQ,WAAK,SAAS,KAAK;AAEpC,QAAI;AACF,WAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;aAEzC,IAAP;AAEA,WAAK,SAAS;;AAGhB,WAAO,KAAK;EACd;EAEA,WAAW,GAAS;AAKlB,QAAI,KAAK,yBAAyB;AAChC,aAAO,EAAE,MAAM,GAAG;eACT,KAAK,aAAa,cAAc,KAAK,CAAC,GAAG;AAElD,aAAO,CAAC,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;WACxB;AACL,aAAO,EAAE,MAAM,KAAK;;EAExB;EAEA,MAAM,GAAW,UAAU,KAAK,SAAO;AACrC,SAAK,MAAM,SAAS,GAAG,KAAK,OAAO;AAGnC,QAAI,KAAK,SAAS;AAChB,aAAO;;AAET,QAAI,KAAK,OAAO;AACd,aAAO,MAAM;;AAGf,QAAI,MAAM,OAAO,SAAS;AACxB,aAAO;;AAGT,UAAM,UAAU,KAAK;AAGrB,QAAI,KAAK,WAAW;AAClB,UAAI,EAAE,MAAM,IAAI,EAAE,KAAK,GAAG;;AAI5B,UAAM,KAAK,KAAK,WAAW,CAAC;AAC5B,SAAK,MAAM,KAAK,SAAS,SAAS,EAAE;AAOpC,UAAM,MAAM,KAAK;AACjB,SAAK,MAAM,KAAK,SAAS,OAAO,GAAG;AAGnC,QAAI,WAAmB,GAAG,GAAG,SAAS;AACtC,QAAI,CAAC,UAAU;AACb,eAAS,IAAI,GAAG,SAAS,GAAG,CAAC,YAAY,KAAK,GAAG,KAAK;AACpD,mBAAW,GAAG;;;AAIlB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAM,UAAU,IAAI;AACpB,UAAI,OAAO;AACX,UAAI,QAAQ,aAAa,QAAQ,WAAW,GAAG;AAC7C,eAAO,CAAC,QAAQ;;AAElB,YAAM,MAAM,KAAK,SAAS,MAAM,SAAS,OAAO;AAChD,UAAI,KAAK;AACP,YAAI,QAAQ,YAAY;AACtB,iBAAO;;AAET,eAAO,CAAC,KAAK;;;AAMjB,QAAI,QAAQ,YAAY;AACtB,aAAO;;AAET,WAAO,KAAK;EACd;EAEA,OAAO,SAAS,KAAqB;AACnC,WAAO3B,WAAU,SAAS,GAAG,EAAE;EACjC;;AAOFA,WAAU,MAAMyC;AAChBzC,WAAU,YAAYE;AACtBF,WAAU,SAAS0C;AACnB1C,WAAU,WAAW2C;;;AM/qCrB,IAAM,aAAa,IAAI,eAAe,CAAC,GAAG,IAAI,IAAI,WAAW,KAAK,CAAC,CAAC;AAEpE,IAAO,sBAAQ;;;ACFA,SAAR,YAA6B,UAAU,QAAQ;AACrD,QAAM,OAAO,IAAI,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC;AACvC,SAAO,MAAM,OAAO,aAAW,CAAC,KAAK,IAAI,OAAO,CAAC;AAClD;;;ACCe,SAAR,WAA4B,MAAM,UAAU,UAAU,CAAC,GAAG;AAChE,SAAO,CAAC,IAAI,EAAE,KAAK;AACnB,aAAW,CAAC,QAAQ,EAAE,KAAK;AAE3B,MAAI,KAAK,WAAW,KAAK,SAAS,WAAW,GAAG;AAC/C,WAAO,CAAC;AAAA,EACT;AAEA,MAAI,SAAS,CAAC;AACd,aAAW,QAAQ,MAAM;AACxB,aAAS,WAAW,UAAU;AAC7B,UAAIC,WAAU;AAEd,UAAI,QAAQ,OAAO,KAAK;AACvB,kBAAU,QAAQ,MAAM,CAAC;AACzB,QAAAA,WAAU;AAAA,MACX;AAEA,eAASA,SAAQ,QAAQC,WAAU,MAAM,CAAC,IAAI,GAAG,SAAS,OAAO,CAAC;AAAA,IACnE;AAAA,EACD;AAEA,SAAO;AACR;;;ATjBA,SAAQ,YAAW;;;AUFnB,SAAQ,YAAW;;;ACuBb,IAAgB,YAAhB,MAAyB;EAqB7B,YACY,KACA,QAAoB;AADpB,SAAA,MAAA;AACA,SAAA,SAAA;EACT;EAMH,WAAW,QAAuB;AAChC,YAAQ,QAAQ;MACd,KAAK;AACH,eAAO,GAAG,KAAK,kBAAkB,KAAK,QAAQ,MAAM;MACtD,KAAK;AACH,eAAO,GAAG,KAAK,kBAAkB,KAAK,QAAQ,OAAO;MACvD;AACE,cAAM,MAAM,qBAAqB;IACrC;EACF;EAMA,YAAY,QAAuB;AACjC,YAAQ,QAAQ;MACd,KAAK;AACH,eAAO,KAAK,QAAQ,MAAM;MAC5B,KAAK;AACH,eAAO,KAAK,QAAQ,OAAO;MAC7B;AACE,cAAM,MAAM,qBAAqB;IACrC;EACF;EAGA,YAAS;AACP,WAAO,CAAC,CAAC,KAAK,OAAO,KAAK;EAC5B;EAGA,iBAAc;AACZ,WAAO,KAAK,yBAAwB,KAAM,KAAK;EACjD;EAKQ,2BAAwB;AAC9B,UAAM,kBAAkB,KAAK,OAAO,KAAK;AACzC,QAAI,OAAO,oBAAoB,WAAW;AACxC,aAAO;IACT;AACA,WAAO,gBAAgB;EACzB;;;;ADzFI,IAAO,aAAP,cAA0B,UAAS;EAAzC,cAAA;;AACW,SAAA,OAAO;AAEP,SAAA,iBAAiB,KAAK,KAAK,IAAI,SAAS,8BAA8B;AAEtE,SAAA,qBAAqB,CAAC,YAAY,kBAAkB,gBAAgB,UAAU;AAE9E,SAAA,UAAU;MACjB,OAAO;QACL,cAAc,GAAG;QACjB,UAAU,CAAC,GAAW,MAA+B,WAAkB;AAErE,mBAAS,UAAU;AACnB,iBAAO,SAAS,KAAK,CAAE,KAAK,MAAM,MAAM,EAAyB;QACnE;;MAEF,QAAQ;QACN,cAAc,GAAG;QACjB,UAAU,CAAC,MAAc,MAA+B,GAAW,WAAkB;AACnF,cAAI,SAAS,GAAG;AACd,gBAAI,MAAM,gCAAgC,MAAM;AAChD,gBAAI,MAAM,MAAM;AAChB,gBAAI,MAAK;AACT,mBAAO;UACT;AACA,iBAAO;QACT;;;EAGN;;AAGA,IAAM,qBACJ;;;AE1CF,SAAQ,QAAAC,aAAW;AAUb,IAAO,WAAP,cAAwB,UAAS;EAAvC,cAAA;;AACW,SAAA,OAAO;AAEP,SAAA,iBAAiBC,MAAK,KAAK,IAAI,SAAS,4BAA4B;AAEpE,SAAA,qBAAqB;MAC5B;MACA;MACA;MACA;;AAOM,SAAA,aAAa,KAAK,OAAO,cAC7B,aAAa,UAAU,KAAK,gBAAgB;MAC1C;MACAA,MAAK,QAAQ,IAAG,GAAI,UAAU;KAC/B,EAAE,OAAO,KAAI,IACd;AAEK,SAAA,UAAU;MACjB,OAAO;QACL,cAAc,YAAY,KAAK;QAC/B,UAAU,CAAC,GAAW,MAA+B,WAAkB;AACrE,iBAAO,SAAS;QAClB;;MAEF,QAAQ;QACN,cAAc,YAAY,KAAK;QAC/B,UAAU,CAAC,MAAc,MAA+B,GAAW,WAAkB;AACnF,cAAI,SAAS,GAAG;AACd,gBAAI,MAAM,8BAA8B,MAAM;AAC9C,gBAAI,MAAM,MAAM;AAChB,gBAAI,MAAK;AACT,mBAAO;UACT;AACA,iBAAO;QACT;;;EAGN;;;;AC3CA,eAAsB,sBAAmB;AACvC,QAAM,SAAS,MAAM,UAAS;AAC9B,0BAAwB,MAAM;AAC9B,QAAM,YAAY,MAAM,UAAU,IAAG;AAErC,SAAO,CAAC,IAAI,SAAS,WAAW,OAAO,MAAM,GAAG,IAAI,WAAW,WAAW,OAAO,MAAM,CAAC,EAAE,OACxF,CAAC,cAAc,UAAU,UAAS,CAAE;AAExC;;;AbNA,IAAM,oBAAoB,KAAK,IAAI,KAAK,IAAI,KAAI,EAAG,QAAQ,CAAC,IAAI,GAAG,CAAC;AAsB9D,SAAU,uBAAuB,UAAoB,QAAuB;AAChF,SAAO,IAAI,QAAiC,OAAOC,cAAW;AAC5D,UAAM,aAAa,MAAM,oBAAmB;AAC5C,UAAM,WAA4B,CAAA;AAClC,UAAM,kBAA0D,CAAA;AAEhE,eAAW,aAAa,YAAY;AAClC,sBAAgB,KACd,GAAG,WACA,KAAK,QAAW,UAAU,UAAU,eAAc,GAAI,EAAC,KAAK,KAAI,CAAC,EACjE,IAAI,CAAC,UAAU,EAAC,WAAW,KAAI,EAAE,CAAC;IAEzC;AAIA,QAAI,gBAAgB,WAAW,GAAG;AAChC,aAAOA,UAAQ,KAAK;IACtB;AAEA,YAAQ,QAAQ;MACd,KAAK;AACH,YAAI,KAAK,cAAc,gBAAgB,gBAAgB;AACvD;MACF,KAAK;AACH,YAAI,KAAK,sBAAsB,gBAAgB,gBAAgB;AAC/D;MACF;AACE,cAAM,MAAM,0BAA0B,mDAAmD;IAC7F;AAGA,UAAM,cAAc,IAAI,wBAAI;MAC1B,QAAQ;MACR,iBAAiB;KAClB;AAGD,UAAM,UAAU,IAAI,MAAe,iBAAiB,EAAE,KAAK,KAAK;AAIhE,aAAS,mBAAmB,QAAc;AACxC,YAAM,cAAc,gBAAgB,IAAG;AAEvC,UAAI,gBAAgB,QAAW;AAC7B,gBAAQ,UAAU;AAClB;MACF;AAGA,YAAM,EAAC,MAAM,UAAS,IAAI;AAE1B,YAAM,CAAC,aAAa,SAAS,IAAI,CAAC,GAAG,UAAU,WAAW,MAAM,EAAE,MAAM,GAAG,GAAG,IAAI;AAElF,mBAAa,MAAM,UAAU,WAAW;QACtC,gCAAgC;QAChC,MAAM;OACP,EAAE,KAAK,CAAC,EAAC,QAAQ,QAAQ,OAAM,MAAkB;AAEhD,cAAM,SAAS,UAAU,YAAY,MAAM,EAAE,MAAM,QAAQ,QAAQ,MAAM;AACzE,YAAI,QAAQ;AACV,mBAAS,KAAK,EAAC,UAAU,MAAM,SAAS,OAAM,CAAC;QACjD;AAEA,oBAAY,UAAU,CAAC;AAGvB,YAAI,gBAAgB,QAAQ;AAC1B,iBAAO,mBAAmB,MAAM;QAClC;AAEA,gBAAQ,UAAU;AAGlB,YAAI,QAAQ,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG;AACtC,sBAAY,KAAI;AAChB,UAAAA,UAAQ,QAAQ;QAClB;MACF,CAAC;AAED,cAAQ,UAAU;IACpB;AAGA,gBAAY,MAAM,gBAAgB,QAAQ,CAAC;AAE3C,YAAQ,QAAQ,CAAC,GAAG,QAAQ,mBAAmB,GAAG,CAAC;EACrD,CAAC;AACH;;;AcjHA,eAAsB,YAAY,OAAe;AAE/C,MAAI,WAAW,MAAM,uBAAuB,OAAO,QAAQ;AAE3D,MAAI,aAAa,OAAO;AACtB,QAAI,KAAK,kCAAkC;AAC3C,WAAO;EACT;AAGA,MAAI,SAAS,WAAW,GAAG;AACzB,QAAI,MAAM,6CAA6C;AACvD,aAAS,QAAQ,CAAC,EAAC,UAAU,QAAO,MAAK;AACvC,UAAI,KAAK,YAAO,aAAa,SAAS;IACxC,CAAC;AACD,QAAI,MAAM,2DAA2D;AACrE,WAAO;EACT;AACA,MAAI,KAAK,MAAM,8BAAyB,CAAC;AACzC,SAAO;AACT;AAOA,eAAsB,WAAW,OAAe;AAE9C,QAAM,WAAW,MAAM,uBAAuB,OAAO,OAAO;AAE5D,MAAI,aAAa,OAAO;AACtB,QAAI,KAAK,wCAAwC;AACjD,WAAO;EACT;AAEA,MAAI,SAAS,QAAQ;AAEnB,QAAI,KAAK,MAAM,0CAA0C;AACzD,eAAW,EAAC,SAAQ,KAAK,UAAU;AACjC,UAAI,KAAK,YAAO,UAAU;IAC5B;AACA,QAAI,KAAK,SAAQ;AACjB,QAAI,KAAI;AAGR,QAAI,eAAe;AACnB,QAAI,CAAC,QAAQ,IAAI,OAAO;AACtB,qBAAe,MAAM,OAAO,QAAQ,EAAC,SAAS,yBAAyB,SAAS,KAAI,CAAC;IACvF;AAEA,QAAI,cAAc;AAEhB,aAAQ,MAAM,YAAY,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAM;IACjE,OAAO;AAEL,UAAI,KAAI;AACR,UAAI,KAAK,uDAAuD;AAChE,UAAI,KAAK,8BAA8B,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,GAAG;AAClF,aAAO;IACT;EACF,OAAO;AACL,QAAI,KAAK,MAAM,wCAAmC,CAAC;AACnD,WAAO;EACT;AACF;;;AChEA,SAASC,SAAQ,MAAU;AACzB,SAAO,KAAK,OAAO,SAAS;IAC1B,MAAM;IACN,SAAS,QAAQ,IAAI,QAAQ,OAAO;IACpC,aAAa;GACd;AACH;AAGA,eAAeC,SAAQ,EAAC,OAAAC,OAAK,GAAqB;AAChD,QAAM,MAAM,MAAM,UAAU,IAAG;AAC/B,QAAM,eAAeA,SAAQ,aAAa;AAC1C,QAAM,WAAW,IAAI,SAAQ;AAC7B,UAAQ,WAAW,MAAM,aAAa,QAAQ;AAChD;AAGO,IAAM,iBAA6C;EACxD,SAAAF;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;ACpBZ,SAASE,SAAQ,MAAU;AACzB,SAAO,KACJ,OAAO,SAAS;IACf,MAAM;IACN,SAAS,QAAQ,IAAI,QAAQ,OAAO;IACpC,aAAa;GACd,EACA,WAAW,YAAY,EAAC,MAAM,SAAQ,CAAC;AAC5C;AAGA,eAAeC,SAAQ,EAAC,UAAU,OAAAC,OAAK,GAAqB;AAC1D,QAAM,MAAM,MAAM,UAAU,IAAG;AAC/B,QAAM,MAAM,YAAY,IAAI;AAC5B,QAAM,eAAeA,SAAQ,aAAa;AAC1C,QAAM,uBAAuB,IAAI,qBAAqB,GAAG;AACzD,UAAQ,WAAW,MAAM,aAAa,oBAAoB;AAC5D;AAGO,IAAM,gBAA4C;EACvD,SAAAF;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;ACjCZ,uBAAiB;AASjB,SAASE,SAAQ,MAAU;AACzB,SAAO,KACJ,OAAO,SAAS;IACf,MAAM;IACN,SAAS,QAAQ,IAAI,QAAQ,OAAO;IACpC,aAAa;GACd,EACA,WAAW,SAAS,EAAC,OAAO,MAAM,MAAM,UAAU,cAAc,KAAI,CAAC;AAC1E;AAGA,eAAeC,SAAQ,EAAC,OAAO,OAAAC,OAAK,GAAqB;AACvD,QAAM,gBAAgB,iBAAAC,QAAK,KACzB,MAAM,IAAI,CAAC,SAAS,KAAK,QAAQ,UAAU,OAAO,CAAC,GACnD,EAAC,WAAW,KAAI,CAAC;AAEnB,QAAM,eAAeD,SAAQ,aAAa;AAC1C,UAAQ,WAAW,MAAM,aAAa,aAAa;AACrD;AAGO,IAAM,cAA0C;EACrD,SAAAF;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;AC1BZ,SAASG,SAAQ,MAAU;AACzB,SAAO,KAAK,OAAO,SAAS;IAC1B,MAAM;IACN,SAAS,QAAQ,IAAI,QAAQ,OAAO;IACpC,aAAa;GACd;AACH;AAGA,eAAeC,SAAQ,EAAC,OAAAC,OAAK,GAAqB;AAChD,QAAM,MAAM,MAAM,UAAU,IAAG;AAC/B,QAAM,eAAeA,SAAQ,aAAa;AAC1C,QAAM,iBAAiB,IAAI,eAAc;AACzC,UAAQ,WAAW,MAAM,aAAa,cAAc;AACpD,MAAI,CAACA,UAAS,QAAQ,aAAa,GAAG;AACpC,QAAI,YAAY,CAAC,OAAO,GAAG,cAAc,CAAC;EAC5C;AACF;AAGO,IAAM,eAA2C;EACtD,SAAAF;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;AC5BN,SAAU,kBAAkB,YAAgB;AAChD,SAAO,WACJ,QAAQ,cAAc,EACtB,QAAQ,YAAY,EACpB,QAAQ,aAAa,EACrB,QAAQ,WAAW;AACxB;;;ACbA,SAAQ,iBAAgB;AACxB,SAAQ,WAAAE,gBAAc;;;ACDtB,SAAQ,WAAAC,UAAS,QAAAC,aAAW;AAC5B,SAAQ,iBAAAC,sBAAoB;AAC5B,SAAQ,YAAW;AAGb,IAAgB,cAAhB,MAA2B;EAQ/B,aAAa,cAAW;AACtB,WAAO,IAAI,QAAQ,CAACC,cAAW;AAC7B,YAAM,eAAe,KAAK,yBAAwB,GAAI;QAIpD,OAAO,CAAC,WAAW,GAAG,GAAG,KAAK;OAC/B;AACD,UAAI,gBAAuC;AAI3C,mBAAa,GACX,WACA,CAAC,kBAAmC,gBAAgB,aAAc;AAIpE,mBAAa,GAAG,QAAQ,MAAMA,UAAQ,aAAa,CAAC;IACtD,CAAC;EACH;;AAIF,SAAS,2BAAwB;AAK/B,QAAM,aAAaH,SAAQE,eAAc,YAAY,GAAG,CAAC;AACzD,SAAOD,MAAK,YAAY,kCAAkC;AAC5D;;;AD5BA,SAASG,UAAQ,MAAU;AACzB,SAAO,KAAK,WAAW,eAAe;IACpC,MAAM;IACN,WAAW;IACX,QAAQ,CAACC,UAAiBC,SAAQD,KAAI;IACtC,cAAc;GACf;AACH;AAGA,eAAeE,UAAQ,EAAC,YAAW,GAAiC;AAClE,MAAI;AACF,QAAI,CAAC,UAAU,WAAW,EAAE,YAAW,GAAI;AACzC,UAAI,MAAM,qDAAgD,aAAa;AACvE,cAAQ,KAAK,CAAC;IAChB;EACF,QAAE;AACA,QAAI,MAAM,yDAAoD,aAAa;AAC3E,YAAQ,KAAK,CAAC;EAChB;AAEA,QAAM,SAAS,MAAM,UAAS;AAC9B,2BAAyB,MAAM;AAE/B,QAAM,gBAAgB,MAAM,YAAY,YAAW;AAEnD,MAAI,kBAAkB,MAAM;AAC1B,QAAI,MAAM,uEAAkE;AAC5E,YAAQ,KAAK,CAAC;EAChB;AACA,MAAI,KAAK,MAAM,gCAA2B,CAAC;AAE3C,aAAW,EAAC,YAAY,KAAI,KAAK,eAAe;AAC9C,UAAM,aAAa,MAAM,QAAQ,CAAC,QAAQ,SAAS,UAAU,CAAC;AAC9D,UAAM,aAAa,MAAM,QAAQ,CAAC,QAAQ,SAAS,aAAa,IAAI,CAAC;EACvE;AAEA,MAAI,KAAK,MAAM,uDAAkD,CAAC;AACpE;AAGO,IAAM,4BAAoE;EAC/E,SAAAH;EACA,SAAAG;EACA,SAAS;EACT,UACE;;;;AE9DJ,SAAQ,eAAAC,cAAa,cAAAC,mBAAiB;AACtC,SAAQ,QAAAC,aAAW;;;ACDnB,SAAQ,UAAU,iBAAgB;AAIlC,IAAM,QAAQ,QAAQ,IAAI;AAE1B,IAAM,aAAa;AAEnB,IAAM,aAAa;AAEb,IAAO,UAAP,MAAc;EAWlB,IAAY,KAAK,MAAwB;AACvC,SAAK,QAAQ,QAAQ,KAAK;AAC1B,SAAK,WAAW,KAAK,wBAAuB,GAAI,IAAI;EACtD;EACA,IAAY,OAAI;AACd,WAAO,KAAK;EACd;EAIA,YAAY,MAAa;AAnBjB,SAAA,YAAY;AAEZ,SAAA,aAAa,YAAY,MAAM,KAAK,WAAU,GAAI,QAAQ,OAAO,GAAG;AAEpE,SAAA,oBAAoB,CAAC,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,QAAG;AAErE,SAAA,+BAA+B;AAE/B,SAAA,QAAgB;AAYtB,SAAK,WAAU;AACf,SAAK,OAAO;EACd;EAGA,OAAO,MAAY;AACjB,SAAK,OAAO;EACd;EAGA,QAAQ,MAAY;AAClB,SAAK,UAAU,MAAM,QAAG,GAAG,IAAI;EACjC;EAGA,QAAQ,MAAY;AAClB,SAAK,UAAU,IAAI,QAAG,GAAG,IAAI;EAC/B;EAGA,WAAQ;AACN,SAAK,UAAU,IAAI,KAAK,IAAI;EAC9B;EAMQ,UAAU,QAAgB,MAAY;AAC5C,QAAI,KAAK,WAAW;AAClB;IACF;AACA,kBAAc,KAAK,UAAU;AAC7B,SAAK,WAAW,QAAQ,IAAI;AAC5B,YAAQ,OAAO,MAAM,IAAI;AACzB,SAAK,WAAU;AACf,SAAK,YAAY;EACnB;EAGQ,0BAAuB;AAC7B,SAAK,gCACF,KAAK,+BAA+B,KAAK,KAAK,kBAAkB;AACnE,WAAO,KAAK,kBAAkB,KAAK;EACrC;EAMQ,WAAW,SAAS,KAAK,wBAAuB,GAAI,MAAa;AACvE,QAAI,OAAO;AACT,WAAK,iBAAiB,IAAI;IAC5B,OAAO;AACL,WAAK,oBAAoB,QAAQ,IAAI;IACvC;EACF;EAGQ,oBAAoB,QAAgB,MAAa;AACvD,aAAS,QAAQ,QAAQ,CAAC;AAC1B,YAAQ,OAAO,MAAM,IAAI,UAAU,QAAQ,KAAK,MAAM;AAEtD,cAAU,QAAQ,QAAQ,CAAC;EAC7B;EAGQ,iBAAiB,MAAa;AACpC,QAAI,MAAM;AACR,cAAQ,OAAO,MAAM;EAAK,OAAO;AACjC;IACF;AACA,YAAQ,OAAO,MAAM,GAAG;EAC1B;EAGQ,aAAU;AAChB,QAAI,CAAC,OAAO;AACV,cAAQ,OAAO,MAAM,UAAU;IACjC;EACF;EAGQ,aAAU;AAChB,QAAI,CAAC,OAAO;AACV,cAAQ,OAAO,MAAM,UAAU;IACjC;EACF;;;;ACrHF,mBAAkB;AAFlB,YAAYC,SAAQ;AACpB,YAAYC,WAAU;;;ACGhB,SAAU,qBACd,OACA,WAAY;AAEZ,SAAO,iBAAiB;AAC1B;;;ADHA,kBAAiC;AADjC,OAAO,cAAc;AAsBd,IAAM,kBAAsC;EACjD,EAAC,UAAU,WAAW,OAAO,CAAC,MAAM,SAAS,MAAM,CAAC,EAAE,OAAM;EAC5D,EAAC,UAAU,eAAe,OAAO,CAAC,UAAM,YAAAC,OAAU,CAAC,EAAC;;AAYtD,eAAsB,4BAA4B,YAAkB;AAClE,MAAIC;AAEJ,QAAM,qBAAqB,MAAM,sCAAsC,UAAU;AACjF,MAAI,uBAAuB,MAAM;AAC/B,IAAAA,QAAO,EAAC,QAAQ,QAAQ,MAAM,CAAC,kBAAkB,EAAC;EACpD;AAEA,MAAI,CAACA,OAAM;AACT,UAAM,qBAAqB,MAAM,iCAAgC;AACjE,QAAI,uBAAuB,MAAM;AAC/B,MAAAA,QAAO,EAAC,QAAQ,oBAAoB,MAAM,CAAA,EAAE;IAC9C;EACF;AAEA,EAAAA,UAAAA,QAAS,EAAC,QAAQ,QAAQ,MAAM,CAAA,EAAE;AAElC,QAAM,cAAc,MAAM,eAAeA,KAAI;AAC7C,MAAI,eAAe,OAAO,YAAY,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG;AACxD,IAAAA,MAAK,KAAK,KAAK,UAAU;AACzB,IAAAA,MAAK,SAAS;EAChB;AAEA,SAAOA;AACT;AAGA,eAAsB,mCAAgC;AACpD,QAAM,mBAAmB,MAAM,oBAAmB;AAClD,MAAI,qBAAqB,MAAM;AAC7B,WAAO;EACT;AACA,MAAI;AACF,WAAO,UAAM,aAAAC,SAAM,QAAQ,EAAC,MAAM,iBAAgB,CAAC;EACrD,SAAS,GAAP;AACA,QAAI,MAAM,kEAAkE,CAAC;AAC7E,WAAO;EACT;AACF;AAGA,eAAe,sBAAmB;AAChC,MAAI;AACF,YAAQ,MAAM,aAAa,MAAM,OAAO,CAAC,OAAO,UAAU,GAAG,EAAC,MAAM,SAAQ,CAAC,GAAG,OAAO,KAAI;EAC7F,SAAS,GAAP;AACA,QAAI,MAAM,2DAA2D,CAAC;AACtE,WAAO;EACT;AACF;AAGA,eAAe,sCAAsC,YAAkB;AACrE,QAAM,SAAS,MAAM,8BAA8B,UAAU;AAC7D,MAAI,WAAW,MAAM;AACnB,WAAO;EACT;AAEA,QAAM,WAAW,OAAO,gBAAgB,OAAO;AAC/C,MAAI,aAAa,QAAW;AAC1B,WAAO;EACT;AAEA,SAAY,cAAQ,YAAY,QAAQ;AAC1C;AAEA,eAAe,eAAeD,OAAqB;AACjD,MAAI;AACF,YACE,MAAM,aAAa,MAAMA,MAAK,QAAQ,CAAC,GAAGA,MAAK,MAAM,WAAW,GAAG,EAAC,MAAM,SAAQ,CAAC,GACnF,OAAO,KAAI;EACf,SAAS,GAAP;AACA,QAAI,MAAM,4CAA4C,CAAC;AACvD,WAAO;EACT;AACF;AAGA,eAAe,8BACb,YAAkB;AAElB,QAAM,QAAQ,MAAM,QAAQ,IAC1B,gBAAgB,IAAI,OAAO,WAAW;IACpC;IACA,SAAS,MAAM,mBAAwB,WAAK,YAAY,MAAM,QAAQ,CAAC;IACvE,CAAC;AAEL,QAAM,SAAS,MAAM,KAAK,CAAC,UAAU,MAAM,YAAY,IAAI;AAC3D,MAAI,WAAW,QAAW;AACxB,WAAO;EACT;AAEA,MAAI;AACF,WAAO,OAAO,MAAM,MAAM,OAAO,OAAQ;EAC3C,SAAS,GAAP;AACA,QAAI,MAAM,uDAAuD,OAAO,MAAM,YAAY;AAC1F,QAAI,MAAM,UAAU,CAAC;AACrB,WAAO;EACT;AACF;AAMA,eAAe,mBAAmB,UAAgB;AAChD,MAAI;AACF,WAAO,MAAS,aAAS,SAAS,UAAU,MAAM;EACpD,SAAS,OAAP;AACA,QAAI,qBAAqB,OAAO,KAAK,KAAK,MAAM,SAAS,UAAU;AACjE,aAAO;IACT;AACA,UAAM;EACR;AACF;;;AF9IA,eAAeE,UAAQ,MAAU;AAC/B,SAAO,qBAAqB,IAAI;AAClC;AAGA,IAAM,iBAAiB;EACrB,GAAG,QAAQ;EACX,kBAAkB;;AAIpB,IAAM,eAAe;EACnB,GAAG,QAAQ;EACX,OAAO;;AAGT,eAAeC,YAAO;AAUpB,QAAM,gBAAiB,MAAM,iCAAgC,KAAO;AAEpE,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAE5C,QAAM,iBAAiB,IAAI;AAE3B,QAAM,sBAAsB,IAAI,2BAA0B;AAE1D,MAAI,IAAI,sBAAqB,GAAI;AAC/B,QAAI,MAAM,kFAAkF;AAC5F,YAAQ,WAAW;AACnB;EACF;AAGA,QAAM,UAAU,IAAI,QAAQ,EAAE;AAC9B,MAAI;AACF,YAAQ,OAAO,sDAAsD,iBAAiB;AACtF,QAAI,IAAI,CAAC,SAAS,MAAM,IAAI,cAAa,GAAI,cAAc,CAAC;AAC5D,QAAI,SAAS,cAAc,KAAK;AAEhC,YAAQ,OAAO,iCAAiC;AAChD,UAAM,kBAAkBC,MAAK,IAAI,SAAS,gBAAgB;AAC1D,IAAAC,aAAY,eAAe,EAAE,QAAQ,CAAC,SAASC,YAAWF,MAAK,iBAAiB,IAAI,CAAC,CAAC;AAEtF,YAAQ,OAAO,wBAAwB;AACvC,iBAAa,UAAU,eAAe,CAAC,YAAY,eAAe,QAAQ,CAAC;AAE3E,YAAQ,OAAO,6CAA6C;AAE5D,UAAM,iBAAiB,aAAa,UAAU,eAAe,CAAC,IAAI,GAAG;MACnE,KAAK;KACN,EAAE,OAAO,KAAI;AAEd,QAAI,IAAI,IAAI,CAAC,UAAU,aAAa,CAAC,EAAE,OAAO,WAAW,GAAG;AAC1D,cAAQ,SAAQ;AAChB,UAAI,MAAM,yBAAyB;AACnC,cAAQ,WAAW;AACnB;IACF;AAEA,UAAM,QAAQ,0BAA0B;AAExC,UAAM,OAAO,yCAAyC;AAEtD,UAAM,gBAAgB,GAAG;;EAAY;AAErC,UAAM,aAAa,gBAAgB;AAEnC,UAAM,WAAW,MAAM,IAAI,2BAA0B;AAErD,UAAM,EAAC,OAAO,WAAU,IAAI;AAE5B,YAAQ,OAAO,kDAAkD;AACjE,QAAI,IAAI,CAAC,OAAO,qBAAqB,SAAS,CAAC;AAC/C,QAAI,IAAI,CAAC,UAAU,MAAM,eAAe,MAAM,aAAa,GAAG,EAAC,KAAK,aAAY,CAAC;AAEjF,YAAQ,OAAO,mCAAmC;AAClD,QAAI,IAAI;MACN;MACA;MACA,oBAAoB,UAAU,IAAI,WAAW;MAC7C;MACA,mBAAmB;KACpB;AAED,YAAQ,OAAO,gCAAgC;AAC/C,UAAM,EAAC,OAAM,KACX,MAAM,IAAI,OAAO,MAAM,OAAO;MAC5B,GAAG,IAAI;MACP;MACA;MACA,MAAM;MACN,MAAM,GAAG,cAAc;KACxB,GACD;AAEF,YAAQ,SAAQ;AAChB,QAAI,KAAK,eAAe,6BAA6B,gBAAgB;EACvE,SAAS,GAAP;AACA,YAAQ,SAAQ;AAChB,QAAI,MAAM,mCAAmC;AAC7C,QAAI,MAAM,CAAC;AACX,YAAQ,WAAW;AACnB,QAAI,SAAS,qBAAqB,IAAI;EACxC;AACE,QAAI,SAAS,qBAAqB,IAAI;EACxC;AACF;AAGO,IAAM,0BAAyC;EACpD,SAAAF;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;AIrIZ,SAAQ,QAAAI,aAAW;AAGnB,IAAI,YAAgC;AAE9B,SAAU,cAAW;AACzB,MAAI,cAAc,QAAW;AAC3B,gBAAY,QAAQ,IAAI,SAASC,MAAK,4BAA2B,GAAI,yBAAyB;EAChG;AAEA,SAAO;AACT;;;ACNA,eAAsB,6BAA0B;AAC9C,QAAM,UAAU,IAAI,QAAQ,yCAAyC;AAGrE,QAAM,SAAS,MAAM,aAAa,MAChC,YAAW,GACX;IACE;IACA;IACA;IACA;KAEF,EAAC,MAAM,SAAQ,CAAC;AAGlB,MAAI,OAAO,WAAW,GAAG;AACvB,YAAQ,SAAQ;AAChB,UAAM,MAAM,qBAAqB,OAAO,QAAQ;EAClD;AAEA,QAAM,UAAU,OAAO,OAAO,KAAI,EAAG,MAAM,OAAO;AAElD,MAAI,MAAM,MAAM,oBAAoB;AACpC,UAAQ,QAAQ,CAAC,WAAW,IAAI,MAAM,MAAM,CAAC;AAC7C,MAAI,MAAM,SAAQ;AAElB,UAAQ,OAAO,SAAS,QAAQ,yCAAyC;AAGzE,QAAM,aAAa,MAAM,YAAW,GAAI,CAAC,SAAS,QAAQ,KAAK,GAAG,CAAC,GAAG,EAAC,MAAM,SAAQ,CAAC;AAGtF,WAAS,MAAM,GAAG,MAAM,QAAQ,QAAQ,OAAO;AAC7C,UAAM,SAAS,QAAQ;AACvB,YAAQ,OAAO,GAAG,MAAM,QAAQ,QAAQ,0BAA0B;AAClE,UAAM,eAAe,MAAM,aAAa,MAAM,YAAW,GAAI,CAAC,OAAO,MAAM,GAAG,EAAC,MAAM,SAAQ,CAAC;AAC9F,QAAI,aAAa,WAAW,GAAG;AAC7B,cAAQ,SAAQ;AAChB,YAAM,MAAM,oCAAoC,SAAS;IAC3D;EACF;AAEA,UAAQ,SAAQ;AAChB,MAAI,KAAK,IAAI,MAAM,QAAG,mCAAmC,QAAQ,iBAAiB;AACpF;;;AC9CA,eAAeC,UAAQ,MAAU;AAC/B,SAAO;AACT;AACA,eAAeC,YAAO;AACpB,QAAM,2BAA0B;AAClC;AAGO,IAAM,uBAAsC;EACjD,SAAAD;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;ACTN,SAAU,gBAAgB,YAAgB;AAC9C,SAAO,WACJ,KAAI,EACJ,OAAM,EACN,QAAQ,yBAAyB,EACjC,QAAQ,uBAAuB,EAC/B,QAAQ,oBAAoB;AACjC;;;ACZA,IAAAC,eAAiC;AAFjC,SAAQ,gBAAAC,qBAAmB;AAC3B,SAAQ,WAAAC,gBAAc;AAMtB,eAAsB,SAAM;AAC1B,QAAM,MAAM,MAAM,UAAU,IAAG;AAE/B,QAAM,yBAAyBC,SAAQ,IAAI,SAAS,2BAA2B;AAG/E,QAAM,YAAYC,cAAa,wBAAwB,MAAM;AAE7D,MAAI;AAEF,qBAAAC,OAAU,SAAS;AACnB,QAAI,KAAK,MAAM,iCAA4B,CAAC;EAC9C,SAAS,GAAP;AACA,QAAI,MAAM,6BAA6B;AACvC,QAAI,MAAM,CAAC;AACX,YAAQ,WAAW;EACrB;AACF;;;ACpBM,SAAU,iBAAiB,YAAgB;AAC/C,SAAO,WACJ,KAAI,EACJ,OAAM,EACN,cAAa,EACb,QAAQ,UAAU,2BAA2B,CAAA,GAAI,MAAM,OAAM,CAAE;AACpE;;;ACTA,oBAAmB;;;ACCZ,IAAM,gBAAgB;AAMvB,SAAU,cAAc,GAAW,GAAS;AAChD,SAAO,EAAE,cAAc,GAAG,aAAa;AACzC;;;ADeA,eAAsB,sBACpB,MACA,eACA,YAAkB;AAElB,QAAM,EAAC,QAAO,IAAI,MAAM,wBAAwB,MAAM,UAAU;AAChE,QAAM,EAAC,aAAa,UAAU,KAAI,IAAI,MAAM,2BAA2B,aAAa;AAGpF,QAAM,YAAY,wBAAwB,QAAQ,KAAK;AACvD,QAAM,aAAa,cAAAC,QAAO,MAAM,SAAS,UAAU;AAKnD,MAAI,eAAe,MAAM;AACvB,UAAM,IAAI,yBAAyB,8BAA8B,QAAQ,eAAe;EAC1F;AAIA,MAAI,eAAe,GAAG,WAAW,SAAS,WAAW,WAAW;AAC9D,UAAM,IAAI,yBACR,oCAAoC,QAAQ,sDACV,WAAW,SAAS,WAAW,SAAS;EAE9E;AAEA,QAAM,QAAQ,IAAI,KAAI;AACtB,QAAM,mBAAmB,IAAI,KAAK,KAAK,GAAG,QAAQ,YAAY;AAC9D,QAAM,aAAa,yBAAyB,gBAAgB;AAK5D,MAAI,QAAQ,YAAY;AACtB,UAAM,iBAAiB,WAAW,mBAAmB,aAAa;AAClE,QAAI,KAAK,IAAI,gCAAgC,QAAQ,YAAY,iBAAiB,CAAC;AACnF,QAAI,KACF,OACE,gGACyC,CAC1C;AAEH,QAAI,MAAM,OAAO,QAAQ,EAAC,SAAS,gDAA+C,CAAC,GAAG;AACpF;IACF;AACA,UAAM,IAAI,yBACR,kCAAkC,QAAQ,YAAY,0DACV,oBAAoB;EAEpE;AACF;;;AEtCA,eAAsB,4CACpB,EAAC,QAAQ,kBAAkB,MAAM,iBAAgB,GACjD,KACA,QAIE;AAEF,0BAAwB,MAAM;AAC9B,+BAA6B,MAAM;AAEnC,QAAM,iBAAiB,kBAAkB,OAAO,MAAM;AACtD,QAAM,OAA2B;IAC/B,OAAO,OAAO,OAAO;IACrB,MAAM,OAAO,OAAO;IACpB;IACA;;AAGF,QAAM,eAAoC;IACxC;MACE,OAAO,aAAa;MACpB,UAAU,MAAK;AAGb,YAAI,CAAC,KAAK,SAAS;AACjB,gBAAM,IAAI,wBACR,sCAAsC,6DAClB;QAExB;AACA,eAAO,CAAC,cAAc;MACxB;;IAEF;MACE,OAAO,aAAa;MACpB,UAAU,CAAC,uBAAsB;AAK/B,YAAI,wBAAuB,qDAAkB,aAAY;AACvD,iBAAO,CAAC,iBAAiB,UAAU;QACrC;AAEA,eAAO,CAAC,cAAc;MACxB;;IAEF;MACE,OAAO,aAAa;MACpB,UAAU,CAAC,uBAAsB;AAK/B,YAAI,uBAAuB,OAAO,YAAY;AAC5C,iBAAO,CAAC,OAAO,UAAU;QAC3B;AAEA,cAAM,WAAW,CAAC,gBAAgB,OAAO,UAAU;AAGnD,YAAI,qBAAqB,MAAM;AAC7B,mBAAS,KAAK,iBAAiB,UAAU;QAC3C;AAKA,YAAI,qBAAqB,MAAM;AAC7B,mBAAS,KAAK,iBAAiB,UAAU;QAC3C;AACA,eAAO;MACT;;IAEF;MACE,OAAO,aAAa;MACpB,UAAU,CAAC,uBAAsB;AAG/B,YAAI,qBAAqB,MAAM;AAC7B,gBAAM,IAAI,wBACR,2GAC0D;QAE9D;AAKA,YAAI,uBAAuB,iBAAiB,YAAY;AACtD,iBAAO,CAAC,iBAAiB,UAAU;QACrC;AAEA,eAAO,CAAC,gBAAgB,iBAAiB,UAAU;MACrD;;IAEF;MACE,OAAO,aAAa;MACpB,UAAU,CAAC,uBAAsB;AAC/B,YAAI,gBAAgB,kBAAkB,KAAK,uBAAuB,gBAAgB;AAChF,gBAAM,IAAI,yBACR,mEAAmE;QAEvE;AACA,eAAO,CAAC,kBAAkB;MAC5B;;;AAMJ,MAAI;AACF,6BAAyB,MAAM;AAC/B,iBAAa,KAAK;MAKhB,OAAO,aAAa;MACpB,UAAU,OAAO,uBAAsB;AACrC,YAAI,CAAC,gBAAgB,kBAAkB,GAAG;AACxC,gBAAM,IAAI,yBACR,0EACc,qBAAqB;QAEvC;AACA,YAAI,uBAAuB,OAAO,YAAY;AAC5C,gBAAM,IAAI,yBACR,kIAC0E;QAE9E;AACA,YAAI,qBAAqB,QAAQ,uBAAuB,iBAAiB,YAAY;AACnF,gBAAM,IAAI,yBACR,0JAC+E;QAEnF;AAEA,iCAAyB,MAAM;AAC/B,cAAM,sBAAsB,MAAM,OAAO,SAAS,kBAAkB;AACpE,eAAO,CAAC,kBAAkB;MAC5B;KACD;EACH,SAAS,KAAP;AACA,QAAI,eAAe,uBAAuB;AACxC,UAAI,MAAM,oEAAoE;AAC9E,UAAI,MAAM,qEAAqE;IACjF,OAAO;AACL,YAAM;IACR;EACF;AAEA,SAAO;AACT;;;AC9JM,IAAO,2BAAP,MAA+B;EACnC,YAAmB,gBAAsB;AAAtB,SAAA,iBAAA;EAAyB;;AAOxC,IAAO,0BAAP,MAA8B;EAClC,YAAmB,gBAAsB;AAAtB,SAAA,iBAAA;EAAyB;;AAS9C,eAAsB,2CACpB,qBACA,cAAiC;AAEjC,QAAM,UAA+B,CAAA;AAErC,aAAW,eAAe,qBAAqB;AAC7C,UAAMC,SAAQ,aAAa,KAAK,CAAC,EAAC,MAAK,MAAM,MAAM,SAAS,WAAW;AACvE,QAAIA,WAAU,QAAW;AACvB,cAAQ,KAAKA,MAAK;IACpB;EACF;AACA,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,QAAQ;EACjB;AACA,MAAI,QAAQ,WAAW,GAAG;AACxB,UAAM,IAAI,wBACR,kEAAkE;EAEtE;AACA,QAAM,IAAI,wBACR,yEAAyE;AAE7E;AAQA,eAAsB,wCACpB,qBACA,QACA,QACA,qBACA,oBAA0B;AAE1B,QAAM,eAAe,MAAM,4CACzB,qBACA,QACA,MAAM;AAER,QAAM,iBAAiB,MAAM,2CAC3B,qBACA,YAAY;AAGd,SAAO;IACL,UAAU,MAAM,0BAA0B,gBAAgB,kBAAkB;IAC5E,OAAO,eAAe;;AAE1B;AAQA,eAAsB,0BACpB,aACA,oBAA0B;AAE1B,SAAO,OAAO,YAAY,aAAa,aACnC,MAAM,YAAY,SAAS,kBAAkB,IAC7C,MAAM,YAAY;AACxB;;;ACjHA,eAAe,uBACb,UACA,QAA2E;AAG3E,QAAM,EAAC,OAAO,MAAM,KAAI,IAAI,OAAO;AAEnC,QAAM,MAAM,MAAM,UAAU,IAAG;AAG/B,QAAM,UAAU,MAAM,IAAI,OAAO,MAAM,IAAI,EAAC,OAAO,MAAM,aAAa,SAAQ,CAAC,GAAG;AAElF,QAAM,SAAS,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI;AAE9C,QAAM,qBAAqB,OAAO,KAAK;AAEvC,QAAM,sBAAsB,MAAM,oBAAoB,MAAM;IAC1D,MAAM;IACN;IACA,gBAAgB,kBAAkB,OAAO,MAAM;IAC/C,KAAK,IAAI;GACV;AAID,SAAO,wCACL,qBACA,IAAI,QACJ,QACA,QACA,kBAAkB;AAEtB;AAEA,eAAsB,yBAAyB,UAAgB;AAC7D,QAAM,SAAS,MAAM,UAAS;AAC9B,0BAAwB,MAAM;AAC9B,+BAA6B,MAAM;AAEnC,MAAI,OAAO,YAAY,oBAAoB;AACzC,QAAI,KAAK,sEAAsE;AAC/E,QAAI,KAAK,OAAO,6BAA6B,OAAO,OAAO,gBAAgB;AAC3E;EACF;AAEA,QAAM,SAAS,MAAM,uBAAuB,UAAU,MAAM;AAC5D,MAAI,KAAK,sCAAsC,OAAO,MAAM,MAAM;AAClE,MAAI,KAAK,MAAM,OAAO,2BAA2B;AACjD,SAAO,SAAS,QAAQ,CAAC,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC;AACvD,MAAI,KAAK,SAAQ;AACnB;;;ACjDA,SAASC,UAAQ,MAAU;AACzB,SAAO,KAAK,WAAW,MAAM;IAC3B,aAAa;IACb,MAAM;IACN,cAAc;GACf;AACH;AAGA,eAAeC,UAAQ,EAAC,GAAE,GAAwC;AAChE,QAAM,yBAAyB,EAAE;AACnC;AAGO,IAAM,4BAA2E;EACtF,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;AClCZ,SAAQ,WAAAE,UAAS,QAAAC,aAAW;;;ACO5B,IAAAC,2BAAoC;;;ACApC,IAAAC,2BAA4B;AAO5B,eAAsB,MACpB,UACA,UACA,KAA2B;AAlB7B,MAAAC;AAqBE,QAAM,EAAC,OAAO,KAAI,IAAI,IAAI;AAE1B,QAAM,eAAW,iCACf;IACE,SAAS;IACT,QAAQ;IACR,OAAO;KAET;IACE,gBAAY,iCACV,EAAC,OAAO,UAAU,MAAM,QAAO,GAC/B;MACE,iBAAa,iCAAO,EAAC,QAAQ,UAAS,GAAG,QAAQ;KAClD;GAEJ;AAGH,MAAI;AACF,UAAM,SAAS,MAAM,IAAI,OAAO,QAAQ,UAAU,EAAC,QAAQ,UAAU,OAAO,KAAI,CAAC;AACjF,WAAO,OAAO,WAAW;EAC3B,SAAS,GAAP;AAGA,QAAI,aAAa,0BAAwBA,MAAA,EAAE,WAAF,gBAAAA,IAAU,MAAM,CAACC,OAAMA,GAAE,SAAS,eAAc;AACvF,aAAO;IACT;AACA,UAAM;EACR;AACF;AAGA,eAAsB,cAAwB,UAAoB,KAA2B;AAE3F,QAAM,EAAC,OAAO,KAAI,IAAI,IAAI;AAE1B,QAAM,gBAAY,iCAChB;IACE,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;KAET;IACE,gBAAY,iCACV,EAAC,OAAO,UAAU,MAAM,QAAO,GAC/B;MACE,kBAAc,iCACZ;QACE,OAAO;QACP,OAAO;QACP,QAAQ;SAEV;QACE,OAAO,CAAC,QAAQ;QAChB,UAAU;UACR,aAAa,+BAAM;UACnB,WAAW,+BAAM;;OAEpB;KAEJ;GAEJ;AAGH,MAAI;AAEJ,MAAI,cAAc;AAElB,QAAM,MAAuB,CAAA;AAG7B,SAAO,aAAa;AAClB,UAAM,cAAc;MAClB,OAAO,UAAU;MACjB,OAAO;MACP;MACA;;AAEF,UAAM,UAAW,MAAM,IAAI,OAAO,QAAQ,WAAW,WAAW;AAChE,QAAI,KAAK,GAAG,QAAQ,WAAW,aAAa,KAAK;AACjD,kBAAc,QAAQ,WAAW,aAAa,SAAS;AACvD,aAAS,QAAQ,WAAW,aAAa,SAAS;EACpD;AACA,SAAO;AACT;AAGA,eAAsB,WACpB,YACA,UACA,KAA2B;AAG3B,QAAM,EAAC,OAAO,KAAI,IAAI,IAAI;AAE1B,QAAM,gBAAY,iCAChB;IACE,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;KAET;IACE,gBAAY,iCACV,EAAC,OAAO,UAAU,MAAM,QAAO,GAC/B;MACE,iBAAa,iCACX;QACE,QAAQ;SAEV;QACE,WAAO,iCACL;UACE,OAAO;UACP,OAAO;WAET;UACE,OAAO,CAAC,UAAU;UAClB,UAAU;YACR,aAAa,+BAAM;YACnB,WAAW,+BAAM;;SAEpB;OAEJ;KAEJ;GAEJ;AAGH,MAAI;AAEJ,MAAI,cAAc;AAElB,QAAM,QAA6B,CAAA;AAGnC,SAAO,aAAa;AAClB,UAAM,cAAc;MAClB,OAAO,UAAU;MACjB,OAAO;MACP;MACA;;AAEF,UAAM,UAAU,MAAM,IAAI,OAAO,QAAQ,WAAW,WAAW;AAC/D,UAAM,KAAK,GAAG,QAAQ,WAAW,YAAY,MAAM,KAAK;AACxD,kBAAc,QAAQ,WAAW,YAAY,MAAM,SAAS;AAC5D,aAAS,QAAQ,WAAW,YAAY,MAAM,SAAS;EACzD;AACA,SAAO;AACT;AAGA,eAAsB,cACpB,gBACA,UACA,KAA2B;AAG3B,QAAM,EAAC,OAAO,KAAI,IAAI,IAAI;AAE1B,QAAM,gBAAY,iCAChB;IACE,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;KAET;IACE,gBAAY,iCACV,EAAC,OAAO,UAAU,MAAM,QAAO,GAC/B;MACE,iBAAa,iCACX;QACE,QAAQ;SAEV;QACE,cAAU,iCACR;UACE,OAAO;UACP,OAAO;WAET;UACE,OAAO,CAAC,cAAc;UACtB,UAAU;YACR,aAAa,+BAAM;YACnB,WAAW,+BAAM;;SAEpB;OAEJ;KAEJ;GAEJ;AAGH,MAAI;AAEJ,MAAI,cAAc;AAElB,QAAM,WAAoC,CAAA;AAG1C,SAAO,aAAa;AAClB,UAAM,cAAc;MAClB,OAAO,UAAU;MACjB,OAAO;MACP;MACA;;AAEF,UAAM,UAAU,MAAM,IAAI,OAAO,QAAQ,WAAW,WAAW;AAC/D,aAAS,KAAK,GAAG,QAAQ,WAAW,YAAY,SAAS,KAAK;AAC9D,kBAAc,QAAQ,WAAW,YAAY,SAAS,SAAS;AAC/D,aAAS,QAAQ,WAAW,YAAY,SAAS,SAAS;EAC5D;AACA,SAAO;AACT;;;ADlOA,IAAM,YAAY;EAChB,QAAQ;IACN,OAAO,yBAAAC,MAAa;;EAEtB,OAAO,yBAAAA,MAAa;EACpB,qBAAqB,yBAAAA,MAAa;EAClC,iBAAiB,yBAAAA,MAAa;EAC9B,YAAY,yBAAAA,MAAa;EACzB,SAAS;IACP,MAAM,yBAAAA,MAAa;IACnB,YAAY;MACV,KAAK,yBAAAA,MAAa;MAClB,eAAe,yBAAAA,MAAa;;;EAGhC,YAAY,yBAAAA,MAAa;EACzB,SAAS;IACP,MAAM,yBAAAA,MAAa;IACnB,YAAY;MACV,KAAK,yBAAAA,MAAa;MAClB,eAAe,yBAAAA,MAAa;;;;AAM5B,IAAO,8BAAP,cAA2C,MAAK;;AAEhD,IAAO,2BAAP,cAAwC,MAAK;;AAE7C,IAAO,8BAAP,cAA2C,MAAK;;AAmBtD,eAAsB,2BACpB,UACA,OAAmC,CAAA,GAAE;AAGrC,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAI5C,MAAI,IAAI,sBAAqB,GAAI;AAC/B,UAAM,IAAI,4BAA4B,mDAAmD;EAC3F;AAMA,QAAM,2BAA2B,IAAI,2BAA0B;AAE/D,QAAM,KAAK,MAAM,MAAM,WAAW,UAAU,GAAG;AAE/C,MAAI,OAAO,MAAM;AACf,UAAM,IAAI,yBAAyB,iBAAiB,8BAA8B;EACpF;AAGA,QAAM,cAAc,GAAG,QAAQ;AAE/B,QAAM,cAAc,GAAG,GAAG,QAAQ,WAAW,iBAAiB;AAE9D,QAAM,aAAa,sBAAsB,GAAG,QAAQ,WAAW,KAAK,IAAI,WAAW;AAQnF,QAAM,qBAAqB,sBAAsB,eAAe,GAAG;AAInE,MAAI,CAAC,GAAG,uBAAuB,CAAC,GAAG,mBAAmB,CAAC,KAAK,+BAA+B;AACzF,UAAM,IAAI,4BAA4B,qDAAqD;EAC7F;AAEA,MAAI;AAEF,QAAI,IAAI,CAAC,SAAS,MAAM,YAAY,WAAW,CAAC;AAChD,QAAI,IAAI,CAAC,YAAY,YAAY,YAAY,CAAC;EAChD,SAAS,GAAP;AACA,QAAI,SAAS,0BAA0B,IAAI;AAC3C,UAAM;EACR;AAEA,SAAO;IAOL,gBAAgB,MAAW;AACzB,UAAI,IAAI,CAAC,QAAQ,YAAY,QAAQ,eAAe,kBAAkB,CAAC;AACvE,aAAO;IACT;IAEA,eAAe,MAAc;AAC3B,aAAO,IAAI,SAAS,0BAA0B,IAAI;IACpD;IACA,uBAAuB,YAAY,GAAG,QAAQ,WAAW,YAAY,eAAe;IACpF,sBAAsB,0DAA0D;IAChF,aAAa;;AAEjB;;;ADrIA,SAAQ,iBAAAC,sBAAoB;AAO5B,IAAM,mBAAmB,CAAC,eAAe;AAQzC,eAAsB,oBACpBC,SACA,QAA2C;AAE3C,QAAM,EAAC,IAAI,UAAU,OAAM,IAAIA;AAE/B,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAE5C,MAAI,YAAY,QAAQ;AACtB,QAAI,MAAM,6EAAwE;AAClF;EACF;AAGA,MAAI,IAAI,sBAAqB,GAAI;AAC/B,QAAI,MACF,+FAA0F;AAE5F;EACF;AAEA,QAAM,EAAC,eAAe,aAAa,sBAAqB,IAAI,MAAM,2BAA2B,IAAI;IAC/F,+BAA+B;GAChC;AAED,MAAI,CAAC,QAAQ;AACX,UAAM,aAAa,eAAe;AAGlC,QAAI,YAAY,wBAAwB,SAAS,UAAU;AACzD,UAAI,aAAa,MAAM;AACrB,YAAI,KAAK,+EAA+E;AACxF,YAAI,KACF,kFAAkF;AAEpF,YAAI,KAAK,gFAAgF;AACzF,YAAI,KAAK,gFAAgF;AACzF,YAAI,KAAK,sCAAsC;AAE/C,YACE,CAAE,MAAM,OAAO,QAAQ;UACrB,SAAS;UACT,SAAS;SACV,GACD;AACA,cAAI,KAAK,qBAAqB;AAC9B,gBAAM,cAAa;AACnB;QACF;MACF;AAEA,UAAI,IAAI,YAAY,CAAC,aAAa,MAAM,YAAY,UAAU,CAAC,EAAE,WAAW,GAAG;AAC7E,YAAI,MAAM,kCAA6B,qCAAqC;AAC5E;MACF;AAGA,UAAI,CAAC,iBAAiB,SAAS,YAAY,OAAO,KAAK,GAAG;AACxD,YAAI,KACF,WAAM,KAAK,YAAY,OAAO,KAAK,mDAAmD;AAExF,YAAI,KAAK,0BAA0B,KAAK,iBAAiB,KAAK,IAAI,CAAC,GAAG;AACtE,YACE,MAAM,OAAO,QAAQ;UACnB,SAAS;UACT,SAAS;SACV,GACD;AACA,cAAI,MAAM,4CAA4C;QACxD,OAAO;AACL,cAAI,KAAK,qBAAqB;AAC9B,gBAAM,cAAa;AACnB;QACF;MACF;AAEA,UAAI,KAAK,qDAAqD;AAC9D,UAAI,IAAI,CAAC,YAAY,MAAM,MAAM,UAAU,CAAC;AAE5C,UAAI,KAAK,yDAAyD;AAClE,UAAI,IAAI;QACN;QACA;QACA;QACA,GAAG,iCAAgC,KAAM;QACzC,GAAG,YAAY;OAChB;AAED,UAAI,KAAK,IAAI,MAAM,QAAG,+BAA+B,mBAAmB,YAAY;AACpF;IACF;AAEA,QAAI,KAAK,mDAAmD;CAAM;AAClE,QAAI,KAAK,2EAA2E;AACpF,QAAI,KAAK,OAAO,uBAAuB;EACzC,OAAO;AACL,UAAM,aAAa,MAAM,OAAO,YAAW,EAAG,WAAW,WAAW,GAAG,KAAK;AAC5E,UAAM,EAAC,OAAO,MAAM,KAAI,IAAI,OAAO;AACnC,UAAM,sBAAsB,MAAM,oBAAoB,MAAM;MAC1D,MAAM;MACN;MACA,gBAAgB,kBAAkB,OAAO,MAAM;MAC/C,KAAK,IAAI;KACV;AAED,QAAI,eAAe;AACnB,QAAI,aAAa;AAEjB,QACE,WAAW,WACX,WAAW,YACX,oBAAoB,OAAO,eAAe,QAC1C;AACA,mBAAa;AACb,qBAAe,oBAAoB,OAAO;IAC5C,WACE,WAAW,UACX,WAAW,UACX,WAAW,WACX,oBAAoB,KAAK,eAAe,QACxC;AACA,mBAAa;AACb,qBAAe,oBAAoB,KAAK;IAC1C,WACE,oBAAoB,qBACnB,WAAW,QAAQ,oBAAoB,iBAAiB,eAAe,SACxE;AACA,mBAAa;AACb,qBAAe,oBAAoB,iBAAiB;IACtD;AACA,QAAI,KAAK,cAAc;CAAwB;AAE/C,UAAM,aAAa,sBAAsB,YAAY,QAAQ,WAAW,KAAK,IAAI,WAAW;AAE5F,QAAI,IAAI,CAAC,YAAY,MAAM,YAAY,CAAC;AACxC,QAAI,IAAI,CAAC,SAAS,MAAM,YAAY,cAAc,cAAc,CAAC;AACjE,QAAI,IAAI,CAAC,YAAY,MAAM,UAAU,CAAC;AAEtC,QAAI,KAAK;CAAuB;AAEhC,QAAI;AACF,YAAM,gBAAgB,GAAG,YAAY,eAAe,YAAY;AAChE,UAAI,IAAI,CAAC,eAAe,aAAa,CAAC;AACtC,UAAI,KAAK,yEAAyE;IACpF,QAAE;AACA,UAAI,KACF,kGAAkG;AAEpG;IACF;AAEA;EACF;AACF;AAGA,SAAS,mCAAgC;AAKvC,QAAM,aAAaC,SAAQC,eAAc,YAAY,GAAG,CAAC;AACzD,SAAOC,MAAK,YAAY,yCAAyC;AACnE;;;AGxKA,SAASC,UAAQ,OAAW;AAC1B,SAAO,qBAAqB,KAAK,EAC9B,WAAW,MAAM;IAChB,MAAM;IACN,cAAc;IACd,UAAU;GACX,EACA,OAAO,YAAY;IAClB,MAAM;IACN,cAAc;IACd,UAAU;GACX,EACA,OAAO,UAAU;IAChB,MAAM;IACN,cAAc;IACd,UAAU;GACX;AACL;AAGA,eAAeC,UAAQ,EAAC,IAAI,UAAU,OAAM,GAAuC;AACjF,QAAM,SAAS,MAAM,UAAS;AAC9B,0BAAwB,MAAM;AAE9B,QAAM,oBAAoB,EAAC,IAAI,UAAU,OAAM,GAAG,MAAM;AAC1D;AAGO,IAAM,wBAAsE;EACjF,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;ACvCZ,IAAAE,uBAAkB;;;ACSlB,IAAAC,2BAAsE;AAKtE,IAAY;CAAZ,SAAYC,oBAAiB;AAC3B,EAAAA,mBAAAA,mBAAA,aAAA,KAAA;AACA,EAAAA,mBAAAA,mBAAA,aAAA,KAAA;AACA,EAAAA,mBAAAA,mBAAA,aAAA,KAAA;AACF,GAJY,sBAAA,oBAAiB,CAAA,EAAA;AAOtB,IAAMC,aAAY;EACvB,KAAK,yBAAAC,MAAa;EAClB,SAAS,yBAAAA,MAAa;EACtB,OAAO,yBAAAA,MAAa,OAAM;EAC1B,QAAQ,yBAAAA,MAAa;EACrB,WAAW,yBAAAA,MAAa,OAAM;EAC9B,WAAW,yBAAAA,MAAa;EAIxB,KAAC,gCAAM,kBAAkB,SAAS,QAAI,iCACpC,EAAC,OAAO,EAAC,GACT,EAAC,OAAO,CAAC,EAAC,QAAQ,EAAC,aAAS,iCAAO,EAAC,OAAO,EAAC,GAAG,EAAC,OAAO,CAAC,EAAC,KAAK,yBAAAA,MAAa,OAAM,CAAC,EAAC,CAAC,EAAC,EAAC,CAAC,EAAC,CAAC;EAI3F,aAAS,iCACP,EAAC,MAAM,IAAG,GACV;IACE,YAAY,yBAAAA,MAAa;IACzB,OAAO;MACL;QACE,QAAQ;UACN,KAAK,yBAAAA,MAAa;UAClB,cAAc,yBAAAA,MAAa;UAC3B,uBAAmB,mCAAS;YAC1B,OAAO,yBAAAA,MAAa,OAAM;YAC1B,cAAU,iCACR,EAAC,MAAM,IAAG,GACV;cACE,OAAO;oBACL,kCAAQ;kBACN,UAAU;oBACR,YAAY,yBAAAA,MAAa,SAAS,UAAU;oBAC5C,QAAQ,yBAAAA,MAAa,OAAM;oBAC3B,YAAY,yBAAAA,MAAa,OAAM;oBAC/B,MAAM,yBAAAA,MAAa;;kBAErB,eAAe;oBACb,YAAY,yBAAAA,MAAa,SAAS,eAAe;oBACjD,OAAO,yBAAAA,MAAa,OAAM;oBAC1B,SAAS,yBAAAA,MAAa;;iBAEzB;;aAEJ;WAEJ;UACD,SAAS,yBAAAA,MAAa;;;;GAI7B;EAEH,gBAAgB;IACd,YAAY,yBAAAA,MAAa;;EAE3B,aAAS,iCACP,EAAC,MAAM,KAAK,QAAQ,WAAU,GAC9B;IACE,OAAO;MACL;QACE,QAAQ;UACN,OAAO,yBAAAA,MAAa;;QAEtB,mBAAmB,yBAAAA,MAAa,OAAM;QACtC,UAAU,yBAAAA,MAAa;QACvB,QAAQ;UACN,KAAK,yBAAAA,MAAa;;;;GAIzB;EAEH,qBAAqB,yBAAAA,MAAa;EAClC,iBAAiB,yBAAAA,MAAa;EAC9B,YAAY,yBAAAA,MAAa;EACzB,SAAS;IACP,MAAM,yBAAAA,MAAa;IACnB,YAAY;MACV,KAAK,yBAAAA,MAAa;MAClB,eAAe,yBAAAA,MAAa;;;EAGhC,SAAS;IACP,MAAM,yBAAAA,MAAa;IACnB,YAAY;MACV,KAAK,yBAAAA,MAAa;MAClB,eAAe,yBAAAA,MAAa;;;EAGhC,aAAa,yBAAAA,MAAa;EAC1B,OAAO,yBAAAA,MAAa;EACpB,YAAQ,iCACN,EAAC,OAAO,IAAG,GACX;IACE,OAAO;MACL;QACE,MAAM,yBAAAA,MAAa;;;GAGxB;;AAME,IAAM,sBAAkB,iCAC7B,EAAC,OAAO,IAAG,GACX;EACE,MAAM,yBAAAA,MAAa;CACpB;AAKI,IAAM,yBAAqB,iCAChC,EAAC,OAAO,IAAG,GACX;EACE,QAAQ;IACN,OAAO,yBAAAA,MAAa;;EAEtB,mBAAmB,yBAAAA,MAAa,OAAM;EACtC,UAAU,yBAAAA,MAAa;CACxB;AAgBH,eAAsB,2BACpB,KACA,UAAgB;AAEhB,SAAO,MAAM,MAAMD,YAAW,UAAU,GAAG;AAC7C;AAGA,eAAsB,mCACpB,KAA2B;AAE3B,SAAO,MAAM,cAAcA,YAAW,GAAG;AAC3C;AAGA,eAAsB,gCACpB,KACA,UAAgB;AAEhB,SAAO,MAAM,WAAW,iBAAiB,UAAU,GAAG;AACxD;AAGA,eAAsB,mCACpB,KACA,UAAgB;AAEhB,SAAO,MAAM,cAAc,oBAAoB,UAAU,GAAG;AAC9D;AAMM,SAAU,0BACd,aAAkC;AAElC,QAAM,QAAQ,YAAY,QAAQ;AAElC,QAAM,EAAC,kBAAiB,IAAI,MAAM,MAAM,SAAS,GAAG;AAIpD,MAAI,CAAC,mBAAmB;AACtB,WAAO;MACL,gBAAgB,kBAAkB;MAClC,UAAU,CAAA;;EAEd;AAEA,QAAM,WAAW,kBAAkB,SAAS,MAAM,IAAI,CAAC,YAAW;AAChE,YAAQ,QAAQ,YAAY;MAC1B,KAAK;AACH,eAAO;UACL,MAAM;UACN,MAAM,QAAQ;UACd,QAAQ,0BAA0B,QAAQ,YAAY,QAAQ,MAAM;;MAExE,KAAK;AACH,eAAO;UACL,MAAM;UACN,MAAM,QAAQ;UACd,QAAQ,2BAA2B,QAAQ,KAAK;;IAEtD;EACF,CAAC;AAED,SAAO;IACL,gBAAgB,2BAA2B,kBAAkB,KAAK;IAClE;;AAEJ;AAGA,SAAS,2BAA2B,OAAkB;AACpD,UAAQ,OAAO;IACb,KAAK;IACL,KAAK;AACH,aAAO,kBAAkB;IAC3B,KAAK;AACH,aAAO,kBAAkB;IAC3B,KAAK;IACL,KAAK;AACH,aAAO,kBAAkB;EAC7B;AACF;AAGA,SAAS,0BACP,YACA,QAAwB;AAExB,MAAI,WAAW,aAAa;AAC1B,WAAO,kBAAkB;EAC3B;AAGA,UAAQ,YAAa;IACnB,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;AACH,aAAO,kBAAkB;IAC3B,KAAK;IACL,KAAK;AACH,aAAO,kBAAkB;EAC7B;AACF;;;ADpQA,IAAM,oBAAoB;AAG1B,eAAsB,0BAA0B,aAAqB,cAAoB;AAEvF,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAI5C,MAAI,IAAI,sBAAqB,GAAI;AAC/B,QAAI,MAAM,6EAA6E;AACvF,YAAQ,KAAK,CAAC;EAChB;AAGA,QAAM,2BAA2B,IAAI,2BAA0B;AAE/D,QAAM,cAAc,IAAI,yBAAI,EAAC,QAAQ,wCAAuC,CAAC;AAE7E,QAAM,YAA0C,CAAA;AAEhD,MAAI,KAAK,oCAAoC;AAE7C,QAAM,gBAAgB,MAAM,mCAAmC,GAAG;AAElE,MAAI,kBAAkB,MAAM;AAC1B,QAAI,MAAM,kDAAkD;AAC5D,YAAQ,KAAK,CAAC;EAChB;AAGA,QAAM,cAAc,cAAc,KAAK,CAAC,OAAO,GAAG,WAAW,WAAW;AACxE,MAAI,gBAAgB,QAAW;AAC7B,QAAI,MACF,oBAAoB,qEAAqE;AAE3F,QAAI,MAAM,4CAA4C;AACtD,YAAQ,KAAK,CAAC;EAChB;AAEA,QAAM,aAAa,cAAc,OAAO,CAAC,OAAM;AAC7C,WAEE,GAAG,QAAQ,SAAS,YAAY,QAAQ,QAExC,GAAG,cAAc,iBAEjB,IAAI,KAAK,GAAG,SAAS,EAAE,QAAO,KAAM;EAExC,CAAC;AACD,MAAI,KAAK,aAAa,cAAc,0BAA0B;AAC9D,MAAI,KAAK,YAAY,WAAW,8CAA8C,aAAa;AAG3F,MAAI,IAAI,CAAC,SAAS,MAAM,YAAY,QAAQ,WAAW,KAAK,YAAY,QAAQ,IAAI,CAAC;AACrF,MAAI,IAAI,CAAC,YAAY,MAAM,MAAM,mBAAmB,YAAY,CAAC;AAGjE,MAAI,IAAI,CAAC,SAAS,MAAM,YAAY,QAAQ,WAAW,KAAK,YAAY,QAAQ,IAAI,CAAC;AACrF,MAAI;AACF,QAAI,IAAI,CAAC,UAAU,YAAY,GAAG,EAAC,OAAO,SAAQ,CAAC;EACrD,SAAS,KAAP;AACA,QAAI,eAAe,iBAAiB;AAClC,UAAI,MAAM,0CAA0C;AACpD,UAAI,SAAS,0BAA0B,IAAI;AAC3C,cAAQ,KAAK,CAAC;IAChB;AACA,UAAM;EACR;AAGA,cAAY,MAAM,WAAW,QAAQ,CAAC;AAGtC,aAAW,MAAM,YAAY;AAE3B,QAAI,IAAI,CAAC,SAAS,MAAM,GAAG,QAAQ,WAAW,KAAK,GAAG,QAAQ,IAAI,CAAC;AACnE,QAAI,IAAI,CAAC,YAAY,MAAM,YAAY,YAAY,CAAC;AAEpD,QAAI;AACF,UAAI,IAAI,CAAC,UAAU,iBAAiB,GAAG,EAAC,OAAO,SAAQ,CAAC;IAC1D,SAAS,KAAP;AACA,UAAI,eAAe,iBAAiB;AAClC,kBAAU,KAAK,EAAE;MACnB,OAAO;AACL,cAAM;MACR;IACF;AAEA,QAAI,YAAY,CAAC,UAAU,SAAS,GAAG,EAAC,OAAO,SAAQ,CAAC;AAExD,gBAAY,UAAU,CAAC;EACzB;AAEA,cAAY,KAAI;AAChB,MAAI,KAAI;AACR,MAAI,KAAK,SAAS;AAElB,MAAI,SAAS,0BAA0B,IAAI;AAG3C,MAAI,UAAU,WAAW,GAAG;AAC1B,QAAI,KAAK,uCAAuC,qBAAqB;AACrE,YAAQ,KAAK,CAAC;EAChB;AAGA,MAAI,MAAM,MAAM,GAAG,UAAU,yCAAyC,qBAAqB;AAC3F,aAAW,MAAM,WAAW;AAC1B,QAAI,MAAM,QAAQ,GAAG,WAAW,GAAG,OAAO;EAC5C;AACA,MAAI,MAAM,SAAQ;AAClB,UAAQ,KAAK,CAAC;AAChB;;;AE9GA,SAASE,UAAQ,MAAU;AACzB,SAAO,qBAAqB,IAAI,EAC7B,OAAO,QAAQ;IACd,aAAa;IACb,oBAAoB;IACpB,QAAQ,CAAC,SAAU,OAAO,SAAS,WAAW,OAAO,KAAK,MAAM,IAAI;IACpE,SAAS,qBAAoB;GAC9B,EACA,WAAW,MAAM,EAAC,cAAc,MAAM,MAAM,SAAQ,CAAC;AAC1D;AAGA,eAAeC,UAAQ,EAAC,IAAI,KAAI,GAAyC;AAEvE,MAAI,MAAM,IAAI,GAAG;AACf,QAAI,MAAM,oDAAoD;AAC9D,YAAQ,KAAK,CAAC;EAChB;AACA,QAAM,0BAA0B,IAAI,IAAI;AAC1C;AAGA,SAAS,uBAAoB;AAC3B,QAAM,OAAO,IAAI,KAAI;AAErB,OAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAExB,OAAK,QAAQ,KAAK,QAAO,IAAK,EAAE;AAChC,SAAO,KAAK,QAAO;AACrB;AAGO,IAAM,oCAAoF;EAC/F,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;AC/CN,SAAU,8BAA8B,aAAwB;AACpE,SACE,IAAI,0EAA0E,IAC9E;oBAAuB,YAAY;;AAEvC;AAEM,SAAU,+CAA4C;AAC1D,SAAO;AACT;AAEM,SAAU,2BAA2B,aAAwB;AACjE,QAAM,2BAA2B,YAAY,eAC1C,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,GAAG,EAC3B,KAAK,IAAI;AACZ,SAAO,iBAAiB,YAAY;EAA8B;AACpE;;;AClBM,IAAO,sBAAP,cAAmC,MAAK;EAC5C,YAAY,SAAe;AACzB,UAAM,OAAO;EACf;;AAGI,IAAO,4BAAP,cAAyC,oBAAmB;EAChE,cAAA;AACE,UAAM,iDAAiD;EACzD;;AAGI,IAAO,mCAAP,cAAgD,oBAAmB;EACvE,YAAY,iBAAyB;AACnC,UACE,qHACuC,gBAAgB,KAAK,IAAI,IAAI;EAExE;;AAGI,IAAO,+BAAP,cAA4C,oBAAmB;EACnE,cAAA;AACE,UACE,oGACyB;EAE7B;;AAGI,IAAO,2BAAP,cAAwC,oBAAmB;EAC/D,YAAmB,gBAAwB;AACzC,UACE,qFACgB,eAAe,KAAK,IAAI,qDAAqD;AAH9E,SAAA,iBAAA;EAKnB;;AAGI,IAAO,6BAAP,cAA0C,oBAAmB;EACjE,cAAA;AACE,UAAM,2EAA2E;EACnF;;;;ACxCI,IAAO,+BAAP,MAAmC;EACvC,YAEkB,SAEA,gBAEA,mBAA0B;AAJ1B,SAAA,UAAA;AAEA,SAAA,iBAAA;AAEA,SAAA,oBAAA;EACf;;;;ACJL,IAAM,gBAA6C;EACjD,eAAe;EACf,kBAAkB;EAClB,iBAAiB;EACjB,kCAAkC;EAClC,iBAAiB;EACjB,wBAAwB;EACxB,wBAAwB;EACxB,sBAAsB;EACtB,6BAA6B;EAC7B,qBAAqB;;AAGjB,SAAU,kCACd,QAAmC;AAEnC,SAAO,EAAC,GAAG,eAAe,GAAG,OAAM;AACrC;AASM,IAAgB,wBAAhB,MAAqC;EACzC,YACY,MACA,cAAgD;AADhD,SAAA,OAAA;AACA,SAAA,eAAA;EACT;;AAOC,SAAU,4BACd,EAAC,MAAM,kBAAiB,GACxB,mBAAgG;AAEhG,SAAO;IACL,MAAM,IACJ,qBACG,MAA6B;AAEhC,UAAI,iBAAiB,OAAO;AAC1B,cAAME,cAAa,KAAK,kBAAiB,GACvC,MACA,CAAC,YAAY,IAAI,6BAA6B,SAAS,MAAM,iBAAiB,CAAC;AAEjF,YAAI;AACF,gBAAMA,YAAW,OAAO,GAAG,IAAI;QACjC,SAAS,GAAP;AACA,cAAI,aAAa,8BAA8B;AAC7C,mBAAO;UACT;AACA,gBAAM;QACR;MACF;AACA,aAAO;IACT;;AAEJ;;;AC5DO,IAAM,uCAAuC,4BAClD,EAAC,MAAM,oCAAoC,mBAAmB,KAAI,GAClE,MAAM,UAAU;AAGlB,IAAM,aAAN,cAAyB,sBAAqB;EAC5C,OACE,SACA,aACA,QACA,eACA,qBAA6B;AAE7B,QAAI,oBAAoB,SAAS,YAAY,yBAAyB,IAAI,GAAG;AAC3E,UAAI,MACF,oGACY;AAEd;IACF;AAIA,UAAM,iBAAiB,OAAO,2BAA2B,CAAA;AAEzD,cAAU,QAAQ,OAAO,CAAC,WAAW,CAAC,eAAe,SAAS,OAAO,KAAK,CAAC;AAC3E,UAAM,qBAAqB,QAAQ,KAAK,CAAC,WAAW,OAAO,gBAAgB,WAAW,CAAC;AACvF,UAAM,kBAAkB,QAAQ,KAAK,CAAC,WAAW,OAAO,aAAa,WAAW,CAAC;AACjF,UAAM,oBAAoB,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,MAAM;AACzE,YAAQ,aAAa;MACnB,KAAK,aAAa;AAChB;MACF,KAAK,aAAa;AAChB,YAAI,oBAAoB;AACtB,gBAAM,KAAK,+BAA+B,WAAW;QACvD;AACA;MACF,KAAK,aAAa;MAClB,KAAK,aAAa;MAClB,KAAK,aAAa;AAChB,YAAI,oBAAoB;AACtB,gBAAM,KAAK,+BAA+B,WAAW;QACvD;AACA,YAAI,mBAAmB;AACrB,gBAAM,KAAK,8BAA8B,WAAW;QACtD;AAIA,YAAI,mBAAmB,CAAC,cAAc,gBAAe,GAAI;AACvD,gBAAM,KAAK,4BAA4B,WAAW;QACpD;AACA;MACF;AACE,YAAI,KAAK,IAAI,gEAAgE,CAAC;AAC9E,YAAI,KAAK,IAAI,uDAAuD,YAAY,MAAM,CAAC;AACvF;IACJ;EACF;EAEQ,+BAA+B,OAAkB;AACvD,UAAM,UACJ,iCAAiC,MAAM;AAEzC,WAAO,KAAK,aAAa,OAAO;EAClC;EAEQ,4BAA4B,OAAkB;AACpD,UAAM,UACJ,iCAAiC,MAAM;AAGzC,WAAO,KAAK,aAAa,OAAO;EAClC;EAEQ,8BAA8B,OAAkB;AACtD,UAAM,UACJ,iCAAiC,MAAM;AAGzC,WAAO,KAAK,aAAa,OAAO;EAClC;;;;ACrFK,IAAM,+BAA+B,4BAC1C,EAAC,MAAM,iBAAiB,mBAAmB,MAAK,GAChD,MAAMC,WAAU;AAGlB,IAAMA,cAAN,cAAyB,sBAAqB;EAC5C,OAAO,SAAmB,QAAgB;AAExC,UAAM,WAAW,OAAO,SAAS,cAAc,yBAAyB,IAAI;AAE5E,UAAM,YAAY,QAAQ,KAAK,CAAC,WAAW,OAAO,gBAAgB,WAAW,CAAC;AAE9E,QAAI,CAAC,YAAY,WAAW;AAC1B,YAAM,KAAK,uCAAsC;IACnD;AAEA,QAAI,YAAY,CAAC,WAAW;AAC1B,YAAM,KAAK,wCAAuC;IACpD;EACF;EAEQ,yCAAsC;AAC5C,UAAM,UACJ,8JAEoB,cAAc,yBAAyB;AAC7D,WAAO,KAAK,aAAa,OAAO;EAClC;EAEQ,0CAAuC;AAC7C,UAAM,UACJ;AAEF,WAAO,KAAK,aAAa,OAAO;EAClC;;;;ACpCK,IAAM,6BAA6B,4BACxC,EAAC,MAAM,0BAA0B,mBAAmB,MAAK,GACzD,MAAMC,WAAU;AAGlB,IAAMA,cAAN,cAAyB,sBAAqB;EAC5C,OAAO,aAAkC;AACvC,UAAM,aAAa,YAAY,eAAe;AAC9C,QAAI,eAAe,GAAG;AACpB,YAAM,KAAK,aACT,sEAAsE,8BAA8B;IAExG;EACF;;;;AChBF,OAAOC,WAAU;AAgBV,IAAM,kCAAkC,4BAC7C,EAAC,MAAM,+BAA+B,mBAAmB,KAAI,GAC7D,MAAMC,WAAU;AAGlB,IAAMA,cAAN,cAAyB,sBAAqB;EAC5C,MAAM,OACJ,QAGA,UACA,WAAiC;AAEjC,QAAI;AACF,iCAA2B,MAAM;IACnC,QAAE;AACA,YAAM,KAAK,aAAa,gCAAgC;IAC1D;AAEA,UAAM,2BAA2B,MAAM,eAAe,OAAO,WAAW,SAAS;AACjF,QAAI,6BAA6B,MAAM;AACrC;IACF;AAGA,UAAM,YAAY,MAAM,aAAa,QAAQ,yBAAyB,QAAQ,SAAS;AACvF,QAAI,cAAc,QAAW;AAC3B;IACF;AAEA,UAAM,uBAAuB,MAAM,iBAAiB,OAClD,WACA,UACA,yBAAyB,MAAM,EAC/B,4BAA2B;AAW7B,QAAI,UAAU,gBAAgB,KAAK,CAAC,sBAAsB;AACxD,YAAM,KAAK,aACT,wLAC8G;IAElH;AAGA,QAAI,UAAU,QAAQ,KAAK,UAAU,kBAAkB,KAAK,sBAAsB;AAChF,YAAM,KAAK,aACT,wLAC8G;IAElH;EACF;;AAGF,eAAe,eACb,QACA,KAA2B;AAM3B,MAAI,mBAAmB;AACvB,MAAI,OAAO,kBAAkB;AAC3B,QAAI;AACF,YAAM,aAAaC,MAAK,KAAK,IAAI,SAAS,OAAO,gBAAgB;AACjE,yBAAmB,MAAM,oBAAoB,UAAU;IACzD,QAAE;IAAO;EACX;AACA,SAAO;AACT;AAEM,IAAO,mBAAP,MAAuB;EAC3B,YACU,KACA,UACA,QAAwB;AAFxB,SAAA,MAAA;AACA,SAAA,WAAA;AACA,SAAA,SAAA;EACP;EAIH,MAAM,uBAAoB;AACxB,UAAM,QAAQ,MAAM,gCAAgC,KAAK,KAAK,KAAK,QAAQ;AAC3E,YAAO,+BAAO,IAAI,CAAC,MAAM,EAAE,UAAS,CAAA;EACtC;EAKA,MAAM,8BAA2B;AAC/B,UAAM,mBAAmB,MAAM,KAAK,qBAAoB;AACxD,UAAM,uBAAuB,KAAK,OAAO,qBAAqB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;AACzF,aAASA,SAAQ,kBAAkB;AACjC,UAAI,qBAAqB,KAAK,CAAC,MAAM,EAAE,MAAMA,KAAI,CAAC,GAAG;AACnD,eAAO;MACT;IACF;AACA,WAAO;EACT;EAEA,OAAO,OAAO,KAA6B,UAAkB,QAAwB;AACnF,WAAO,IAAI,iBAAiB,KAAK,UAAU,MAAM;EACnD;;AAGF,eAAe,aACb,aAIA,kBACA,KAA2B;AAE3B,MAAI,oBAAoB,iBAAiB,qBAAqB,SAAS,GAAG;AACxE,WAAO,QAAQ,kBAAkB,KAAK;MACpC,WAAW,YAAY;MACvB,QAAQ,YAAY;KACrB;EACH;AACA;AACF;;;AC3IO,IAAM,6BAA6B,4BACxC,EAAC,MAAM,0BAA0B,mBAAmB,KAAI,GACxD,MAAMC,WAAU;AAGlB,IAAMA,cAAN,cAAyB,sBAAqB;EAC5C,OAAO,aAAoC,QAAyB;AAClE,QAAI,OAAO,qBAAqB,QAAW;AACzC;IACF;AAEA,UAAM,EAAC,SAAQ,IAAI,0BAA0B,WAAW;AACxD,UAAM,UAAoB,CAAA;AAE1B,eAAW,YAAY,OAAO,kBAAkB;AAC9C,UAAI,CAAC,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,SAAS,QAAQ,EAAE,SAAS,SAAS,IAAI,GAAG;AAC/E,gBAAQ,KAAK,SAAS,IAAI;MAC5B;IACF;AAEA,QAAI,QAAQ,SAAS,GAAG;AACtB,YAAM,KAAK,aACT,sDAAsD,QAAQ,KAAK,IAAI,KAAK;IAEhF;EACF;;;;ACnBK,IAAM,0BAA0B,4BACrC,EAAC,MAAM,uBAAuB,mBAAmB,KAAI,GACrD,MAAMC,WAAU;AAGlB,IAAMA,cAAN,cAAyB,sBAAqB;EAC5C,MAAM,OAAO,aAAoC,WAAiC;AAChF,QAAI,CAAC,uBAAuB,WAAW,GAAG;AACxC;IACF;AAEA,UAAM,WAAW,MAAM,oBAAoB,OACzC,WACA,YAAY,MAAM,EAClB,wBAAuB;AAEzB,QAAI,MAAM,iCAAiC,UAAU,SAAS,GAAG;AAC/D;IACF;AAIA,UAAM,KAAK,aACT,mJAAmJ;EAEvJ;;AAMF,SAAS,uBAAuB,aAAkC;AAChE,SAAO,YAAY,OAAO,MAAM,KAAK,CAAC,EAAC,KAAI,MAAM,SAAS,eAAe,aAAa,IAAI;AAC5F;AAEM,IAAO,sBAAP,MAA0B;EAC9B,YACU,KACA,UAAgB;AADhB,SAAA,MAAA;AACA,SAAA,WAAA;EACP;EAIH,MAAM,0BAAuB;AAC3B,WAAQ,MAAM,mCAAmC,KAAK,KAAK,KAAK,QAAQ,KAAM,CAAA;EAChF;EAEA,OAAO,OAAO,KAA6B,UAAgB;AACzD,WAAO,IAAI,oBAAoB,KAAK,QAAQ;EAC9C;;AAMF,eAAsB,iCACpB,UACA,WAAiC;AAEjC,aAAW,EAAC,UAAU,OAAM,KAAK,UAAU;AACzC,QACE,SAAS,WAAW,SAAS,KAC5B,MAAM,sBAAa,mBAAmB,UAAU,QAAQ,OAAO,KAAK,GACrE;AACA,aAAO;IACT;EACF;AACA,SAAO;AACT;;;AC1EO,IAAM,uBAAuB,4BAClC,EAAC,MAAM,oBAAoB,mBAAmB,MAAK,GACnD,MAAMC,WAAU;AAGlB,IAAMA,cAAN,cAAyB,sBAAqB;EAC5C,OAAO,aAAkC;AACvC,QAAI,CAAC,YAAY,OAAO,MAAM,KAAK,CAAC,EAAC,KAAI,MAAM,SAAS,aAAa,aAAa,IAAI,GAAG;AACvF,YAAM,KAAK,aAAa,4CAA4C;IACtE;EACF;;;;ACZK,IAAM,2BAA2B,4BACtC,EAAC,MAAM,wBAAwB,mBAAmB,MAAK,GACvD,MAAMC,WAAU;AAGlB,IAAMA,cAAN,cAAyB,sBAAqB;EAC5C,OAAO,aAAkC;AACvC,UAAM,aAAa,YAAY,QAAQ,MAAM,OAC3C,CAAC,EAAC,kBAAiB,MAAM,sBAAsB,QAAQ,EACvD;AACF,QAAI,eAAe,GAAG;AACpB,YAAM,KAAK,aACT,8EAA8E;IAElF;EACF;;;;ACVK,IAAM,sBAAsB,4BACjC,EAAC,MAAM,mBAAmB,mBAAmB,KAAI,GACjD,MAAMC,WAAU;AAGlB,IAAMA,cAAN,cAAyB,sBAAqB;EAC5C,OAAO,aAAkC;AACvC,UAAM,EAAC,gBAAgB,SAAQ,IAAI,0BAA0B,WAAW;AAMxE,QAAI,SAAS,KAAK,CAAC,WAAW,OAAO,SAAS,MAAM,MAAM,QAAW;AACnE,YAAM,KAAK,aACT,8FAA8F;IAElG;AACA,QAAI,mBAAmB,kBAAkB,SAAS;AAChD,YAAM,KAAK,aAAa,yCAAyC;IACnE;AACA,QAAI,mBAAmB,kBAAkB,SAAS;AAChD,YAAM,KAAK,aAAa,yCAAyC;IACnE;EACF;;;;AC5BK,IAAM,yBAAyB,4BACpC,EAAC,MAAM,iBAAiB,mBAAmB,MAAK,GAChD,MAAMC,YAAU;AAGlB,IAAMA,eAAN,cAAyB,sBAAqB;EAC5C,OAAO,aAAkC;AACvC,QAAI,YAAY,SAAS;AACvB,YAAM,KAAK,aAAa,gCAAgC;IAC1D;AACA,YAAQ,YAAY,OAAO;MACzB,KAAK;AACH,cAAM,KAAK,aAAa,iCAAiC;MAC3D,KAAK;AACH,cAAM,KAAK,aAAa,iCAAiC;IAC7D;EACF;;;;ACZK,IAAM,sBAAsB;EAGjC,EAAC,MAAM,mBAAmB,mBAAmB,KAAI;EACjD,MAAMC;AAAU;AAGlB,IAAMA,eAAN,cAAyB,sBAAqB;EAC5C,OAAO,aAAkC;AACvC,UAAM,UAAU,0BAA0B,WAAW,EAAE,SAAS,KAAK,CAAC,EAAC,MAAM,OAAM,MAAK;AACtF,aAAO,SAAS,gBAAgB,WAAW,kBAAkB;IAC/D,CAAC;AAED,QAAI,CAAC,SAAS;AACZ,YAAM,KAAK,aAAa,uCAAuC;IACjE;EACF;;;;ACCF,eAAsB,uBACpB,aACA,kBACA,aAIA,qBACA,QACA,WAAiC;AAEjC,QAAM,SAAS,YAAY,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI;AACzD,QAAM,cAAc,YAAY,QAAQ,MAAM,IAAI,CAAC,MAAK;AACtD,WAAO,mBAAmB,EAAE,OAAO,OAAO;EAC5C,CAAC;AAED,QAAM,oBAAoB;IACxB,yBAAyB,IAAI,kBAAkB,WAAW;IAC1D,2BAA2B,IAAI,kBAAkB,WAAW;IAC5D,qBAAqB,IAAI,kBAAkB,WAAW;IACtD,oBAAoB,IAAI,kBAAkB,WAAW;IACrD,uBAAuB,IAAI,kBAAkB,WAAW;IACxD,6BAA6B,IAAI,kBAAkB,aAAa,MAAM;IACtE,oBAAoB,IAAI,kBAAkB,WAAW;IACrD,2BAA2B,IAAI,kBAAkB,aAAa,YAAY,WAAW;IACrF,gCAAgC,IAC9B,kBACA,aACA,YAAY,QACZ,SAAS;IAEX,wBAAwB,IAAI,kBAAkB,aAAa,SAAS;;AAGtE,MAAI,wBAAwB,MAAM;AAChC,sBAAkB,KAChB,qCAAqC,IACnC,kBACA,aACA,OAAO,OACP,YAAY,aACZ,qBACA,MAAM,CACP;EAEL;AAEA,SAAO,MAAM,QAAQ,IAAI,iBAAiB,EAAE,KAAK,CAAC,YAAW;AAC3D,WAAO,QAAQ,OAEV,CAAC,WAAW,WAAW,IACzB;EAEL,CAAC;AACH;;;AClEO,IAAM,sBAAsB;AAM7B,IAAgB,gBAAhB,MAA6B;EACjC,YAAsB,KAA2B;AAA3B,SAAA,MAAA;EAA8B;EAMpD,MAAM,QAAQ,aAAwB;AACpC,SAAK,oBACH,YAAY,gBACZ,QAAQ,YAAY,iBAAiB,qBAAqB;EAE9D;EAuBA,MAAM,MAAM,aAAwB;AAClC,UAAM,EAAC,oBAAoB,gBAAgB,gBAAe,IAAI;AAG9D,QAAI,eAAe,MAAM,CAAC,MAAM,MAAM,kBAAkB,GAAG;AACzD,YAAM,IAAI,iCAAiC,cAAc;IAC3D;AAOA,QAAI,mBAAmB,CAAC,KAAK,IAAI,UAAU,qBAAqB,eAAe,GAAG;AAChF,YAAM,IAAI,6BAA4B;IACxC;AAMA,UAAM,KAAK,wBAAwB,aAAa,cAAc;EAChE;EAGA,MAAM,QAAQ,aAAwB;AAEpC,gBAAY,eAAe,QAAQ,CAAC,eAClC,KAAK,IAAI,IAAI,CAAC,UAAU,MAAM,KAAK,yBAAyB,UAAU,CAAC,CAAC,CAAC;AAI3E,SAAK,IAAI,IAAI,CAAC,UAAU,MAAM,mBAAmB,CAAC;EACpD;EAGU,yBAAyB,cAAoB;AACrD,WAAO,mBAAmB,aAAa,QAAQ,OAAO,GAAG;EAC3D;EAMU,6BACR,eACA,gBACA,UAGI,CAAA,GAAE;AAEN,UAAM,iBAAiB,CAAC,aAAa;AACrC,UAAM,iBAA2B,CAAA;AAEjC,UAAM,sBAAsB,KAAK,IAAI,IAAI,CAAC,YAAY,WAAW,aAAa,CAAC;AAC/E,UAAM,gBAAgB,OAAO,oBAAoB,OAAO,KAAI,CAAE;AAC9D,QAAI,MAAM,aAAa,GAAG;AACxB,YAAM,IAAI,oBACR,oFAAoF;IAExF;AAEA,QAAI,QAAQ,uBAAuB;AAKjC,qBAAe,KAAK,IAAI;IAC1B;AAGA,eAAW,cAAc,gBAAgB;AACvC,YAAM,oBAAoB,KAAK,yBAAyB,UAAU;AAElE,WAAK,IAAI,IAAI,CAAC,YAAY,iBAAiB,CAAC;AAE5C,YAAM,mBAAmB,KAAK,IAAI,YAAY,CAAC,eAAe,GAAG,cAAc,CAAC;AAChF,UAAI,iBAAiB,WAAW,GAAG;AAIjC,aAAK,IAAI,YAAY,CAAC,eAAe,SAAS,CAAC;AAC/C,uBAAe,KAAK,UAAU;MAChC;AAGA,UAAI,QAAQ,QAAQ;AAClB,aAAK,IAAI,IAAI,CAAC,SAAS,UAAU,QAAQ,eAAe,CAAC;MAC3D;IACF;AACA,WAAO;EACT;EAMU,oBAAoB,UAAoB,eAAuB;AACvE,UAAM,gBAAgB,MAAM,IAAI,CAAC,iBAAgB;AAC/C,YAAM,oBAAoB,KAAK,yBAAyB,YAAY;AACpE,aAAO,cAAc,gBAAgB;IACvC,CAAC;AAGD,SAAK,IAAI,IAAI;MACX;MACA;MACA;MACA,KAAK,IAAI,cAAa;MACtB,GAAG;MACH,GAAG;KACJ;EACH;EAGU,2BAA2B,OAAe;AAClD,UAAM,eAAe,MAAM,IAAI,CAAC,iBAAgB;AAC9C,YAAM,oBAAoB,KAAK,yBAAyB,YAAY;AACpE,aAAO,GAAG,gCAAgC;IAC5C,CAAC;AAGD,SAAK,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,IAAI,cAAa,GAAI,GAAG,YAAY,CAAC;EAC9E;EAGU,MAAM,wBACd,EAAC,cAAa,GACd,gBAAwB;AAExB,UAAM,iBAAiB,KAAK,6BAA6B,eAAe,gBAAgB;MACtF,QAAQ;KACT;AAED,QAAI,eAAe,QAAQ;AACzB,YAAM,IAAI,yBAAyB,cAAc;IACnD;EACF;;;;ACvIF,eAAsB,2BACpB,EACE,KACA,OAAM,GAQR,UACA,kBAA6C;AAE7C,QAAM,SAAS,MAAM,2BAA2B,KAAK,QAAQ;AAE7D,MAAI,WAAW,MAAM;AACnB,UAAM,IAAI,oBAAoB,kCAAkC;EAClE;AAEA,QAAM,SAAS,OAAO,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI;AACpD,QAAM,qBAAqB,OAAO;AAElC,QAAM,EAAC,gBAAgB,MAAM,MAAK,IAAI,OAAO;AAI7C,MAAI,sBAAkD;AACtD,MAAI,SAAmC;AAEvC,MAAI,OAAO,YAAY,oBAAoB;AAGzC,aAAS,EAAC,UAAU,CAAC,OAAO,OAAO,cAAc,GAAG,OAAO,aAAa,aAAY;EACtF,OAAO;AACL,0BAAsB,MAAM,oBAAoB,MAAM;MACpD;MACA,gBAAgB;MAChB;MACA,KAAK,IAAI;KACV;AAED,aAAS,MAAM,wCACb,qBACA,IAAI,QACJ,QACA,QACA,kBAAkB;EAEtB;AAEA,QAAM,qBAAqB,MAAM,uBAC/B,QACA,kBACA,QACA,qBACA,QACA,GAAG;AAGL,QAAM,kBACJ,OAAO,YAAY,uBACnB,OAAO,YAAY,oBAAoB;AACzC,QAAM,0BAA0B,OAAO,SAAS,YAAY,yBAAyB,IAAI;AACzF,QAAM,mBAAmB,OAAO,SAAS,YAAY,qBAAqB,IAAI;AAG9E,QAAM,UAAU,OAAO,eAAe,MAAM,GAAG,OAAO,QAAQ,MAAM,GAAG;AAOvE,QAAM,gBAAgB,GAAG,YAAY;AAErC,SAAO;IACL,KAAK,OAAO;IACZ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,gBAAgB,OAAO;IACvB,OAAO,OAAO;IACd,aAAa,OAAO,QAAQ;IAC5B,SAAS,OAAO;;AAEpB;;;ACnIA,IAAM,0BAA0B;AAS1B,IAAO,yBAAP,cAAsC,cAAa;EACvD,YACE,KACQ,SAAqC;AAE7C,UAAM,GAAG;AAFD,SAAA,UAAA;EAGV;EAUS,MAAM,MAAM,aAAwB;AAC3C,UAAM,EAAC,oBAAoB,UAAU,yBAAyB,eAAc,IAAI;AAChF,UAAM,SAAS,KAAK,+BAA+B,WAAW;AAC9D,UAAM,2BAA2B,eAAe,OAAO,CAAC,MAAM,MAAM,kBAAkB;AAEtF,UAAM,eAAmC;MACvC,aAAa;MACb,cAAc;MACd,GAAG,KAAK,IAAI;;AAGd,QAAI,yBAAyB;AAG3B,UAAI,WAAW,UAAU;AACvB,cAAM,IAAI,oBACR,uHAC8C;MAElD;AACA,YAAM,KAAK,yBAAyB,aAAa,YAAY;IAC/D;AAEA,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI;AAEF,YAAM,SAAS,MAAM,KAAK,IAAI,OAAO,MAAM,MAAM,YAAY;AAE7D,wBAAkB,OAAO;AACzB,6BAAuB,OAAO,KAAK;AACnC,kBAAY,OAAO,KAAK;IAC1B,SAAS,GAAP;AAKA,UAAI,iBAAiB,CAAC,MAAM,EAAE,WAAW,OAAO,EAAE,WAAW,MAAM;AACjE,cAAM,IAAI,oBAAoB,4DAA4D;MAC5F;AACA,YAAM;IACR;AAIA,QAAI,oBAAoB,KAAK;AAC3B,YAAM,IAAI,yBAAyB,CAAC,kBAAkB,CAAC;IACzD;AACA,QAAI,oBAAoB,KAAK;AAC3B,YAAM,IAAI,oBACR,iCAAiC,oBAAoB,sBAAsB;IAE/E;AAIA,QAAI,CAAC,yBAAyB,QAAQ;AACpC;IACF;AAKA,SAAK,oBAAoB,CAAC,kBAAkB,CAAC;AAI7C,UAAM,qBAAqB,WAAW,WAAW,IAAI,YAAY;AAGjE,UAAM,iBAAiB,MAAM,KAAK,6BAChC,GAAG,aAAa,uBAAuB,aACvC,0BACA;MAKE,uBAAuB;KACxB;AAMH,QAAI,eAAe,QAAQ;AACzB,YAAM,IAAI,yBAAyB,cAAc;IACnD;AAEA,SAAK,2BAA2B,wBAAwB;AAIxD,UAAM,KAAK,IAAI,OAAO,OAAO,cAAc;MACzC,GAAG,KAAK,IAAI;MACZ,cAAc,YAAY;MAC1B,MAAM,wDAAwD,eAAe,KAAK,IAAI;KACvF;EACH;EAOQ,MAAM,yBACZ,aACA,cAAgC;AAEhC,UAAM,gBAAgB,MAAM,KAAK,+BAA+B,WAAW;AAC3E,UAAM,SAAS,MAAM,OAAO,OAAO;MACjC,SAAS;MACT,SAAS;KACV;AAID,UAAM,CAAC,aAAa,UAAU,IAAI,OAAO,MAAM,uBAAuB;AAGtE,iBAAa,eAAe,GAAG,cAAc,YAAY;AACzD,iBAAa,iBAAiB,WAAW,KAAK,uBAAuB;EACvE;EAOQ,MAAM,+BAA+B,aAAwB;AACnE,UAAM,WAAW,MAAM,KAAK,8BAA8B,WAAW,GAAG,IAAI,CAAC,aAAa;MACxF;MACA,QAAQ,mBAAmB,OAAO;MAClC;AACF,UAAM,cAAc,GAAG,YAAY,QAAQ;AAC3C,QAAI,QAAQ,UAAU,GAAG;AACvB,aAAO,GAAG,cAAc,QAAQ,GAAG,OAAO;IAC5C;AACA,UAAM,iBAAiB,QAAQ,IAAI,CAAC,MAAM,KAAK,EAAE,SAAS,EAAE,KAAK,uBAAuB;AACxF,WAAO,GAAG,cAAc;EAC1B;EAGQ,MAAM,8BAA8B,EAAC,SAAQ,GAAc;AACjE,UAAM,aAA4C,MAAM,KAAK,IAAI,OAAO,SACtE,KAAK,IAAI,OAAO,MAAM,aACtB;MACE,GAAG,KAAK,IAAI;MACZ,aAAa;KACd;AAEH,WAAO,WAAW,IAAI,CAAC,EAAC,OAAM,MAAM,OAAO,OAAO;EACpD;EAGQ,+BAA+B,EAAC,OAAM,GAAc;AAC1D,QAAI,KAAK,QAAQ,QAAQ;AACvB,YAAM,gBAAgB,KAAK,QAAQ,OAAO,KAAK,CAAC,EAAC,QAAO,MAAM,OAAO,SAAS,OAAO,CAAC;AACtF,UAAI,kBAAkB,QAAW;AAC/B,eAAO,cAAc;MACvB;IACF;AACA,WAAO,KAAK,QAAQ;EACtB;;;;ACjNF,SAAQ,WAAAC,UAAS,QAAAC,aAAW;AAC5B,SAAQ,iBAAAC,sBAAoB;AAYtB,IAAO,0BAAP,cAAuC,cAAa;EAW/C,MAAM,MAAM,aAAwB;AAC3C,UAAM,EACJ,oBACA,gBACA,eACA,yBACA,SACA,SAAQ,IACN;AAQJ,UAAM,+BAA+B,KAAK,IAAI,2BAA0B;AACxE,UAAM,YAAY,0BACd,SACA,EAAC,GAAG,QAAQ,KAAK,qBAAqB,OAAM;AAChD,SAAK,IAAI,IAAI,CAAC,UAAU,iBAAiB,gBAAgB,SAAS,mBAAmB,GAAG;MACtF,OAAO;MACP,KAAK;KACN;AAOD,SAAK,IAAI,IAAI,CAAC,YAAY,MAAM,4BAA4B,CAAC;AAC7D,SAAK,IAAI,IAAI;MACX;MACA;MACA;MACA,GAAGC,kCAAgC,KAAM;MACzC;KACD;AAID,UAAM,iBAAiB,KAAK,6BAA6B,eAAe,cAAc;AAKtF,QAAI,eAAe,QAAQ;AACzB,YAAM,IAAI,yBAAyB,cAAc;IACnD;AAGA,SAAK,2BAA2B,cAAc;AAG9C,UAAM,cAAc,KAAK,yBAAyB,kBAAkB;AAEpE,UAAM,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,WAAW,CAAC,EAAE,OAAO,KAAI;AAGhE,UAAM,IAAI,QAAQ,CAACC,cACjB,WAAWA,WAAS,SAAS,QAAQ,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAMzE,UAAM,KAAK,IAAI,OAAO,OAAO,cAAc;MACzC,GAAG,KAAK,IAAI;MACZ,cAAc,YAAY;MAC1B,MACE,oDAAoD;;uDACI,eAAe,KAAK,IAAI;KACnF;AAMD,QAAI,uBAAuB,KAAK,IAAI,gBAAgB;AAClD,YAAM,KAAK,IAAI,OAAO,MAAM,OAAO;QACjC,GAAG,KAAK,IAAI;QACZ,aAAa,YAAY;QACzB,OAAO;OACR;IACH;EACF;;AAIF,SAASD,oCAAgC;AAKvC,QAAM,aAAaE,SAAQC,eAAc,YAAY,GAAG,CAAC;AACzD,SAAOC,MAAK,YAAY,iDAAiD;AAC3E;;;ACrFA,IAAM,+BAAsD;EAC1D,cAAc;EACd,qBAAqB;EACrB,QAAQ;EACR,sBAAsB;;AAQlB,IAAO,YAAP,MAAgB;EAGpB,YACS,QAIA,KACP,OAAqC;AAL9B,SAAA,SAAA;AAIA,SAAA,MAAA;AAIP,SAAK,QAAQ,EAAC,GAAG,8BAA8B,GAAG,MAAK;EACzD;EAQA,MAAM,MACJ,UACA,yBAAoD;AAGpD,UAAM,mBAAmB,kCAAkC;MACzD,GAAG,KAAK,OAAO,YAAY;MAC3B,GAAG;KACJ;AAED,QAAI,KAAK,IAAI,sBAAqB,GAAI;AACpC,YAAM,IAAI,oBACR,wFAC2B;IAE/B;AAEA,QAAI,KAAK,IAAI,cAAa,GAAI;AAC5B,YAAM,IAAI,oBACR;;2EAE8E;IAElF;AAEA,UAAM,KAAK,mBAAkB;AAE7B,UAAM,cAAc,MAAM,2BAA2B,MAAM,UAAU,gBAAgB;AAErF,QAAI,YAAY,mBAAmB,SAAS,GAAG;AAC7C,UAAI,MAAM,iEAAiE;AAE3E,iBAAW,WAAW,YAAY,oBAAoB;AACpD,YAAI,MAAM,OAAO,KAAK,QAAQ,OAAO,GAAG;MAC1C;AACA,UAAI,KAAI;AAER,UAAI,YAAY,mBAAmB,KAAK,CAAC,YAAY,CAAC,QAAQ,iBAAiB,GAAG;AAChF,YAAI,MAAM,kDAAkD;AAC5D,cAAM,IAAI,2BAA0B;MACtC;AAEA,UAAI,KAAK,OAAO,uEAAuE,CAAC;AACxF,UACE,CAAE,MAAM,OAAO,QAAQ;QACrB,SAAS;OACV,GACD;AACA,cAAM,IAAI,2BAA0B;MACtC;IACF;AAEA,QAAI,KAAK,MAAM,qBAAqB;AAClC,YAAM,KAAK,4CAA4C,WAAW;IACpE;AAIA,QACE,YAAY,oBACZ,CAAE,MAAM,OAAO,QAAQ,EAAC,SAAS,8BAA8B,WAAW,EAAC,CAAC,GAC5E;AACA,YAAM,IAAI,0BAAyB;IACrC;AAEA,UAAM,WAAW,KAAK,OAAO,YAAY,iBACrC,IAAI,uBAAuB,KAAK,KAAK,KAAK,OAAO,YAAY,cAAc,IAC3E,IAAI,wBAAwB,KAAK,GAAG;AAIxC,UAAM,2BAA2B,KAAK,IAAI,2BAA0B;AAIpE,QAAI;AAEF,YAAM,SAAS,QAAQ,WAAW;AAGlC,UAAI,KAAI;AACR,UAAI,KAAK,2BAA2B,WAAW,CAAC;AAGhD,YAAM,SAAS,MAAM,WAAW;AAEhC,UAAI,KAAK,EAAE;AACX,UAAI,KAAK,MAAM,YAAY,KAAK,YAAY,KAAK,GAAG,CAAC;AACrD,UAAI,KAAK,MAAM,gEAA2D,CAAC;AAC3E,UAAI,KAAI;AAER,UAAI,KAAK,MAAM,QAAQ;AACrB,YAAI,KAAK,MAAM,wCAAmC,CAAC;AACnD;MACF;AAEA,UAGE,CAAC,KAAK,OAAO,YAAY,sBAEzB,CAAC,KAAK,MAAM,uBACZ,KAAK,MAAM,gBACX,CAAE,MAAM,OAAO,QAAQ,EAAC,SAAS,6CAA4C,EAAE,CAAC,GAChF;AACA,cAAM,IAAI,0BAAyB;MACrC;AAGA,YAAM,SAAS,MAAM,WAAW;AAChC,UAAI,KAAK,MAAM,oDAA+C,UAAU,CAAC;IAC3E;AAGE,WAAK,IAAI,IAAI,CAAC,YAAY,MAAM,wBAAwB,CAAC;AAEzD,YAAM,SAAS,QAAQ,WAAW;IACpC;EACF;EAMQ,MAAM,4CACZ,aAAwB;AAExB,UAAM,EAAC,MAAM,UAAU,MAAK,IAAI,KAAK,OAAO;AAG5C,QAAI,cAA8D,CAAA;AAClE,QAAI;AACF,+BAAyB,KAAK,MAAM;AACpC,YAAM,qBAAqB,MAAM,oCAAoC,KAAK,OAAO,OAAO;AACxF,oBAAc,mBAAmB,OAAO,IAAI,CAAC,EAAC,MAAM,QAAO,OAAO;QAChE,YAAY;QACZ;QACA;IACJ,QAAE;AACA,UAAI,KACF,2FAA2F;IAE/F;AAGA,UAAM,EAAC,QAAQ,MAAM,iBAAgB,IAAI,MAAM,oBAAoB,MAAM;MACvE,MAAM;MACN,gBAAgB,kBAAkB,KAAK,OAAO,MAAM;MACpD;MACA,KAAK,KAAK,IAAI;KACf;AAGD,UAAM,iBAAiE;MACrE;MACA;MACA,GAAG;;AAEL,QAAI,qBAAqB,MAAM;AAG7B,qBAAe,OAAO,GAAG,GAAG,gBAAgB;IAC9C;AAEA,UAAM,mBAAmB,MAAM,OAAO,SAAS;MAC7C,SAAS,eAAe,IAAI,CAAC,EAAC,YAAY,QAAO,MAAK;AACpD,eAAO;UACL,SAAS,YAAY,eAAe,SAAS,UAAU;UACvD,OAAO;UACP,OAAO;UACP,MAAM,GAAG,eAAe,WACtB,eAAe,YAAY,qBAAqB,8BAA8B;;MAGpF,CAAC;MACD,SAAS;KACV;AACD,UAAM,eAAe,MAAM,OAAO,QAAQ;MACxC,SAAS;MACT,SACE,IAAI,0BAA0B,IAC9B,OACE,oOAEqE,IAEvE;KACH;AAED,QAAI,iBAAiB,OAAO;AAC1B,YAAM,IAAI,0BAAyB;IACrC;AAIA,QAAI,CAAC,iBAAiB,SAAS,YAAY,kBAAkB,GAAG;AAC9D,YAAM,IAAI,oBACR,+EAA+E,YAAY,kGACX;IAEpF;AAEA,gBAAY,iBAAiB;EAC/B;EAEA,MAAM,qBAAkB;AACtB,QAAI,KAAK,IAAI,aAAa,QAAQ;AAIhC,YAAM,iBAAiB,MAAM,KAAK,IAAI,eAAe,CAAC,QAAQ,YAAW;AACvE,YAAI,CAAC,OAAO,SAAS,MAAM,GAAG;AAC5B,cAAI,KAAK,OAAO,OAAO,SAAS;AAC9B,oBAAQ,KAAK,MAAM;UACrB,WAAW,CAAC,OAAO,SAAS,aAAa,GAAG;AAC1C,oBAAQ,KAAK,aAAa;UAC5B;QACF;AAOA,YAAI,CAAC,OAAO,SAAS,UAAU,GAAG;AAChC,kBAAQ,KAAK,UAAU;QACzB;MACF,CAAC;AAED,UAAI,mBAAmB,MAAM;AAC3B,cAAM,IAAI,oBAAoB,eAAe,KAAK;MACpD;AACA;IACF,OAAO;AAEL,UAAI,MAAM,qDAAqD;IACjE;EACF;;;;ACpRF,eAAsB,iBAAiB,UAAkB,OAA4B;AAGnF,UAAQ,IAAI,WAAW;AAEvB,QAAM,OAAO,MAAM,2BAA2B,KAAK;AAInD,MAAI,CAAE,MAAM,aAAY,GAAK;AAC3B,YAAQ,KAAK,CAAC;EAChB;AAGA,iBAAe,aACb,mBAAmB;IACjB,wBAAwB,CAAC,MAAM;KAChC;AAED,QAAI;AACF,YAAM,KAAK,MAAM,UAAU,gBAAgB;AAC3C,aAAO;IACT,SAAS,GAAP;AAGA,UAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,KAAK;AAC3C,YAAI,MAAM,gCAAgC,KAAK,EAAE,OAAO,CAAC;AACzD,YAAI,MAAM,kDAAkD;AAC5D,YAAI,KAAK,kCAAkC,2BAA2B;AACtE,eAAO;MACT;AACA,UAAI,iBAAiB,CAAC,GAAG;AACvB,YAAI,MAAM,gCAAgC,KAAK,EAAE,OAAO,CAAC;AACzD,eAAO;MACT;AACA,UAAI,aAAa,2BAA2B;AAC1C,YAAI,KAAK,4BAA4B;AACrC,eAAO;MACT;AACA,UAAI,aAAa,0BAA0B;AACzC,YAAI,MAAM,4DAA4D;AACtE,YAAI,MAAM,OAAO,KAAK,EAAE,cAAc,GAAG;MAC3C;AACA,UAAI,aAAa,yBAAyB;AACxC,YAAI,MAAM,oDAAoD;AAC9D,YAAI,MAAM,OAAO,KAAK,EAAE,cAAc,GAAG;MAC3C;AAEA,UAAI,aAAa,4BAA4B;AAC3C,YAAI,MAAM,oDAAoD;AAC9D,YAAI,MAAM,0CAA0C;AACpD,eAAO;MACT;AAKA,UAAI,aAAa,qBAAqB;AACpC,YAAI,MAAM,oDAAoD;AAC9D,YAAI,MAAM,OAAO,KAAK,EAAE,OAAO,GAAG;AAClC,eAAO;MACT;AAGA,YAAM;IACR;EACF;AACF;AAQA,eAAe,2BAA2B,OAA4B;AACpE,MAAI;AACF,UAAM,SAAS,MAAM,UAAS;AAE9B,4BAAwB,MAAM;AAC9B,iCAA6B,MAAM;AAGnC,UAAM,MAAM,MAAM,uBAAuB,IAAG;AAC5C,WAAO,IAAI,UAAU,QAAQ,KAAK,KAAK;EACzC,SAAS,GAAP;AACA,QAAI,aAAa,uBAAuB;AACtC,UAAI,EAAE,OAAO,QAAQ;AACnB,YAAI,MAAM,8BAA8B;AACxC,UAAE,OAAO,QAAQ,CAAC,SAAS,IAAI,MAAM,QAAQ,MAAM,CAAC;MACtD,OAAO;AACL,YAAI,MAAM,EAAE,OAAO;MACrB;AACA,cAAQ,KAAK,CAAC;IAChB;AACA,UAAM;EACR;AACF;AAKM,SAAU,cAAc,eAAqB;AAIjD,QAAM,WAAW,SAAS,cAAc,MAAM,GAAG,EAAE,IAAG,CAAG;AACzD,MAAI,MAAM,QAAQ,GAAG;AACnB,UAAM,IAAI,MAAM,0DAA0D;EAC5E;AACA,SAAO;AACT;;;AC7HA,eAAeC,UAAQ,MAAU;AAC/B,SAAO,cAAc,qBAAqB,IAAI,CAAC,EAC5C,KAAI,EACJ,OAAM,EACN,WAAW,MAAM;IAChB,cAAc;IACd,QAAQ,CAAC,kBAA0B,cAAc,aAAa;IAC9D,MAAM;IACN,aAAa;GACd,EACA,OAAO,iBAAmC;IACzC,MAAM;IACN,SAAS;IACT,aAAa;GACd,EACA,OAAO,yBAAkD;IACxD,MAAM;IACN,SAAS;IACT,aAAa;GACd,EACA,OAAO,0BAAoD;IAC1D,MAAM;IACN,SAAS;IACT,aAAa;GACd;AACL;AAGA,eAAeC,UAAQ,EACrB,IACA,cACA,qBACA,QACA,qBAAoB,GACW;AAC/B,QAAM,iBAAiB,IAAI,EAAC,cAAc,qBAAqB,QAAQ,qBAAoB,CAAC;AAC9F;AAGO,IAAM,qBAA6D;EACxE,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;AC7CZ,eAAsB,SAAS,UAAgB;AAE7C,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAE5C,MAAI,IAAI,sBAAqB,GAAI;AAC/B,QAAI,MAAM,iDAAiD;AAC3D,WAAO;EACT;AAMA,QAAM,2BAA2B,IAAI,2BAA0B;AAE/D,QAAM,KAAK,MAAM,2BAA2B,KAAK,QAAQ;AAEzD,MAAI,OAAO,MAAM;AACf,QAAI,MAAM,wCAAwC;AAClD,WAAO;EACT;AAEA,QAAM,cAAc,GAAG,QAAQ;AAC/B,QAAM,cAAc,GAAG,QAAQ;AAC/B,QAAM,cAAc,GAAG,GAAG,QAAQ,WAAW,iBAAiB;AAC9D,QAAM,cAAc,GAAG,GAAG,QAAQ,WAAW,iBAAiB;AAC9D,QAAM,aAAa,sBAAsB,GAAG,QAAQ,WAAW,KAAK,IAAI,WAAW;AACnF,QAAM,aAAa,sBAAsB,GAAG,QAAQ,WAAW,KAAK,IAAI,WAAW;AAQnF,QAAM,qBAAqB,sBAAsB,eAAe,GAAG;AAInE,MAAI,CAAC,GAAG,uBAAuB,CAAC,GAAG,iBAAiB;AAClD,QAAI,MACF,kGACoB;AAEtB,WAAO;EACT;AAEA,MAAI;AAKF,QAAI,KAAK,oBAAoB,iBAAiB,aAAa;AAC3D,QAAI,IAAI,CAAC,SAAS,MAAM,YAAY,aAAa,cAAc,CAAC;AAChE,QAAI,IAAI,CAAC,YAAY,MAAM,YAAY,YAAY,CAAC;AAEpD,QAAI,KAAK,YAAY,0BAA0B,aAAa;AAC5D,QAAI,IAAI,CAAC,SAAS,MAAM,YAAY,aAAa,cAAc,CAAC;AAEhE,UAAM,oBAAoB,IAAI,IAAI,CAAC,cAAc,QAAQ,YAAY,CAAC,EAAE,OAAO,KAAI;AAEnF,UAAM,UAAU,MAAM,kBAAkB,mBAAmB,MAAM;AAEjE,QAAI,eACF,QAAQ,IAAI,UAAU,UACtB,QAAQ,OAAO,CAAC,WAAmB,OAAO,OAAO,EAAE,WAAW,IAC1D,QACA,MAAM,OAAO,QAAQ;MACnB,SAAS,OAAO;MAChB,SAAS;KACV;AAEP,QAAI,KAAK,4BAA4B,eAAe,aAAa;AAQjE,UAAM,CAAC,OAAOE,IAAG,IAAI,eACjB,CAAC,CAAC,iBAAiB,cAAc,GAAG,EAAC,GAAG,QAAQ,KAAK,qBAAqB,OAAM,CAAC,IACjF,CAAC,CAAA,GAAI,MAAS;AAClB,UAAM,eAAe,IAAI,YAAY,CAAC,UAAU,GAAG,OAAO,YAAY,GAAG,EAAC,KAAKA,KAAG,CAAC;AAGnF,QAAI,aAAa,WAAW,GAAG;AAC7B,UAAI,KAAK,6DAA6D;AACtE,UAAI,KAAK,uBAAuB,eAAe,aAAa;AAC5D,UAAI,IAAI,CAAC,QAAQ,YAAY,QAAQ,eAAe,kBAAkB,CAAC;AACvE,UAAI,KAAK,2BAA2B,UAAU;AAC9C,UAAI,SAAS,0BAA0B,IAAI;AAC3C,aAAO;IACT;EACF,SAAS,KAAP;AACA,QAAI,MAAM,GAAG;AACb,QAAI,SAAS,0BAA0B,IAAI;AAC3C,WAAO;EACT;AAIA,MAAI,KAAK,gEAAgE;AAGzE,QAAM,iBACJ,QAAQ,IAAI,UAAU,UACrB,MAAM,OAAO,QAAQ,EAAC,SAAS,4BAA2B,CAAC;AAE9D,MAAI,gBAAgB;AAClB,QAAI,KACF,6EAA6E,WAAW;AAE1F,QAAI,KAAK,eAAe,GAAG,QAAQ,WAAW,YAAY,eAAe,oBAAoB;AAC7F,QAAI,KAAI;AACR,QAAI,KAAK,mFAAmF;AAC5F,QAAI,KAAK,4BAA4B;AACrC,QAAI,KACF,6DAA6D,0BAA0B;AAEzF,WAAO;EACT,OAAO;AACL,QAAI,KAAK,sDAAsD;EACjE;AAEA,MAAI,SAAS,0BAA0B,IAAI;AAC3C,SAAO;AACT;;;AChIA,SAASC,UAAQ,MAAU;AACzB,SAAO,qBAAqB,IAAI,EAAE,WAAW,MAAM,EAAC,MAAM,UAAU,cAAc,KAAI,CAAC;AACzF;AAGA,eAAeC,UAAQ,EAAC,GAAE,GAA2B;AACnD,UAAQ,WAAW,MAAM,SAAS,EAAE;AACtC;AAGO,IAAM,sBAAwD;EACnE,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;ACjBN,SAAU,cAAc,YAAgB;AAC5C,SAAO,WACJ,KAAI,EACJ,OAAM,EACN,cAAa,EACb,QAAQ,iCAAiC,EACzC,QAAQ,mBAAmB,EAC3B,QAAQ,kBAAkB,EAC1B,QAAQ,qBAAqB,EAC7B,QAAQ,yBAAyB;AACtC;;;ACpBA,SAAQ,gBAAAE,qBAAmB;AAC3B,SAAQ,WAAAC,gBAAc;;;ACShB,SAAU,SACd,OACA,mBACA,iBAAiB,IAAI,MAAI;AAEzB,QAAM,aAAa,MAAM;AACzB,iBAAe,MAAM,IAAI,MAAM,YAAY;AAC3C,MAAI,WAAW,QAAQ;AACrB,eAAW,QAAQ,CAAC,mBAAkB;AACpC,YAAM,QAAQ,eAAe,aAAa;AAC1C,UAAI,sBAAsB,0BAA0B;AAClD,uBAAe,GAAG,eAAe,YAAY;MAC/C,OAAO;AACL,uBACE,GAAG,SAAS,UAAU,IAAI,UAAU,eAAe,eAAe,YAAY;MAElF;IACF,CAAC;AACD,mBAAe,SAAQ;EACzB;AACF;AAGM,SAAU,aAAaC,SAAgB;AAC3C,QAAM,aAAa;AACnB,QAAM,YAAY,aAAa;AAC/B,QAAM,aAAaA,QAAO,KAAK,GAAG,EAAE,OAAO,GAAG,SAAS;AACvD,QAAM,YAAY,KAAK,MAAM,YAAY,WAAW,UAAU,CAAC;AAC/D,QAAM,aAAa,YAAY,YAAY,WAAW;AACtD,QAAM,OAAO,CAAC,OAAe,YAAoB,QAAQ,OAAO,KAAK;AAErE,MAAI,KAAK,SAAI,KAAK,WAAW,QAAG,SAAI;AACpC,MAAI,KAAK,SAAI,KAAK,WAAW,GAAG,IAAI,aAAa,KAAK,YAAY,GAAG,SAAI;AACzE,MAAI,KAAK,SAAI,KAAK,WAAW,QAAG,SAAI;AACtC;;;AC5CA,IAAAC,eAAiC;;;ACC3B,IAAO,uCAAP,cAAoD,MAAK;;AAEzD,IAAO,wCAAP,cAAqD,MAAK;;;;ACAhE,IAAM,eAAe,oBAAI,IAAG;AAMtB,SAAU,gBAAgB,SAAe;AAC7C,MAAI,aAAa,IAAI,OAAO,GAAG;AAC7B,WAAO,aAAa,IAAI,OAAO;EACjC;AACA,QAAMC,QAAO,IAAI,UAAU,SAAS,EAAC,KAAK,OAAO,SAAS,MAAK,CAAC;AAChE,eAAa,IAAI,SAASA,KAAI;AAC9B,SAAOA;AACT;;;ACPM,IAAO,yBAAP,cAAsC,MAAa;EAEvD,QAAQ,SAAe;AACrB,WAAO,IAAI,uBAAuB,GAAG,KAAK,OAAO,CAAC,MAAM,gBAAgB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;EAC5F;EAGA,QAAQ,SAAe;AACrB,WAAO,IAAI,uBAAuB,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,gBAAgB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;EAC7F;;AAOI,IAAO,wBAAP,cAAqC,MAAuB;EAChE,QAAQ,SAAe;AACrB,WAAO,IAAI,sBAAsB,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,UAAU,MAAM,OAAO,CAAC,CAAC;EACpF;EAGA,QAAQ,SAAe;AACrB,WAAO,IAAI,sBAAsB,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,UAAU,MAAM,OAAO,CAAC,CAAC;EACpF;EAEA,IAAI,WAAQ;AACV,UAAM,IAAI,qCAAoC;EAChD;EAEA,IAAI,UAAO;AACT,UAAM,IAAI,qCAAoC;EAChD;EAEA,IAAI,SAAM;AACR,UAAM,IAAI,qCAAoC;EAChD;EAEA,IAAI,WAAQ;AACV,UAAM,IAAI,qCAAoC;EAChD;EAEA,IAAI,WAAQ;AACV,UAAM,IAAI,qCAAoC;EAChD;EAEA,IAAI,QAAK;AACP,WAAO,KAAK,IAAI,CAAC,MAAM,EAAE,SAAS;EACpC;;;;ACnDF,SAAQ,uBAAsB;AAS9B,IAAM,8BAAsC,MAAK;AAC/C,QAAM,UAAU;IACd,OAAO,CAAC,UAAiB,MAAM;IAC/B,sBAAsB,CAAC,OAA+B,aAAsB;AAG1E,aAAO,MAAM,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,YAAY,gBAAgB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACxF;;AAIF,SAAO,eAAe,SAAS,UAAU;IACvC,KAAK,MAAK;AACR,YAAM,IAAS,IAAI,OAAM;AACzB,QAAE,aAAa;AACf,aAAO;IACT;GACD;AAED,SAAO;AACT,GAAE;AAMI,SAAU,2BACd,MAAY;AAEZ,QAAM,eAAe;;gBAEP,wBAAwB,IAAI;;;AAG1C,QAAM,eAAe,gBAAgB,cAAc,0BAA0B;AAE7E,SAAO,CAAC,OAAO,WAAU;AACvB,UAAM,SAAS,aACb,IAAI,uBAAuB,GAAG,KAAK,GACnC,IAAI,sBAAsB,GAAG,MAAM,CAAC;AAKtC,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aAAO,OAAO,WAAW;IAC3B;AACA,WAAO,CAAC,CAAC;EACX;AACF;AAUA,SAAS,wBAAwB,YAAkB;AACjD,SAAO,WACJ,QAAQ,8BAA8B,kBAAkB,EACxD,QAAQ,sBAAsB,wCAAwC,EACtE,QAAQ,0BAA0B,kBAAkB,EACpD,QAAQ,sBAAsB,iBAAiB,EAC/C,QAAQ,WAAW,GAAG;AAC3B;;;AC/CM,IAAO,mBAAP,MAAuB;EAM3B,YACS,WACP,QACS,kBAAsC,CAAA,GAAE;AAF1C,SAAA,YAAA;AAEE,SAAA,kBAAA;AAPF,SAAA,aAA+B,CAAA;AAStC,SAAK,mBAAmB,MAAM;AAC9B,SAAK,YAAY,OAAO,aAAa,EAAC,OAAO,CAAA,GAAI,OAAO,CAAA,EAAE;EAC5D;EAEQ,mBAAmB,QAA8B;AACvD,QAAI,OAAO,YAAY;AACrB,aAAO,OAAO,WAAW,QAAQ,CAAC,cAAa;AAC7C,cAAM,aAAa,UAAU,KAAI;AAEjC,YAAI;AACF,eAAK,WAAW,KAAK;YACnB;YACA,SAAS,2BAA2B,UAAU;YAC9C,cAAc,oBAAI,IAAG;YACrB,cAAc;WACf;QACH,SAAS,GAAP;AACA,cAAI,MAAM,uCAAuC,KAAK,WAAW;AACjE,cAAI,MAAM,MAAM,YAAY;AAC5B,cAAI,MAAM,UAAU,CAAC;AACrB,kBAAQ,KAAK,CAAC;QAChB;MACF,CAAC;IACH;EACF;EAMA,SAAS,UAAgB;AACvB,QAAI,mBAAmC;AAEvC,eAAW,aAAa,KAAK,YAAY;AACvC,YAAM,EAAC,cAAc,SAAS,WAAU,IAAI;AAC5C,UAAI;AACF,cAAM,cAAc,QAAQ,CAAC,QAAQ,GAAG,KAAK,eAAe;AAE5D,YAAI,aAAa;AACf,uBAAa,IAAI,QAAQ;QAC3B;AAEA,4BAAoB,oBAAoB,SAAS;MACnD,SAAS,GAAP;AAGA,YAAI,aAAa,uCAAuC;AACtD,oBAAU,eAAe;AACzB,6BAAmB;QACrB,WAKS,aAAa,sCAAsC;AAC1D,oBAAU,eAAe;QAC3B,OAAO;AACL,gBAAM,aACJ;;YACa,KAAK;KACZ;AACR,cAAI,MAAM,YAAY,QAAQ,GAAG,MAAM;AACvC,kBAAQ,KAAK,CAAC;QAChB;MACF;IACF;AAIA,WAAO,qBAAqB;EAC9B;EAGA,aAAU;AACR,UAAM,oBAAoB,KAAK,WAAW,OAAO,CAAC,MAAM,EAAE,aAAa,OAAO,CAAC;AAC/E,UAAM,sBAAsB,KAAK,WAAW,OAC1C,CAAC,MAAM,EAAE,aAAa,SAAS,KAAK,CAAC,EAAE,YAAY;AAErD,UAAM,yBAAyB,KAAK,WAAW,OAAO,CAAC,MAAM,EAAE,YAAY;AAC3E,WAAO;MACL;MACA,cAAc,kBAAkB;MAChC;MACA,gBAAgB,oBAAoB;MACpC;MACA,WAAW,KAAK;;EAEpB;;;;ALxGI,SAAU,qBAAqB,SAAe;AAClD,aAAO,aAAAC,OAAU,SAAS,EAAC,OAAO,KAAI,CAAC;AACzC;AAGM,SAAU,kBAAkB,oBAA0B;AAE1D,QAAM,cAAc,qBAAqB,kBAAkB;AAC3D,SAAO,OAAO,QAAQ,YAAY,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,KAAK,MAAK;AAC9E,WAAO,OAAO,OAAO,IAAI,iBAAiB,WAAW,OAAO,MAAM,CAAC;EACrE,GAAG,CAAA,CAAwB;AAC7B;;;AF/BA,eAAsBC,UAAM;AAC1B,QAAM,MAAM,MAAM,UAAU,IAAG;AAE/B,QAAM,yBAAyBC,SAAQ,IAAI,SAAS,kBAAkB;AAEtE,QAAM,aAAa,IAAI,SAAQ;AAE/B,QAAM,qBAAqBC,cAAa,wBAAwB,MAAM;AAEtE,QAAM,SAAS,kBAAkB,kBAAkB;AAKnD,QAAM,gBAAgB,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,WAAW,MAAM;AAEvE,QAAM,uBAAuB,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,WAAW,MAAM;AAE/E,QAAM,eAAyB,CAAA;AAE/B,QAAM,iBAA2B,CAAA;AAGjC,aAAW,QAAQ,CAAC,SAAgB;AAClC,QAAI,qBAAqB,OAAO,CAAC,UAAU,MAAM,SAAS,IAAI,CAAC,EAAE,QAAQ;AACvE,mBAAa,KAAK,IAAI;IACxB,OAAO;AACL,qBAAe,KAAK,IAAI;IAC1B;EACF,CAAC;AAED,QAAM,iBAAiB,qBAAqB,IAAI,CAAC,UAAU,MAAM,WAAU,CAAE;AAK7E,QAAM,0BACJ,eAAe,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,KAAK,CAAC,eAAe;AAEpE,QAAM,yBAAyB,OAAO,OACpC,CAAC,UAAU,OAAO,KAAK,MAAM,SAAS,EAAE,WAAW,CAAC;AAGtD,QAAM,gBAAgB,2BAA2B,uBAAuB,WAAW;AAKnF,YAAU,gBAAgB;AAC1B,MAAI,eAAe;AACjB,QAAI,KAAK,qCAAqC;EAChD,OAAO;AACL,QAAI,KAAK,kCAAkC;AAC3C,QAAI,KAAI;AACR,QAAI,KAAK,+DAA+D;AACxE,QAAI,KAAK,+DAA+D;AACxE,QAAI,KAAK,8DAA8D;EACzE;AAEA,YAAU,uBAAuB;AACjC,MAAI,uBAAuB,WAAW,GAAG;AACvC,QAAI,KAAK,uDAAuD;EAClE,OAAO;AACL,QAAI,KAAK,MACP,cAAc,uBAAuB,4CAA4C;AAEnF,2BAAuB,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,SAAS,CAAC;AAC3D,QAAI,KAAK,SAAQ;EACnB;AAIA,YAAU,6BAA6B;AACvC,MAAI,KAAK,MAAM,kBAAkB,aAAa,eAAe;AAC7D,eAAa,QAAQ,CAAC,SAAS,IAAI,MAAM,IAAI,CAAC;AAC9C,MAAI,KAAK,SAAQ;AACjB,MAAI,KAAK,MAAM,oBAAoB,eAAe,eAAe;AACjE,iBAAe,QAAQ,CAAC,SAAS,IAAI,KAAK,IAAI,CAAC;AAC/C,MAAI,KAAK,SAAQ;AAIjB,YAAU,8BAA8B;AACxC,MAAI,KAAK,MAAM,mBAAmB,cAAc,gBAAgB;AAChE,gBAAc,QAAQ,CAAC,UAAU,IAAI,MAAM,GAAG,MAAM,WAAW,CAAC;AAChE,MAAI,KAAK,SAAQ;AACjB,QAAM,gBAAgB,eAAe,OAAO,CAAC,UAAU,CAAC,MAAM,cAAc;AAC5E,MAAI,KAAK,MAAM,gCAAgC,cAAc,gBAAgB;AAC7E,gBAAc,QAAQ,CAAC,UAAU,SAAS,OAAO,qBAAqB,IAAI,KAAK,CAAC;AAChF,MAAI,KAAK,SAAQ;AACjB,QAAM,kBAAkB,eAAe,OAAO,CAAC,UAAU,MAAM,cAAc;AAC7E,MAAI,KAAK,MAAM,kCAAkC,gBAAgB,gBAAgB;AACjF,kBAAgB,QAAQ,CAAC,UAAU,SAAS,OAAO,qBAAqB,CAAC;AACzE,MAAI,KAAK,SAAQ;AACjB,QAAM,iCAAiC,eAAe,OACpD,CAAC,UAAU,MAAM,uBAAuB,SAAS,CAAC;AAEpD,MAAI,KAAK,MACP,qCAAqC,+BAA+B,gBAAgB;AAEtF,iCAA+B,QAAQ,CAAC,UAAU,SAAS,OAAO,wBAAwB,CAAC;AAC3F,MAAI,KAAK,SAAQ;AAGjB,UAAQ,KAAK,gBAAgB,IAAI,CAAC;AACpC;;;AQ7GM,SAAU,uBAAuB,YAAgB;AACrD,SAAO,WACJ,KAAI,EACJ,OAAM,EACN,cAAa,EACb,QAAQ,UAAU,iCAAiC,CAAA,GAAI,MAAMC,QAAM,CAAE;AAC1E;;;ACmBA,SAASC,UAAQ,MAAU;AACzB,SAAO,KAAK,OAAO,QAAQ;IACzB,MAAM;IACN,aAAa;IACb,SAAS;GACV;AACH;AAGA,eAAeC,UAAQ,MAAoC;AACzD,QAAM,SAAS,MAAM,UAAS;AAC9B,2BAAyB,MAAM;AAC/B,QAAM,EAAC,YAAW,IAAI,OAAO;AAC7B,MAAI,gBAAgB,MAAM,YAAY,YAAW;AAGjD,MAAI,kBAAkB,MAAM;AAC1B,QAAI,MAAM,uEAAkE;AAC5E,YAAQ,KAAK,CAAC;EAChB;AAIA,MAAI,cAAc,WAAW,GAAG;AAC9B,QAAI,MAAM,wEAAmE;AAC7E,QAAI,MAAM,0DAA0D;AACpE,YAAQ,KAAK,CAAC;EAChB;AAEA,QAAM,kBAAkB,YAAY,OAClC,CAAC,QAAQ,CAAC,cAAe,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC;AAK3D,MAAI,gBAAgB,SAAS,GAAG;AAC9B,QAAI,MAAM,+DAA0D;AACpE,oBAAgB,QAAQ,CAAC,QAAQ,IAAI,MAAM,WAAW,IAAI,MAAM,CAAC;AACjE,YAAQ,KAAK,CAAC;EAChB;AAEA,MAAI,KAAK,MAAM;AACb,YAAQ,OAAO,MAAM,KAAK,UAAkC,eAAe,MAAM,CAAC,CAAC;EACrF,OAAO;AACL,QAAI,KAAK,MAAM,oCAA+B,CAAC;AAC/C,kBAAc,QAAQ,CAAC,EAAC,KAAI,MAAM,IAAI,KAAK,MAAM,WAAW,MAAM,CAAC,CAAC;EACtE;AACF;AAGO,IAAM,4BAAoE;EAC/E,SAAAD;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;ACtEZ,eAAsB,yBACpB,QACA,QAAqB;AAErB,QAAM,EAAC,kBAAkB,MAAM,QAAQ,iBAAgB,IAAI;AAC3D,QAAM,uBAAuB,MAAM,wBAAwB,KAAK,SAAS,MAAM;AAC/E,QAAM,gBAAgB,KAAK,UAAU,UAAU;AAC/C,QAAM,cAAc,MAAM,oCAAoC,MAAM;AAEpE,MAAI,KAAI;AACR,MAAI,KAAK,KAAK,0CAA0C,CAAC;AAEzD,MAAI,qBAAqB,MAAM;AAC7B,UAAM,UAAU,iBAAiB;AACjC,UAAM,4BAA4B,MAAM,wBAAwB,SAAS,MAAM;AAC/E,UAAM,aAAa,QAAQ,WAAW,OAAO,SAAS,SAAS;AAC/D,UAAM,aAAa,UAAU,mBAAmB;AAEhD,QAAI,KACF,WAAM,KAAK,iBAAiB,UAAU,6BAA6B,mCACzC,KAAK,UAAU,UAAU;AAIrD,QAAI,2BAA2B;AAC7B,UAAI,KAAK,kDAAkD,KAAK,IAAI,SAAS,KAAK;IACpF,OAAO;AACL,UAAI,KAAK,yBAAyB,KAAK,IAAI,SAAS,qCAAqC;IAC3F;EACF;AAGA,MAAI,qBAAqB,MAAM;AAC7B,UAAM,YAAY,iBAAiB;AACnC,UAAM,cAAc,iBAAiB,UAAU,UAAU;AACzD,UAAM,eACJ,UAAU,WAAW,OAAO,SAAS,mBAAmB;AAC1D,QAAI,KACF,WAAM,KAAK,iBAAiB,UAAU,sCACjC,oCAAoC,KAAK,YAAY,UAAU;AAEtE,QAAI,KAAK,kDAAkD,KAAK,IAAI,WAAW,KAAK;EACtF;AAGA,MAAI,KAAK,WAAM,KAAK,OAAO,UAAU,+CAA+C;AACpF,MAAI,KAAK,oDAAoD,KAAK,IAAI,OAAO,SAAS,KAAK;AAG3F,MAAI,KACF,WAAM,KAAK,KAAK,UAAU,4BAA4B,gDAClB;AAKtC,MAAI,sBAAsB;AACxB,QAAI,KACF,0DAA0D,KAAK,IAAI,KAAK,SAAS,KAAK;EAE1F,OAAO;AACL,QAAI,KACF,mCAAmC,KAAK,IAAI,KAAK,SAAS,qCACxC;EAEtB;AAIA,MAAI,qBAAqB,MAAM;AAC7B,QAAI,KAAK,yEAAoE;EAC/E;AAEA,MAAI,KAAI;AACR,MAAI,KAAK,KAAK,sCAAsC,CAAC;AAGrD,MAAI,YAAY,OAAO,WAAW,GAAG;AACnC,eAAW,aAAa,YAAY,QAAQ;AAC1C,UAAI,KAAK,WAAM,KAAK,UAAU,IAAI,mDAAmD;AACrF,UAAI,KACF,oDAAoD,KAAK,IAAI,UAAU,SAAS,KAAK;IAEzF;EACF;AAEA,MAAI,KAAI;AACV;;;ACtEA,SAASC,UAAQ,MAAU;AACzB,SAAO,KAAK,OAAO,QAAQ;IACzB,MAAM;IACN,aAAa;IACb,SAAS;GACV;AACH;AAGA,eAAeC,UAAQ,MAAmC;AACxD,QAAM,SAAS,MAAM,UAAS;AAC9B,2BAAyB,MAAM;AAG/B,MAAI,KAAK,MAAM;AACb,YAAQ,OAAO,MAAM,KAAK,UAAiC,OAAO,SAAS,MAAM,CAAC,CAAC;AACnF;EACF;AAEA,QAAM,MAAM,MAAM,UAAU,IAAG;AAC/B,QAAM,iBAAiB,kBAAkB,IAAI,OAAO,MAAM;AAC1D,QAAM,OAA2B,EAAC,KAAK,IAAI,QAAQ,GAAG,IAAI,cAAc,eAAc;AACtF,QAAM,gBAAgB,MAAM,oBAAoB,MAAM,IAAI;AAG1D,QAAM,yBAAyB,eAAe,OAAO,OAAO;AAC9D;AAGO,IAAM,2BAAkE;EAC7E,SAAAD;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;AC/DZ,IAAAC,iBAAmB;;;ACAnB,iBAAqB;AACrB,IAAAC,iBAAmB;;;ACOnB,IAAM,+BAA+B,OAAO,OAAO,YAAY,EAC5D,OAAO,CAAC,SAAS,KAAK,sBAAsB,kBAAkB,OAAO,EACrE,IAAI,CAAC,SAAS,KAAK,IAAI;AA8BpB,IAAO,gBAAP,MAAoB;EAgBxB,YAA6B,MAAuB;AAAvB,SAAA,OAAA;AAdZ,SAAA,aAAa,KAAK,KAAK,cAAc,CAAA;AAErC,SAAA,eAAe,KAAK,KAAK,gBAAgB,CAAA;AAEjD,SAAA,QAAQ,KAAK,KAAK;AAElB,SAAA,UAAU,KAAK,KAAK;AAEpB,SAAA,YAAY,eAAe,KAAK,KAAK,IAAI;AAEzC,SAAA,wBAAwB,KAAK,KAAK;AAElC,SAAA,UAAU,KAAK,mBAAmB,KAAK,KAAK,OAAO;AAqBpD,SAAA,gCAAgC,CAAC,GAAsB,MAAgC;AAC7F,YAAM,mBAAmB,cAAc,EAAE,MAAM,EAAE,IAAI;AACrD,UAAI,qBAAqB,GAAG;AAC1B,eAAO,cAAc,EAAE,aAAa,EAAE,WAAW;MACnD;AACA,aAAO;IACT;EAzBuD;EAGvD,mBAAmB,SAA2B;AAC5C,WAAO,QAAQ,IAAI,CAAC,WAAU;AAnElC,UAAAC,KAAAC;AAoEM,YAAM,EAAC,aAAa,UAAS,MAAIA,OAAAD,MAAA,KAAK,MAAK,qBAAV,gBAAAC,IAAA,KAAAD,KAA6B,YAAW,CAAA;AACzE,aAAO;QACL,WAAW,aAAa,OAAO;QAC/B,aAAa,eAAe,OAAO;QACnC,GAAG;;IAEP,CAAC;EACH;EAsBA,eAAe,SAA4B;AAEzC,UAAM,SAAS,oBAAI,IAAG;AAGtB,YAAQ,QAAQ,CAAC,WAAU;AACzB,YAAM,MAAM,OAAO;AACnB,YAAM,eAAe,OAAO,IAAI,GAAG,KAAK,CAAA;AACxC,aAAO,IAAI,KAAK,YAAY;AAC5B,mBAAa,KAAK,MAAM;IAC1B,CAAC;AAMD,UAAM,eAAe,MAAM,KAAK,OAAO,QAAO,CAAE,EAC7C,IAAI,CAAC,CAAC,OAAO,YAAY,OAAO;MAC/B;MACA,SAAS,aAAa,KAAK,KAAK,6BAA6B;MAC7D,EACD,KAAK,CAAC,GAAG,MAAM,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC;AAKjD,QAAI,KAAK,WAAW,QAAQ;AAC1B,iBAAW,cAAc,KAAK,WAAW,QAAO,GAAI;AAClD,cAAM,aAAa,aAAa,UAAU,CAAC,MAAM,EAAE,UAAU,UAAU;AACvE,YAAI,eAAe,IAAI;AACrB,gBAAM,gBAAgB,aAAa,OAAO,YAAY,CAAC;AACvD,uBAAa,OAAO,GAAG,GAAG,GAAG,aAAa;QAC5C;MACF;IACF;AACA,WAAO;EACT;EAGA,mBAAmB,QAAyB;AAC1C,WAAO,OAAO,gBAAgB,WAAW;EAC3C;EAGA,gBAAgB,QAAyB;AACvC,WAAO,OAAO,aAAa,WAAW;EACxC;EAMA,wBAAqB;AACnB,WAAO,CAAC,WAA6B;AACnC,UAAI,KAAK,aAAa,SAAS,OAAO,KAAK,GAAG;AAC5C,eAAO;MACT;AAKA,UAAI,KAAK,mBAAmB,MAAM,KAAK,KAAK,gBAAgB,MAAM,GAAG;AACnE,eAAO;MACT;AAEA,aAAO,6BAA6B,SAAS,OAAO,IAAI;IAC1D;EACF;EAMA,OAAO,OAA8B;AACnC,UAAM,MAAM,oBAAI,IAAG;AACnB,WAAO,CAAC,WAA6B;AACnC,YAAM,UAAU,CAAC,IAAI,IAAI,OAAO,MAAM;AACtC,UAAI,IAAI,OAAO,MAAM;AACrB,aAAO;IACT;EACF;EAKA,aAAa,QAAyB;AACpC,UAAME,OAAM,sBAAsB,KAAK,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,eAAe,OAAO;AACnG,WAAO,IAAI,OAAO,cAAcA;EAClC;EAKA,kBAAkB,UAAgB;AAChC,UAAMA,OAAM,sBAAsB,KAAK,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,aAAa;AAC1F,WAAO,KAAK,aAAaA;EAC3B;EAUA,oCAAoC,SAAe;AACjD,WAAO,QAAQ,QAAQ,WAAW,CAAC,GAAG,MAAM,KAAK,kBAAkB,OAAO,CAAC,CAAC,CAAC;EAC/E;EAKA,cAAc,MAAY;AACxB,WAAO,OAAO,KAAK,QAAQ,OAAO,MAAM;EAC1C;EAKA,cAAc,QAAyB;AACrC,QAAI,QAAQ;AACZ,YAAQ,OAAO,MAAM;MACnB,KAAK;AACH,gBAAQ;AACR;MACF,KAAK;AACH,gBAAQ;AACR;MACF,KAAK;AACH,gBAAQ;AACR;IACJ;AACA,UAAMA,OAAM,sBAAsB,KAAK,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,eAAe,OAAO;AACnG,UAAM,SAAS,gCAAgC,OAAO,aAAa,OAAO,QAAQ;AAClF,WAAO,MAAM,OAAO,UAAU,OAAO,cAAc,YAAYA;EACjE;;AAQI,SAAU,eAAe,OAAO,IAAI,KAAI,GAAE;AAC9C,QAAM,OAAO,GAAG,KAAK,YAAW;AAChC,QAAM,QAAQ,GAAG,KAAK,SAAQ,IAAK,IAAI,SAAS,GAAG,GAAG;AACtD,QAAM,MAAM,GAAG,KAAK,QAAO,IAAK,SAAS,GAAG,GAAG;AAE/C,SAAO,CAAC,MAAM,OAAO,GAAG,EAAE,KAAK,GAAG;AACpC;;;AC/OA,IAAA,oBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAf,IAAA,yBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACSf,IAAM,2BAA6C,CAAC,UAAU,WAAW,YAAY,UAAU;AAOzF,SAAU,iCAAiC,QAAc;AAE7D,SAAO,yBAAyB,IAAI,CAAC,MAAM,OAAO,EAAE,EAAE,KAAK,cAAI;AACjE;;;ACUM,SAAU,+BACd,QACA,SACA,SAAe;AAEf,QAAM,UAA8B,CAAA;AACpC,QAAM,iBAAiB,6BAA6B,QAAQ,GAAG,YAAY,SAAS;AACpF,QAAM,iBAAiB,6BAA6B,QAAQ,GAAG,YAAY,SAAS;AAKpF,QAAM,yBAAyB,oBAAI,IAAG;AAEtC,aAAW,UAAU,gBAAgB;AACnC,UAAM,KAAK,iCAAiC,MAAM;AAClD,UAAM,oBAAoB,uBAAuB,IAAI,EAAE,KAAK;AAC5D,2BAAuB,IAAI,IAAI,oBAAoB,CAAC;EACtD;AAEA,aAAW,UAAU,gBAAgB;AACnC,UAAM,KAAK,iCAAiC,MAAM;AAClD,UAAM,oBAAoB,uBAAuB,IAAI,EAAE,KAAK;AAO5D,QAAI,oBAAoB,GAAG;AACzB,6BAAuB,IAAI,IAAI,oBAAoB,CAAC;AACpD;IACF;AAEA,YAAQ,KAAK,MAAM;EACrB;AACA,SAAO;AACT;AAGM,SAAU,6BACd,QACA,eAAqB;AAErB,QAAM,iBAAiB;AACvB,QAAM,SAAS,OAAO,IAAI;IACxB;IACA,YAAY,yBAAyB;IACrC;GACD;AAED,SAAO,OAAO,OACX,MAAM,cAAc,EACpB,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,KAAI,CAAE,EAChC,IAAI,oBAAoB,EACxB,IAAI,CAAC,UAAU,sBAAsB,OAAO,KAAK,OAAO,OAAO,CAAC,CAAC;AACtE;AAQA,SAAS,qBAAqB,SAAe;AAC3C,SAAO,QAAQ,QAAQ,mBAAmB,QAAQ;AACpD;;;ACrGA,IAAAC,iBAAmB;AAFnB,SAAQ,cAAAC,aAAY,gBAAAC,eAAc,iBAAAC,sBAAoB;AACtD,SAAQ,QAAAC,aAAW;AAKnB,IAAM,gBAAgB;AAGtB,IAAM,uBAAuB;AAGtB,IAAM,cAAc;AAe3B,IAAM,aAAa;;EAAO;;;AAG1B,IAAM,uBAAuB,IAAI,OAAO,qBAAqB;AAQvD,IAAO,YAAP,MAAgB;EAEpB,OAAO,4BAA4B,KAAgB,OAAa;AAC9D,UAAM,YAAY,IAAI,KAAK,GAAG;AAC9B,cAAU,4BAA4B,KAAK;EAC7C;EAWA,OAAO,mCAAmC,KAAgB,SAAsB;AAC9E,UAAM,YAAY,IAAI,KAAK,GAAG;AAC9B,cAAU,mCAAmC,OAAO;EACtD;EAQA,OAAO,kCAAkC,KAAgB,SAAsB;AAC7E,UAAM,YAAY,IAAI,KAAK,GAAG;AAC9B,cAAU,kCAAkC,OAAO;EACrD;EAIA,OAAO,sBAAsB,KAAc;AACzC,WAAO,IAAI,KAAK,GAAG;EACrB;EAUA,IAAY,UAAO;AACjB,QAAI,KAAK,aAAa,QAAW;AAC/B,aAAQ,KAAK,WAAW,KAAK,cAAc,KAAK,QAAQ;IAC1D;AACA,WAAO,KAAK;EACd;EAMA,IAAY,iBAAc;AACxB,QAAI,KAAK,oBAAoB,QAAW;AACtC,aAAQ,KAAK,kBAAkB,KAAK,cAAc,KAAK,eAAe;IACxE;AACA,WAAO,KAAK;EACd;EAGA,YAA4B,KAAc;AAAd,SAAA,MAAA;AA1BnB,SAAA,WAAWA,MAAK,KAAK,IAAI,SAAS,aAAa;AAE/C,SAAA,kBAAkBA,MAAK,KAAK,IAAI,SAAS,oBAAoB;AAW9D,SAAA,WAAyC;AAWzC,SAAA,kBAAgD;EAEX;EAGrC,4BAA4B,OAAa;AAC/C,SAAK,QAAQ,QAAQ,oBAAoB,KAAK,CAAC;AAC/C,SAAK,qBAAoB;EAC3B;EAQQ,kCAAkC,SAAsB;AAC9D,SAAK,WAAW,KAAK,QAAQ,OAAO,CAAC,UAAyB;AAG5D,UAAI,MAAM,QAAQ,WAAW,WAAW,GAAG;AACzC,eACE,QAAQ,UAAU,MAAM,QAAQ,SAChC,QAAQ,UAAU,MAAM,QAAQ,SAChC,QAAQ,UAAU,MAAM,QAAQ;MAEpC;AACA,aAAO;IACT,CAAC;AACD,SAAK,qBAAoB;EAC3B;EAWQ,mCAAmC,SAAsB;AAC/D,KAAC,GAAG,KAAK,OAAO,EAAE,QAAO,EAAG,QAAQ,CAAC,UAAyB;AAC5D,UAAI,eAAAC,QAAO,GAAG,MAAM,SAAS,OAAO,GAAG;AACrC,aAAK,eAAe,QAAQ,KAAK;AACjC,aAAK,QAAQ,OAAO,KAAK,QAAQ,QAAQ,KAAK,GAAG,CAAC;MACpD;IACF,CAAC;AAED,SAAK,qBAAoB;AACzB,QAAI,KAAK,eAAe,QAAQ;AAC9B,WAAK,4BAA2B;IAClC;EACF;EAGQ,8BAA2B;AACjC,UAAM,mBAAmB,KAAK,eAAe,IAAI,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,UAAU;AAC1F,IAAAF,eAAc,KAAK,iBAAiB,gBAAgB;EACtD;EAGQ,uBAAoB;AAC1B,UAAM,YAAY,KAAK,QAAQ,IAAI,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,UAAU;AAC5E,IAAAA,eAAc,KAAK,UAAU,SAAS;EACxC;EAMQ,cAAcG,OAAY;AAChC,QAAI,CAACL,YAAWK,KAAI,GAAG;AACrB,aAAO,CAAA;IACT;AAEA,WACEJ,cAAaI,OAAM,EAAC,UAAU,OAAM,CAAC,EAElC,MAAM,WAAW,EAIjB,OAAO,CAAC,UAAU,MAAM,KAAI,EAAG,WAAW,CAAC,EAE3C,IAAI,mBAAmB;EAE9B;;AAIF,SAAS,oBAAoB,SAAe;AAC1C,QAAM,uBAAuB,qBAAqB,KAAK,OAAO;AAC9D,MAAI,yBAAyB,MAAM;AACjC,UAAM,MAAM,oDAAoD,SAAS;EAC3E;AACA,QAAM,UAAU,eAAAD,QAAO,MAAM,qBAAqB,EAAE;AAEpD,MAAI,YAAY,MAAM;AACpB,UAAM,MACJ,8DAA8D,qBAAqB,IAAI;EAE3F;AAEA,SAAO;IACL,SAAS,QAAQ,KAAI;IACrB;;AAEJ;;;ANxLO,IAAM,iCAAiC;AAGxC,IAAO,eAAP,MAAmB;EACvB,aAAa,SAAS,KAAgB,SAAwB,SAAiB,SAAe;AAC5F,UAAM,SAAS,MAAM,UAAU,CAAC,wBAAwB,CAAC;AACzD,UAAM,UAAU,+BAA+B,KAAK,SAAS,OAAO;AACpE,WAAO,IAAI,aAAa,QAAQ,SAAS,SAAS,GAAG;EACvD;EAQA,YACS,QACA,SACC,SACA,KAAc;AAHf,SAAA,SAAA;AACA,SAAA,UAAA;AACC,SAAA,UAAA;AACA,SAAA,MAAA;EACP;EAGH,MAAM,wBAAqB;AACzB,eAAO,mBAAO,wBAAuB,MAAM,KAAK,sBAAqB,GAAI;MACvE,cAAc;KACf;EACH;EAGA,MAAM,oBAAiB;AACrB,eAAO,mBAAO,mBAAmB,MAAM,KAAK,sBAAqB,GAAI,EAAC,cAAc,KAAI,CAAC;EAC3F;EAMA,MAAM,8BAA2B;AAG/B,QAAI,eAAAE,QAAO,WAAW,KAAK,OAAO,MAAM,MAAM;AAC5C,gBAAU,kCAAkC,KAAK,KAAK,KAAK,OAAO;IACpE;AACA,cAAU,4BAA4B,KAAK,KAAK,MAAM,KAAK,kBAAiB,CAAE;AAM9E,QAAI;AACF,8BAAwB,MAAM,KAAK,MAAM;AACzC,YAAM,YAAY,CAAC,UAAU,sBAAsB,KAAK,GAAG,EAAE,QAAQ,CAAC;IACxE,QAAE;IAEF;EACF;EAGA,MAAM,+BAA4B;AAChC,UAAM,UAAU,MAAM,KAAK,sBAAqB;AAChD,WAAO,QAAQ,QAAQ,OAAO,QAAQ,sBAAqB,CAAE,EAAE;EACjE;EAMA,MAAM,2BAAwB;AAC5B,YAAQ,MAAM,KAAK,sBAAqB,GAAI;EAC9C;EAMA,MAAM,wBAAqB;AACzB,UAAM,cAAc,MAAM,KAAK,gBAAe;AAE9C,QAAI,KAAK,UAAU,QAAW;AAC5B,UAAI,YAAY,iBAAiB;AAC/B,aAAK,QAAQ,MAAM,OAAO,MAAM,EAAC,SAAS,0CAAyC,CAAC;MACtF,OAAO;AACL,aAAK,QAAQ;MACf;IACF;AACA,WAAO,KAAK;EACd;EAGQ,MAAM,wBAAqB;AACjC,UAAM,cAAc,MAAM,KAAK,gBAAe;AAE9C,QAAI,CAAC,KAAK,eAAe;AACvB,WAAK,gBAAgB,IAAI,cAAc;QACrC,SAAS,KAAK;QACd,QAAQ,KAAK,IAAI;QACjB,SAAS,KAAK,QAAQ,OAAM;QAC5B,YAAY,YAAY;QACxB,cAAc,YAAY;QAC1B,kBAAkB,YAAY;QAC9B,OAAO,MAAM,KAAK,sBAAqB;OACxC;IACH;AACA,WAAO,KAAK;EACd;EAGQ,MAAM,kBAAe;AAC3B,YAAQ,MAAM,KAAK,QAAQ,QAAQ,gBAAgB,CAAA;EACrD;;;;AD/GF,SAASC,UAAQ,MAAU;AACzB,SAAO,KACJ,OAAO,kBAAkB;IACxB,MAAM;IACN,SAAS;IACT,QAAQ,CAAC,YAAoB,IAAI,eAAAC,QAAO,OAAO,OAAO;GACvD,EACA,OAAO,QAAQ;IACd,MAAM;IACN,aAAa;IACb,cAAc;GACf,EACA,OAAO,MAAM;IACZ,MAAM;IACN,aAAa;IACb,SAAS;GACV,EACA,OAAO,QAAQ;IACd,MAAM;IACN,aAAa;IACb,SAAS,CAAC,kBAAkB,WAAW;IACvC,SAAS;GACV,EACA,OAAO,sBAAsB;IAC5B,MAAM;IACN,SAAS;IACT,aAAa;GACd;AACL;AAGA,eAAeC,UAAQ,EAAC,gBAAgB,MAAM,IAAI,oBAAoB,KAAI,GAAqB;AAE7F,QAAM,MAAM,MAAM,UAAU,IAAG;AAE/B,QAAM,eAAe,MAAM,aAAa,SAAS,KAAK,gBAAgB,MAAM,EAAE;AAE9E,MAAI,oBAAoB;AACtB,UAAM,aAAa,4BAA2B;AAC9C,QAAI,KAAK,4BAA4B,kCAAkC;AACvE;EACF;AAGA,QAAM,oBACJ,SAAS,cACL,MAAM,aAAa,kBAAiB,IACpC,MAAM,aAAa,sBAAqB;AAE9C,UAAQ,OAAO,MAAM,iBAAiB;AACxC;AAGO,IAAM,4BAAwD;EACnE,SAAAF;EACA,SAAAE;EACA,SAAS;EACT,UAAU;;;;AQpEZ,IAAAC,iBAAmB;;;ACLb,IAAO,2BAAP,cAAwC,MAAK;;AAQ7C,SAAU,+BACd,QAA2B,QAAQ,OAAK;AAExC,SAAO,IAAI,QAAQ,CAACC,WAAS,WAAU;AACrC,UAAM,OAAiB,CAAA;AAEvB,UAAM,GAAG,QAAQ,CAAC,UAAU,KAAK,KAAK,KAAK,CAAC;AAC5C,UAAM,GAAG,OAAO,MAAMA,UAAQ,OAAO,OAAO,IAAI,CAAC,CAAC;AAClD,UAAM,GAAG,SAAS,MAAM,OAAO,IAAI,yBAAwB,CAAE,CAAC;AAC9D,UAAM,GAAG,WAAW,MAAM,OAAO,IAAI,yBAAyB,oBAAoB,CAAC,CAAC;EACtF,CAAC;AACH;;;ADUA,eAAeC,YAAO;AAIpB,QAAM,QAAQ,MAAM,+BAA8B;AAClD,QAAM,SAAS,MAAM,UAAS;AAC9B,2BAAyB,MAAM;AAG/B,QAAM,EAAC,uBAAuB,YAAY,cAAa,IAAI,KAAK,MAC9D,MAAM,SAAS,MAAM,CAAC;AAGxB,MAAI,CAAC,MAAM,QAAQ,qBAAqB,GAAG;AACzC,QAAI,MAAM,oFAA+E;AACzF,YAAQ,WAAW;AACnB;EACF;AAEA,QAAM,aAAa,eAAAC,QAAO,MAAM,aAAa;AAC7C,MAAI,eAAe,MAAM;AACvB,QAAI,MAAM,yEAAoE;AAC9E,YAAQ,WAAW;AACnB;EACF;AAEA,MAAI,CAAE,MAAM,8BAA8B,OAAO,SAAS,YAAY,qBAAqB,GAAI;AAC7F,YAAQ,WAAW;EACrB;AACF;AAGO,IAAM,+BAAsD;EACjE,SAAAD;EACA,SAAS;EACT,UAAU;;;;AE3DN,IAAgB,aAAhB,MAA0B;EAK9B,aAAa,QAAQ,aAAqB,SAAqB,aAA+B;AAC5F,UAAM,OAAO,CAAC,WAAW,YAAY,UAAU,SAAS,OAAO;AAE/D,QAAI,gBAAgB,QAAW;AAC7B,WAAK,KAAK,cAAc,WAAW;IACrC;AACA,UAAM,aAAa,MAAM,OAAO,MAAM,EAAC,KAAK,aAAa,MAAM,SAAQ,CAAC;EAC1E;EAMA,aAAa,qBACX,aACA,SACA,SACA,aAA+B;AAE/B,UAAM,OAAO,CAAC,YAAY,OAAO,GAAG,eAAe,WAAW,OAAO;AAErE,QAAI,gBAAgB,QAAW;AAC7B,WAAK,KAAK,cAAc,WAAW;IACrC;AACA,UAAM,aAAa,MAAM,OAAO,MAAM,EAAC,MAAM,SAAQ,CAAC;EACxD;EAMA,aAAa,wBACX,aACA,SACA,aAA+B;AAE/B,UAAM,OAAO,CAAC,YAAY,MAAM,aAAa,OAAO;AAEpD,QAAI,gBAAgB,QAAW;AAC7B,WAAK,KAAK,cAAc,WAAW;IACrC;AACA,UAAM,aAAa,MAAM,OAAO,MAAM,EAAC,MAAM,SAAQ,CAAC;EACxD;EAMA,aAAa,gBAAgB,aAA+B;AAC1D,UAAM,OAAO,CAAC,QAAQ;AAEtB,QAAI,gBAAgB,QAAW;AAC7B,WAAK,KAAK,cAAc,WAAW;IACrC;AACA,QAAI;AACF,YAAM,aAAa,MAAM,OAAO,MAAM,EAAC,MAAM,SAAQ,CAAC;IACxD,SAAS,GAAP;AACA,aAAO;IACT;AACA,WAAO;EACT;EAMA,aAAa,sBAAsB,aAA+B;AAChE,UAAM,OAAO,CAAC,SAAS,cAAc;AAIrC,QAAI,gBAAgB,QAAW;AAC7B,WAAK,OAAO,GAAG,GAAG,cAAc,WAAW;IAC7C;AAGA,UAAM,aAAa,iBAAiB,OAAO,IAAI;EACjD;EAMA,aAAa,OAAO,aAA+B;AACjD,UAAM,OAAO,CAAC,QAAQ;AAItB,QAAI,gBAAgB,QAAW;AAC7B,WAAK,OAAO,GAAG,GAAG,cAAc,WAAW;IAC7C;AACA,QAAI;AACF,YAAM,aAAa,MAAM,OAAO,MAAM,EAAC,MAAM,SAAQ,CAAC;IACxD;AACE,aAAO,KAAK,gBAAgB,WAAW;IACzC;EACF;;;;AC1GI,IAAO,gCAAP,cAA6C,MAAK;;AAGlD,IAAO,0BAAP,cAAuC,MAAK;;;;ACJlD,IAAAE,iBAAmB;;;ACCZ,IAAM,sBAAsB;AAG5B,IAAM,mCAAmC;AAGzC,IAAM,oCAAoC;;;ACPjD,SAAQ,YAAYC,KAAI,cAAAC,mBAAiB;AACzC,OAAOC,SAAO,QAAAC,cAAW;;;ACDzB,IAAAC,iBAAmB;AAGb,SAAU,qBAAqB,SAAsB;AACzD,SAAO,QAAQ,UAAU,KAAK,QAAQ,SAAS;AACjD;AAGM,SAAU,yBAAyB,SAA+B;AACtE,YAAU,IAAI,eAAAC,QAAO,OAAO,OAAO;AACnC,QAAM,sBAAsB,IAAI,eAAAA,QAAO,OAAO,QAAQ,OAAM,CAAE;AAC9D,sBAAoB,QAAQ;AAC5B,sBAAoB,QAAQ,QAAQ,QAAQ,MAAM,QAAQ;AAC1D,SAAO,IAAI,eAAAA,QAAO,OAAO,oBAAoB,OAAM,CAAE;AACvD;;;ACXM,SAAU,wBAAwB,SAAsB;AAC5D,SAAO,QAAQ,OAAM;AACvB;;;ACLA,yBAA0B;AAGpB,IAAgB,gBAAhB,MAA6B;EAEjC,aAAa,QAAQ,SAAe;AAClC,YAAQ,UAAM,gCAAY,SAAS,CAAA,CAAE,GAAG;EAC1C;;;;ACGF,eAAsB,sCACpB,eACA,aAAyB;AAEzB,QAAM,SAAiC,CAAA;AAKvC,aAAW,OAAO,eAAe;AAC/B,UAAMC,QAAO,YAAY,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,IAAI;AAExD,QAAIA,UAAS,QAAW;AACtB,UAAI,MAAM,kCAAkC,WAAW;AACvD,UAAI,MAAM,qEAAgE,IAAI,QAAQ;AACtF,YAAM,IAAI,wBAAuB;IACnC;AAEA,WAAO,KAAK;MACV,MAAM,MAAM,8BAA8B,GAAG;MAC7C,GAAG;MACH,GAAGA;KACJ;EACH;AAEA,SAAO;AACT;AAQA,eAAsB,+BACpB,uBAA6C;AAE7C,QAAM,mBAA6B,CAAA;AAInC,aAAW,OAAO,uBAAuB;AACvC,QAAK,MAAM,8BAA8B,GAAG,MAAO,IAAI,MAAM;AAC3D,uBAAiB,KAAK,IAAI,IAAI;IAChC;EACF;AAEA,MAAI,iBAAiB,SAAS,GAAG;AAC/B,QAAI,MAAM,yEAAoE;AAC9E,QAAI,MAAM,yCAAyC,iBAAiB,KAAK,IAAI,GAAG;AAChF,UAAM,IAAI,wBAAuB;EACnC;AACF;AAGA,eAAe,8BAA8B,KAAiB;AAC5D,SAAO,cAAc,QAAQ,IAAI,UAAU;AAC7C;;;AChEM,SAAU,2BAA2B,YAAyB;AAClE,SAAO,qBAAqB;AAC9B;AAQM,SAAU,8CAA8C,YAAyB;AACrF,SAAO,qCAAqC;AAC9C;AAQM,SAAU,yCAAyC,YAAyB;AAChF,SAAO,uCAAuC;AAChD;AAGM,SAAU,sCAAsC,YAAyB;AAC7E,SAAO,gCAAgC;AACzC;;;AC1BO,IAAM,yBAAyB;;;AC6BhC,IAAgB,mBAAhB,MAAgC;EAQpC,aAAa,iBACX,YACA,YACA,SACA,UAA+C,EAAC,0BAA0B,MAAK,GAAC;AAKhF,UAAM,cAAc,MAAM,4BAA4B,UAAU;AAEhE,QAAI;AAGF,YAAM,aAAa,MACjB,YAAY,QACZ;QACE,GAAG,YAAY;QACf;QACA;QACA;QACA;QACA,QAAQ,OAAM;QACd,gCAAgC,QAAQ;SAE1C,EAAC,KAAK,WAAU,CAAC;AAEnB,UAAI,KAAK,MAAM,mBAAc,iDAAiD,UAAU,CAAC;IAC3F,SAAS,GAAP;AACA,UAAI,MAAM,CAAC;AACX,UAAI,MAAM,oEAA+D,cAAc;AACvF,YAAM,IAAI,wBAAuB;IACnC;EACF;EAMA,aAAa,uBAAuB,YAAoB,YAAsB;AAI5E,UAAM,cAAc,MAAM,4BAA4B,UAAU;AAEhE,QAAI;AAGF,YAAM,aAAa,MACjB,YAAY,QACZ,CAAC,GAAG,YAAY,MAAM,UAAU,WAAW,gBAAgB,UAAU,UAAU,GAC/E,EAAC,KAAK,WAAU,CAAC;AAEnB,UAAI,KAAK,MAAM,uBAAkB,4CAA4C,CAAC;IAChF,SAAS,GAAP;AACA,UAAI,MAAM,CAAC;AACX,UAAI,MAAM,kEAA6D,cAAc;AACrF,YAAM,IAAI,wBAAuB;IACnC;EACF;EAMA,aAAa,mBAAmB,YAAkB;AAIhD,UAAM,cAAc,MAAM,4BAA4B,UAAU;AAGhE,UAAM,UAAU,IAAI,QAAQ,uDAAuD;AAEnF,QAAI;AAIF,YAAM,EAAC,OAAM,IAAI,MAAM,aAAa,MAClC,YAAY,QACZ,CAAC,GAAG,YAAY,MAAM,UAAU,WAAW,SAAS,QAAQ,GAC5D;QACE,KAAK;QACL,MAAM;OACP;AAEH,cAAQ,SAAQ;AAChB,UAAI,KAAK,MAAM,mDAA8C,CAAC;AAG9D,aAAO,KAAK,MAAM,OAAO,KAAI,CAAE;IACjC,SAAS,GAAP;AACA,cAAQ,SAAQ;AAChB,UAAI,MAAM,CAAC;AACX,UAAI,MAAM,mEAA8D;AACxE,YAAM,IAAI,wBAAuB;IACnC;EACF;EASA,aAAa,kBAAkB,YAAkB;AAI/C,UAAM,cAAc,MAAM,4BAA4B,UAAU;AAEhE,QAAI;AAGF,YAAM,EAAC,OAAM,IAAI,MAAM,aAAa,MAClC,YAAY,QACZ,CAAC,GAAG,YAAY,MAAM,UAAU,WAAW,QAAQ,QAAQ,GAC3D;QACE,KAAK;QACL,MAAM;OACP;AAGH,aAAO,KAAK,MAAM,OAAO,KAAI,CAAE;IACjC,SAAS,GAAP;AACA,UAAI,MAAM,CAAC;AACX,UAAI,MACF,6GACqC;AAEvC,YAAM,IAAI,wBAAuB;IACnC;EACF;EAUA,aAAa,sBACX,YACA,YACA,uBAA6C;AAK7C,UAAM,cAAc,MAAM,4BAA4B,UAAU;AAChE,UAAM,gBAA0C;MAC9C;MACA,YAAY,WAAW,OAAM;;AAG/B,QAAI;AAIF,YAAM,aAAa,MACjB,YAAY,QACZ,CAAC,GAAG,YAAY,MAAM,UAAU,WAAW,UAAU,GACrD;QACE,KAAK;QAGL,OAAO,KAAK,UAAU,aAAa;OACpC;AAEH,UAAI,KAAK,MAAM,8CAAyC,YAAY,CAAC;IACvE,SAAS,GAAP;AAGA,UAAI,MAAM,CAAC;AACX,UAAI,MAAM,gEAA2D;AACrE,YAAM,IAAI,wBAAuB;IACnC;EACF;EAMA,aAAa,kBAAkB,YAAkB;AAI/C,UAAM,cAAc,MAAM,4BAA4B,UAAU;AAEhE,QAAI;AAGF,YAAM,aAAa,MACjB,YAAY,QACZ;QACE,GAAG,YAAY;QACf;QACA,GAAI,YAAY,SAAS,CAAC,qBAAqB,mBAAmB,IAAI,CAAC,aAAa;SAEtF,EAAC,KAAK,WAAU,CAAC;AAEnB,UAAI,KAAK,MAAM,4CAAuC,CAAC;IACzD,SAAS,GAAP;AACA,UAAI,MAAM,CAAC;AACX,UAAI,MAAM,6DAAwD;AAClE,YAAM,IAAI,wBAAuB;IACnC;EACF;EAMA,aAAa,iCAAiC,YAAkB;AAC9D,UAAM,UAAU,IAAI,QAAQ,4BAA4B;AAExD,QAAI;AACF,YAAM,aAAa,MAAM,YAAW,GAAI,CAAC,OAAO,cAAc,GAAG;QAC/D,KAAK;QACL,MAAM;OACP;IACH,SAAS,GAAP;AAGA,UAAI,MAAM,CAAC;IACb;AAEA,YAAQ,QAAQ,MAAM,wCAAwC,CAAC;EACjE;;;;AC9PF,eAAsB,oBAAoB,KAAgB,IAAU;AAClE,QAAM,EAAC,KAAI,IAAI,MAAM,IAAI,OAAO,MAAM,IAAI,EAAC,GAAG,IAAI,cAAc,aAAa,GAAE,CAAC;AAChF,MAAI,KAAK,QAAQ;AACf,WAAO;EACT;AACA,SAAO,MAAM,wCAAwC,KAAK,EAAE;AAC9D;AAQA,eAAe,wCAAwC,KAAgB,IAAU;AAC/E,QAAM,SAAS,MAAM,IAAI,OAAO,SAAS,IAAI,OAAO,OAAO,YAAY;IACrE,GAAG,IAAI;IACP,cAAc;GACf;AAKD,WAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAC3C,UAAM,EAAC,OAAO,UAAS,IAAI,OAAO;AAGlC,QAAI,UAAU,YAAY;AACxB,aAAO;IACT;AAGA,QAAI,UAAU,YAAY,WAAW;AACnC,aAAO;IACT;AAMA,QACE,UAAU,gBACV,aACC,MAAM,2BAA2B,KAAK,WAAW,EAAE,GACpD;AACA,aAAO;IACT;EACF;AACA,SAAO;AACT;AAGA,eAAe,2BAA2B,KAAgB,KAAa,IAAU;AAC/E,QAAM,EAAC,KAAI,IAAI,MAAM,IAAI,OAAO,MAAM,UAAU,EAAC,GAAG,IAAI,cAAc,KAAK,IAAG,CAAC;AAG/E,SAAO,KAAK,OAAO,QAAQ,MACzB,IAAI,OAAO,gDAAgD,aAAa,GAAG,CAAC;AAEhF;;;AC5DA,eAAsB,iCACpB,KACA,EAAC,IAAI,KAAAC,KAAG,GAAc;AAEtB,MAAI,KAAI;AACR,MAAI,KAAI;AACR,MAAI,KAAK,MAAM,KAAK,uBAAuB,8BAA8BA,MAAK,CAAC,CAAC;AAChF,MAAI,KAAK,KAAK,uEAAuE,CAAC;AACtF,MAAI,KAAK,EAAE;AACX,MAAI,KAAK,qBAAqB,KAAK,KAAK,mDAAmD;AAC3F,MAAI,KAAK,yEAAyE;AAClF,MAAI,KAAK,EAAE;AACX,MAAI,KAAK,qFAAqF;AAC9F,MAAI,KAAK,mFAAmF;AAC5F,MAAI,KAAK,EAAE;AAIX,SAAO,MAAM;AACX,QAAI,CAAE,MAAM,OAAO,QAAQ,EAAC,SAAS,4CAA4C,MAAK,CAAC,GAAI;AACzF;IACF;AAEA,QAAI,KAAK,2CAA2C,MAAM;AAC1D,QAAI,KAAK,EAAE;AAEX,QAAI;AAKF,UAAI,MAAM,mCAAmC,KAAK,EAAE,GAAG;AACrD;MACF;AAEA,YAAM,EAAC,MAAM,QAAQ,QAAO,IAAI,MAAM,IAAI,OAAO,MAAM,MAAM;QAC3D,GAAG,IAAI;QACP,aAAa;QACb,cAAc;OACf;AAGD,UAAI,KAAK,QAAQ;AACf;MACF;AAKA,UAAI,MAAM,4BAAuB,yBAAyB;AAC1D,UAAI,MAAM,SAAS,KAAK,YAAY,SAAS;AAC7C,UAAI,MAAM,MAAM,QAAQ,OAAO;IACjC,SAAS,GAAP;AACA,UAAI,CAAC,iBAAiB,CAAC,GAAG;AACxB,cAAM;MACR;AAKA,UAAI,MAAM,4BAAuB,yBAAyB;AAC1D,UAAI,MAAM,SAAS,EAAE,YAAY,EAAE,SAAS;AAC5C,UAAI,MAAM,CAAC;IACb;EACF;AAEA,MAAI,KAAK,MAAM,4BAAuB,qBAAqB,CAAC;AAC9D;AAGA,eAAe,mCACb,KACA,IAAU;AAEV,MAAI;AACF,WAAO,MAAM,oBAAoB,KAAK,EAAE;EAC1C,SAAS,GAAP;AACA,QAAI,iBAAiB,CAAC,GAAG;AACvB,UAAI,MAAM,wCAAwC,qBAAqB;AACvE,UAAI,MAAM,CAAC;AACX,aAAO;IACT;AACA,UAAM;EACR;AACF;;;ATjEA,IAAAC,oBAAmB;AA2Cb,IAAgB,gBAAhB,MAA6B;EAEjC,OAAO,SAAS,SAA8B,SAAsB;AAClE,UAAM,MAAM,kBAAkB;EAChC;EAWA,YACY,QACA,KACA,QACA,YAAkB;AAHlB,SAAA,SAAA;AACA,SAAA,MAAA;AACA,SAAA,SAAA;AACA,SAAA,aAAA;EACT;EASO,MAAM,qBACd,YACA,oBAAmD;AAEnD,UAAM,cAAcC,OAAK,KAAK,YAAY,gCAAgC;AAC1E,UAAM,UAAU,KAAK,MAAM,MAAMC,IAAG,SAAS,aAAa,MAAM,CAAC;AAIjE,QAAI,uBAAuB,QAAW;AACpC,yBAAmB,OAAO;IAC5B;AACA,YAAQ,UAAU,WAAW,OAAM;AAGnC,UAAMA,IAAG,UAAU,aAAa,GAAG,KAAK,UAAU,SAAS,MAAM,CAAC;CAAK;AACvE,QAAI,KAAK,MAAM,yCAAoC,QAAQ,SAAS,CAAC;AAErE,QAAI,KAAK,OAAO,sBAAsBC,YAAWC,MAAK,KAAK,KAAK,YAAY,SAAS,CAAC,GAAG;AACvF,YAAM,iBAAiB,iCAAiC,KAAK,UAAU;IACzE;EACF;EAKU,qBAAkB;AAE1B,WAAO,KAAK,OAAO,qBACf,uBAAK,KAAK,CAAC,cAAc,gBAAgB,GAAG,EAAC,KAAK,KAAK,WAAU,CAAC,IAClE,CAAA;EACN;EAGU,MAAM,wBAAwB,YAAkB;AACxD,UAAM,EACJ,MAAM,EAAC,OAAM,EAAC,IACZ,MAAM,KAAK,IAAI,OAAO,MAAM,UAAU,EAAC,GAAG,KAAK,IAAI,cAAc,QAAQ,WAAU,CAAC;AACxF,WAAO,OAAO;EAChB;EAGQ,MAAM,uBACZ,cACA,gBACA,oBAA0B;AAE1B,UAAM,EACJ,MAAM,EAAC,UAAU,OAAM,EAAC,IACtB,MAAM,KAAK,IAAI,OAAO,MAAM,eAAe;MAC7C,GAAG,KAAK,IAAI;MACZ,MAAM;MACN,MAAM;KACP;AAED,WAAO,WAAW,WAAW,aAAa;EAC5C;EAQU,MAAM,0BAA0B,WAAmB,oBAA0B;AACrF,UAAM,EAAC,OAAM,IAAI,MAAM,sBAAa,mCAAmC,KAAK,IAAI,QAAQ;MACtF,GAAG,KAAK,IAAI;MACZ,KAAK;KACN;AACD,UAAM,mBAAmB,0BAA0B,KAAK,KAAK,kBAAkB;AAE/E,QAAI,WAAW,aAAa,WAAW,MAAM;AAC3C,UAAI,MACF,4CAAuC,sHAC6C;AAEtF,UAAI,MAAM,gCAAgC,kBAAkB;AAE5D,UAAI,MAAM,OAAO,QAAQ,EAAC,SAAS,uDAAsD,CAAC,GAAG;AAC3F,YAAI,KACF,wFAAmF;AAErF;MACF;AACA,YAAM,IAAI,8BAA6B;IACzC,WAAW,WAAW,WAAW;AAC/B,UAAI,MACF,sBAAiB,6FAC4B;AAE/C,UAAI,MAAM,gCAAgC,kBAAkB;AAC5D,UAAI,MAAM,OAAO,QAAQ,EAAC,SAAS,uDAAsD,CAAC,GAAG;AAC3F,YAAI,KAAK,iFAA4E;AACrF;MACF;AACA,YAAM,IAAI,8BAA6B;IACzC;AAEA,QAAI,KAAK,MAAM,iEAA4D,CAAC;EAC9E;EAMU,MAAM,mCAAmC,YAAyB;AAC1E,QAAI,KACF,4HACyC;AAE3C,QAAI,KAAK,oFAAoF;AAE7F,QAAI,CAAE,MAAM,OAAO,QAAQ,EAAC,SAAS,iDAAgD,CAAC,GAAI;AACxF,YAAM,IAAI,8BAA6B;IACzC;AAGA,UAAM,gBAAgB,2BAA2B,UAAU;AAC3D,UAAM,gBAAgB;MACpB;MACA;MACA,GAAG,KAAK,mBAAkB;;AAI5B,UAAM,KAAK,aAAa,eAAe,aAAa;AAKpD,QAAI,KAAK,IAAI,sBAAqB,GAAI;AACpC,UAAI,MAAM,+EAA0E;AACpF,YAAM,IAAI,wBAAuB;IACnC;AAEA,QAAI,KAAK,MAAM,2CAAsC,cAAc,CAAC;EACtE;EAMQ,MAAM,8BAA2B;AACvC,QAAI;AACF,aAAO,KAAK,IAAI,2BAA0B;IAC5C,QAAE;AACA,YAAM,EAAC,OAAO,KAAI,IAAI,KAAK,IAAI;AAC/B,UAAI,MAAM,kEAA6D;AACvE,UAAI,MAAM,8CAA8C,SAAS,OAAO;AACxE,YAAM,IAAI,wBAAuB;IACnC;EACF;EAGQ,MAAM,4BAA4B,MAAkB,MAAY;AACtE,QAAI;AACF,YAAM,KAAK,IAAI,OAAO,MAAM,UAAU,EAAC,OAAO,KAAK,OAAO,MAAM,KAAK,MAAM,QAAQ,KAAI,CAAC;AACxF,aAAO;IACT,SAAS,GAAP;AAGA,UAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,KAAK;AAC3C,eAAO;MACT;AACA,YAAM;IACR;EACF;EAGQ,MAAM,yBAAyB,MAAkB,UAAgB;AACvE,QAAI,cAAc;AAClB,QAAI,YAAY;AAChB,WAAO,MAAM,KAAK,4BAA4B,MAAM,WAAW,GAAG;AAChE;AACA,oBAAc,GAAG,YAAY;IAC/B;AACA,WAAO;EACT;EAMU,MAAM,0BAA0B,YAAkB;AAC1D,SAAK,IAAI,IAAI,CAAC,YAAY,MAAM,MAAM,UAAU,CAAC;EACnD;EAGU,MAAM,uBAAuB,YAAkB;AAEvD,SAAK,IAAI,IAAI,CAAC,QAAQ,MAAM,KAAK,IAAI,cAAa,GAAI,mBAAmB,YAAY,CAAC;EACxF;EAWQ,MAAM,gBACZ,oBACA,kBAAyB;AAEzB,UAAMC,QAAO,MAAM,KAAK,4BAA2B;AAGnD,UAAM,aAAa,oBACjB,EAAC,GAAGA,OAAM,QAAQ,KAAK,IAAI,aAAa,OAAM,GAC9C,KAAK,IAAI,WAAW;AAEtB,UAAM,aAAa,MAAM,KAAK,yBAAyBA,OAAM,kBAAkB;AAC/E,UAAM,WAAqB,CAAA;AAG3B,QAAI,kBAAkB;AACpB,YAAM,KAAK,0BAA0B,UAAU;AAC/C,eAAS,KAAK,gBAAgB;IAChC;AAEA,SAAK,IAAI,IAAI,CAAC,QAAQ,MAAM,YAAY,mBAAmB,cAAc,GAAG,QAAQ,CAAC;AACrF,WAAO,EAAC,MAAAA,OAAM,WAAU;EAC1B;EAQU,MAAM,sCACd,cACA,wBACA,OACA,MAAa;AAEb,UAAM,WAAW,GAAG,KAAK,IAAI,aAAa,SAAS,KAAK,IAAI,aAAa;AACzE,UAAM,EAAC,MAAAA,OAAM,WAAU,IAAI,MAAM,KAAK,gBAAgB,wBAAwB,IAAI;AAClF,UAAM,EAAC,KAAI,IAAI,MAAM,KAAK,IAAI,OAAO,MAAM,OAAO;MAChD,GAAG,KAAK,IAAI;MACZ,MAAM,GAAGA,MAAK,SAAS;MACvB,MAAM;MACN;MACA;KACD;AAGD,QAAI,KAAK,OAAO,oBAAoB,QAAW;AAC7C,YAAM,KAAK,IAAI,OAAO,OAAO,UAAU;QACrC,GAAG,KAAK,IAAI;QACZ,cAAc,KAAK;QACnB,QAAQ,KAAK,OAAO;OACrB;IACH;AAEA,QAAI,KAAK,MAAM,oCAA+B,KAAK,aAAa,WAAW,CAAC;AAC5E,WAAO;MACL,IAAI,KAAK;MACT,KAAK,KAAK;MACV,MAAAA;MACA,YAAY;;EAEhB;EAOU,MAAM,+BAA+B,cAA0B;AACvE,UAAM,aAAa,4BAA2B;AAC9C,QAAI,KACF,MAAM,4DAAuD,aAAa,WAAW,CAAC;EAE1F;EAGU,MAAM,uBAAuB,YAAkB;AACvD,SAAK,IAAI,IAAI,CAAC,SAAS,MAAM,KAAK,IAAI,cAAa,GAAI,UAAU,CAAC;AAClE,SAAK,IAAI,IAAI,CAAC,YAAY,MAAM,cAAc,UAAU,CAAC;EAC3D;EAGU,MAAM,sCAAmC;AACjD,UAAM,iBAAiBJ,OAAK,KAAK,YAAY,cAAc;AAO3D,UAAMC,IAAG,GAAG,gBAAgB,EAAC,OAAO,MAAM,WAAW,MAAM,YAAY,EAAC,CAAC;AACzE,UAAM,iBAAiB,kBAAkB,KAAK,UAAU;EAC1D;EAOU,MAAM,aAAa,SAAiB,OAAe;AAG3D,SAAK,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAI9B,SAAK,IAAI,IAAI,CAAC,UAAU,MAAM,eAAe,MAAM,SAAS,GAAG,KAAK,CAAC;EACvE;EAQU,MAAM,+BAA4B;AAM1C,UAAM,gBAAgB,MAAM,iBAAiB,mBAAmB,KAAK,UAAU;AAC/E,UAAM,cAAc,MAAM,iBAAiB,kBAAkB,KAAK,UAAU;AAI5E,WAAO,sCAAsC,eAAe,YAAY,WAAW;EACrF;EAgBU,MAAM,0CACd,YACA,+BACA,yBACA,MAAqB;AAMrB,UAAM,yBAAyB,wBAAwB,6BAA6B;AAKpF,SAAK,IAAI,IAAI;MACX;MACA;MACA,KAAK,IAAI,cAAa;MACtB,aAAa,oCAAoC;KAClD;AAGD,UAAM,eAAe,MAAM,aAAa,SACtC,KAAK,KACL,YACA,wBACA,MAAM;AAGR,UAAM,KAAK,qBAAqB,YAAY,6BAAM,eAAe;AACjE,UAAM,KAAK,+BAA+B,YAAY;AACtD,UAAM,KAAK,mCAAmC,UAAU;AAGxD,UAAM,KAAK,oCAAmC;AAE9C,UAAM,wBAAwB,MAAM,KAAK,6BAA4B;AAGrE,UAAM,iBAAiB,sBACrB,KAAK,YACL,YACA,qBAAqB;AAIvB,UAAM,KAAK,uBAAuB,aAAa,SAAS,qBAAqB;AAE7E,UAAM,cAAc,MAAM,KAAK,sCAC7B,yBACA,iBAAiB,cACjB,qBAAqB,6BAA6B;AAGpD,QAAI,KAAK,MAAM,2DAAsD,CAAC;AAEtE,WAAO,EAAC,cAAc,aAAa,sBAAqB;EAC1D;EAcU,MAAM,8BACd,YACA,+BACA,eACA,aAA4B;AAU5B,UAAM,mBAAmB,MAAM,KAAK,wBAAwB,aAAa;AAEzE,UAAM,KAAK,0BAA0B,kBAAkB,aAAa;AACpE,UAAM,KAAK,uBAAuB,aAAa;AAE/C,UAAM,cAAc,MAAM,KAAK,0CAC7B,YACA,+BACA,eACA,WAAW;AAGb,WAAO;MACL,GAAG;MACH;;EAEJ;EAOU,MAAM,kCACd,cACA,eAAqB;AAErB,UAAM,aAAa,KAAK,OAAO,KAAK;AACpC,UAAM,gBAAgB,sCAAsC,aAAa,OAAO;AAGhF,UAAM,KAAK,uBAAuB,UAAU;AAE5C,UAAM,KAAK,+BAA+B,YAAY;AAGtD,UAAM,KAAK,aAAa,eAAe,CAAC,8BAA8B,CAAC;AACvE,QAAI,KAAK,MAAM,yDAAoD,aAAa,WAAW,CAAC;AAG5F,UAAM,cAAc,MAAM,KAAK,sCAC7B,YACA,yBAAyB,aAAa,WACtC,eACA,wCAAwC,6CAC3B,cAAc;AAG7B,QAAI,KACF,MACE,kEAA6D,+BACxC,CACtB;AAGH,UAAM,KAAK,kCAAkC,WAAW;AAExD,WAAO;EACT;EAGU,MAAM,kCAAkC,aAAwB;AACxE,UAAM,iCAAiC,KAAK,KAAK,WAAW;EAC9D;EAgBQ,MAAM,+BACZ,cACA,sBACA,cACA,sBAA6B;AAE7B,UAAM,UAAU,wBAAwB,aAAa,OAAO;AAC5D,UAAM,KAAK,IAAI,OAAO,IAAI,UAAU;MAClC,GAAG,KAAK,IAAI;MACZ,KAAK,aAAa;MAClB,KAAK;KACN;AACD,QAAI,KAAK,MAAM,sBAAiB,aAAa,2BAA2B,CAAC;AAEzE,QAAI,cAAc,MAAM,aAAa,sBAAqB;AAI1D,QAAI,YAAY,SAAS,wBAAwB;AAC/C,YAAM,kBAAkB,MAAM,KAAK,6BAA6B,cAAc,OAAO;AACrF,oBACE,4EAC2B;IAC/B;AAEA,UAAM,KAAK,IAAI,OAAO,MAAM,cAAc;MACxC,GAAG,KAAK,IAAI;MACZ,MAAM,IAAI,aAAa;MACvB,UAAU;MACV,YAAY;MACZ,aAAa,uBAAuB,SAAS;MAC7C,MAAM;KACP;AACD,QAAI,KAAK,MAAM,uBAAkB,aAAa,4BAA4B,CAAC;EAC7E;EAGQ,MAAM,6BAA6B,cAA4B,KAAW;AAChF,UAAM,UAAU,mBAAmB,KAAK,KAAK,KAAK,8BAA8B;AAChF,UAAM,cAAc,MAAM,aAAa,yBAAwB;AAC/D,WAAO,GAAG,WAAW;EACvB;EAeU,MAAM,QACd,uBACA,cACA,kBACA,eACA,YACA,mBAAkD;AAElD,UAAM,uBAAuB,MAAM,KAAK,wBAAwB,aAAa;AAG7E,QAAI,CAAE,MAAM,KAAK,2BAA2B,aAAa,SAAS,oBAAoB,GAAI;AACxF,UAAI,MAAM,gCAA2B,gDAAgD;AACrF,UAAI,MAAM,kEAAkE;AAC5E,YAAM,IAAI,wBAAuB;IACnC;AAMA,QAAI,CAAE,MAAM,KAAK,uBAAuB,kBAAkB,sBAAsB,CAAC,GAAI;AACnF,UAAI,MAAM,iFAA4E;AACtF,UAAI,MAAM,6EAA6E;AACvF,YAAM,IAAI,wBAAuB;IACnC;AAIA,UAAM,+BAA+B,qBAAqB;AAG1D,UAAM,KAAK,+BACT,cACA,sBACA,eAAe,QACf,kBAAkB,oBAAoB;AAIxC,eAAW,OAAO,uBAAuB;AACvC,YAAM,KAAK,0BAA0B,KAAK,UAAU;IACtD;AAEA,QAAI,KAAK,MAAM,gDAA2C,CAAC;EAC7D;EAGQ,MAAM,0BAA0B,KAAmB,YAAsB;AAC/E,QAAI,MAAM,wBAAwB,IAAI,QAAQ;AAC9C,UAAM,UAAU,IAAI,QAAQ,eAAe,IAAI,OAAO;AAEtD,QAAI;AACF,YAAM,WAAW,QAAQ,IAAI,YAAY,YAAY,KAAK,OAAO,eAAe;AAChF,cAAQ,SAAQ;AAChB,UAAI,KAAK,MAAM,sCAAiC,IAAI,OAAO,CAAC;IAC9D,SAAS,GAAP;AACA,cAAQ,SAAQ;AAChB,UAAI,MAAM,CAAC;AACX,UAAI,MAAM,kDAA6C,IAAI,QAAQ;AACnE,YAAM,IAAI,wBAAuB;IACnC;EACF;EAGQ,MAAM,2BAA2B,SAAwB,WAAiB;AAChF,UAAM,EAAC,KAAI,IAAI,MAAM,KAAK,IAAI,OAAO,MAAM,UAAU;MACnD,GAAG,KAAK,IAAI;MACZ,KAAK;KACN;AACD,WAAO,KAAK,OAAO,QAAQ,WAAW,2BAA2B,OAAO,CAAC;EAC3E;EAIQ,MAAM,uBAAuB,SAAwB,UAAgC;AAE3F,UAAM,sBAAsB,yBAAyB,OAAO;AAE5D,eAAW,OAAO,UAAU;AAC1B,YAAM,EAAC,SAAS,mBAAkB,IAAI,KAAK,MACzC,MAAMA,IAAG,SAASD,OAAK,IAAI,YAAY,cAAc,GAAG,MAAM,CAAC;AAGjE,YAAM,kBAAkB,IAAI,eAAe,sBAAsB;AACjE,YAAM,oBAAoB,gBAAgB,QAAQ,kBAAkB,MAAM;AAE1E,UAAI,mBAAmB;AACrB,YAAI,MAAM,iDAAiD,IAAI,OAAO;AACtE,YAAI,MAAM,uBAAuB,oBAAoB;AACrD,YAAI,MAAM,uBAAuB,iBAAiB;AAClD,cAAM,IAAI,wBAAuB;MACnC;IACF;EACF;;;;AU1vBI,SAAU,sBAAsB,GAAgB;AACpD,SAAO,EAAE,WAAW,OAAO,UAAU,EAAE,WAAW,OAAO;AAC3D;;;AZOM,IAAO,6BAAP,cAA0C,cAAa;EAA7D,cAAA;;AACU,SAAA,cAAc,eAAAK,QAAO,MAAM,GAAG,KAAK,OAAO,KAAK,QAAQ,QAAQ,cAAc;EAyCvF;EAvCW,MAAM,iBAAc;AAC3B,UAAM,EAAC,WAAU,IAAI,KAAK,OAAO;AACjC,UAAM,aAAa,KAAK;AACxB,WAAO,kBAAkB,gDAAgD;EAC3E;EAES,MAAM,UAAO;AACpB,UAAM,EAAC,WAAU,IAAI,KAAK,OAAO;AACjC,UAAM,aAAa,KAAK;AACxB,UAAM,mBAAmB,MAAM,KAAK,wBAAwB,UAAU;AAEtE,UAAM,KAAK,0BAA0B,kBAAkB,UAAU;AACjE,UAAM,KAAK,uBAAuB,UAAU;AAC5C,UAAM,KAAK,qBAAqB,UAAU;AAE1C,UAAM,KAAK,aAAa,yCAAyC,UAAU,GAAG;MAC5E;MACA,GAAG,KAAK,mBAAkB;KAC3B;AACD,UAAM,cAAc,MAAM,KAAK,sCAC7B,YACA,wBAAwB,cACxB,uDAAuD,YAAY;AAGrE,QAAI,KAAK,MAAM,8DAAyD,CAAC;AAEzE,UAAM,KAAK,kCAAkC,WAAW;EAC1D;EAEA,aAAsB,SAAS,QAA6B,QAAqB;AAG/E,WACE,CAAC,OAAO,KAAK,WACb,sBAAsB,OAAO,KAAK,OAAO,KACzC,CAAE,MAAM,wBAAwB,OAAO,KAAK,SAAS,MAAM;EAE/D;;;;AaxDF,IAAAC,iBAAmB;AAMb,SAAU,UACd,SACA,SACA,YAAmB;AAEnB,QAAM,QAAQ,IAAI,eAAAC,QAAO,OAAO,QAAQ,OAAO;AAC/C,SAAO,MAAM,IAAI,SAAS,UAAU;AACtC;;;ACCM,IAAO,gCAAP,cAA6C,cAAa;EAAhE,cAAA;;AAEE,SAAA,cAAc,oCAAoC,KAAK,MAAM;EAsE/D;EApEW,MAAM,iBAAc;AAC3B,UAAM,EAAC,OAAM,IAAI,MAAM,KAAK;AAC5B,WAAO,+CAA+C,OAAO;EAC/D;EAES,MAAM,UAAO;AACpB,UAAM,YAAY,MAAM,KAAK,0BAAyB;AACtD,UAAM,aAAa,UAAU,UAAU,SAAS,OAAO;AACvD,UAAM,gCAAgC,UAAU;AAEhD,UAAM,EAAC,aAAa,cAAc,uBAAuB,iBAAgB,IACvE,MAAM,KAAK,8BACT,YACA,+BACA,UAAU,IAAI;AAGlB,UAAM,KAAK,kCAAkC,WAAW;AACxD,UAAM,KAAK,QACT,uBACA,cACA,kBACA,UAAU,MACV,UAAU,YACV,EAAC,sBAAsB,MAAK,CAAC;AAE/B,UAAM,KAAK,kCAAkC,cAAc,UAAU,IAAI;EAC3E;EAGQ,MAAM,4BAAyB;AACrC,UAAM,EAAC,QAAQ,SAAQ,IAAI,MAAM,KAAK;AACtC,UAAM,sBAAiE,OAAO,IAAI,CAAC,WACjF,KAAK,uBAAuB,MAAM,CAAC;AAErC,UAAM,wBAAwB,SAAS,IAAI,CAAC,WAAW,KAAK,uBAAuB,MAAM,CAAC;AAK1F,QAAI,SAAS,WAAW,GAAG;AACzB,0BAAoB,KAAK,EAAC,MAAM,2CAA2C,OAAO,KAAI,CAAC;IACzF;AAEA,UAAM,kBAAkB,MAAM,OAAO,OAAyB;MAC5D,SAAS;MACT,SAAS;KACV;AACD,QAAI,iBAAiB;AACnB,aAAO;IACT;AACA,WAAO,MAAM,OAAO,OAAkB;MACpC,SAAS;MACT,SAAS;KACV;EACH;EAGQ,uBAAuB,QAAiB;AAC9C,WAAO,EAAC,MAAM,IAAI,OAAO,QAAQ,eAAe,OAAO,SAAS,OAAO,OAAM;EAC/E;EAEA,aAAsB,SAAS,SAA4B;AAIzD,WAAO;EACT;;;;AC5EI,IAAO,oBAAP,cAAiC,cAAa;EAApD,cAAA;;AACU,SAAA,mBAAmB,KAAK,OAAO,OAAO;AACtC,SAAA,cAAc,UAAU,KAAK,kBAAkB,OAAO;EAqChE;EAnCW,MAAM,iBAAc;AAC3B,UAAM,EAAC,WAAU,IAAI,KAAK,OAAO;AACjC,UAAM,aAAa,KAAK;AACxB,WAAO,oCAAoC,wBAAwB;EACrE;EAES,MAAM,UAAO;AACpB,UAAM,EAAC,WAAU,IAAI,KAAK,OAAO;AACjC,UAAM,aAAa,KAAK;AACxB,UAAM,gCAAgC,KAAK;AAE3C,UAAM,EAAC,aAAa,cAAc,uBAAuB,iBAAgB,IACvE,MAAM,KAAK,8BACT,YACA,+BACA,UAAU;AAGd,UAAM,KAAK,kCAAkC,WAAW;AACxD,UAAM,KAAK,QACT,uBACA,cACA,kBACA,YACA,UACA,EAAC,sBAAsB,KAAI,CAAC;AAE9B,UAAM,KAAK,kCAAkC,cAAc,UAAU;EACvE;EAEA,aAAsB,SAAS,SAA4B;AAGzD,WAAO;EACT;;;;AChCI,IAAgB,0BAAhB,cAAgD,cAAa;EAyBxD,MAAM,iBAAc;AAC3B,UAAM,SAAS,KAAK,WAAU;AAC9B,UAAM,aAAa,MAAM,KAAK,cAAa;AAC3C,WAAO,kCAAkC,oBAAoB;EAC/D;EAIA,MAAM,iCAA8B;AAClC,UAAM,SAAS,KAAK,WAAU;AAC9B,UAAM,aAAa,MAAM,KAAK,cAAa;AAC3C,WAAO,0CAA0C,oBAAoB;EACvE;EAES,MAAM,UAAO;AACpB,UAAM,aAAa,KAAK,WAAU;AAClC,UAAM,aAAa,MAAM,KAAK,cAAa;AAC3C,UAAM,gCAAgC,MAAM,KAAK;AAEjD,UAAM,EAAC,aAAa,cAAc,uBAAuB,iBAAgB,IACvE,MAAM,KAAK,8BACT,YACA,+BACA,UAAU;AAGd,UAAM,KAAK,kCAAkC,WAAW;AACxD,UAAM,KAAK,QACT,uBACA,cACA,kBACA,YACA,KAAK,YACL,EAAC,sBAAsB,MAAK,CAAC;AAM/B,QAAI,KAAK,iBAAiB,KAAK,OAAO,MAAM;AAC1C,YAAM,KAAK,kCAAkC,cAAc,UAAU;IACvE;EACF;EAMA,MAAM,gBAAa;AACjB,QAAI,MAAM,KAAK,0BAA0B;AACvC,aAAO,KAAK,aAAa;IAC3B,OAAO;AACL,aAAO,UAAU,KAAK,aAAa,SAAS,YAAY;IAC1D;EACF;EAEQ,aAAU;AAChB,WAAO,KAAK,aAAa;EAC3B;;;;ACpFI,IAAO,6BAAP,cAA0C,wBAAuB;EAAvE,cAAA;;AACE,SAAA,eAAe,KAAK,OAAO,oBAAoB,KAAK,OAAO;AAC3D,SAAA,aAAa;AAEb,SAAA,4BAA4B,YAAW;AAMrC,UAAI,KAAK,iBAAiB,KAAK,OAAO,QAAQ,sBAAsB,KAAK,OAAO,KAAK,OAAO,GAAG;AAC7F,eAAO,CAAE,MAAM,wBAAwB,KAAK,OAAO,KAAK,SAAS,KAAK,MAAM;MAC9E;AACA,aAAO;IACT,GAAE;AAEF,SAAA,8BAAsD,YAAW;AAM/D,UAAI,KAAK,iBAAiB,KAAK,OAAO,QAAS,MAAM,KAAK,0BAA2B;AACnF,eAAO,KAAK,OAAO,OAAO;MAC5B;AACA,aAAO,KAAK,aAAa;IAC3B,GAAE;EAOJ;EALE,aAAsB,SAAS,SAA4B;AAGzD,WAAO;EACT;;;;AC9BI,IAAO,mCAAP,cAAgD,2BAA0B;EACrE,MAAM,iBAAc;AAC3B,WAAO,MAAM,MAAM,+BAA8B;EACnD;EAES,MAAM,gBAAa;AAC1B,WAAO,UAAU,KAAK,aAAa,SAAS,cAAc,IAAI;EAChE;EAEA,aAAsB,SAAS,QAA2B;AAExD,WAAO,OAAO,gBAAe;EAC/B;;;;AC5BF,IAAAC,kBAAmB;AAkBb,IAAO,kBAAP,cAA+B,cAAa;EAAlD,cAAA;;AACU,SAAA,SAAU,KAAK,OAAO,oBAAoB,KAAK,OAAO;AACtD,SAAA,UAAU,KAAK,OAAO;AACtB,SAAA,cAAc,KAAK,mBAAmB,KAAK,MAAM;AACjD,SAAA,cAAc,KAAK,OAAO;EA6HpC;EA3HW,MAAM,iBAAc;AAC3B,QAAI,KAAK,aAAa;AACpB,aAAO,iCAAiC,KAAK,mDAA8C,KAAK;IAClG,OAAO;AACL,aAAO,iCAAiC,KAAK,qDAAgD,KAAK;IACpG;EACF;EAES,MAAM,UAAO;AAEpB,QAAI,KAAK,eAAe,KAAK,WAAW,KAAK,OAAO,kBAAkB;AACpE,YAAM,IAAI,wBAAwB,qDAAqD;IACzF;AAEA,UAAM,aAAa,KAAK;AACxB,UAAM,aAAa,KAAK;AAIxB,UAAM,gCAAgC,KAAK,OAAO,OAAO;AAKzD,UAAM,cAA8B;MAClC,iBAAiB,CAAC,YAAW;AAC3B,gBAAQ,oCAAoC;MAC9C;;AAGF,UAAM,EAAC,aAAa,cAAc,uBAAuB,iBAAgB,IACvE,MAAM,KAAK,8BACT,YACA,+BACA,YACA,WAAW;AAGf,UAAM,KAAK,kCAAkC,WAAW;AAExD,UAAM,KAAK,QACT,uBACA,cACA,kBACA,YACA,KAAK,eAAc,GACnB,EAAC,sBAAsB,KAAI,CAAC;AAM9B,QAAI,KAAK,WAAW,KAAK,OAAO,kBAAkB;AAChD,YAAM,iBAAiB,uBACrB,KAAK,YACL,8BAA8B;IAElC;AAIA,QAAI,KAAK,aAAa;AACpB,YAAM,gBAAgB,KAAK,OAAO;AAClC,YAAM,iBAAiB,wBAAwB,cAAc,QAAQ,KAAK;AAQ1E,YAAM,KAAK,uBAAuB,cAAc,UAAU;AAC1D,YAAM,KAAK,oCAAmC;AAE9C,YAAM,iBAAiB,iBACrB,KAAK,YACL,gBACA,cAAc,SACd;QAEE,0BAA0B;OAC3B;IAEL;AAEA,UAAM,KAAK,kCAAkC,cAAc,UAAU;EACvE;EAEQ,iBAAc;AAWpB,WAAO,KAAK,cAAc,SAAS;EACrC;EAGQ,mBAAmB,EAAC,QAAO,GAAe;AAChD,WAAO,gBAAAC,QAAO,MAAM,GAAG,QAAQ,SAAS,QAAQ,SAAS,QAAQ,OAAO;EAC1E;EAEA,aAAsB,SAAS,QAA2B;AAQxD,QAAI,OAAO,qBAAqB,MAAM;AACpC,aAAO,OAAO,iBAAiB,QAAQ,WAAW,OAAO;IAC3D;AACA,QAAI,OAAO,qBAAqB,MAAM;AACpC,aAAO,OAAO,iBAAiB,QAAQ,WAAW,OAAO;IAC3D;AACA,WAAO;EACT;;;;ACrII,IAAO,sCAAP,cAAmD,wBAAuB;EAAhF,cAAA;;AACE,SAAA,eAAe,KAAK,OAAO;AAU3B,SAAA,aAAa;AAEb,SAAA,4BAA4B,YAAW;AAIrC,aACE,sBAAsB,KAAK,aAAa,OAAO,KAC/C,CAAE,MAAM,wBAAwB,KAAK,aAAa,SAAS,KAAK,MAAM;IAE1E,GAAE;AAEF,SAAA,8BAAsD,YAAW;AAC/D,UAAI,MAAM,KAAK,0BAA0B;AACvC,eAAO,KAAK,OAAO,OAAO;MAC5B;AACA,aAAO,KAAK,aAAa;IAC3B,GAAE;EAUJ;EARW,MAAM,iBAAc;AAE3B,WAAO,sBAAsB,MAAM,MAAM,eAAc;EACzD;EAEA,aAAsB,SAAS,QAA2B;AACxD,WAAO,OAAO,qBAAqB;EACrC;;;;ACnCI,IAAO,4CAAP,cAAyD,oCAAmC;EACvF,MAAM,iBAAc;AAE3B,WAAO,sBAAsB,MAAM,MAAM,+BAA8B;EACzE;EAES,MAAM,gBAAa;AAC1B,WAAO,UAAU,KAAK,aAAa,SAAS,cAAc,IAAI;EAChE;EAEA,aAAsB,SAAS,QAA2B;AACxD,WAGE,OAAO,qBAAqB,QAAQ,OAAO,iBAAiB,QAAQ,WAAW,OAAO;EAE1F;;;;AC/BF,IAAAC,kBAAmB;AAmBb,IAAO,gCAAP,cAA6C,cAAa;EAAhE,cAAA;;AACU,SAAA,SAAS,KAAK,OAAO;AACrB,SAAA,cAAc,KAAK,OAAO;AAC1B,SAAA,gBAAgB,KAAK,OAAO;AAC5B,SAAA,aAAa,GAAG,KAAK,cAAc,SAAS,KAAK,cAAc,QAAQ;AACvE,SAAA,cAAc,gBAAAC,QAAO,MAC3B,GAAG,KAAK,cAAc,SAAS,KAAK,cAAc,QAAQ,YAAY;EA0C1E;EAvCE,MAAM,iBAAc;AAClB,WAAO,uDAAuD,KAAK,wBAAwB,KAAK;EAClG;EAEA,MAAM,UAAO;AACX,UAAM,sBAAsB,MAAM,KAAK,wBAAwB,KAAK,WAAW;AAE/E,UAAM,KAAK,0BAA0B,qBAAqB,KAAK,WAAW;AAE1E,UAAM,KAAK,uBAAuB,KAAK,WAAW;AAClD,UAAM,KAAK,0BAA0B,KAAK,UAAU;AACpD,UAAM,KAAK,qBAAqB,KAAK,aAAa,CAAC,YAAW;AAC5D,cAAQ,oCAAoC;IAC9C,CAAC;AAED,UAAM,KAAK,aAAa,4CAA4C,KAAK,cAAc;MACrF;MACA,GAAG,KAAK,mBAAkB;KAC3B;AAED,UAAM,KAAK,uBAAuB,KAAK,UAAU;AAEjD,QAAI,KAAK,MAAM,8BAAyB,KAAK,sBAAsB,CAAC;AACpE,QAAI,KAAK,MAAM,sDAAsD,CAAC;EACxE;EAEA,aAAsB,SAAS,QAA2B;AACxD,QAAI,OAAO,qBAAqB,MAAM;AACpC,aAAO;IACT;AAGA,QAAI,OAAO,qBAAqB,MAAM;AACpC,aAAO,OAAO,iBAAiB;IACjC;AAGA,WAAO,OAAO,KAAK;EACrB;;;;AClEF,IAAAC,kBAAmB;AAsBb,IAAgB,gCAAhB,cAAsD,2BAA0B;EAAtF,cAAA;;AAOU,SAAA,kBAAkB,IAAI,2BAC5B,IAAI,oBAAoB,EAAC,GAAG,KAAK,QAAQ,kBAAkB,KAAI,CAAC,GAChE,KAAK,KACL,KAAK,QACL,KAAK,UAAU;AAET,SAAA,gBAAgB,IAAI,iCAC1B,IAAI,oBAAoB,EAAC,GAAG,KAAK,QAAQ,kBAAkB,KAAK,OAAO,KAAI,CAAC,GAC5E,KAAK,KACL,KAAK,QACL,KAAK,UAAU;EA0HnB;EAvHW,MAAM,iBAAc;AAC3B,UAAM,EAAC,WAAU,IAAI,KAAK,OAAO;AACjC,UAAM,aAAa,MAAM,KAAK,mBAAkB;AAChD,WAAO,aAAa,2BAA2B,KAAK,wBAAwB;EAC9E;EAES,MAAM,UAAO;AACpB,UAAM,iBAAiB,KAAK,OAAO,KAAK;AACxC,UAAM,gCAAgC,MAAM,KAAK,kCAAiC;AAClF,UAAM,aAAa,MAAM,KAAK,mBAAkB;AAChD,UAAM,YAAY,GAAG,WAAW,SAAS,WAAW;AACpD,UAAM,mBAAmB,MAAM,KAAK,wBAAwB,cAAc;AAG1E,UAAM,KAAK,0BAA0B,kBAAkB,cAAc;AAGrE,UAAM,KAAK,gCAAgC,SAAS;AAKpD,UAAM,EAAC,aAAa,cAAc,sBAAqB,IACrD,MAAM,KAAK,0CACT,YACA,+BACA,SAAS;AAMb,UAAM,KAAK,kCAAkC,WAAW;AACxD,UAAM,KAAK,QAAQ,uBAAuB,cAAc,kBAAkB,WAAW,QAAQ;MAC3F,sBAAsB;KACvB;AAED,UAAM,uBAAuB,MAAM,KAAK,mCACtC,cACA,UAAU;AAEZ,UAAM,KAAK,kCAAkC,oBAAoB;EACnE;EAGQ,MAAM,qBAAkB;AAC9B,QAAI,KAAK,iBAAiB,kBAAkB;AAC1C,aAAO,KAAK,gBAAgB,cAAa;IAC3C,OAAO;AACL,aAAO,KAAK,cAAc,cAAa;IACzC;EACF;EAGQ,MAAM,oCAAiC;AAK7C,WAAO,MAAM,KAAK,gBAAgB;EACpC;EAGQ,MAAM,gCAAgC,WAAiB;AAC7D,UAAM,EAAC,YAAY,WAAU,IAAI,KAAK,OAAO;AAC7C,UAAM,KAAK,uBAAuB,UAAU;AAC5C,UAAM,KAAK,0BAA0B,SAAS;AAC9C,UAAM,KAAK,uBAAuB,SAAS;AAC3C,QAAI,KAAK,MAAM,8BAAyB,qBAAqB,CAAC;EAChE;EAOQ,MAAM,mCACZ,cACA,YAAyB;AAEzB,UAAM,EAAC,YAAY,YAAY,QAAO,IAAI,KAAK,OAAO;AAGtD,UAAM,iBAAiB,gBAAAC,QAAO,MAAM,GAAG,QAAQ,SAAS,QAAQ,QAAQ,YAAY;AACpF,UAAM,oBAAoB,8CAA8C,cAAc;AAEtF,UAAM,KAAK,uBAAuB,UAAU;AAC5C,UAAM,KAAK,qBAAqB,cAAc;AAI9C,UAAM,KAAK,aAAa,mBAAmB;MACzC;MACA,GAAG,KAAK,mBAAkB;KAC3B;AAED,UAAM,KAAK,+BAA+B,YAAY;AAEtD,UAAM,gBAAgB,sCAAsC,aAAa,OAAO;AAEhF,UAAM,KAAK,aAAa,eAAe,CAAC,8BAA8B,CAAC;AAEvE,QAAI,yBACF,wDACG,KAAK;;+CAEJ,uBAAuB;AAE7B,UAAM,wBAAwB,MAAM,KAAK,sCACvC,YACA,sBAAsB,kBACtB,qDAAqD,oBACrD,sBAAsB;AAGxB,QAAI,KAAK,MAAM,6CAAwC,sCAAsC,CAAC;AAE9F,WAAO;EACT;;;;ACvJI,IAAO,kCAAP,cAA+C,8BAA6B;EAAlF,cAAA;;AACW,SAAA,eAAe;EAS1B;EAPE,aAAsB,SAAS,QAA2B;AAKxD,WAAO,OAAO,qBAAqB,QAAQ,OAAO,KAAK;EACzD;;;;ACTI,IAAO,qCAAP,cAAkD,8BAA6B;EAArF,cAAA;;AACW,SAAA,eAAe;EAQ1B;EANE,aAAsB,SAAS,QAA2B;AAIxD,WAAO,OAAO,qBAAqB,QAAQ,CAAC,OAAO,KAAK;EAC1D;;;;ACjBF,IAAAC,kBAAmB;AAkBb,IAAO,uCAAP,cAAoD,cAAa;EAC5D,MAAM,iBAAc;AAC3B,WAAO;EACT;EAES,MAAM,UAAO;AACpB,UAAM,YAAY,MAAM,KAAK,qBAAqB,uCAAuC;AACzF,UAAM,gCAAgC,gBAAAC,QAAO,MAC3C,MAAM,OAAO,MAAM,EAAC,SAAS,8BAA6B,CAAC,CAAC;AAG9D,UAAM,aAAa,gBAAAA,QAAO,MACxB,GAAG,UAAU,cAAc,SAAS,UAAU,cAAc,SAAS;AAGvE,UAAM,EAAC,aAAa,cAAc,uBAAuB,iBAAgB,IACvE,MAAM,KAAK,8BACT,YACA,+BACA,UAAU,MAAM;AAGpB,UAAM,KAAK,kCAAkC,WAAW;AACxD,UAAM,KAAK,QACT,uBACA,cACA,kBACA,UAAU,QACV,wBAAwB,WAAW,KAAK,GACxC,EAAC,sBAAsB,MAAK,CAAC;AAE/B,UAAM,KAAK,kCAAkC,cAAc,UAAU,MAAM;EAC7E;EAEQ,MAAM,qBAAqB,SAAe;AAIhD,UAAM,SAAS,MAAM,OAAO,MAAM,EAAC,QAAO,CAAC;AAC3C,QAAI,CAAC,gBAAgB,MAAM,GAAG;AAC5B,UAAI,MAAM,mCAAmC;AAC7C,YAAM,IAAI,wBAAuB;IACnC;AAEA,UAAM,gBAAgB,6BAA6B,MAAM;AACzD,QAAI,kBAAkB,MAAM;AAC1B,UAAI,MAAM,iCAAiC;AAC3C,YAAM,IAAI,wBAAuB;IACnC;AACA,WAAO,EAAC,QAAQ,cAAa;EAC/B;EAEA,aAAsB,SAAS,SAA4B;AAEzD,WAAO,QAAQ,IAAI,sCAAsC;EAC3D;;;;ACzEF,IAAAC,kBAAmB;AAmBb,IAAO,yBAAP,cAAsC,cAAa;EAC9C,MAAM,iBAAc;AAC3B,WAAO,mCAAmC,KAAK,OAAO,OAAO;EAC/D;EAES,MAAM,UAAO;AACpB,UAAM,KAAK,iCAAiC,KAAK,OAAO,OAAO,OAAO;AACtE,UAAM,KAAK,uBAAuB,KAAK,OAAO,OAAO,UAAU;AAC/D,UAAM,KAAK,oCAAmC;AAC9C,UAAM,iBAAiB,iBAAiB,KAAK,YAAY,UAAU,KAAK,OAAO,OAAO,OAAO;EAC/F;EAMA,MAAM,iCAAiC,SAAsB;AAC3D,UAAM,iBAAiB,wBAAwB,OAAO;AACtD,UAAM,EAAC,MAAM,YAAW,IAAI,MAAM,KAAK,IAAI,OAAO,MAAM,gBAAgB;MACtE,GAAG,KAAK,IAAI;MACZ,KAAK;KACN;AAED,UAAM,KAAK,IAAI,OAAO,MAAM,cAAc;MACxC,GAAG,KAAK,IAAI;MACZ,YAAY,YAAY;MACxB,YAAY;KACb;EACH;EAEA,aAAsB,SAAS,EAAC,OAAM,GAAwB,QAAqB;AAIjF,QAAI,OAAO,QAAQ,UAAU,KAAK,OAAO,QAAQ,UAAU,GAAG;AAC5D,aAAO;IACT;AAEA,UAAM,cAAc,MAAM,2BAA2B,MAAM;AAC3D,UAAM,mBAAmB,gBAAAC,QAAO,MAAM,YAAY,aAAa,SAAS;AAIxE,WAAO,qBAAqB,QAAQ,iBAAiB,UAAU,OAAO,QAAQ,QAAQ;EACxF;;;;AC5CK,IAAM,UAAsC;EACjD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;;;;AC/BF,IAAAC,eAAiC;AAHjC,YAAYC,WAAU;AACtB,YAAYC,SAAQ;AACpB,OAAOC,eAAc;AAkBrB,eAAsB,0BAA0B,eAAqB;AA5BrE,MAAAC,KAAAC,KAAAC;AA8BE,QAAM,eAAe;AACrB,QAAM,2BAAgC,WAAK,eAAe,gCAAgC;AAC1F,QAAM,uBAA4B,WAAK,eAAe,iCAAiC;AAEvF,MAAI;AACF,UAAM,cAAc,KAAK,MAAS,iBAAa,0BAA0B,MAAM,CAAC;AAEhF,QAAI,YAAY,SAAS,qBAAqB;AAC5C,aAAO;IACT;AAEA,UAAM,kBAAqB,iBAAa,sBAAsB,MAAM;AAEpE,QAAI;AACJ,QAAI;AACF,YAAM,WAAWC,UAAS,MAAM,eAAe;AAE/C,UAAI,SAAS,SAAS,WAAW;AAC/B,cAAM,MAAM,uEAAuE;MACrF;AACA,uBAAiB,SAAS;IAC5B,QAAE;AACA,2BAAiB,aAAAC,OAAU,eAAe;IAC5C;AAEA,UAAM,uBACJJ,MAAA,2CAAa,iBAAb,gBAAAA,IAA4B,2BAC5BC,MAAA,2CAAa,oBAAb,gBAAAA,IAA+B,2BAC/BC,MAAA,2CAAa,yBAAb,gBAAAA,IAAoC;AACtC,UAAM,kBAAkB,eAAe,GAAG,uBAAuB,sBAAsB;AAEvF,QAAI,iBAAiB,iBAAiB;AACpC,UAAI,MAAM,oFAA+E;AACzF,UAAI,MAAM,6DAA6D;AACvE,UAAI,MAAM,gFAAgF;AAC1F,aAAO;IACT;AACA,WAAO;EACT,SAAS,GAAP;AACA,QAAI,MAAM,CAAC;AACX,WAAO;EACT;AACF;;;ACjDA,IAAY;CAAZ,SAAYG,kBAAe;AACzB,EAAAA,iBAAAA,iBAAA,aAAA,KAAA;AACA,EAAAA,iBAAAA,iBAAA,iBAAA,KAAA;AACA,EAAAA,iBAAAA,iBAAA,sBAAA,KAAA;AACF,GAJY,oBAAA,kBAAe,CAAA,EAAA;AAMrB,IAAO,cAAP,MAAkB;EAItB,YACY,MACA,SACA,SACA,cAAoB;AAHpB,SAAA,OAAA;AACA,SAAA,UAAA;AACA,SAAA,UAAA;AACA,SAAA,eAAA;AANJ,SAAA,8BAA8B,KAAK,KAAK,2BAA0B;EAOvE;EAGH,MAAM,MAAG;AACP,QAAI,KAAI;AACR,QAAI,KAAK,OAAO,8CAA8C,CAAC;AAC/D,QAAI,KAAK,OAAO,4CAA4C,CAAC;AAC7D,QAAI,KAAK,OAAO,8CAA8C,CAAC;AAC/D,QAAI,KAAI;AAER,UAAM,EAAC,OAAO,KAAI,IAAI,KAAK;AAC3B,UAAM,iBAAiB,kBAAkB,KAAK,OAAO;AAErD,QACE,CAAE,MAAM,KAAK,4BAA2B,KACxC,CAAE,MAAM,KAAK,6BAA6B,cAAc,KACxD,CAAE,MAAM,KAAK,2BAA0B,KACvC,CAAE,MAAM,0BAA0B,KAAK,YAAY,GACnD;AACA,aAAO,gBAAgB;IACzB;AAEA,QAAI,CAAE,MAAM,KAAK,qBAAoB,GAAK;AACxC,aAAO,gBAAgB;IACzB;AAOA,YAAQ,IAAI,WAAW;AAEvB,UAAM,OAA2B,EAAC,OAAO,MAAM,KAAK,KAAK,KAAK,QAAQ,eAAc;AACpF,UAAM,gBAAgB,MAAM,oBAAoB,MAAM,IAAI;AAI1D,UAAM,yBAAyB,eAAe,KAAK,OAAO;AAE1D,UAAM,SAAS,MAAM,KAAK,wBAAwB,aAAa;AAE/D,QAAI;AACF,YAAM,OAAO,QAAO;IACtB,SAAS,GAAP;AACA,UAAI,aAAa,+BAA+B;AAC9C,eAAO,gBAAgB;MACzB;AAGA,UAAI,EAAE,aAAa,4BAA4B,aAAa,OAAO;AACjE,gBAAQ,MAAM,CAAC;MACjB;AACA,aAAO,gBAAgB;IACzB;AACE,YAAM,KAAK,QAAO;IACpB;AAEA,WAAO,gBAAgB;EACzB;EAGQ,MAAM,UAAO;AAEnB,SAAK,KAAK,SAAS,KAAK,6BAA6B,IAAI;AAEzD,UAAM,WAAW,OAAO,KAAK,QAAQ,eAAe;EACtD;EAGQ,MAAM,wBAAwB,cAAiC;AACrE,UAAM,UAAkD,CAAA;AAGxD,aAAS,cAAc,SAAS;AAC9B,UAAI,MAAM,WAAW,SAAS,cAAc,KAAK,OAAO,GAAG;AACzD,cAAM,SAAwB,IAAI,WAChC,cACA,KAAK,MACL,KAAK,SACL,KAAK,YAAY;AAEnB,gBAAQ,KAAK,EAAC,MAAM,MAAM,OAAO,eAAc,GAAI,OAAO,OAAM,CAAC;MACnE;IACF;AAEA,QAAI,KAAK,wDAAwD;AAEjE,UAAM,gBAAgB,MAAM,OAAO,OAAsB;MACvD,SAAS;MACT;KACD;AAED,WAAO;EACT;EAMQ,MAAM,8BAA2B;AACvC,QAAI,KAAK,KAAK,sBAAqB,GAAI;AACrC,UAAI,MAAM,+EAA0E;AACpF,aAAO;IACT;AACA,WAAO;EACT;EAMQ,MAAM,6BAA0B;AACtC,QAAI,KAAK,KAAK,cAAa,GAAI;AAC7B,UAAI,MAAM,2DAAsD;AAChE,UAAI,MAAM,iFAAiF;AAC3F,UAAI,MAAM,kFAAkF;AAC5F,aAAO;IACT;AACA,WAAO;EACT;EAMQ,MAAM,6BAA6B,gBAAsB;AAC/D,UAAM,UAAU,KAAK,KAAK,IAAI,CAAC,aAAa,MAAM,CAAC,EAAE,OAAO,KAAI;AAChE,UAAM,EAAC,KAAI,IAAI,MAAM,KAAK,KAAK,OAAO,MAAM,UAAU;MACpD,GAAG,KAAK,KAAK;MACb,QAAQ,KAAK,KAAK;KACnB;AAED,QAAI,YAAY,KAAK,OAAO,KAAK;AAC/B,UAAI,MAAM,gEAA2D;AACrE,UAAI,MAAM,oDAAoD,yBAAyB;AACvF,aAAO;IACT;AACA,WAAO;EACT;EAMQ,MAAM,uBAAoB;AAvLpC,QAAAC;AAwLI,UAAM,WAAW,cAAc,KAAK,QAAQ,mBAAmB;AAG/D,SAAIA,MAAA,KAAK,QAAQ,oBAAb,gBAAAA,IAA8B,SAAS,qCAAqC;AAC9E,UAAI,KAAK,4EAA4E;AACrF,UAAI;AACF,cAAM,WAAW,sBAAsB,KAAK,QAAQ,eAAe;MACrE,QAAE;AACA,eAAO;MACT;AACA,aAAO;IACT;AACA,QAAI,MAAM,WAAW,gBAAgB,KAAK,QAAQ,eAAe,GAAG;AAClE,UAAI,MAAM,uBAAuB,WAAW;AAC5C,aAAO;IACT;AACA,QAAI,KAAK,wCAAmC,WAAW;AACvD,UAAM,cAAc,MAAM,OAAO,QAAQ,EAAC,SAAS,sCAAqC,CAAC;AACzF,QAAI,aAAa;AACf,UAAI,MAAM,qBAAqB;AAC/B,UAAI;AACF,cAAM,WAAW,sBAAsB,KAAK,QAAQ,eAAe;MACrE,QAAE;AACA,eAAO;MACT;AACA,aAAO;IACT;AACA,WAAO;EACT;;;;AC9LF,SAASC,UAAQ,MAAU;AACzB,SAAO,qBAAqB,IAAI;AAClC;AAGA,eAAeC,YAAO;AACpB,QAAM,MAAM,MAAM,uBAAuB,IAAG;AAC5C,QAAM,SAAS,MAAM,UAAS;AAC9B,2BAAyB,MAAM;AAC/B,0BAAwB,MAAM;AAE9B,QAAM,OAAO,IAAI,YAAY,KAAK,OAAO,SAAS,OAAO,QAAQ,IAAI,OAAO;AAC5E,QAAM,SAAS,MAAM,KAAK,IAAG;AAE7B,UAAQ,QAAQ;IACd,KAAK,gBAAgB;AACnB,UAAI,MAAM,iEAAiE;AAC3E,cAAQ,WAAW;AACnB;IACF,KAAK,gBAAgB;AACnB,UAAI,KAAK,OAAO,2CAA2C,CAAC;AAC5D,cAAQ,WAAW;AACnB;IACF,KAAK,gBAAgB;AACnB,UAAI,KAAK,MAAM,4CAA4C,CAAC;AAC5D;EACJ;AACF;AAGO,IAAM,8BAAwE;EACnF,SAAAD;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;AC1CZ,IAAAC,kBAAmB;AAoBnB,SAASC,UAAQ,MAAU;AACzB,SAAO,KACJ,WAAW,WAAW;IACrB,MAAM;IACN,cAAc;IACd,aAAa;GACd,EACA,WAAW,iBAAiB;IAC3B,MAAM;IACN,cAAc;IACd,aACE;GAEH,EACA,OAAO,4BAA4B;IAClC,MAAM;IACN,aAAa;IACb,SAAS;GACV;AACL;AAGA,eAAeC,UAAQ,MAA4C;AACjE,QAAM,EAAC,eAAe,YAAY,SAAS,yBAAwB,IAAI;AACvE,QAAM,SAAS,MAAM,UAAS;AAC9B,2BAAyB,MAAM;AAC/B,QAAM,EAAC,aAAa,gBAAe,IAAI,OAAO;AAC9C,QAAM,UAAU,gBAAAC,QAAO,MAAM,UAAU;AAEvC,MAAI,YAAY,MAAM;AACpB,QAAI,MAAM,8BAA8B,0CAA0C;AAClF,YAAQ,KAAK,CAAC;EAChB,WAAW,qBAAqB,OAAO,GAAG;AACxC,QAAI,MACF,mHAC4C;AAE9C,YAAQ,KAAK,CAAC;EAChB;AAEA,MAAI,MAAM,YAAY,kDAAkD,UAAU;AAClF,QAAM,UAAU,IAAI,QAAQ,EAAE;AAE9B,aAAW,OAAO,aAAa;AAG7B,QAAI,IAAI,gBAAgB,0BAA0B;AAChD,cAAQ,OAAO,aAAa,IAAI,qCAAqC;AACrE;IACF;AAEA,YAAQ,OAAO,6BAA6B,IAAI,OAAO;AACvD,UAAM,iBAAiB,IAAI,eAAe,yBAAyB,OAAQ,IAAI;AAE/E,QAAI;AACF,YAAM,WAAW,qBAAqB,IAAI,MAAM,SAAS,gBAAgB,eAAe;AACxF,UAAI,MAAM,qBAAqB,8BAA8B,IAAI,QAAQ;IAC3E,SAAS,GAAP;AACA,cAAQ,SAAQ;AAChB,UAAI,MAAM,CAAC;AACX,UAAI,MAAM,oEAA+D,IAAI,QAAQ;AACrF,cAAQ,KAAK,CAAC;IAChB;EACF;AAEA,UAAQ,SAAQ;AAChB,MAAI,KAAK,MAAM,uDAAkD,CAAC;AAClE,MAAI,KAAK,MAAM,SAAS,KAAK,OAAO,uBAAuB,KAAK,IAAI,SAAS,IAAI,CAAC;AACpF;AAGO,IAAM,8BAA8E;EACzF,SAAAF;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;ACxFL,IAAM,2BAA+D;EAC1E,GAAG;EACH,SAAS;;;;ACfX,OAAOE,WAAU;AACjB,OAAO,SAAS;;;ACDhB,YAAYC,SAAQ;AAGpB,IAAAC,kBAAmB;AAEnB,SAAQ,QAAAC,cAAW;AAKnB,eAAsB,cAAc,MAAoB,gBAAuB;AAC7E,QAAM,MAAM,MAAM,UAAU,IAAG;AAE/B,UAAQ,KAAK,oBAAoB,iBAAiB,GAAG,GAAG;AACxD,UAAQ,KAAK,wBAAwB,cAAc,GAAG,GAAG;AACzD,UAAQ,KAAK,kBAAkB,cAAc,GAAG,GAAG;AACnD,UAAQ,KAAK,yBAAyB,oBAAoB,GAAG,GAAG;AAChE,UAAQ,KAAK,oBAAoB,2BAA2B,GAAG,GAAG;AAClE,UAAQ,KAAK,2BAA2B,gBAAgB,GAAG,GAAG;AAC9D,UAAQ,KAAK,kBAAkB,kBAAkB,GAAG,GAAG;AAEvD,MAAI,mBAAmB,MAAM;AAC3B,UAAM,EAAC,SAAS,oBAAmB,IAAI,eAAe,KAAK,IAAI;AAK/D,YAAQ,KAAK,0BAA0B,SAAS;AAChD,YAAQ,KAAK,uCAAuC,qBAAqB;EAC3E;AACF;AAGA,SAAS,gBAAgB,KAAc;AACrC,MAAI;AACF,WAAO,IAAI,sBAAqB;EAClC,QAAE;AACA,WAAO;EACT;AACF;AAcA,SAAS,eACP,KACA,MAAkB;AAElB,QAAM,UAAU,mCAAmC,GAAG,EAAE,OAAM;AAC9D,QAAM,sBAAsB,yBAAyB,OAAO,EAAE,OAAM;AAEpE,MAAI,SAAS,WAAW;AACtB,WAAO;MACL;MACA;;EAEJ;AAEA,QAAM,qBAAqB,cAAc,GAAG,EAAE,MAAM,GAAG,CAAC;AACxD,QAAM,eAAe,gBAAgB,GAAG,IAAI,wBAAwB;AAEpE,SAAO;IACL,SAAS,GAAG,eAAe,qBAAqB;IAChD,qBAAqB,GAAG,2BAA2B,qBAAqB;;AAE5E;AAGA,SAAS,cAAc,KAAc;AACnC,MAAI;AACF,WAAO,IAAI,IAAI,CAAC,aAAa,MAAM,CAAC,EAAE,OAAO,KAAI;EACnD,QAAE;AACA,WAAO;EACT;AACF;AAGA,SAAS,oBAAoB,KAAc;AACzC,MAAI;AACF,WAAO,IAAI,IAAI,CAAC,aAAa,WAAW,MAAM,CAAC,EAAE,OAAO,KAAI;EAC9D,QAAE;AACA,WAAO;EACT;AACF;AAGA,SAAS,2BAA2B,KAAc;AAChD,MAAI;AACF,WAAO,IAAI,2BAA0B;EACvC,QAAE;AACA,WAAO;EACT;AACF;AAGA,SAAS,iBAAiB,KAAc;AACtC,MAAI;AACF,WAAO,IAAI,IAAI,CAAC,gBAAgB,WAAW,MAAM,CAAC,EAAE,OAAO,KAAI;EACjE,QAAE;AACA,WAAO;EACT;AACF;AAGA,SAAS,kBAAkB,KAAc;AACvC,MAAI;AACF,QAAI,WAAW,IAAI,YAAY,CAAC,UAAU,WAAW,CAAC,EAAE,OAAO,KAAI,KAAM;AACzE,QAAI,YAAY,IAAI,YAAY,CAAC,UAAU,YAAY,CAAC,EAAE,OAAO,KAAI,KAAM;AAC3E,WAAO,GAAG,aAAa;EACzB,QAAE;AACA,WAAO;EACT;AACF;AAGA,SAAS,mCAAmC,KAAc;AACxD,QAAM,kBAAkBA,OAAK,IAAI,SAAS,cAAc;AACxD,QAAM,cAAc,KAAK,MAAS,iBAAa,iBAAiB,MAAM,CAAC;AAIvE,MAAI,YAAY,YAAY,QAAW;AACrC,UAAM,IAAI,MAAM,kCAAkC,iBAAiB;EACrE;AAEA,SAAO,IAAI,gBAAAC,QAAO,OAAO,YAAY,OAAO;AAC9C;;;ADrHA,SAASC,UAAQ,MAAU;AACzB,SAAO,KACJ,OAAO,QAAQ;IACd,cAAc;IACd,aAAa;IACb,SAAS,CAAC,YAAqB,SAAkB;GAClD,EACA,OAAO,kBAAkB;IACxB,MAAM;IACN,aAAa;IACb,SAAS;GACV,EACA,OAAO,4BAA4B;IAClC,MAAM;IACN,aACE;GAEH;AACL;AAEA,eAAeC,UAAQ,EAAC,MAAM,gBAAgB,yBAAwB,GAAqB;AACzF,QAAM,cAAc,MAAM,cAAc;AAIxC,MAAI,6BAA6B,QAAW;AAC1C,UAAM,YAAY,IAAI,cAAcC,MAAK,QAAQ,wBAAwB,CAAC;AAC1E,UAAM,kBAAmB,MAAM,OAAO,UAAU,SAAQ;AAGxD,UAAM,gBAAgB,QAAQ,IAAI;EACpC;AACF;AAGO,IAAM,uBAAmD;EAC9D,SAAAF;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;AEtCZ,SAASE,UAAQ,MAAU;AACzB,SAAO,KAAK,WAAW,WAAW;IAChC,MAAM;IACN,cAAc;IACd,aAAa;GACd;AACH;AAGA,eAAeC,UAAQ,MAA+C;AACpE,QAAM,EAAC,QAAO,IAAI;AAClB,QAAM,SAAS,MAAM,UAAS;AAC9B,2BAAyB,MAAM;AAC/B,QAAM,EAAC,aAAa,gBAAe,IAAI,OAAO;AAE9C,MAAI,MAAM,aAAa,6CAA6C;AACpE,QAAM,UAAU,IAAI,QAAQ,EAAE;AAE9B,aAAW,OAAO,aAAa;AAC7B,YAAQ,OAAO,8BAA8B,IAAI,OAAO;AAExD,QAAI;AACF,YAAM,WAAW,wBAAwB,IAAI,MAAM,SAAS,eAAe;AAC3E,UAAI,MAAM,yBAAyB,8BAA8B,IAAI,QAAQ;IAC/E,SAAS,GAAP;AACA,cAAQ,SAAQ;AAChB,UAAI,MAAM,CAAC;AACX,UAAI,MAAM,qEAAgE,IAAI,QAAQ;AACtF,cAAQ,KAAK,CAAC;IAChB;EACF;AAEA,UAAQ,SAAQ;AAChB,MAAI,KAAK,MAAM,uBAAkB,KAAK,OAAO,mCAAmC,CAAC;AACnF;AAGO,IAAM,iCAAoF;EAC/F,SAAAD;EACA,SAAAC;EACA,SAAS;EACT,UAAU;;;;ACxDZ,SAAS,mBAAmB,MAAU;AACpC,SAAO,KACJ,KAAI,EACJ,OAAM,EACN,cAAa,EACb,QAAQ,8BAA8B,EACtC,QAAQ,2BAA2B;AACxC;AAEO,IAAM,2BAAkD;EAC7D,UAAU;EACV,SAAS;EACT,SAAS;EACT,SAAS,MAAK;EAAE;;;;ACNZ,SAAU,mBAAmB,YAAgB;AACjD,SAAO,WACJ,KAAI,EACJ,OAAM,EACN,cAAa,EACb,QAAQ,2BAA2B,EACnC,QAAQ,yBAAyB,EACjC,QAAQ,wBAAwB,EAChC,QAAQ,wBAAwB,EAChC,QAAQ,4BAA4B,EACpC,QAAQ,wBAAwB,EAChC,QAAQ,oBAAoB,EAC5B,QAAQ,yBAAyB;AACtC;;;ACnBA,IAAAC,oBAAuB;AALvB,SAAQ,cAAAC,aAAY,gBAAAC,gBAAc,iBAAAC,sBAAoB;AACtD,SAAQ,cAAAC,aAAY,YAAAC,WAAU,WAAAC,iBAAc;;;ACD5C,SAAQ,gBAAAC,sBAAmB;AAC3B,SAAQ,WAAAC,UAAS,QAAAC,QAAM,WAAAC,iBAAc;AACrC,OAAOC,SAAQ;;;ACFf,SAAe,YAAAC,iBAAe;AAGxB,SAAU,cAAc,UAAgB;AAC5C,MAAI;AACF,WAAOA,UAAS,QAAQ;EAC1B,QAAE;AACA,WAAO;EACT;AACF;AAGM,SAAU,0BAA0BC,OAAY;AACpD,SAAOA,MAAK,QAAQ,OAAO,GAAG;AAChC;;;ACdA,OAAO,QAAQ;AAOT,SAAU,oBACd,aACA,sBAA6B;AAE7B,QAAM,aAAuB,CAAA;AAC7B,QAAM,YAAY,CAAC,SAAiB;AApBtC,QAAAC;AAqBI,QAAI,GAAG,oBAAoB,IAAI,KAAK,GAAG,oBAAoB,IAAI,GAAG;AAEhE,UACE,yBACE,GAAG,oBAAoB,IAAI,OAAKA,MAAA,KAAK,iBAAL,gBAAAA,IAAmB,eAClD,GAAG,oBAAoB,IAAI,KAAK,KAAK,aACxC;AACA;MACF;AAEA,UAAI,KAAK,oBAAoB,UAAa,GAAG,gBAAgB,KAAK,eAAe,GAAG;AAClF,mBAAW,KAAK,KAAK,gBAAgB,IAAI;MAC3C;IACF;AACA,OAAG,aAAa,MAAM,SAAS;EACjC;AAEA,KAAG,aAAa,aAAa,SAAS;AAEtC,SAAO;AACT;;;AFfA,IAAM,qBAAqB,CAAC,MAAM,MAAM,MAAM;AAMxC,IAAO,WAAP,MAAe;EAQnB,YACS,iBACP,uBAAgC,OACzB,aAAuB,oBAAkB;AAFzC,SAAA,kBAAA;AAEA,SAAA,aAAA;AAVD,SAAA,mBAAmB,oBAAI,IAAG;AAIlC,SAAA,oBAAoB,oBAAI,IAAG;AAC3B,SAAA,kBAAkB,oBAAI,IAAG;AAOvB,SAAK,wBAAwB,CAAC,CAAC;EACjC;EAGA,WACE,IACA,UAAU,oBAAI,QAAO,GACrBC,QAAuB,CAAA,GAAE;AAEzB,UAAM,gBAAgBA,MAAK,QAAQ,EAAE;AAGrC,QAAI,kBAAkB,IAAI;AACxB,aAAO,CAACA,MAAK,MAAM,aAAa,CAAC;IACnC;AAGA,QAAI,QAAQ,IAAI,EAAE,GAAG;AACnB,aAAO,CAAA;IACT;AACA,IAAAA,MAAK,KAAK,EAAE;AACZ,YAAQ,IAAI,EAAE;AAEd,UAAM,SAA2B,CAAA;AACjC,eAAW,OAAO,oBAAoB,IAAI,KAAK,qBAAqB,GAAG;AACrE,YAAM,aAAa,KAAK,eAAe,KAAK,GAAG,QAAQ;AACvD,UAAI,eAAe,MAAM;AACvB,eAAO,KAAK,GAAG,KAAK,WAAW,KAAK,cAAc,UAAU,GAAG,SAASA,MAAK,MAAK,CAAE,CAAC;MACvF;IACF;AACA,WAAO;EACT;EAGA,cAAc,UAAgB;AAC5B,UAAM,eAAeC,UAAQ,QAAQ;AACrC,QAAI,KAAK,iBAAiB,IAAI,YAAY,GAAG;AAC3C,aAAO,KAAK,iBAAiB,IAAI,YAAY;IAC/C;AACA,UAAM,cAAcC,eAAa,cAAc,MAAM;AACrD,UAAM,aAAaC,IAAG,iBACpB,cACA,aACAA,IAAG,aAAa,QAChB,KAAK;AAEP,SAAK,iBAAiB,IAAI,cAAc,UAAU;AAClD,WAAO;EACT;EAGQ,eAAe,WAAmB,oBAA0B;AAClE,QAAI,UAAU,OAAO,CAAC,MAAM,KAAK;AAC/B,YAAM,eAAe,KAAK,sBAAsB,WAAW,kBAAkB;AAC7E,UAAI,iBAAiB,MAAM;AACzB,aAAK,2BAA2B,WAAW,kBAAkB;MAC/D;AACA,aAAO;IACT;AACA,QAAI,KAAK,iBAAiB;AACxB,YAAM,aAAa,KAAK,gBAAgB,SAAS;AACjD,UAAI,eAAe,MAAM;AACvB,cAAM,eAAe,KAAK,sBAAsB,UAAU;AAC1D,YAAI,iBAAiB,MAAM;AACzB,iBAAO;QACT;MACF;IACF;AACA,SAAK,kBAAkB,IAAI,SAAS;AACpC,WAAO;EACT;EAGQ,2BAA2B,WAAmB,gBAAsB;AAC1E,QAAI,CAAC,KAAK,gBAAgB,IAAI,cAAc,GAAG;AAC7C,WAAK,gBAAgB,IAAI,gBAAgB,CAAC,SAAS,CAAC;IACtD;AACA,SAAK,gBAAgB,IAAI,cAAc,EAAG,KAAK,SAAS;EAC1D;EAGQ,sBAAsB,WAAmB,oBAA2B;AAC1E,UAAM,iBACJ,uBAAuB,SAAYC,OAAKC,SAAQ,kBAAkB,GAAG,SAAS,IAAI;AACpF,UAAM,OAAO,cAAc,cAAc;AACzC,QAAI,QAAQ,KAAK,OAAM,GAAI;AACzB,aAAO;IACT;AACA,eAAW,aAAa,KAAK,YAAY;AACvC,YAAM,oBAAoB,GAAG,kBAAkB;AAC/C,YAAM,oBAAoB,cAAc,iBAAiB;AACzD,UAAI,uDAAmB,UAAU;AAC/B,eAAO;MACT;IACF;AAGA,QAAI,QAAQ,KAAK,YAAW,GAAI;AAC9B,aAAO,KAAK,sBAAsBD,OAAK,gBAAgB,OAAO,CAAC;IACjE;AACA,WAAO;EACT;;;;AG1IF,SAAQ,WAAAE,UAAS,WAAAC,UAAS,YAAY,WAAAC,iBAAc;AAoCpD,eAAsB,eAAe,YAAkB;AACrD,QAAM,gBAAgBC,SAAQ,UAAU;AACxC,QAAM,sBAAsB,CAAC,iBAAyBC,UAAQ,eAAe,YAAY;AAEzF,MAAI;AACF,QAAI;AACJ,YAAQC,SAAQ,UAAU,GAAG;MAC3B,KAAK;AAIH,iBAAS,MAAM,cAA8C,UAAU;AACvE;MACF,KAAK;AACH,iBAAS,UAAQ;AACjB;MACF;AAGE,YAAI;AACF,mBAAS,UAAQ;QACnB,SAAS,GAAP;AACA,cAAK,EAAU,SAAS,mBAAmB;AAIzC,qBAAS,MAAM,cAA8C,UAAU;UACzE;AAEA,gBAAM;QACR;IACJ;AAGA,aAAS,EAAC,GAAG,OAAM;AAEnB,QAAI,CAAC,WAAW,OAAO,OAAO,GAAG;AAC/B,aAAO,UAAU,oBAAoB,OAAO,OAAO;IACrD;AACA,QAAI,CAAC,WAAW,OAAO,UAAU,GAAG;AAClC,aAAO,aAAa,oBAAoB,OAAO,UAAU;IAC3D;AACA,QAAI,CAAC,WAAW,OAAO,IAAI,GAAG;AAC5B,aAAO,OAAO,oBAAoB,OAAO,IAAI;IAC/C;AACA,WAAO;EACT,SAAS,GAAP;AACA,QAAI,MAAM,gDAAgD,UAAU;AACpE,QAAI,MAAM,sBAAsB,CAAC;AACjC,YAAQ,KAAK,CAAC;EAChB;AACF;AAKA,IAAIC;AAcE,SAAU,cAAiB,YAAwB;AACvD,EAAAA,UAAAA,QAAS,IAAI,SAAS,cAAc,4BAA4B;AAKhE,SAAOA,MAAK,UAAU;AACxB;;;ACjHA,SAAQ,YAAAC,iBAAe;AAajB,SAAU,8BAA8B,MAAwB,SAAe;AACnF,SACE,KACG;IAKC,CAAC,UACC,4BACE,MAAM,IAAI,CAAC,EAAC,SAAQ,MAAM,0BAA0BC,UAAS,SAAS,QAAQ,CAAC,CAAC,CAAC;EAClF,EAIJ,KAAK,yBAAyB;AAErC;AAMM,SAAU,eAAe,QAAgB,UAAgB;AAC7D,QAAM,kBAAwC,CAAA;AAC9C,QAAM,oBAA0C,CAAA;AAChD,SAAO,QAAQ,CAAC,MAAK;AACnB,QAAI,CAAC,SAAS,KAAK,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,GAAG;AACzD,sBAAgB,KAAK,CAAC;IACxB;EACF,CAAC;AACD,WAAS,QAAQ,CAAC,MAAK;AACrB,QAAI,CAAC,OAAO,KAAK,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,GAAG;AACvD,wBAAkB,KAAK,CAAC;IAC1B;EACF,CAAC;AACD,SAAO,EAAC,iBAAiB,kBAAiB;AAC5C;AAmBA,SAAS,4BAA4BC,OAAwB;AAC3D,MAAIA,MAAK,UAAU,GAAG;AACpB,WAAOA;EACT;AAEA,MAAI,iBAAyB;AAC7B,MAAI,iBAAyBA,MAAK;AAIlC,WAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACpC,UAAM,QAAQA,MAAK;AACnB,QAAI,MAAM,cAAc,gBAAgB,IAAI,IAAI,GAAG;AACjD,uBAAiB;AACjB,uBAAiB;IACnB;EACF;AAIA,MAAI,mBAAmB,GAAG;AACxB,WAAOA;EACT;AAKA,SAAO,CAAC,GAAGA,MAAK,MAAM,cAAc,GAAG,GAAGA,MAAK,MAAM,GAAG,cAAc,CAAC;AACzE;AAGA,SAAS,yBAAyB,QAA4B,UAA4B;AACxF,MAAI,OAAO,WAAW,SAAS,QAAQ;AACrC,WAAO;EACT;AACA,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,QAAI,OAAO,OAAO,SAAS,IAAI;AAC7B,aAAO;IACT;EACF;AACA,SAAO;AACT;AAMA,SAAS,0BAA0B,GAAuB,GAAqB;AAG7E,WAAS,IAAI,GAAG,IAAI,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK;AACrD,UAAM,eAAe,EAAE,GAAG,cAAc,EAAE,IAAI,IAAI;AAClD,QAAI,iBAAiB,GAAG;AACtB,aAAO;IACT;EACF;AAEA,SAAO,EAAE,SAAS,EAAE;AACtB;;;ALjHM,SAAU,8BAA8B,YAAgB;AAC5D,SAAO,WACJ,KAAI,EACJ,OAAM,EACN,cAAa,EACb,OAAO,UAAU;IAChB,MAAM;IACN,cAAc;IACd,aAAa;GACd,EACA,OAAO,YAAY,EAAC,MAAM,WAAW,aAAa,uBAAsB,CAAC,EACzE,QACC,SACA,qDACA,CAAC,SAAS,MACV,OAAO,SAAQ;AACb,UAAM,EAAC,QAAQ,WAAW,SAAQ,IAAI;AACtC,UAAM,aAAaC,YAAW,SAAS,IAAI,YAAYC,UAAQ,SAAS;AACxE,UAAM,SAAS,MAAM,eAAe,UAAU;AAC9C,YAAQ,KAAK,KAAK,OAAO,QAAQ,CAAC,CAAC,QAAQ,CAAC;EAC9C,CAAC,EAEF,QACC,WACA,+CACA,CAAC,SAAS,MACV,OAAO,SAAQ;AACb,UAAM,EAAC,QAAQ,WAAW,SAAQ,IAAI;AACtC,UAAM,aAAaD,YAAW,SAAS,IAAI,YAAYC,UAAQ,SAAS;AACxE,UAAM,SAAS,MAAM,eAAe,UAAU;AAC9C,YAAQ,KAAK,KAAK,MAAM,QAAQ,CAAC,CAAC,QAAQ,CAAC;EAC7C,CAAC;AAEP;AASM,SAAU,KACd,SACA,QACA,eAAsB;AAEtB,QAAM,EACJ,SACA,YACA,MAAM,aACN,eACA,gBACA,qBAAoB,IAClB;AACJ,QAAM,WAAW,IAAI,SAAS,eAAe,oBAAoB;AACjE,QAAM,SAA2B,CAAA;AACjC,QAAM,eAAe,oBAAI,QAAO;AAEhC,kCAAS,aAAa,EAAC,UAAU,MAAM,QAAQ,CAAC,oBAAoB,EAAC,CAAC,EAAE,QAAQ,CAAC,aAAY;AAC3F,UAAM,aAAa,SAAS,cAAc,QAAQ;AAClD,WAAO,KAAK,GAAG,SAAS,WAAW,YAAY,YAAY,CAAC;EAC9D,CAAC;AAED,QAAM,SAAS,8BAA8B,QAAQ,OAAO;AAE5D,MAAI,KAAK,MAAM,gCAAgC,OAAO,OAAO,OAAO,SAAQ,CAAE,GAAG,CAAC;AAElF,MAAI,SAAS;AACX,IAAAC,eAAc,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AACzD,QAAI,KAAK,MAAM,8BAAyB,CAAC;AACzC,WAAO;EACT,WAAW,CAACC,YAAW,UAAU,GAAG;AAClC,QAAI,MAAM,kCAAkC,YAAY;AACxD,WAAO;EACT;AAEA,QAAM,gBAAgB,SAAS,gBAAgB,OAAO,SAAS,kBAAkB;AAKjF,MAAI,iBAAiB,kBAAkB,GAAG;AACxC,QAAI,KAAK,OAAO,sDAAiD,CAAC;AAClE,UAAM,KAAK,SAAS,iBAAiB,EAClC,KAAI,EACJ,QAAQ,CAAC,cAAc,IAAI,KAAK,YAAO,WAAW,CAAC;AACtD,aAAS,gBAAgB,QAAQ,CAAC,OAAO,QAAO;AAC9C,UAAI,KAAK,YAAO,gBAAgB,SAAS,GAAG,GAAG;AAC/C,YAAM,KAAI,EAAG,QAAQ,CAAC,cAAc,IAAI,KAAK,SAAS,WAAW,CAAC;IACpE,CAAC;EACH,OAAO;AACL,QAAI,KAAK,WAAM,8CAA8C;AAC7D,QAAI,KAAK,kEAAkE;EAC7E;AAEA,QAAM,WAAW,KAAK,MAAMC,eAAa,YAAY,MAAM,CAAC;AAC5D,QAAM,EAAC,mBAAmB,gBAAe,IAAI,eAAe,QAAQ,QAAQ;AAC5E,QAAM,aAAa,kBAAkB,WAAW,KAAK,gBAAgB,WAAW;AAEhF,MAAI,YAAY;AACd,QAAI,KAAK,MAAM,uDAAkD,CAAC;AAClE,WAAO;EACT;AAEA,MAAI,MAAM,8DAAyD;AACnE,MAAI,gBAAgB,WAAW,GAAG;AAChC,QAAI,MAAM,qDAAqD;AAC/D,oBAAgB,QAAQ,CAAC,MAAM,IAAI,MAAM,eAAU,8BAA8B,CAAC,GAAG,CAAC;AACtF,QAAI,MAAK;EACX;AACA,MAAI,kBAAkB,WAAW,GAAG;AAClC,QAAI,MAAM,yEAAyE;AACnF,sBAAkB,QAAQ,CAAC,MAAM,IAAI,MAAM,eAAU,8BAA8B,CAAC,GAAG,CAAC;AACxF,QAAI,KACF,OACE;YAAe,gBAAgB,wBAAwB,kBAAkB;CAA2B,CACrG;EAEL;AAEA,MAAI,gBAAgB;AAClB,QAAI,KAAK,OAAO,0CAA0C,gBAAgB,CAAC;EAC7E,OAAO;AACL,QAAI,KACF,OACE,uGAC+C,gBAAgB,QAAQ,IAAG,GAAI,UAAU,IAAI,CAC7F;EAEL;AAEA,SAAO;AACT;AAGA,SAAS,gBAAgB,SAAiBC,OAAY;AACpD,SAAO,0BAA0BC,UAAS,SAASD,KAAI,CAAC;AAC1D;AAGA,SAAS,8BAA8B,OAA6B;AAClE,SAAO,MAAM,KAAK,UAAK;AACzB;;;AM/JA,eAAeE,UAAQ,OAAW;AAChC,SAAO;AACT;AAGA,eAAeC,YAAO;AACpB,MAAI,KAAK,oEAAoE;AAC7E,MAAI,KAAK,yCAAyC;AACpD;AAGO,IAAM,cAA0C;EACrD,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;ACfZ,eAAeE,UAAQ,OAAW;AAChC,SAAO;AACT;AAGA,eAAeC,YAAO;AACpB,MAAI,KAAK,qEAAqE;AAC9E,MAAI,KAAK,0BAA0B;AACrC;AAGO,IAAM,eAA2C;EACtD,SAAAA;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;ACRN,SAAU,gBAAgB,OAAW;AACzC,SAAO,MAAM,QAAQ,WAAW,EAAE,QAAQ,YAAY;AACxD;;;ACXA,eAAsB,gBAAgB,EAAC,MAAM,UAAU,SAAS,QAAO,GAAW;AAChF,QAAM,UAAU,IAAI,QAAO;AAC3B,MAAI;AACF,QAAI,SAAS;AACX,cAAQ,OAAO,8CAA8C;AAG7D,YAAM,YAAY,OAAO;AACzB,cAAQ,OAAO,mCAAmC;IACpD;AAEA,YAAQ,OAAO,uBAAuB,OAAO;AAG7C,gBAAY,KAAK,OAAO;AACxB,UAAM,YAAY,QAAQ;AAC1B,gBAAY,KAAK,KAAK;AAEtB,YAAQ,OAAO,oBAAoB;AAEnC,QAAI,SAAS;AACX,cAAQ,OAAO,wCAAwC;AAEvD,YAAM,YAAY,OAAO;AACzB,cAAQ,OAAO,8BAA8B;IAC/C;AAEA,UAAM,UAAU,YAAY,QAAQ,MAAM,SAAS,KAAK;AAExD,YAAQ,QAAQ,GAAG,SAAS,QAAQ,SAAS,QAAQ,CAAC,KAAK;AAE3D,WAAO;MACL;MACA,OAAO,QAAQ;;EAEnB;AACE,YAAQ,SAAQ;EAClB;AACF;AAMA,eAAe,YAAY,UAAmB;AAC5C,MAAI,CAAC,YAAY,SAAS,WAAW,GAAG;AACtC;EACF;AACA,WAAS,OAAO,UAAU;AACxB,UAAM,aAAa,KAAK,KAAK,EAAC,MAAM,SAAQ,CAAC;EAC/C;AACF;;;ACtDA,IAAAE,eAAoB;AADpB,SAAQ,gBAAe;AAgBvB,eAAsB,cAAc,KAAW;AAE7C,QAAM,oBAA+C,CAAA;AAErD,QAAM,eAAe,MAAM,SAAS,KAAK,EAAC,UAAU,QAAO,CAAC;AAE5D,QAAM,gBAAY,oBAAM,YAAY,EAAE;AAGtC,aAAW,CAAC,MAAM,QAAQ,KAAK,OAAO,QAAQ,SAAS,GAAG;AACxD,QAAI,SAAS,aAAa,MAAM;AAC9B,wBAAkB,QAAQ;IAC5B;EACF;AAEA,SAAO;AACT;;;ACrBA,SAAQ,QAAAC,cAAW;;;ACHnB,SAAQ,eAAc;AA4BtB,eAAsB,6BAA6B,QAAoC;AAErF,QAAM,UAAU,IAAI,QAAQ;IAC1B,WAAW;GACZ;AAED,QAAM,WAAW,QAAQ,SAAS,gBAAgB;AAElD,QAAM,WAAW,SAAS,SAAS,oBAAoB;AAEvD,QAAM,2BAA2B,SAAS,MAAM,qBAAqB;AAErE,MAAI;AACF,UAAM,yBAAyB,OAAO,MAAM;EAC9C;AACE,UAAM,SAAS,MAAK;EACtB;AACF;;;AD7BA,SAASC,UAAQ,OAAW;AAC1B,SAAO,MACJ,OAAO,eAA+B;IACrC,SAAS;IACT,MAAM;IACN,aAAa;GACd,EACA,OAAO,QAAQ;IACd,SAAS;IACT,MAAM;IACN,aAAa;GACd,EACA,OAAO,QAAQ;IACd,MAAM;IACN,aAAa;GACd,EACA,OAAO,cAA6B;IACnC,MAAM;IACN,aAAa;GACd;AACL;AAGA,eAAeC,UAAQ,EAAC,YAAY,MAAM,MAAM,UAAS,GAAkB;AACzE,QAAM,YAAY,MAAM,cAAcC,OAAK,4BAA2B,GAAI,UAAU,CAAC;AAErF,MAAI,MAAM;AACR,YAAQ,OAAO,MAAM,KAAK,UAAU,OAAO,KAAK,SAAS,CAAC,CAAC;AAC3D;EACF;AAEA,QAAM,UAA2C,CAAA;AAEjD,MAAI,MAAM;AACR,UAAM,EAAC,MAAK,IAAI,MAAM,gBAAgB,UAAU,KAAK;AACrD,YAAQ,KAAK,EAAC,OAAO,KAAI,CAAC;EAC5B,OAAO;AACL,eAAW,YAAY,OAAO,OAAO,SAAS,GAAG;AAC/C,YAAM,EAAC,MAAAC,OAAM,MAAK,IAAI,MAAM,gBAAgB,QAAQ;AACpD,cAAQ,KAAK,EAAC,OAAO,MAAAA,MAAI,CAAC;IAC5B;EACF;AAEA,MAAI,WAAW;AACb,UAAM,UAAU,IAAI,QAAQ,2CAA2C;AACvE,QAAI;AACF,eAAS,EAAC,OAAO,MAAAA,MAAI,KAAK,SAAS;AACjC,cAAM,6BAA6B;UACjC,MAAAA;UACA;UACA,YAAY;SACb;MACH;IACF;AACE,cAAQ,QAAQ,iBAAiB;IACnC;EACF;AACF;AAGO,IAAM,kBAAsD;EACjE,SAAAF;EACA,SAAAD;EACA,SAAS;EACT,UAAU;;;;AE3EN,SAAU,gBAAgB,YAAgB;AAC9C,SAAO,WAAW,KAAI,EAAG,OAAM,EAAG,cAAa,EAAG,QAAQ,eAAe;AAC3E;;;ACUA,gCAAgC,CAAC,UAAe;AAC9C,SAAO,MACJ,WAAW,QAAQ,EACnB,WAAW,4BAA4B,IAAI,EAC3C,cAAa,EACb,kBAAiB,EACjB,QAAQ,kBAAkB,OAAO,eAAe,EAChD,QAAQ,4BAA4B,IAAI,wBAAwB,EAChE,QAAQ,oBAAoB,IAAI,iBAAiB,EACjD,QAAQ,gBAAgB,IAAI,aAAa,EACzC,QAAQ,yBAAyB,IAAI,sBAAsB,EAC3D,QAAQ,qBAAqB,IAAI,kBAAkB,EACnD,QAAQ,8BAA8B,IAAI,6BAA6B,EACvE,QAAQ,uBAAuB,IAAI,oBAAoB,EACvD,QAAQ,kBAAkB,IAAI,eAAe,EAC7C,QAAQ,mBAAmB,OAAO,gBAAgB,EAClD,QAAQ,kBAAkB,IAAI,eAAe,EAC7C,KAAK,GAAG,EACR,OAAM;AACX,CAAC;",
-  "names": ["left", "right", "expand", "createScanner", "findNodeAtLocation", "findNodeAtOffset", "format", "getLocation", "getNodePath", "getNodeValue", "parse", "parseTree", "printParseErrorCode", "stripComments", "visit", "__toCommonJS", "value", "CharacterCodes", "ParseOptions", "sep", "path", "edit", "ScanError", "SyntaxKind", "ParseErrorCode", "_a", "_b", "_c", "format", "colors", "cliWidth", "stripAnsi", "ansi", "match", "path", "wrap", "stripAnsi", "wrapAnsi", "code", "MuteStream", "_a", "_b", "ansiEscapes", "url", "arr", "searchValue", "left", "right", "parser", "fs", "match", "handler", "sample", "Buffer", "Buffer", "Buffer", "Buffer", "i", "Buffer", "Buffer", "i", "Buffer", "Buffer", "require_lib", "Buffer", "path", "fs", "path", "_c", "err", "dir", "file", "d", "b", "CreateFileError", "d", "b", "LaunchEditorError", "d", "b", "ReadFileError", "d", "b", "RemoveFileError", "editAsync", "ExternalEditor", "lines", "parser", "_a", "_b", "_c", "headerCorrespondence", "join", "parser", "split", "split", "params", "match", "parse", "_options", "params", "_options", "_options", "path", "match", "check", "node", "wrap", "max", "wrap", "format", "expand", "parse", "index", "expand", "parse", "require_constants", "path", "require_utils", "path", "match", "glob", "require_parse", "parse", "opts", "star", "value", "increment", "match", "rest", "source", "path", "parse", "glob", "state", "match", "format", "require_picomatch", "match", "glob", "path", "GLOBSTAR", "basename", "pattern", "makeRe", "relative", "isAbsolute", "require_utils", "fs", "path", "path", "path", "require_fs", "fs", "fs", "_options", "path", "statSync", "queueMicrotask", "require_constants", "require_fs", "require_utils", "fs", "require_async", "common", "path", "require_sync", "common", "require_fs", "fs", "require_settings", "path", "fs", "_options", "require_out", "path", "handler", "resolve", "require_common", "filter", "common", "_root", "require_async", "common", "_root", "require_async", "_root", "require_stream", "_root", "require_sync", "common", "require_sync", "_root", "require_settings", "path", "_options", "require_out", "require_reader", "path", "require_stream", "resolve", "require_async", "resolve", "info", "match", "require_entry", "path", "require_async", "require_stream", "require_sync", "require_sync", "require_settings", "fs", "_options", "require_out", "FastGlob", "posix", "escapePath", "convertPathToPattern", "win32", "path", "_a", "_b", "_c", "path", "ext", "require_options", "require_lib", "join", "sep", "which", "ext", "path", "_a", "_b", "_c", "lines", "res", "res", "anchors", "match", "_a", "_b", "_c", "node", "path", "split", "i", "end", "_a", "require_stringify", "_a", "match", "value", "stringify", "lines", "comment", "str", "_a", "map", "seq", "require_string", "format", "require_schema", "lines", "pairs", "omap", "require_bool", "require_float", "require_int", "n", "set", "res", "match", "require_schema", "tags", "_a", "lines", "path", "res", "_a", "sep", "sep", "sep", "_a", "lines", "value", "end", "sep", "ts", "split", "match", "sep", "_a", "tag", "ts", "alias", "_a", "sep", "path", "i", "ch", "require_parser", "_a", "Parser", "top", "sep", "start", "fs", "parser", "parseOptions", "lineCounter", "parse", "require_dist", "parser", "require_utils", "match", "fs", "path", "dirname", "extname", "resolve", "ext", "match", "lines", "basename", "parse", "match", "require_common", "env", "match", "format", "split", "load", "match", "load", "useColors", "posixClasses", "braceEscape", "regexpEscape", "rangesToString", "parseClass", "glob", "escape", "unescape", "minimatch", "assertValidPattern", "Minimatch", "starDotExtRE", "starDotExtTest", "ext", "starDotExtTestDot", "starDotExtTestNocase", "starDotExtTestNocaseDot", "starDotStarRE", "starDotStarTest", "starDotStarTestDot", "dotStarRE", "dotStarTest", "starRE", "starTest", "starTestDot", "qmarksRE", "qmarksTestNocase", "qmarksTestNoExt", "qmarksTestNocaseDot", "qmarksTestNoExtDot", "qmarksTestDot", "qmarksTest", "defaultPlatform", "path", "qmark", "star", "twoStarDot", "twoStarNoDot", "reSpecials", "filter", "defaults", "braceExpand", "MAX_PATTERN_LENGTH", "makeRe", "match", "globMagic", "regExpEscape", "which", "addPatternStart", "minimatch", "path", "params", "fs", "hashElement", "basename", "dir", "options", "isFunction", "dirname", "promise", "resolve", "err", "HashedFolder", "HashedFile", "_a", "lines", "ts", "match", "readFileSync", "resolve", "DefaultValuesForTypeKey", "mixin", "defaults", "key", "alias", "args", "value", "val", "argv", "env", "aliases", "match", "guessType", "resolve", "path", "dirname", "resolve", "readFileSync", "statSync", "format", "resolve", "y18n", "y18n", "dirname", "resolve", "readFileSync", "shim", "cmd", "optional", "global", "result", "usage", "validation", "shim", "builder", "handler", "command", "alias", "c", "optional", "parseOptions", "defaults", "filter", "shim", "fail", "command", "wrap", "ui", "usage", "alias", "sep", "maxWidth", "usage", "command", "shim", "_a", "_b", "_c", "builder", "filter", "alias", "desc", "argv", "usage", "shim", "_a", "key", "shim", "defaultConfig", "shim", "global", "alias", "builder", "handler", "resolve", "parse", "parseOptions", "type", "key", "value", "_a", "_b", "_c", "validation", "k", "completion", "params", "path", "glob", "_a", "_b", "_c", "glob", "start", "final", "i", "acc", "ext", "_hasMagic", "ext", "qmark", "star", "expand", "regExpEscape", "which", "path", "main", "_a", "url", "AsyncResource", "render", "_a", "_b", "process", "esm_default", "colors", "esm_default", "AsyncResource", "handler", "wrapAnsi", "cliWidth", "readline", "AsyncResource", "process", "global", "handler", "ansiEscapes", "stripAnsi", "resolve", "_a", "_b", "MuteStream", "resolve", "signal", "AsyncResource", "import_yoctocolors_cjs", "colors", "esm_default", "import_yoctocolors_cjs", "import_ansi_escapes", "colors", "esm_default", "ansiEscapes", "AsyncResource", "esm_default", "AsyncResource", "error", "esm_default", "esm_default", "esm_default", "_a", "import_yoctocolors_cjs", "normalizeChoices", "esm_default", "colors", "import_yoctocolors_cjs", "normalizeChoices", "esm_default", "colors", "import_ansi_escapes", "esm_default", "ansiEscapes", "import_yoctocolors_cjs", "esm_default", "colors", "isSelectable", "normalizeChoices", "error", "import_yoctocolors_cjs", "import_ansi_escapes", "esm_default", "colors", "isSelectable", "normalizeChoices", "ansiEscapes", "esm_default", "builder", "handler", "writeFileSync", "readFileSync", "writeFileSync", "builder", "handler", "readFileSync", "resolve", "NoteSections", "parse", "_a", "readFileSync", "resolve", "builder", "handler", "_a", "resolve", "gitCommits", "builder", "handler", "import_brace_expansion", "MAX_PATTERN_LENGTH", "assertValidPattern", "posixClasses", "braceEscape", "regexpEscape", "rangesToString", "parseClass", "glob", "unescape", "types", "isExtglobType", "startNoTraversal", "startNoDot", "addPatternStart", "justDots", "reSpecials", "regExpEscape", "qmark", "star", "starNoEmpty", "_root", "_hasMagic", "_uflag", "_parts", "_parent", "_parentIndex", "_negs", "_filledNegs", "_options", "_toString", "_emptyExt", "_fillNegs", "fillNegs_fn", "_parseAST", "parseAST_fn", "_partsToRegExp", "partsToRegExp_fn", "_parseGlob", "parseGlob_fn", "_AST", "_a", "_b", "_c", "glob", "start", "final", "unescape", "AST", "i", "acc", "ext", "parseClass", "escape", "minimatch", "assertValidPattern", "Minimatch", "starDotExtRE", "starDotExtTest", "ext", "starDotExtTestDot", "starDotExtTestNocase", "starDotExtTestNocaseDot", "starDotStarRE", "starDotStarTest", "starDotStarTestDot", "dotStarRE", "dotStarTest", "starRE", "starTest", "starTestDot", "qmarksRE", "qmarksTestNocase", "qmarksTestNoExt", "qmarksTestNocaseDot", "qmarksTestNoExtDot", "qmarksTestDot", "qmarksTest", "defaultPlatform", "path", "sep", "GLOBSTAR", "qmark", "star", "twoStarDot", "twoStarNoDot", "filter", "defaults", "braceExpand", "expand", "makeRe", "match", "globMagic", "regExpEscape", "which", "AST", "escape", "unescape", "process", "minimatch", "join", "join", "resolve", "builder", "handler", "check", "builder", "handler", "check", "builder", "handler", "check", "glob", "builder", "handler", "check", "resolve", "dirname", "join", "fileURLToPath", "resolve", "builder", "path", "resolve", "handler", "readdirSync", "unlinkSync", "join", "fs", "path", "parseYaml", "info", "which", "builder", "handler", "join", "readdirSync", "unlinkSync", "join", "join", "builder", "handler", "import_yaml", "readFileSync", "resolve", "resolve", "readFileSync", "parseYaml", "semver", "match", "builder", "handler", "dirname", "join", "import_typed_graphqlify", "import_typed_graphqlify", "_a", "e", "graphqlTypes", "fileURLToPath", "params", "dirname", "fileURLToPath", "join", "builder", "handler", "import_cli_progress", "import_typed_graphqlify", "PullRequestStatus", "PR_SCHEMA", "graphqlTypes", "builder", "handler", "validation", "Validation", "Validation", "path", "Validation", "path", "Validation", "Validation", "Validation", "Validation", "Validation", "Validation", "Validation", "dirname", "join", "fileURLToPath", "getCommitMessageFilterScriptPath", "resolve", "dirname", "fileURLToPath", "join", "builder", "handler", "env", "builder", "handler", "readFileSync", "resolve", "params", "import_yaml", "glob", "parseYaml", "verify", "resolve", "readFileSync", "verify", "builder", "handler", "builder", "handler", "import_semver", "import_semver", "_a", "_b", "url", "import_semver", "existsSync", "readFileSync", "writeFileSync", "join", "semver", "path", "semver", "builder", "semver", "handler", "import_semver", "resolve", "handler", "semver", "import_semver", "fs", "existsSync", "path", "join", "import_semver", "semver", "info", "url", "import_fast_glob", "join", "fs", "existsSync", "path", "fork", "semver", "import_semver", "semver", "import_semver", "semver", "import_semver", "semver", "import_semver", "semver", "import_semver", "semver", "import_semver", "semver", "import_yaml", "path", "fs", "lockfile", "_a", "_b", "_c", "lockfile", "parseYaml", "CompletionState", "_a", "builder", "handler", "import_semver", "builder", "handler", "semver", "path", "fs", "import_semver", "join", "semver", "builder", "handler", "path", "builder", "handler", "import_fast_glob", "existsSync", "readFileSync", "writeFileSync", "isAbsolute", "relative", "resolve", "readFileSync", "dirname", "join", "resolve", "ts", "statSync", "path", "_a", "path", "resolve", "readFileSync", "ts", "join", "dirname", "dirname", "extname", "resolve", "dirname", "resolve", "extname", "load", "relative", "relative", "path", "isAbsolute", "resolve", "writeFileSync", "existsSync", "readFileSync", "path", "relative", "builder", "handler", "builder", "handler", "import_yaml", "join", "builder", "handler", "join", "name"]
+  "sources": ["../../../../../node_modules/balanced-match/index.js", "../../../../../node_modules/brace-expansion/index.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/main.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/scanner.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/string-intern.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/format.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/parser.js", "../../../../../external/npm/node_modules/jsonc-parser/lib/esm/impl/edit.js", "../../../../../node_modules/yoctocolors-cjs/index.js", "../../../../../node_modules/cli-width/index.js", "../../../../../node_modules/strip-ansi/node_modules/ansi-regex/index.js", "../../../../../node_modules/strip-ansi/index.js", "../../../../../node_modules/is-fullwidth-code-point/index.js", "../../../../../node_modules/string-width/node_modules/emoji-regex/index.js", "../../../../../node_modules/string-width/index.js", "../../../../../node_modules/color-name/index.js", "../../../../../node_modules/ansi-styles/node_modules/color-convert/conversions.js", "../../../../../node_modules/ansi-styles/node_modules/color-convert/route.js", "../../../../../node_modules/ansi-styles/node_modules/color-convert/index.js", "../../../../../node_modules/ansi-styles/index.js", "../../../../../node_modules/@inquirer/core/node_modules/wrap-ansi/index.js", "../../../../../node_modules/mute-stream/lib/index.js", "../../../../../node_modules/ansi-escapes/index.js", "../../../../../node_modules/chardet/match.js", "../../../../../node_modules/chardet/encoding/utf8.js", "../../../../../node_modules/chardet/encoding/unicode.js", "../../../../../node_modules/chardet/encoding/mbcs.js", "../../../../../node_modules/chardet/encoding/sbcs.js", "../../../../../node_modules/chardet/encoding/iso2022.js", "../../../../../node_modules/chardet/index.js", "../../../../../node_modules/safer-buffer/safer.js", "../../../../../node_modules/iconv-lite/lib/bom-handling.js", "../../../../../node_modules/iconv-lite/encodings/internal.js", "../../../../../node_modules/iconv-lite/encodings/utf16.js", "../../../../../node_modules/iconv-lite/encodings/utf7.js", "../../../../../node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../../../node_modules/iconv-lite/encodings/sbcs-data.js", "../../../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../../../node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../../../node_modules/iconv-lite/encodings/dbcs-data.js", "../../../../../node_modules/iconv-lite/encodings/index.js", "../../../../../node_modules/iconv-lite/lib/streams.js", "../../../../../node_modules/iconv-lite/lib/extend-node.js", "../../../../../node_modules/iconv-lite/lib/index.js", "../../../../../node_modules/os-tmpdir/index.js", "../../../../../node_modules/external-editor/node_modules/tmp/lib/tmp.js", "../../../../../node_modules/external-editor/main/errors/CreateFileError.js", "../../../../../node_modules/external-editor/main/errors/LaunchEditorError.js", "../../../../../node_modules/external-editor/main/errors/ReadFileError.js", "../../../../../node_modules/external-editor/main/errors/RemoveFileError.js", "../../../../../node_modules/external-editor/main/index.js", "../../../../../node_modules/conventional-commits-parser/lib/parser.js", "../../../../../node_modules/conventional-commits-parser/lib/regex.js", "../../../../../node_modules/conventional-commits-parser/index.js", "../../../../../node_modules/split2/index.js", "../../../../../node_modules/git-raw-commits/index.js", "../../../../../node_modules/cli-progress/lib/eta.js", "../../../../../node_modules/cli-progress/lib/terminal.js", "../../../../../node_modules/cli-progress/lib/format-value.js", "../../../../../node_modules/cli-progress/lib/format-bar.js", "../../../../../node_modules/cli-progress/lib/format-time.js", "../../../../../node_modules/cli-progress/lib/formatter.js", "../../../../../node_modules/cli-progress/lib/options.js", "../../../../../node_modules/cli-progress/lib/generic-bar.js", "../../../../../node_modules/cli-progress/lib/single-bar.js", "../../../../../node_modules/cli-progress/lib/multi-bar.js", "../../../../../node_modules/cli-progress/presets/legacy.js", "../../../../../node_modules/cli-progress/presets/shades-classic.js", "../../../../../node_modules/cli-progress/presets/shades-grey.js", "../../../../../node_modules/cli-progress/presets/rect.js", "../../../../../node_modules/cli-progress/presets/index.js", "../../../../../node_modules/cli-progress/cli-progress.js", "../../../../../node_modules/fast-glob/out/utils/array.js", "../../../../../node_modules/fast-glob/out/utils/errno.js", "../../../../../node_modules/fast-glob/out/utils/fs.js", "../../../../../node_modules/fast-glob/out/utils/path.js", "../../../../../node_modules/is-extglob/index.js", "../../../../../node_modules/is-glob/index.js", "../../../../../node_modules/glob-parent/index.js", "../../../../../node_modules/braces/lib/utils.js", "../../../../../node_modules/braces/lib/stringify.js", "../../../../../node_modules/is-number/index.js", "../../../../../node_modules/to-regex-range/index.js", "../../../../../node_modules/fill-range/index.js", "../../../../../node_modules/braces/lib/compile.js", "../../../../../node_modules/braces/lib/expand.js", "../../../../../node_modules/braces/lib/constants.js", "../../../../../node_modules/braces/lib/parse.js", "../../../../../node_modules/braces/index.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/constants.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/utils.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/scan.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/parse.js", "../../../../../node_modules/micromatch/node_modules/picomatch/lib/picomatch.js", "../../../../../node_modules/micromatch/node_modules/picomatch/index.js", "../../../../../node_modules/micromatch/index.js", "../../../../../node_modules/fast-glob/out/utils/pattern.js", "../../../../../node_modules/merge2/index.js", "../../../../../node_modules/fast-glob/out/utils/stream.js", "../../../../../node_modules/fast-glob/out/utils/string.js", "../../../../../node_modules/fast-glob/out/utils/index.js", "../../../../../node_modules/fast-glob/out/managers/tasks.js", "../../../../../node_modules/@nodelib/fs.stat/out/providers/async.js", "../../../../../node_modules/@nodelib/fs.stat/out/providers/sync.js", "../../../../../node_modules/@nodelib/fs.stat/out/adapters/fs.js", "../../../../../node_modules/@nodelib/fs.stat/out/settings.js", "../../../../../node_modules/@nodelib/fs.stat/out/index.js", "../../../../../node_modules/queue-microtask/index.js", "../../../../../node_modules/run-parallel/index.js", "../../../../../node_modules/@nodelib/fs.scandir/out/constants.js", "../../../../../node_modules/@nodelib/fs.scandir/out/utils/fs.js", "../../../../../node_modules/@nodelib/fs.scandir/out/utils/index.js", "../../../../../node_modules/@nodelib/fs.scandir/out/providers/common.js", "../../../../../node_modules/@nodelib/fs.scandir/out/providers/async.js", "../../../../../node_modules/@nodelib/fs.scandir/out/providers/sync.js", "../../../../../node_modules/@nodelib/fs.scandir/out/adapters/fs.js", "../../../../../node_modules/@nodelib/fs.scandir/out/settings.js", "../../../../../node_modules/@nodelib/fs.scandir/out/index.js", "../../../../../node_modules/reusify/reusify.js", "../../../../../node_modules/fastq/queue.js", "../../../../../node_modules/@nodelib/fs.walk/out/readers/common.js", "../../../../../node_modules/@nodelib/fs.walk/out/readers/reader.js", "../../../../../node_modules/@nodelib/fs.walk/out/readers/async.js", "../../../../../node_modules/@nodelib/fs.walk/out/providers/async.js", "../../../../../node_modules/@nodelib/fs.walk/out/providers/stream.js", "../../../../../node_modules/@nodelib/fs.walk/out/readers/sync.js", "../../../../../node_modules/@nodelib/fs.walk/out/providers/sync.js", "../../../../../node_modules/@nodelib/fs.walk/out/settings.js", "../../../../../node_modules/@nodelib/fs.walk/out/index.js", "../../../../../node_modules/fast-glob/out/readers/reader.js", "../../../../../node_modules/fast-glob/out/readers/stream.js", "../../../../../node_modules/fast-glob/out/readers/async.js", "../../../../../node_modules/fast-glob/out/providers/matchers/matcher.js", "../../../../../node_modules/fast-glob/out/providers/matchers/partial.js", "../../../../../node_modules/fast-glob/out/providers/filters/deep.js", "../../../../../node_modules/fast-glob/out/providers/filters/entry.js", "../../../../../node_modules/fast-glob/out/providers/filters/error.js", "../../../../../node_modules/fast-glob/out/providers/transformers/entry.js", "../../../../../node_modules/fast-glob/out/providers/provider.js", "../../../../../node_modules/fast-glob/out/providers/async.js", "../../../../../node_modules/fast-glob/out/providers/stream.js", "../../../../../node_modules/fast-glob/out/readers/sync.js", "../../../../../node_modules/fast-glob/out/providers/sync.js", "../../../../../node_modules/fast-glob/out/settings.js", "../../../../../node_modules/fast-glob/out/index.js", "../../../../../node_modules/ejs/lib/utils.js", "../../../../../node_modules/ejs/lib/ejs.js", "../../../../../node_modules/ms/index.js", "../../../../../node_modules/debug/src/common.js", "../../../../../node_modules/debug/src/browser.js", "../../../../../node_modules/debug/src/node.js", "../../../../../node_modules/debug/src/index.js", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/brace-expressions.ts", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/escape.ts", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/unescape.ts", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/index.ts", "../../../../../node_modules/folder-hash/node_modules/minimatch/src/index-cjs.ts", "../../../../../node_modules/folder-hash/index.js", "../../../../../node_modules/yargs/lib/platform-shims/esm.mjs", "../../../../../node_modules/cliui/build/lib/index.js", "../../../../../node_modules/cliui/build/lib/string-utils.js", "../../../../../node_modules/cliui/index.mjs", "../../../../../node_modules/escalade/sync/index.mjs", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/index.js", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js", "../../../../../node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js", "../../../../../node_modules/yargs/build/lib/utils/process-argv.js", "../../../../../node_modules/yargs/build/lib/yerror.js", "../../../../../node_modules/y18n/build/lib/platform-shims/node.js", "../../../../../node_modules/y18n/build/lib/index.js", "../../../../../node_modules/y18n/index.mjs", "../../../../../node_modules/yargs/build/lib/typings/common-types.js", "../../../../../node_modules/yargs/build/lib/utils/is-promise.js", "../../../../../node_modules/yargs/build/lib/parse-command.js", "../../../../../node_modules/yargs/build/lib/argsert.js", "../../../../../node_modules/yargs/build/lib/middleware.js", "../../../../../node_modules/yargs/build/lib/utils/maybe-async-result.js", "../../../../../node_modules/yargs/build/lib/utils/which-module.js", "../../../../../node_modules/yargs/build/lib/command.js", "../../../../../node_modules/yargs/build/lib/utils/obj-filter.js", "../../../../../node_modules/yargs/build/lib/utils/set-blocking.js", "../../../../../node_modules/yargs/build/lib/usage.js", "../../../../../node_modules/yargs/build/lib/completion-templates.js", "../../../../../node_modules/yargs/build/lib/completion.js", "../../../../../node_modules/yargs/build/lib/utils/levenshtein.js", "../../../../../node_modules/yargs/build/lib/validation.js", "../../../../../node_modules/yargs/build/lib/utils/apply-extends.js", "../../../../../node_modules/yargs/build/lib/yargs-factory.js", "../../../../../node_modules/yargs/index.mjs", "../../../../../ng-dev/utils/yargs.ts", "../../../../../ng-dev/caretaker/cli.ts", "../../../../../ng-dev/utils/git/github-yargs.ts", "../../../../../ng-dev/utils/git/github-macros.ts", "../../../../../ng-dev/caretaker/check/base.ts", "../../../../../ng-dev/caretaker/check/ci.ts", "../../../../../ng-dev/utils/g3.ts", "../../../../../node_modules/minimatch/src/index.ts", "../../../../../node_modules/minimatch/src/assert-valid-pattern.ts", "../../../../../node_modules/minimatch/src/brace-expressions.ts", "../../../../../node_modules/minimatch/src/unescape.ts", "../../../../../node_modules/minimatch/src/ast.ts", "../../../../../node_modules/minimatch/src/escape.ts", "../../../../../ng-dev/utils/g3-sync-config.ts", "../../../../../ng-dev/caretaker/check/g3.ts", "../../../../../ng-dev/caretaker/check/github.ts", "../../../../../ng-dev/caretaker/check/services.ts", "../../../../../ng-dev/caretaker/check/check.ts", "../../../../../ng-dev/caretaker/check/cli.ts", "../../../../../node_modules/@inquirer/core/dist/esm/lib/key.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/errors.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-prefix.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/hook-engine.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-state.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-effect.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/theme.js", "../../../../../node_modules/@inquirer/figures/dist/esm/index.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/make-theme.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-memo.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-ref.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/use-keypress.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/utils.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/pagination/lines.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/pagination/position.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/create-prompt.js", "../../../../../node_modules/signal-exit/src/signals.ts", "../../../../../node_modules/signal-exit/src/index.ts", "../../../../../node_modules/@inquirer/core/dist/esm/lib/screen-manager.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js", "../../../../../node_modules/@inquirer/core/dist/esm/lib/Separator.js", "../../../../../node_modules/@inquirer/checkbox/dist/esm/index.js", "../../../../../node_modules/@inquirer/editor/dist/esm/index.js", "../../../../../node_modules/@inquirer/confirm/dist/esm/index.js", "../../../../../node_modules/@inquirer/input/dist/esm/index.js", "../../../../../node_modules/@inquirer/number/dist/esm/index.js", "../../../../../node_modules/@inquirer/expand/dist/esm/index.js", "../../../../../node_modules/@inquirer/rawlist/dist/esm/index.js", "../../../../../node_modules/@inquirer/password/dist/esm/index.js", "../../../../../node_modules/@inquirer/search/dist/esm/index.js", "../../../../../node_modules/@inquirer/select/dist/esm/index.js", "../../../../../ng-dev/utils/prompt.ts", "../../../../../ng-dev/caretaker/handoff/update-github-team.ts", "../../../../../ng-dev/caretaker/handoff/cli.ts", "../../../../../ng-dev/commit-message/restore-commit-message/restore-commit-message.ts", "../../../../../ng-dev/commit-message/restore-commit-message/commit-message-draft.ts", "../../../../../ng-dev/commit-message/restore-commit-message/cli.ts", "../../../../../ng-dev/commit-message/validate-file/validate-file.ts", "../../../../../ng-dev/commit-message/parse.ts", "../../../../../ng-dev/commit-message/validate.ts", "../../../../../ng-dev/commit-message/validate-file/cli.ts", "../../../../../ng-dev/commit-message/utils.ts", "../../../../../ng-dev/commit-message/validate-range/validate-range.ts", "../../../../../ng-dev/commit-message/validate-range/cli.ts", "../../../../../ng-dev/commit-message/cli.ts", "../../../../../ng-dev/format/run-commands-parallel.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/index.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/assert-valid-pattern.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/brace-expressions.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/unescape.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/ast.ts", "../../../../../node_modules/multimatch/node_modules/minimatch/src/escape.ts", "../../../../../node_modules/array-union/index.js", "../../../../../node_modules/array-differ/index.js", "../../../../../node_modules/multimatch/index.js", "../../../../../ng-dev/format/formatters/buildifier.ts", "../../../../../ng-dev/format/formatters/base-formatter.ts", "../../../../../ng-dev/format/formatters/prettier.ts", "../../../../../ng-dev/format/formatters/index.ts", "../../../../../ng-dev/format/format.ts", "../../../../../ng-dev/format/all.ts", "../../../../../ng-dev/format/changed.ts", "../../../../../ng-dev/format/files.ts", "../../../../../ng-dev/format/staged.ts", "../../../../../ng-dev/format/cli.ts", "../../../../../ng-dev/misc/build-and-link/cli.ts", "../../../../../ng-dev/release/build/index.ts", "../../../../../ng-dev/misc/update-yarn/cli.ts", "../../../../../ng-dev/utils/spinner.ts", "../../../../../ng-dev/utils/bazel-bin.ts", "../../../../../ng-dev/misc/generated-files/update-generated-files.ts", "../../../../../ng-dev/misc/generated-files/cli.ts", "../../../../../ng-dev/misc/cli.ts", "../../../../../ng-dev/ngbot/verify.ts", "../../../../../ng-dev/ngbot/cli.ts", "../../../../../ng-dev/pr/common/targeting/lts-branch.ts", "../../../../../ng-dev/utils/locale.ts", "../../../../../ng-dev/pr/common/targeting/labels.ts", "../../../../../ng-dev/pr/common/targeting/target-label.ts", "../../../../../ng-dev/pr/check-target-branches/check-target-branches.ts", "../../../../../ng-dev/pr/check-target-branches/cli.ts", "../../../../../ng-dev/pr/checkout/checkout.ts", "../../../../../ng-dev/pr/common/checkout-pr.ts", "../../../../../ng-dev/utils/github.ts", "../../../../../ng-dev/pr/checkout/cli.ts", "../../../../../ng-dev/pr/discover-new-conflicts/index.ts", "../../../../../ng-dev/pr/common/fetch-pull-request.ts", "../../../../../ng-dev/pr/discover-new-conflicts/cli.ts", "../../../../../ng-dev/pr/merge/messages.ts", "../../../../../ng-dev/pr/merge/failures.ts", "../../../../../ng-dev/pr/common/validation/validation-failure.ts", "../../../../../ng-dev/pr/common/validation/validation-config.ts", "../../../../../ng-dev/pr/common/validation/assert-allowed-target-label.ts", "../../../../../ng-dev/pr/common/validation/assert-breaking-change-info.ts", "../../../../../ng-dev/pr/common/validation/assert-completed-reviews.ts", "../../../../../ng-dev/pr/common/validation/assert-isolated-separate-files.ts", "../../../../../ng-dev/pr/common/validation/assert-enforced-statuses.ts", "../../../../../ng-dev/pr/common/validation/assert-enforce-tested.ts", "../../../../../ng-dev/pr/common/validation/assert-merge-ready.ts", "../../../../../ng-dev/pr/common/validation/assert-minimum-reviews.ts", "../../../../../ng-dev/pr/common/validation/assert-passing-ci.ts", "../../../../../ng-dev/pr/common/validation/assert-pending.ts", "../../../../../ng-dev/pr/common/validation/assert-signed-cla.ts", "../../../../../ng-dev/pr/common/validation/validate-pull-request.ts", "../../../../../ng-dev/pr/merge/strategies/strategy.ts", "../../../../../ng-dev/pr/merge/pull-request.ts", "../../../../../ng-dev/pr/merge/strategies/api-merge.ts", "../../../../../ng-dev/pr/merge/strategies/autosquash-merge.ts", "../../../../../ng-dev/pr/merge/merge-tool.ts", "../../../../../ng-dev/pr/merge/merge-pull-request.ts", "../../../../../ng-dev/pr/merge/cli.ts", "../../../../../ng-dev/pr/rebase/index.ts", "../../../../../ng-dev/pr/rebase/cli.ts", "../../../../../ng-dev/pr/cli.ts", "../../../../../ng-dev/pullapprove/verify.ts", "../../../../../ng-dev/pullapprove/logging.ts", "../../../../../ng-dev/pullapprove/parse-yaml.ts", "../../../../../ng-dev/pullapprove/condition_errors.ts", "../../../../../ng-dev/pullapprove/utils.ts", "../../../../../ng-dev/pullapprove/pullapprove_arrays.ts", "../../../../../ng-dev/pullapprove/condition_evaluator.ts", "../../../../../ng-dev/pullapprove/group.ts", "../../../../../ng-dev/pullapprove/cli.ts", "../../../../../ng-dev/release/build/cli.ts", "../../../../../ng-dev/release/versioning/print-active-trains.ts", "../../../../../ng-dev/release/info/cli.ts", "../../../../../ng-dev/release/notes/cli.ts", "../../../../../ng-dev/release/notes/release-notes.ts", "../../../../../ng-dev/release/notes/context.ts", "../../../../../ng-dev/release/notes/templates/changelog.ts", "../../../../../ng-dev/release/notes/templates/github-release.ts", "../../../../../ng-dev/release/notes/commits/unique-commit-id.ts", "../../../../../ng-dev/release/notes/commits/get-commits-in-range.ts", "../../../../../ng-dev/release/notes/changelog.ts", "../../../../../ng-dev/release/precheck/cli.ts", "../../../../../ng-dev/utils/read-stdin-until-closed.ts", "../../../../../ng-dev/release/versioning/npm-command.ts", "../../../../../ng-dev/release/publish/actions-error.ts", "../../../../../ng-dev/release/publish/actions/configure-next-as-major.ts", "../../../../../ng-dev/utils/constants.ts", "../../../../../ng-dev/release/publish/actions.ts", "../../../../../ng-dev/release/versioning/experimental-versions.ts", "../../../../../ng-dev/release/versioning/version-tags.ts", "../../../../../ng-dev/release/publish/directory-hash.ts", "../../../../../ng-dev/release/publish/built-package-info.ts", "../../../../../ng-dev/release/publish/commit-message.ts", "../../../../../ng-dev/release/publish/constants.ts", "../../../../../ng-dev/release/publish/external-commands.ts", "../../../../../ng-dev/release/publish/pull-request-state.ts", "../../../../../ng-dev/release/publish/prompt-merge.ts", "../../../../../ng-dev/release/versioning/prerelease-version.ts", "../../../../../ng-dev/utils/semver.ts", "../../../../../ng-dev/release/publish/actions/cut-lts-patch.ts", "../../../../../ng-dev/release/publish/actions/cut-new-patch.ts", "../../../../../ng-dev/release/publish/actions/shared/cut-prerelease.ts", "../../../../../ng-dev/release/publish/actions/cut-npm-next-prerelease.ts", "../../../../../ng-dev/release/publish/actions/cut-npm-next-release-candidate.ts", "../../../../../ng-dev/release/publish/actions/cut-stable.ts", "../../../../../ng-dev/release/publish/actions/exceptional-minor/cut-exceptional-minor-prerelease.ts", "../../../../../ng-dev/release/publish/actions/exceptional-minor/cut-exceptional-minor-release-candidate.ts", "../../../../../ng-dev/release/publish/actions/exceptional-minor/prepare-exceptional-minor.ts", "../../../../../ng-dev/release/publish/actions/shared/branch-off-next-branch.ts", "../../../../../ng-dev/release/publish/actions/move-next-into-feature-freeze.ts", "../../../../../ng-dev/release/publish/actions/move-next-into-release-candidate.ts", "../../../../../ng-dev/release/publish/actions/special/cut-lts-minor.ts", "../../../../../ng-dev/release/publish/actions/tag-recent-major-as-latest.ts", "../../../../../ng-dev/release/publish/actions/index.ts", "../../../../../ng-dev/utils/version-check.ts", "../../../../../ng-dev/release/publish/index.ts", "../../../../../ng-dev/release/publish/cli.ts", "../../../../../ng-dev/release/npm-dist-tag/set/cli.ts", "../../../../../ng-dev/release/set-dist-tag/cli.ts", "../../../../../ng-dev/release/stamping/cli.ts", "../../../../../ng-dev/release/stamping/env-stamp.ts", "../../../../../ng-dev/release/npm-dist-tag/delete/cli.ts", "../../../../../ng-dev/release/npm-dist-tag/cli.ts", "../../../../../ng-dev/release/cli.ts", "../../../../../ng-dev/ts-circular-dependencies/index.ts", "../../../../../ng-dev/ts-circular-dependencies/analyzer.ts", "../../../../../ng-dev/ts-circular-dependencies/file_system.ts", "../../../../../ng-dev/ts-circular-dependencies/parser.ts", "../../../../../ng-dev/ts-circular-dependencies/config.ts", "../../../../../ng-dev/ts-circular-dependencies/golden.ts", "../../../../../ng-dev/auth/login/cli.ts", "../../../../../ng-dev/auth/logout/cli.ts", "../../../../../ng-dev/auth/cli.ts", "../../../../../ng-dev/perf/workflow/workflow.ts", "../../../../../ng-dev/perf/workflow/loader.ts", "../../../../../ng-dev/perf/workflow/cli.ts", "../../../../../ng-dev/perf/workflow/database.ts", "../../../../../ng-dev/perf/cli.ts", "../../../../../ng-dev/cli.ts"],
+  "sourcesContent": ["'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n", "var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,.*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport * as formatter from './impl/format';\nimport * as edit from './impl/edit';\nimport * as scanner from './impl/scanner';\nimport * as parser from './impl/parser';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport const createScanner = scanner.createScanner;\nexport var ScanError;\n(function (ScanError) {\n    ScanError[ScanError[\"None\"] = 0] = \"None\";\n    ScanError[ScanError[\"UnexpectedEndOfComment\"] = 1] = \"UnexpectedEndOfComment\";\n    ScanError[ScanError[\"UnexpectedEndOfString\"] = 2] = \"UnexpectedEndOfString\";\n    ScanError[ScanError[\"UnexpectedEndOfNumber\"] = 3] = \"UnexpectedEndOfNumber\";\n    ScanError[ScanError[\"InvalidUnicode\"] = 4] = \"InvalidUnicode\";\n    ScanError[ScanError[\"InvalidEscapeCharacter\"] = 5] = \"InvalidEscapeCharacter\";\n    ScanError[ScanError[\"InvalidCharacter\"] = 6] = \"InvalidCharacter\";\n})(ScanError || (ScanError = {}));\nexport var SyntaxKind;\n(function (SyntaxKind) {\n    SyntaxKind[SyntaxKind[\"OpenBraceToken\"] = 1] = \"OpenBraceToken\";\n    SyntaxKind[SyntaxKind[\"CloseBraceToken\"] = 2] = \"CloseBraceToken\";\n    SyntaxKind[SyntaxKind[\"OpenBracketToken\"] = 3] = \"OpenBracketToken\";\n    SyntaxKind[SyntaxKind[\"CloseBracketToken\"] = 4] = \"CloseBracketToken\";\n    SyntaxKind[SyntaxKind[\"CommaToken\"] = 5] = \"CommaToken\";\n    SyntaxKind[SyntaxKind[\"ColonToken\"] = 6] = \"ColonToken\";\n    SyntaxKind[SyntaxKind[\"NullKeyword\"] = 7] = \"NullKeyword\";\n    SyntaxKind[SyntaxKind[\"TrueKeyword\"] = 8] = \"TrueKeyword\";\n    SyntaxKind[SyntaxKind[\"FalseKeyword\"] = 9] = \"FalseKeyword\";\n    SyntaxKind[SyntaxKind[\"StringLiteral\"] = 10] = \"StringLiteral\";\n    SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 11] = \"NumericLiteral\";\n    SyntaxKind[SyntaxKind[\"LineCommentTrivia\"] = 12] = \"LineCommentTrivia\";\n    SyntaxKind[SyntaxKind[\"BlockCommentTrivia\"] = 13] = \"BlockCommentTrivia\";\n    SyntaxKind[SyntaxKind[\"LineBreakTrivia\"] = 14] = \"LineBreakTrivia\";\n    SyntaxKind[SyntaxKind[\"Trivia\"] = 15] = \"Trivia\";\n    SyntaxKind[SyntaxKind[\"Unknown\"] = 16] = \"Unknown\";\n    SyntaxKind[SyntaxKind[\"EOF\"] = 17] = \"EOF\";\n})(SyntaxKind || (SyntaxKind = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport const getLocation = parser.getLocation;\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore, always check the errors list to find out if the input was valid.\n */\nexport const parse = parser.parse;\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport const parseTree = parser.parseTree;\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport const findNodeAtLocation = parser.findNodeAtLocation;\n/**\n * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport const findNodeAtOffset = parser.findNodeAtOffset;\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport const getNodePath = parser.getNodePath;\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport const getNodeValue = parser.getNodeValue;\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport const visit = parser.visit;\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport const stripComments = parser.stripComments;\nexport var ParseErrorCode;\n(function (ParseErrorCode) {\n    ParseErrorCode[ParseErrorCode[\"InvalidSymbol\"] = 1] = \"InvalidSymbol\";\n    ParseErrorCode[ParseErrorCode[\"InvalidNumberFormat\"] = 2] = \"InvalidNumberFormat\";\n    ParseErrorCode[ParseErrorCode[\"PropertyNameExpected\"] = 3] = \"PropertyNameExpected\";\n    ParseErrorCode[ParseErrorCode[\"ValueExpected\"] = 4] = \"ValueExpected\";\n    ParseErrorCode[ParseErrorCode[\"ColonExpected\"] = 5] = \"ColonExpected\";\n    ParseErrorCode[ParseErrorCode[\"CommaExpected\"] = 6] = \"CommaExpected\";\n    ParseErrorCode[ParseErrorCode[\"CloseBraceExpected\"] = 7] = \"CloseBraceExpected\";\n    ParseErrorCode[ParseErrorCode[\"CloseBracketExpected\"] = 8] = \"CloseBracketExpected\";\n    ParseErrorCode[ParseErrorCode[\"EndOfFileExpected\"] = 9] = \"EndOfFileExpected\";\n    ParseErrorCode[ParseErrorCode[\"InvalidCommentToken\"] = 10] = \"InvalidCommentToken\";\n    ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfComment\"] = 11] = \"UnexpectedEndOfComment\";\n    ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfString\"] = 12] = \"UnexpectedEndOfString\";\n    ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfNumber\"] = 13] = \"UnexpectedEndOfNumber\";\n    ParseErrorCode[ParseErrorCode[\"InvalidUnicode\"] = 14] = \"InvalidUnicode\";\n    ParseErrorCode[ParseErrorCode[\"InvalidEscapeCharacter\"] = 15] = \"InvalidEscapeCharacter\";\n    ParseErrorCode[ParseErrorCode[\"InvalidCharacter\"] = 16] = \"InvalidCharacter\";\n})(ParseErrorCode || (ParseErrorCode = {}));\nexport function printParseErrorCode(code) {\n    switch (code) {\n        case 1 /* ParseErrorCode.InvalidSymbol */: return 'InvalidSymbol';\n        case 2 /* ParseErrorCode.InvalidNumberFormat */: return 'InvalidNumberFormat';\n        case 3 /* ParseErrorCode.PropertyNameExpected */: return 'PropertyNameExpected';\n        case 4 /* ParseErrorCode.ValueExpected */: return 'ValueExpected';\n        case 5 /* ParseErrorCode.ColonExpected */: return 'ColonExpected';\n        case 6 /* ParseErrorCode.CommaExpected */: return 'CommaExpected';\n        case 7 /* ParseErrorCode.CloseBraceExpected */: return 'CloseBraceExpected';\n        case 8 /* ParseErrorCode.CloseBracketExpected */: return 'CloseBracketExpected';\n        case 9 /* ParseErrorCode.EndOfFileExpected */: return 'EndOfFileExpected';\n        case 10 /* ParseErrorCode.InvalidCommentToken */: return 'InvalidCommentToken';\n        case 11 /* ParseErrorCode.UnexpectedEndOfComment */: return 'UnexpectedEndOfComment';\n        case 12 /* ParseErrorCode.UnexpectedEndOfString */: return 'UnexpectedEndOfString';\n        case 13 /* ParseErrorCode.UnexpectedEndOfNumber */: return 'UnexpectedEndOfNumber';\n        case 14 /* ParseErrorCode.InvalidUnicode */: return 'InvalidUnicode';\n        case 15 /* ParseErrorCode.InvalidEscapeCharacter */: return 'InvalidEscapeCharacter';\n        case 16 /* ParseErrorCode.InvalidCharacter */: return 'InvalidCharacter';\n    }\n    return '';\n}\n/**\n * Computes the edit operations needed to format a JSON document.\n *\n * @param documentText The input text\n * @param range The range to format or `undefined` to format the full content\n * @param options The formatting options\n * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function format(documentText, range, options) {\n    return formatter.format(documentText, range, options);\n}\n/**\n * Computes the edit operations needed to modify a value in the JSON document.\n *\n * @param documentText The input text\n * @param path The path of the value to change. The path represents either to the document root, a property or an array item.\n * If the path points to an non-existing property or item, it will be created.\n * @param value The new value for the specified property or item. If the value is undefined,\n * the property or item will be removed.\n * @param options Options\n * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function modify(text, path, value, options) {\n    return edit.setProperty(text, path, value, options);\n}\n/**\n * Applies edits to an input string.\n * @param text The input text\n * @param edits Edit operations following the format described in {@linkcode EditResult}.\n * @returns The text with the applied edits.\n * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.\n */\nexport function applyEdits(text, edits) {\n    let sortedEdits = edits.slice(0).sort((a, b) => {\n        const diff = a.offset - b.offset;\n        if (diff === 0) {\n            return a.length - b.length;\n        }\n        return diff;\n    });\n    let lastModifiedOffset = text.length;\n    for (let i = sortedEdits.length - 1; i >= 0; i--) {\n        let e = sortedEdits[i];\n        if (e.offset + e.length <= lastModifiedOffset) {\n            text = edit.applyEdit(text, e);\n        }\n        else {\n            throw new Error('Overlapping edit');\n        }\n        lastModifiedOffset = e.offset;\n    }\n    return text;\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport function createScanner(text, ignoreTrivia = false) {\n    const len = text.length;\n    let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;\n    function scanHexDigits(count, exact) {\n        let digits = 0;\n        let value = 0;\n        while (digits < count || !exact) {\n            let ch = text.charCodeAt(pos);\n            if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {\n                value = value * 16 + ch - 48 /* CharacterCodes._0 */;\n            }\n            else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {\n                value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;\n            }\n            else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {\n                value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;\n            }\n            else {\n                break;\n            }\n            pos++;\n            digits++;\n        }\n        if (digits < count) {\n            value = -1;\n        }\n        return value;\n    }\n    function setPosition(newPosition) {\n        pos = newPosition;\n        value = '';\n        tokenOffset = 0;\n        token = 16 /* SyntaxKind.Unknown */;\n        scanError = 0 /* ScanError.None */;\n    }\n    function scanNumber() {\n        let start = pos;\n        if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {\n            pos++;\n        }\n        else {\n            pos++;\n            while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n                pos++;\n            }\n        }\n        if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {\n            pos++;\n            if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n                pos++;\n                while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n                    pos++;\n                }\n            }\n            else {\n                scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n                return text.substring(start, pos);\n            }\n        }\n        let end = pos;\n        if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {\n            pos++;\n            if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {\n                pos++;\n            }\n            if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n                pos++;\n                while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n                    pos++;\n                }\n                end = pos;\n            }\n            else {\n                scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n            }\n        }\n        return text.substring(start, end);\n    }\n    function scanString() {\n        let result = '', start = pos;\n        while (true) {\n            if (pos >= len) {\n                result += text.substring(start, pos);\n                scanError = 2 /* ScanError.UnexpectedEndOfString */;\n                break;\n            }\n            const ch = text.charCodeAt(pos);\n            if (ch === 34 /* CharacterCodes.doubleQuote */) {\n                result += text.substring(start, pos);\n                pos++;\n                break;\n            }\n            if (ch === 92 /* CharacterCodes.backslash */) {\n                result += text.substring(start, pos);\n                pos++;\n                if (pos >= len) {\n                    scanError = 2 /* ScanError.UnexpectedEndOfString */;\n                    break;\n                }\n                const ch2 = text.charCodeAt(pos++);\n                switch (ch2) {\n                    case 34 /* CharacterCodes.doubleQuote */:\n                        result += '\\\"';\n                        break;\n                    case 92 /* CharacterCodes.backslash */:\n                        result += '\\\\';\n                        break;\n                    case 47 /* CharacterCodes.slash */:\n                        result += '/';\n                        break;\n                    case 98 /* CharacterCodes.b */:\n                        result += '\\b';\n                        break;\n                    case 102 /* CharacterCodes.f */:\n                        result += '\\f';\n                        break;\n                    case 110 /* CharacterCodes.n */:\n                        result += '\\n';\n                        break;\n                    case 114 /* CharacterCodes.r */:\n                        result += '\\r';\n                        break;\n                    case 116 /* CharacterCodes.t */:\n                        result += '\\t';\n                        break;\n                    case 117 /* CharacterCodes.u */:\n                        const ch3 = scanHexDigits(4, true);\n                        if (ch3 >= 0) {\n                            result += String.fromCharCode(ch3);\n                        }\n                        else {\n                            scanError = 4 /* ScanError.InvalidUnicode */;\n                        }\n                        break;\n                    default:\n                        scanError = 5 /* ScanError.InvalidEscapeCharacter */;\n                }\n                start = pos;\n                continue;\n            }\n            if (ch >= 0 && ch <= 0x1f) {\n                if (isLineBreak(ch)) {\n                    result += text.substring(start, pos);\n                    scanError = 2 /* ScanError.UnexpectedEndOfString */;\n                    break;\n                }\n                else {\n                    scanError = 6 /* ScanError.InvalidCharacter */;\n                    // mark as error but continue with string\n                }\n            }\n            pos++;\n        }\n        return result;\n    }\n    function scanNext() {\n        value = '';\n        scanError = 0 /* ScanError.None */;\n        tokenOffset = pos;\n        lineStartOffset = lineNumber;\n        prevTokenLineStartOffset = tokenLineStartOffset;\n        if (pos >= len) {\n            // at the end\n            tokenOffset = len;\n            return token = 17 /* SyntaxKind.EOF */;\n        }\n        let code = text.charCodeAt(pos);\n        // trivia: whitespace\n        if (isWhiteSpace(code)) {\n            do {\n                pos++;\n                value += String.fromCharCode(code);\n                code = text.charCodeAt(pos);\n            } while (isWhiteSpace(code));\n            return token = 15 /* SyntaxKind.Trivia */;\n        }\n        // trivia: newlines\n        if (isLineBreak(code)) {\n            pos++;\n            value += String.fromCharCode(code);\n            if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n                pos++;\n                value += '\\n';\n            }\n            lineNumber++;\n            tokenLineStartOffset = pos;\n            return token = 14 /* SyntaxKind.LineBreakTrivia */;\n        }\n        switch (code) {\n            // tokens: []{}:,\n            case 123 /* CharacterCodes.openBrace */:\n                pos++;\n                return token = 1 /* SyntaxKind.OpenBraceToken */;\n            case 125 /* CharacterCodes.closeBrace */:\n                pos++;\n                return token = 2 /* SyntaxKind.CloseBraceToken */;\n            case 91 /* CharacterCodes.openBracket */:\n                pos++;\n                return token = 3 /* SyntaxKind.OpenBracketToken */;\n            case 93 /* CharacterCodes.closeBracket */:\n                pos++;\n                return token = 4 /* SyntaxKind.CloseBracketToken */;\n            case 58 /* CharacterCodes.colon */:\n                pos++;\n                return token = 6 /* SyntaxKind.ColonToken */;\n            case 44 /* CharacterCodes.comma */:\n                pos++;\n                return token = 5 /* SyntaxKind.CommaToken */;\n            // strings\n            case 34 /* CharacterCodes.doubleQuote */:\n                pos++;\n                value = scanString();\n                return token = 10 /* SyntaxKind.StringLiteral */;\n            // comments\n            case 47 /* CharacterCodes.slash */:\n                const start = pos - 1;\n                // Single-line comment\n                if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n                    pos += 2;\n                    while (pos < len) {\n                        if (isLineBreak(text.charCodeAt(pos))) {\n                            break;\n                        }\n                        pos++;\n                    }\n                    value = text.substring(start, pos);\n                    return token = 12 /* SyntaxKind.LineCommentTrivia */;\n                }\n                // Multi-line comment\n                if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {\n                    pos += 2;\n                    const safeLength = len - 1; // For lookahead.\n                    let commentClosed = false;\n                    while (pos < safeLength) {\n                        const ch = text.charCodeAt(pos);\n                        if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n                            pos += 2;\n                            commentClosed = true;\n                            break;\n                        }\n                        pos++;\n                        if (isLineBreak(ch)) {\n                            if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n                                pos++;\n                            }\n                            lineNumber++;\n                            tokenLineStartOffset = pos;\n                        }\n                    }\n                    if (!commentClosed) {\n                        pos++;\n                        scanError = 1 /* ScanError.UnexpectedEndOfComment */;\n                    }\n                    value = text.substring(start, pos);\n                    return token = 13 /* SyntaxKind.BlockCommentTrivia */;\n                }\n                // just a single slash\n                value += String.fromCharCode(code);\n                pos++;\n                return token = 16 /* SyntaxKind.Unknown */;\n            // numbers\n            case 45 /* CharacterCodes.minus */:\n                value += String.fromCharCode(code);\n                pos++;\n                if (pos === len || !isDigit(text.charCodeAt(pos))) {\n                    return token = 16 /* SyntaxKind.Unknown */;\n                }\n            // found a minus, followed by a number so\n            // we fall through to proceed with scanning\n            // numbers\n            case 48 /* CharacterCodes._0 */:\n            case 49 /* CharacterCodes._1 */:\n            case 50 /* CharacterCodes._2 */:\n            case 51 /* CharacterCodes._3 */:\n            case 52 /* CharacterCodes._4 */:\n            case 53 /* CharacterCodes._5 */:\n            case 54 /* CharacterCodes._6 */:\n            case 55 /* CharacterCodes._7 */:\n            case 56 /* CharacterCodes._8 */:\n            case 57 /* CharacterCodes._9 */:\n                value += scanNumber();\n                return token = 11 /* SyntaxKind.NumericLiteral */;\n            // literals and unknown symbols\n            default:\n                // is a literal? Read the full word.\n                while (pos < len && isUnknownContentCharacter(code)) {\n                    pos++;\n                    code = text.charCodeAt(pos);\n                }\n                if (tokenOffset !== pos) {\n                    value = text.substring(tokenOffset, pos);\n                    // keywords: true, false, null\n                    switch (value) {\n                        case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;\n                        case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;\n                        case 'null': return token = 7 /* SyntaxKind.NullKeyword */;\n                    }\n                    return token = 16 /* SyntaxKind.Unknown */;\n                }\n                // some\n                value += String.fromCharCode(code);\n                pos++;\n                return token = 16 /* SyntaxKind.Unknown */;\n        }\n    }\n    function isUnknownContentCharacter(code) {\n        if (isWhiteSpace(code) || isLineBreak(code)) {\n            return false;\n        }\n        switch (code) {\n            case 125 /* CharacterCodes.closeBrace */:\n            case 93 /* CharacterCodes.closeBracket */:\n            case 123 /* CharacterCodes.openBrace */:\n            case 91 /* CharacterCodes.openBracket */:\n            case 34 /* CharacterCodes.doubleQuote */:\n            case 58 /* CharacterCodes.colon */:\n            case 44 /* CharacterCodes.comma */:\n            case 47 /* CharacterCodes.slash */:\n                return false;\n        }\n        return true;\n    }\n    function scanNextNonTrivia() {\n        let result;\n        do {\n            result = scanNext();\n        } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);\n        return result;\n    }\n    return {\n        setPosition: setPosition,\n        getPosition: () => pos,\n        scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n        getToken: () => token,\n        getTokenValue: () => value,\n        getTokenOffset: () => tokenOffset,\n        getTokenLength: () => pos - tokenOffset,\n        getTokenStartLine: () => lineStartOffset,\n        getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,\n        getTokenError: () => scanError,\n    };\n}\nfunction isWhiteSpace(ch) {\n    return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;\n}\nfunction isLineBreak(ch) {\n    return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;\n}\nfunction isDigit(ch) {\n    return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;\n}\nvar CharacterCodes;\n(function (CharacterCodes) {\n    CharacterCodes[CharacterCodes[\"lineFeed\"] = 10] = \"lineFeed\";\n    CharacterCodes[CharacterCodes[\"carriageReturn\"] = 13] = \"carriageReturn\";\n    CharacterCodes[CharacterCodes[\"space\"] = 32] = \"space\";\n    CharacterCodes[CharacterCodes[\"_0\"] = 48] = \"_0\";\n    CharacterCodes[CharacterCodes[\"_1\"] = 49] = \"_1\";\n    CharacterCodes[CharacterCodes[\"_2\"] = 50] = \"_2\";\n    CharacterCodes[CharacterCodes[\"_3\"] = 51] = \"_3\";\n    CharacterCodes[CharacterCodes[\"_4\"] = 52] = \"_4\";\n    CharacterCodes[CharacterCodes[\"_5\"] = 53] = \"_5\";\n    CharacterCodes[CharacterCodes[\"_6\"] = 54] = \"_6\";\n    CharacterCodes[CharacterCodes[\"_7\"] = 55] = \"_7\";\n    CharacterCodes[CharacterCodes[\"_8\"] = 56] = \"_8\";\n    CharacterCodes[CharacterCodes[\"_9\"] = 57] = \"_9\";\n    CharacterCodes[CharacterCodes[\"a\"] = 97] = \"a\";\n    CharacterCodes[CharacterCodes[\"b\"] = 98] = \"b\";\n    CharacterCodes[CharacterCodes[\"c\"] = 99] = \"c\";\n    CharacterCodes[CharacterCodes[\"d\"] = 100] = \"d\";\n    CharacterCodes[CharacterCodes[\"e\"] = 101] = \"e\";\n    CharacterCodes[CharacterCodes[\"f\"] = 102] = \"f\";\n    CharacterCodes[CharacterCodes[\"g\"] = 103] = \"g\";\n    CharacterCodes[CharacterCodes[\"h\"] = 104] = \"h\";\n    CharacterCodes[CharacterCodes[\"i\"] = 105] = \"i\";\n    CharacterCodes[CharacterCodes[\"j\"] = 106] = \"j\";\n    CharacterCodes[CharacterCodes[\"k\"] = 107] = \"k\";\n    CharacterCodes[CharacterCodes[\"l\"] = 108] = \"l\";\n    CharacterCodes[CharacterCodes[\"m\"] = 109] = \"m\";\n    CharacterCodes[CharacterCodes[\"n\"] = 110] = \"n\";\n    CharacterCodes[CharacterCodes[\"o\"] = 111] = \"o\";\n    CharacterCodes[CharacterCodes[\"p\"] = 112] = \"p\";\n    CharacterCodes[CharacterCodes[\"q\"] = 113] = \"q\";\n    CharacterCodes[CharacterCodes[\"r\"] = 114] = \"r\";\n    CharacterCodes[CharacterCodes[\"s\"] = 115] = \"s\";\n    CharacterCodes[CharacterCodes[\"t\"] = 116] = \"t\";\n    CharacterCodes[CharacterCodes[\"u\"] = 117] = \"u\";\n    CharacterCodes[CharacterCodes[\"v\"] = 118] = \"v\";\n    CharacterCodes[CharacterCodes[\"w\"] = 119] = \"w\";\n    CharacterCodes[CharacterCodes[\"x\"] = 120] = \"x\";\n    CharacterCodes[CharacterCodes[\"y\"] = 121] = \"y\";\n    CharacterCodes[CharacterCodes[\"z\"] = 122] = \"z\";\n    CharacterCodes[CharacterCodes[\"A\"] = 65] = \"A\";\n    CharacterCodes[CharacterCodes[\"B\"] = 66] = \"B\";\n    CharacterCodes[CharacterCodes[\"C\"] = 67] = \"C\";\n    CharacterCodes[CharacterCodes[\"D\"] = 68] = \"D\";\n    CharacterCodes[CharacterCodes[\"E\"] = 69] = \"E\";\n    CharacterCodes[CharacterCodes[\"F\"] = 70] = \"F\";\n    CharacterCodes[CharacterCodes[\"G\"] = 71] = \"G\";\n    CharacterCodes[CharacterCodes[\"H\"] = 72] = \"H\";\n    CharacterCodes[CharacterCodes[\"I\"] = 73] = \"I\";\n    CharacterCodes[CharacterCodes[\"J\"] = 74] = \"J\";\n    CharacterCodes[CharacterCodes[\"K\"] = 75] = \"K\";\n    CharacterCodes[CharacterCodes[\"L\"] = 76] = \"L\";\n    CharacterCodes[CharacterCodes[\"M\"] = 77] = \"M\";\n    CharacterCodes[CharacterCodes[\"N\"] = 78] = \"N\";\n    CharacterCodes[CharacterCodes[\"O\"] = 79] = \"O\";\n    CharacterCodes[CharacterCodes[\"P\"] = 80] = \"P\";\n    CharacterCodes[CharacterCodes[\"Q\"] = 81] = \"Q\";\n    CharacterCodes[CharacterCodes[\"R\"] = 82] = \"R\";\n    CharacterCodes[CharacterCodes[\"S\"] = 83] = \"S\";\n    CharacterCodes[CharacterCodes[\"T\"] = 84] = \"T\";\n    CharacterCodes[CharacterCodes[\"U\"] = 85] = \"U\";\n    CharacterCodes[CharacterCodes[\"V\"] = 86] = \"V\";\n    CharacterCodes[CharacterCodes[\"W\"] = 87] = \"W\";\n    CharacterCodes[CharacterCodes[\"X\"] = 88] = \"X\";\n    CharacterCodes[CharacterCodes[\"Y\"] = 89] = \"Y\";\n    CharacterCodes[CharacterCodes[\"Z\"] = 90] = \"Z\";\n    CharacterCodes[CharacterCodes[\"asterisk\"] = 42] = \"asterisk\";\n    CharacterCodes[CharacterCodes[\"backslash\"] = 92] = \"backslash\";\n    CharacterCodes[CharacterCodes[\"closeBrace\"] = 125] = \"closeBrace\";\n    CharacterCodes[CharacterCodes[\"closeBracket\"] = 93] = \"closeBracket\";\n    CharacterCodes[CharacterCodes[\"colon\"] = 58] = \"colon\";\n    CharacterCodes[CharacterCodes[\"comma\"] = 44] = \"comma\";\n    CharacterCodes[CharacterCodes[\"dot\"] = 46] = \"dot\";\n    CharacterCodes[CharacterCodes[\"doubleQuote\"] = 34] = \"doubleQuote\";\n    CharacterCodes[CharacterCodes[\"minus\"] = 45] = \"minus\";\n    CharacterCodes[CharacterCodes[\"openBrace\"] = 123] = \"openBrace\";\n    CharacterCodes[CharacterCodes[\"openBracket\"] = 91] = \"openBracket\";\n    CharacterCodes[CharacterCodes[\"plus\"] = 43] = \"plus\";\n    CharacterCodes[CharacterCodes[\"slash\"] = 47] = \"slash\";\n    CharacterCodes[CharacterCodes[\"formFeed\"] = 12] = \"formFeed\";\n    CharacterCodes[CharacterCodes[\"tab\"] = 9] = \"tab\";\n})(CharacterCodes || (CharacterCodes = {}));\n", "export const cachedSpaces = new Array(20).fill(0).map((_, index) => {\n    return ' '.repeat(index);\n});\nconst maxCachedValues = 200;\nexport const cachedBreakLinesWithSpaces = {\n    ' ': {\n        '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n            return '\\n' + ' '.repeat(index);\n        }),\n        '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n            return '\\r' + ' '.repeat(index);\n        }),\n        '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n            return '\\r\\n' + ' '.repeat(index);\n        }),\n    },\n    '\\t': {\n        '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n            return '\\n' + '\\t'.repeat(index);\n        }),\n        '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n            return '\\r' + '\\t'.repeat(index);\n        }),\n        '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n            return '\\r\\n' + '\\t'.repeat(index);\n        }),\n    }\n};\nexport const supportedEols = ['\\n', '\\r', '\\r\\n'];\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nimport { cachedSpaces, cachedBreakLinesWithSpaces, supportedEols } from './string-intern';\nexport function format(documentText, range, options) {\n    let initialIndentLevel;\n    let formatText;\n    let formatTextStart;\n    let rangeStart;\n    let rangeEnd;\n    if (range) {\n        rangeStart = range.offset;\n        rangeEnd = rangeStart + range.length;\n        formatTextStart = rangeStart;\n        while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) {\n            formatTextStart--;\n        }\n        let endOffset = rangeEnd;\n        while (endOffset < documentText.length && !isEOL(documentText, endOffset)) {\n            endOffset++;\n        }\n        formatText = documentText.substring(formatTextStart, endOffset);\n        initialIndentLevel = computeIndentLevel(formatText, options);\n    }\n    else {\n        formatText = documentText;\n        initialIndentLevel = 0;\n        formatTextStart = 0;\n        rangeStart = 0;\n        rangeEnd = documentText.length;\n    }\n    const eol = getEOL(options, documentText);\n    const eolFastPathSupported = supportedEols.includes(eol);\n    let numberLineBreaks = 0;\n    let indentLevel = 0;\n    let indentValue;\n    if (options.insertSpaces) {\n        indentValue = cachedSpaces[options.tabSize || 4] ?? repeat(cachedSpaces[1], options.tabSize || 4);\n    }\n    else {\n        indentValue = '\\t';\n    }\n    const indentType = indentValue === '\\t' ? '\\t' : ' ';\n    let scanner = createScanner(formatText, false);\n    let hasError = false;\n    function newLinesAndIndent() {\n        if (numberLineBreaks > 1) {\n            return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel);\n        }\n        const amountOfSpaces = indentValue.length * (initialIndentLevel + indentLevel);\n        if (!eolFastPathSupported || amountOfSpaces > cachedBreakLinesWithSpaces[indentType][eol].length) {\n            return eol + repeat(indentValue, initialIndentLevel + indentLevel);\n        }\n        if (amountOfSpaces <= 0) {\n            return eol;\n        }\n        return cachedBreakLinesWithSpaces[indentType][eol][amountOfSpaces];\n    }\n    function scanNext() {\n        let token = scanner.scan();\n        numberLineBreaks = 0;\n        while (token === 15 /* SyntaxKind.Trivia */ || token === 14 /* SyntaxKind.LineBreakTrivia */) {\n            if (token === 14 /* SyntaxKind.LineBreakTrivia */ && options.keepLines) {\n                numberLineBreaks += 1;\n            }\n            else if (token === 14 /* SyntaxKind.LineBreakTrivia */) {\n                numberLineBreaks = 1;\n            }\n            token = scanner.scan();\n        }\n        hasError = token === 16 /* SyntaxKind.Unknown */ || scanner.getTokenError() !== 0 /* ScanError.None */;\n        return token;\n    }\n    const editOperations = [];\n    function addEdit(text, startOffset, endOffset) {\n        if (!hasError && (!range || (startOffset < rangeEnd && endOffset > rangeStart)) && documentText.substring(startOffset, endOffset) !== text) {\n            editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text });\n        }\n    }\n    let firstToken = scanNext();\n    if (options.keepLines && numberLineBreaks > 0) {\n        addEdit(repeat(eol, numberLineBreaks), 0, 0);\n    }\n    if (firstToken !== 17 /* SyntaxKind.EOF */) {\n        let firstTokenStart = scanner.getTokenOffset() + formatTextStart;\n        let initialIndent = (indentValue.length * initialIndentLevel < 20) && options.insertSpaces\n            ? cachedSpaces[indentValue.length * initialIndentLevel]\n            : repeat(indentValue, initialIndentLevel);\n        addEdit(initialIndent, formatTextStart, firstTokenStart);\n    }\n    while (firstToken !== 17 /* SyntaxKind.EOF */) {\n        let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n        let secondToken = scanNext();\n        let replaceContent = '';\n        let needsLineBreak = false;\n        while (numberLineBreaks === 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n            let commentTokenStart = scanner.getTokenOffset() + formatTextStart;\n            addEdit(cachedSpaces[1], firstTokenEnd, commentTokenStart);\n            firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n            needsLineBreak = secondToken === 12 /* SyntaxKind.LineCommentTrivia */;\n            replaceContent = needsLineBreak ? newLinesAndIndent() : '';\n            secondToken = scanNext();\n        }\n        if (secondToken === 2 /* SyntaxKind.CloseBraceToken */) {\n            if (firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n                indentLevel--;\n            }\n            ;\n            if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n                replaceContent = newLinesAndIndent();\n            }\n            else if (options.keepLines) {\n                replaceContent = cachedSpaces[1];\n            }\n        }\n        else if (secondToken === 4 /* SyntaxKind.CloseBracketToken */) {\n            if (firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n                indentLevel--;\n            }\n            ;\n            if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n                replaceContent = newLinesAndIndent();\n            }\n            else if (options.keepLines) {\n                replaceContent = cachedSpaces[1];\n            }\n        }\n        else {\n            switch (firstToken) {\n                case 3 /* SyntaxKind.OpenBracketToken */:\n                case 1 /* SyntaxKind.OpenBraceToken */:\n                    indentLevel++;\n                    if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n                        replaceContent = newLinesAndIndent();\n                    }\n                    else {\n                        replaceContent = cachedSpaces[1];\n                    }\n                    break;\n                case 5 /* SyntaxKind.CommaToken */:\n                    if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n                        replaceContent = newLinesAndIndent();\n                    }\n                    else {\n                        replaceContent = cachedSpaces[1];\n                    }\n                    break;\n                case 12 /* SyntaxKind.LineCommentTrivia */:\n                    replaceContent = newLinesAndIndent();\n                    break;\n                case 13 /* SyntaxKind.BlockCommentTrivia */:\n                    if (numberLineBreaks > 0) {\n                        replaceContent = newLinesAndIndent();\n                    }\n                    else if (!needsLineBreak) {\n                        replaceContent = cachedSpaces[1];\n                    }\n                    break;\n                case 6 /* SyntaxKind.ColonToken */:\n                    if (options.keepLines && numberLineBreaks > 0) {\n                        replaceContent = newLinesAndIndent();\n                    }\n                    else if (!needsLineBreak) {\n                        replaceContent = cachedSpaces[1];\n                    }\n                    break;\n                case 10 /* SyntaxKind.StringLiteral */:\n                    if (options.keepLines && numberLineBreaks > 0) {\n                        replaceContent = newLinesAndIndent();\n                    }\n                    else if (secondToken === 6 /* SyntaxKind.ColonToken */ && !needsLineBreak) {\n                        replaceContent = '';\n                    }\n                    break;\n                case 7 /* SyntaxKind.NullKeyword */:\n                case 8 /* SyntaxKind.TrueKeyword */:\n                case 9 /* SyntaxKind.FalseKeyword */:\n                case 11 /* SyntaxKind.NumericLiteral */:\n                case 2 /* SyntaxKind.CloseBraceToken */:\n                case 4 /* SyntaxKind.CloseBracketToken */:\n                    if (options.keepLines && numberLineBreaks > 0) {\n                        replaceContent = newLinesAndIndent();\n                    }\n                    else {\n                        if ((secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */) && !needsLineBreak) {\n                            replaceContent = cachedSpaces[1];\n                        }\n                        else if (secondToken !== 5 /* SyntaxKind.CommaToken */ && secondToken !== 17 /* SyntaxKind.EOF */) {\n                            hasError = true;\n                        }\n                    }\n                    break;\n                case 16 /* SyntaxKind.Unknown */:\n                    hasError = true;\n                    break;\n            }\n            if (numberLineBreaks > 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n                replaceContent = newLinesAndIndent();\n            }\n        }\n        if (secondToken === 17 /* SyntaxKind.EOF */) {\n            if (options.keepLines && numberLineBreaks > 0) {\n                replaceContent = newLinesAndIndent();\n            }\n            else {\n                replaceContent = options.insertFinalNewline ? eol : '';\n            }\n        }\n        const secondTokenStart = scanner.getTokenOffset() + formatTextStart;\n        addEdit(replaceContent, firstTokenEnd, secondTokenStart);\n        firstToken = secondToken;\n    }\n    return editOperations;\n}\nfunction repeat(s, count) {\n    let result = '';\n    for (let i = 0; i < count; i++) {\n        result += s;\n    }\n    return result;\n}\nfunction computeIndentLevel(content, options) {\n    let i = 0;\n    let nChars = 0;\n    const tabSize = options.tabSize || 4;\n    while (i < content.length) {\n        let ch = content.charAt(i);\n        if (ch === cachedSpaces[1]) {\n            nChars++;\n        }\n        else if (ch === '\\t') {\n            nChars += tabSize;\n        }\n        else {\n            break;\n        }\n        i++;\n    }\n    return Math.floor(nChars / tabSize);\n}\nfunction getEOL(options, text) {\n    for (let i = 0; i < text.length; i++) {\n        const ch = text.charAt(i);\n        if (ch === '\\r') {\n            if (i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n                return '\\r\\n';\n            }\n            return '\\r';\n        }\n        else if (ch === '\\n') {\n            return '\\n';\n        }\n    }\n    return (options && options.eol) || '\\n';\n}\nexport function isEOL(text, offset) {\n    return '\\r\\n'.indexOf(text.charAt(offset)) !== -1;\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nvar ParseOptions;\n(function (ParseOptions) {\n    ParseOptions.DEFAULT = {\n        allowTrailingComma: false\n    };\n})(ParseOptions || (ParseOptions = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport function getLocation(text, position) {\n    const segments = []; // strings or numbers\n    const earlyReturnException = new Object();\n    let previousNode = undefined;\n    const previousNodeInst = {\n        value: {},\n        offset: 0,\n        length: 0,\n        type: 'object',\n        parent: undefined\n    };\n    let isAtPropertyKey = false;\n    function setPreviousNode(value, offset, length, type) {\n        previousNodeInst.value = value;\n        previousNodeInst.offset = offset;\n        previousNodeInst.length = length;\n        previousNodeInst.type = type;\n        previousNodeInst.colonOffset = undefined;\n        previousNode = previousNodeInst;\n    }\n    try {\n        visit(text, {\n            onObjectBegin: (offset, length) => {\n                if (position <= offset) {\n                    throw earlyReturnException;\n                }\n                previousNode = undefined;\n                isAtPropertyKey = position > offset;\n                segments.push(''); // push a placeholder (will be replaced)\n            },\n            onObjectProperty: (name, offset, length) => {\n                if (position < offset) {\n                    throw earlyReturnException;\n                }\n                setPreviousNode(name, offset, length, 'property');\n                segments[segments.length - 1] = name;\n                if (position <= offset + length) {\n                    throw earlyReturnException;\n                }\n            },\n            onObjectEnd: (offset, length) => {\n                if (position <= offset) {\n                    throw earlyReturnException;\n                }\n                previousNode = undefined;\n                segments.pop();\n            },\n            onArrayBegin: (offset, length) => {\n                if (position <= offset) {\n                    throw earlyReturnException;\n                }\n                previousNode = undefined;\n                segments.push(0);\n            },\n            onArrayEnd: (offset, length) => {\n                if (position <= offset) {\n                    throw earlyReturnException;\n                }\n                previousNode = undefined;\n                segments.pop();\n            },\n            onLiteralValue: (value, offset, length) => {\n                if (position < offset) {\n                    throw earlyReturnException;\n                }\n                setPreviousNode(value, offset, length, getNodeType(value));\n                if (position <= offset + length) {\n                    throw earlyReturnException;\n                }\n            },\n            onSeparator: (sep, offset, length) => {\n                if (position <= offset) {\n                    throw earlyReturnException;\n                }\n                if (sep === ':' && previousNode && previousNode.type === 'property') {\n                    previousNode.colonOffset = offset;\n                    isAtPropertyKey = false;\n                    previousNode = undefined;\n                }\n                else if (sep === ',') {\n                    const last = segments[segments.length - 1];\n                    if (typeof last === 'number') {\n                        segments[segments.length - 1] = last + 1;\n                    }\n                    else {\n                        isAtPropertyKey = true;\n                        segments[segments.length - 1] = '';\n                    }\n                    previousNode = undefined;\n                }\n            }\n        });\n    }\n    catch (e) {\n        if (e !== earlyReturnException) {\n            throw e;\n        }\n    }\n    return {\n        path: segments,\n        previousNode,\n        isAtPropertyKey,\n        matches: (pattern) => {\n            let k = 0;\n            for (let i = 0; k < pattern.length && i < segments.length; i++) {\n                if (pattern[k] === segments[i] || pattern[k] === '*') {\n                    k++;\n                }\n                else if (pattern[k] !== '**') {\n                    return false;\n                }\n            }\n            return k === pattern.length;\n        }\n    };\n}\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore always check the errors list to find out if the input was valid.\n */\nexport function parse(text, errors = [], options = ParseOptions.DEFAULT) {\n    let currentProperty = null;\n    let currentParent = [];\n    const previousParents = [];\n    function onValue(value) {\n        if (Array.isArray(currentParent)) {\n            currentParent.push(value);\n        }\n        else if (currentProperty !== null) {\n            currentParent[currentProperty] = value;\n        }\n    }\n    const visitor = {\n        onObjectBegin: () => {\n            const object = {};\n            onValue(object);\n            previousParents.push(currentParent);\n            currentParent = object;\n            currentProperty = null;\n        },\n        onObjectProperty: (name) => {\n            currentProperty = name;\n        },\n        onObjectEnd: () => {\n            currentParent = previousParents.pop();\n        },\n        onArrayBegin: () => {\n            const array = [];\n            onValue(array);\n            previousParents.push(currentParent);\n            currentParent = array;\n            currentProperty = null;\n        },\n        onArrayEnd: () => {\n            currentParent = previousParents.pop();\n        },\n        onLiteralValue: onValue,\n        onError: (error, offset, length) => {\n            errors.push({ error, offset, length });\n        }\n    };\n    visit(text, visitor, options);\n    return currentParent[0];\n}\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport function parseTree(text, errors = [], options = ParseOptions.DEFAULT) {\n    let currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root\n    function ensurePropertyComplete(endOffset) {\n        if (currentParent.type === 'property') {\n            currentParent.length = endOffset - currentParent.offset;\n            currentParent = currentParent.parent;\n        }\n    }\n    function onValue(valueNode) {\n        currentParent.children.push(valueNode);\n        return valueNode;\n    }\n    const visitor = {\n        onObjectBegin: (offset) => {\n            currentParent = onValue({ type: 'object', offset, length: -1, parent: currentParent, children: [] });\n        },\n        onObjectProperty: (name, offset, length) => {\n            currentParent = onValue({ type: 'property', offset, length: -1, parent: currentParent, children: [] });\n            currentParent.children.push({ type: 'string', value: name, offset, length, parent: currentParent });\n        },\n        onObjectEnd: (offset, length) => {\n            ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete\n            currentParent.length = offset + length - currentParent.offset;\n            currentParent = currentParent.parent;\n            ensurePropertyComplete(offset + length);\n        },\n        onArrayBegin: (offset, length) => {\n            currentParent = onValue({ type: 'array', offset, length: -1, parent: currentParent, children: [] });\n        },\n        onArrayEnd: (offset, length) => {\n            currentParent.length = offset + length - currentParent.offset;\n            currentParent = currentParent.parent;\n            ensurePropertyComplete(offset + length);\n        },\n        onLiteralValue: (value, offset, length) => {\n            onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });\n            ensurePropertyComplete(offset + length);\n        },\n        onSeparator: (sep, offset, length) => {\n            if (currentParent.type === 'property') {\n                if (sep === ':') {\n                    currentParent.colonOffset = offset;\n                }\n                else if (sep === ',') {\n                    ensurePropertyComplete(offset);\n                }\n            }\n        },\n        onError: (error, offset, length) => {\n            errors.push({ error, offset, length });\n        }\n    };\n    visit(text, visitor, options);\n    const result = currentParent.children[0];\n    if (result) {\n        delete result.parent;\n    }\n    return result;\n}\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport function findNodeAtLocation(root, path) {\n    if (!root) {\n        return undefined;\n    }\n    let node = root;\n    for (let segment of path) {\n        if (typeof segment === 'string') {\n            if (node.type !== 'object' || !Array.isArray(node.children)) {\n                return undefined;\n            }\n            let found = false;\n            for (const propertyNode of node.children) {\n                if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) {\n                    node = propertyNode.children[1];\n                    found = true;\n                    break;\n                }\n            }\n            if (!found) {\n                return undefined;\n            }\n        }\n        else {\n            const index = segment;\n            if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {\n                return undefined;\n            }\n            node = node.children[index];\n        }\n    }\n    return node;\n}\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport function getNodePath(node) {\n    if (!node.parent || !node.parent.children) {\n        return [];\n    }\n    const path = getNodePath(node.parent);\n    if (node.parent.type === 'property') {\n        const key = node.parent.children[0].value;\n        path.push(key);\n    }\n    else if (node.parent.type === 'array') {\n        const index = node.parent.children.indexOf(node);\n        if (index !== -1) {\n            path.push(index);\n        }\n    }\n    return path;\n}\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport function getNodeValue(node) {\n    switch (node.type) {\n        case 'array':\n            return node.children.map(getNodeValue);\n        case 'object':\n            const obj = Object.create(null);\n            for (let prop of node.children) {\n                const valueNode = prop.children[1];\n                if (valueNode) {\n                    obj[prop.children[0].value] = getNodeValue(valueNode);\n                }\n            }\n            return obj;\n        case 'null':\n        case 'string':\n        case 'number':\n        case 'boolean':\n            return node.value;\n        default:\n            return undefined;\n    }\n}\nexport function contains(node, offset, includeRightBound = false) {\n    return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));\n}\n/**\n * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport function findNodeAtOffset(node, offset, includeRightBound = false) {\n    if (contains(node, offset, includeRightBound)) {\n        const children = node.children;\n        if (Array.isArray(children)) {\n            for (let i = 0; i < children.length && children[i].offset <= offset; i++) {\n                const item = findNodeAtOffset(children[i], offset, includeRightBound);\n                if (item) {\n                    return item;\n                }\n            }\n        }\n        return node;\n    }\n    return undefined;\n}\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport function visit(text, visitor, options = ParseOptions.DEFAULT) {\n    const _scanner = createScanner(text, false);\n    // Important: Only pass copies of this to visitor functions to prevent accidental modification, and\n    // to not affect visitor functions which stored a reference to a previous JSONPath\n    const _jsonPath = [];\n    // Depth of onXXXBegin() callbacks suppressed. onXXXEnd() decrements this if it isn't 0 already.\n    // Callbacks are only called when this value is 0.\n    let suppressedCallbacks = 0;\n    function toNoArgVisit(visitFunction) {\n        return visitFunction ? () => suppressedCallbacks === 0 && visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n    }\n    function toOneArgVisit(visitFunction) {\n        return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n    }\n    function toOneArgVisitWithPath(visitFunction) {\n        return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;\n    }\n    function toBeginVisit(visitFunction) {\n        return visitFunction ?\n            () => {\n                if (suppressedCallbacks > 0) {\n                    suppressedCallbacks++;\n                }\n                else {\n                    let cbReturn = visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice());\n                    if (cbReturn === false) {\n                        suppressedCallbacks = 1;\n                    }\n                }\n            }\n            : () => true;\n    }\n    function toEndVisit(visitFunction) {\n        return visitFunction ?\n            () => {\n                if (suppressedCallbacks > 0) {\n                    suppressedCallbacks--;\n                }\n                if (suppressedCallbacks === 0) {\n                    visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());\n                }\n            }\n            : () => true;\n    }\n    const onObjectBegin = toBeginVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toEndVisit(visitor.onObjectEnd), onArrayBegin = toBeginVisit(visitor.onArrayBegin), onArrayEnd = toEndVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);\n    const disallowComments = options && options.disallowComments;\n    const allowTrailingComma = options && options.allowTrailingComma;\n    function scanNext() {\n        while (true) {\n            const token = _scanner.scan();\n            switch (_scanner.getTokenError()) {\n                case 4 /* ScanError.InvalidUnicode */:\n                    handleError(14 /* ParseErrorCode.InvalidUnicode */);\n                    break;\n                case 5 /* ScanError.InvalidEscapeCharacter */:\n                    handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);\n                    break;\n                case 3 /* ScanError.UnexpectedEndOfNumber */:\n                    handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);\n                    break;\n                case 1 /* ScanError.UnexpectedEndOfComment */:\n                    if (!disallowComments) {\n                        handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);\n                    }\n                    break;\n                case 2 /* ScanError.UnexpectedEndOfString */:\n                    handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);\n                    break;\n                case 6 /* ScanError.InvalidCharacter */:\n                    handleError(16 /* ParseErrorCode.InvalidCharacter */);\n                    break;\n            }\n            switch (token) {\n                case 12 /* SyntaxKind.LineCommentTrivia */:\n                case 13 /* SyntaxKind.BlockCommentTrivia */:\n                    if (disallowComments) {\n                        handleError(10 /* ParseErrorCode.InvalidCommentToken */);\n                    }\n                    else {\n                        onComment();\n                    }\n                    break;\n                case 16 /* SyntaxKind.Unknown */:\n                    handleError(1 /* ParseErrorCode.InvalidSymbol */);\n                    break;\n                case 15 /* SyntaxKind.Trivia */:\n                case 14 /* SyntaxKind.LineBreakTrivia */:\n                    break;\n                default:\n                    return token;\n            }\n        }\n    }\n    function handleError(error, skipUntilAfter = [], skipUntil = []) {\n        onError(error);\n        if (skipUntilAfter.length + skipUntil.length > 0) {\n            let token = _scanner.getToken();\n            while (token !== 17 /* SyntaxKind.EOF */) {\n                if (skipUntilAfter.indexOf(token) !== -1) {\n                    scanNext();\n                    break;\n                }\n                else if (skipUntil.indexOf(token) !== -1) {\n                    break;\n                }\n                token = scanNext();\n            }\n        }\n    }\n    function parseString(isValue) {\n        const value = _scanner.getTokenValue();\n        if (isValue) {\n            onLiteralValue(value);\n        }\n        else {\n            onObjectProperty(value);\n            // add property name afterwards\n            _jsonPath.push(value);\n        }\n        scanNext();\n        return true;\n    }\n    function parseLiteral() {\n        switch (_scanner.getToken()) {\n            case 11 /* SyntaxKind.NumericLiteral */:\n                const tokenValue = _scanner.getTokenValue();\n                let value = Number(tokenValue);\n                if (isNaN(value)) {\n                    handleError(2 /* ParseErrorCode.InvalidNumberFormat */);\n                    value = 0;\n                }\n                onLiteralValue(value);\n                break;\n            case 7 /* SyntaxKind.NullKeyword */:\n                onLiteralValue(null);\n                break;\n            case 8 /* SyntaxKind.TrueKeyword */:\n                onLiteralValue(true);\n                break;\n            case 9 /* SyntaxKind.FalseKeyword */:\n                onLiteralValue(false);\n                break;\n            default:\n                return false;\n        }\n        scanNext();\n        return true;\n    }\n    function parseProperty() {\n        if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {\n            handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n            return false;\n        }\n        parseString(false);\n        if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {\n            onSeparator(':');\n            scanNext(); // consume colon\n            if (!parseValue()) {\n                handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n            }\n        }\n        else {\n            handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n        }\n        _jsonPath.pop(); // remove processed property name\n        return true;\n    }\n    function parseObject() {\n        onObjectBegin();\n        scanNext(); // consume open brace\n        let needsComma = false;\n        while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n            if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n                if (!needsComma) {\n                    handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n                }\n                onSeparator(',');\n                scanNext(); // consume comma\n                if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {\n                    break;\n                }\n            }\n            else if (needsComma) {\n                handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n            }\n            if (!parseProperty()) {\n                handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n            }\n            needsComma = true;\n        }\n        onObjectEnd();\n        if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {\n            handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);\n        }\n        else {\n            scanNext(); // consume close brace\n        }\n        return true;\n    }\n    function parseArray() {\n        onArrayBegin();\n        scanNext(); // consume open bracket\n        let isFirstElement = true;\n        let needsComma = false;\n        while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n            if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n                if (!needsComma) {\n                    handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n                }\n                onSeparator(',');\n                scanNext(); // consume comma\n                if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {\n                    break;\n                }\n            }\n            else if (needsComma) {\n                handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n            }\n            if (isFirstElement) {\n                _jsonPath.push(0);\n                isFirstElement = false;\n            }\n            else {\n                _jsonPath[_jsonPath.length - 1]++;\n            }\n            if (!parseValue()) {\n                handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);\n            }\n            needsComma = true;\n        }\n        onArrayEnd();\n        if (!isFirstElement) {\n            _jsonPath.pop(); // remove array index\n        }\n        if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {\n            handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);\n        }\n        else {\n            scanNext(); // consume close bracket\n        }\n        return true;\n    }\n    function parseValue() {\n        switch (_scanner.getToken()) {\n            case 3 /* SyntaxKind.OpenBracketToken */:\n                return parseArray();\n            case 1 /* SyntaxKind.OpenBraceToken */:\n                return parseObject();\n            case 10 /* SyntaxKind.StringLiteral */:\n                return parseString(true);\n            default:\n                return parseLiteral();\n        }\n    }\n    scanNext();\n    if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {\n        if (options.allowEmptyContent) {\n            return true;\n        }\n        handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n        return false;\n    }\n    if (!parseValue()) {\n        handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n        return false;\n    }\n    if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n        handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);\n    }\n    return true;\n}\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport function stripComments(text, replaceCh) {\n    let _scanner = createScanner(text), parts = [], kind, offset = 0, pos;\n    do {\n        pos = _scanner.getPosition();\n        kind = _scanner.scan();\n        switch (kind) {\n            case 12 /* SyntaxKind.LineCommentTrivia */:\n            case 13 /* SyntaxKind.BlockCommentTrivia */:\n            case 17 /* SyntaxKind.EOF */:\n                if (offset !== pos) {\n                    parts.push(text.substring(offset, pos));\n                }\n                if (replaceCh !== undefined) {\n                    parts.push(_scanner.getTokenValue().replace(/[^\\r\\n]/g, replaceCh));\n                }\n                offset = _scanner.getPosition();\n                break;\n        }\n    } while (kind !== 17 /* SyntaxKind.EOF */);\n    return parts.join('');\n}\nexport function getNodeType(value) {\n    switch (typeof value) {\n        case 'boolean': return 'boolean';\n        case 'number': return 'number';\n        case 'string': return 'string';\n        case 'object': {\n            if (!value) {\n                return 'null';\n            }\n            else if (Array.isArray(value)) {\n                return 'array';\n            }\n            return 'object';\n        }\n        default: return 'null';\n    }\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { format, isEOL } from './format';\nimport { parseTree, findNodeAtLocation } from './parser';\nexport function removeProperty(text, path, options) {\n    return setProperty(text, path, void 0, options);\n}\nexport function setProperty(text, originalPath, value, options) {\n    const path = originalPath.slice();\n    const errors = [];\n    const root = parseTree(text, errors);\n    let parent = void 0;\n    let lastSegment = void 0;\n    while (path.length > 0) {\n        lastSegment = path.pop();\n        parent = findNodeAtLocation(root, path);\n        if (parent === void 0 && value !== void 0) {\n            if (typeof lastSegment === 'string') {\n                value = { [lastSegment]: value };\n            }\n            else {\n                value = [value];\n            }\n        }\n        else {\n            break;\n        }\n    }\n    if (!parent) {\n        // empty document\n        if (value === void 0) { // delete\n            throw new Error('Can not delete in empty document');\n        }\n        return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options);\n    }\n    else if (parent.type === 'object' && typeof lastSegment === 'string' && Array.isArray(parent.children)) {\n        const existing = findNodeAtLocation(parent, [lastSegment]);\n        if (existing !== void 0) {\n            if (value === void 0) { // delete\n                if (!existing.parent) {\n                    throw new Error('Malformed AST');\n                }\n                const propertyIndex = parent.children.indexOf(existing.parent);\n                let removeBegin;\n                let removeEnd = existing.parent.offset + existing.parent.length;\n                if (propertyIndex > 0) {\n                    // remove the comma of the previous node\n                    let previous = parent.children[propertyIndex - 1];\n                    removeBegin = previous.offset + previous.length;\n                }\n                else {\n                    removeBegin = parent.offset + 1;\n                    if (parent.children.length > 1) {\n                        // remove the comma of the next node\n                        let next = parent.children[1];\n                        removeEnd = next.offset;\n                    }\n                }\n                return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: '' }, options);\n            }\n            else {\n                // set value of existing property\n                return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options);\n            }\n        }\n        else {\n            if (value === void 0) { // delete\n                return []; // property does not exist, nothing to do\n            }\n            const newProperty = `${JSON.stringify(lastSegment)}: ${JSON.stringify(value)}`;\n            const index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map(p => p.children[0].value)) : parent.children.length;\n            let edit;\n            if (index > 0) {\n                let previous = parent.children[index - 1];\n                edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n            }\n            else if (parent.children.length === 0) {\n                edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n            }\n            else {\n                edit = { offset: parent.offset + 1, length: 0, content: newProperty + ',' };\n            }\n            return withFormatting(text, edit, options);\n        }\n    }\n    else if (parent.type === 'array' && typeof lastSegment === 'number' && Array.isArray(parent.children)) {\n        const insertIndex = lastSegment;\n        if (insertIndex === -1) {\n            // Insert\n            const newProperty = `${JSON.stringify(value)}`;\n            let edit;\n            if (parent.children.length === 0) {\n                edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n            }\n            else {\n                const previous = parent.children[parent.children.length - 1];\n                edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n            }\n            return withFormatting(text, edit, options);\n        }\n        else if (value === void 0 && parent.children.length >= 0) {\n            // Removal\n            const removalIndex = lastSegment;\n            const toRemove = parent.children[removalIndex];\n            let edit;\n            if (parent.children.length === 1) {\n                // only item\n                edit = { offset: parent.offset + 1, length: parent.length - 2, content: '' };\n            }\n            else if (parent.children.length - 1 === removalIndex) {\n                // last item\n                let previous = parent.children[removalIndex - 1];\n                let offset = previous.offset + previous.length;\n                let parentEndOffset = parent.offset + parent.length;\n                edit = { offset, length: parentEndOffset - 2 - offset, content: '' };\n            }\n            else {\n                edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: '' };\n            }\n            return withFormatting(text, edit, options);\n        }\n        else if (value !== void 0) {\n            let edit;\n            const newProperty = `${JSON.stringify(value)}`;\n            if (!options.isArrayInsertion && parent.children.length > lastSegment) {\n                const toModify = parent.children[lastSegment];\n                edit = { offset: toModify.offset, length: toModify.length, content: newProperty };\n            }\n            else if (parent.children.length === 0 || lastSegment === 0) {\n                edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + ',' };\n            }\n            else {\n                const index = lastSegment > parent.children.length ? parent.children.length : lastSegment;\n                const previous = parent.children[index - 1];\n                edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n            }\n            return withFormatting(text, edit, options);\n        }\n        else {\n            throw new Error(`Can not ${value === void 0 ? 'remove' : (options.isArrayInsertion ? 'insert' : 'modify')} Array index ${insertIndex} as length is not sufficient`);\n        }\n    }\n    else {\n        throw new Error(`Can not add ${typeof lastSegment !== 'number' ? 'index' : 'property'} to parent of type ${parent.type}`);\n    }\n}\nfunction withFormatting(text, edit, options) {\n    if (!options.formattingOptions) {\n        return [edit];\n    }\n    // apply the edit\n    let newText = applyEdit(text, edit);\n    // format the new text\n    let begin = edit.offset;\n    let end = edit.offset + edit.content.length;\n    if (edit.length === 0 || edit.content.length === 0) { // insert or remove\n        while (begin > 0 && !isEOL(newText, begin - 1)) {\n            begin--;\n        }\n        while (end < newText.length && !isEOL(newText, end)) {\n            end++;\n        }\n    }\n    const edits = format(newText, { offset: begin, length: end - begin }, { ...options.formattingOptions, keepLines: false });\n    // apply the formatting edits and track the begin and end offsets of the changes\n    for (let i = edits.length - 1; i >= 0; i--) {\n        const edit = edits[i];\n        newText = applyEdit(newText, edit);\n        begin = Math.min(begin, edit.offset);\n        end = Math.max(end, edit.offset + edit.length);\n        end += edit.content.length - edit.length;\n    }\n    // create a single edit with all changes\n    const editLength = text.length - (newText.length - end) - begin;\n    return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }];\n}\nexport function applyEdit(text, edit) {\n    return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length);\n}\nexport function isWS(text, offset) {\n    return '\\r\\n \\t'.indexOf(text.charAt(offset)) !== -1;\n}\n", "const tty = require('node:tty');\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\n// Lots of optionals here to support Deno.\nconst hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + openCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nconst colors = {};\n\ncolors.reset = format(0, 0);\ncolors.bold = format(1, 22);\ncolors.dim = format(2, 22);\ncolors.italic = format(3, 23);\ncolors.underline = format(4, 24);\ncolors.overline = format(53, 55);\ncolors.inverse = format(7, 27);\ncolors.hidden = format(8, 28);\ncolors.strikethrough = format(9, 29);\n\ncolors.black = format(30, 39);\ncolors.red = format(31, 39);\ncolors.green = format(32, 39);\ncolors.yellow = format(33, 39);\ncolors.blue = format(34, 39);\ncolors.magenta = format(35, 39);\ncolors.cyan = format(36, 39);\ncolors.white = format(37, 39);\ncolors.gray = format(90, 39);\n\ncolors.bgBlack = format(40, 49);\ncolors.bgRed = format(41, 49);\ncolors.bgGreen = format(42, 49);\ncolors.bgYellow = format(43, 49);\ncolors.bgBlue = format(44, 49);\ncolors.bgMagenta = format(45, 49);\ncolors.bgCyan = format(46, 49);\ncolors.bgWhite = format(47, 49);\ncolors.bgGray = format(100, 49);\n\ncolors.redBright = format(91, 39);\ncolors.greenBright = format(92, 39);\ncolors.yellowBright = format(93, 39);\ncolors.blueBright = format(94, 39);\ncolors.magentaBright = format(95, 39);\ncolors.cyanBright = format(96, 39);\ncolors.whiteBright = format(97, 39);\n\ncolors.bgRedBright = format(101, 49);\ncolors.bgGreenBright = format(102, 49);\ncolors.bgYellowBright = format(103, 49);\ncolors.bgBlueBright = format(104, 49);\ncolors.bgMagentaBright = format(105, 49);\ncolors.bgCyanBright = format(106, 49);\ncolors.bgWhiteBright = format(107, 49);\n\nmodule.exports = colors;\n", "'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n  const defaultOpts = {\n    defaultWidth: 0,\n    output: process.stdout,\n    tty: require('tty'),\n  };\n\n  if (!options) {\n    return defaultOpts;\n  }\n\n  Object.keys(defaultOpts).forEach(function (key) {\n    if (!options[key]) {\n      options[key] = defaultOpts[key];\n    }\n  });\n\n  return options;\n}\n\nfunction cliWidth(options) {\n  const opts = normalizeOpts(options);\n\n  if (opts.output.getWindowSize) {\n    return opts.output.getWindowSize()[0] || opts.defaultWidth;\n  }\n\n  if (opts.tty.getWindowSize) {\n    return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n  }\n\n  if (opts.output.columns) {\n    return opts.output.columns;\n  }\n\n  if (process.env.CLI_WIDTH) {\n    const width = parseInt(process.env.CLI_WIDTH, 10);\n\n    if (!isNaN(width) && width !== 0) {\n      return width;\n    }\n  }\n\n  return opts.defaultWidth;\n}\n", "'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n", "'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n", "/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n", "\"use strict\";\n\nmodule.exports = function () {\n  // https://mths.be/emoji\n  return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n", "'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), '  ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v;  g = n;  b = wh; break;\n\t\tcase 1: r = n;  g = v;  b = wh; break;\n\t\tcase 2: r = wh; g = v;  b = n; break;\n\t\tcase 3: r = wh; g = n;  b = v; break;\n\t\tcase 4: r = n;  g = wh; b = v; break;\n\t\tcase 5: r = v;  g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\nconst stringWidth = require('string-width');\nconst stripAnsi = require('strip-ansi');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B'\n]);\n\nconst END_CODE = 39;\n\nconst wrapAnsi = code => `${ESCAPES.values().next().value}[${code}m`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = str => {\n\tconst words = str.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn str;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet pre = '';\n\tlet ret = '';\n\tlet escapeCode;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimLeft();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(stringVisibleTrimSpacesRight);\n\t}\n\n\tpre = rows.join('\\n');\n\n\tfor (const [index, character] of [...pre].entries()) {\n\t\tret += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst code = parseFloat(/\\d[^m]*/.exec(pre.slice(index, index + 4)));\n\t\t\tescapeCode = code === END_CODE ? null : code;\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (escapeCode && code) {\n\t\t\tif (pre[index + 1] === '\\n') {\n\t\t\t\tret += wrapAnsi(code);\n\t\t\t} else if (character === '\\n') {\n\t\t\t\tret += wrapAnsi(escapeCode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// For each newline, invoke the method separately\nmodule.exports = (string, columns, options) => {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n};\n", "const Stream = require('stream')\n\nclass MuteStream extends Stream {\n  #isTTY = null\n\n  constructor (opts = {}) {\n    super(opts)\n    this.writable = this.readable = true\n    this.muted = false\n    this.on('pipe', this._onpipe)\n    this.replace = opts.replace\n\n    // For readline-type situations\n    // This much at the start of a line being redrawn after a ctrl char\n    // is seen (such as backspace) won't be redrawn as the replacement\n    this._prompt = opts.prompt || null\n    this._hadControl = false\n  }\n\n  #destSrc (key, def) {\n    if (this._dest) {\n      return this._dest[key]\n    }\n    if (this._src) {\n      return this._src[key]\n    }\n    return def\n  }\n\n  #proxy (method, ...args) {\n    if (typeof this._dest?.[method] === 'function') {\n      this._dest[method](...args)\n    }\n    if (typeof this._src?.[method] === 'function') {\n      this._src[method](...args)\n    }\n  }\n\n  get isTTY () {\n    if (this.#isTTY !== null) {\n      return this.#isTTY\n    }\n    return this.#destSrc('isTTY', false)\n  }\n\n  // basically just get replace the getter/setter with a regular value\n  set isTTY (val) {\n    this.#isTTY = val\n  }\n\n  get rows () {\n    return this.#destSrc('rows')\n  }\n\n  get columns () {\n    return this.#destSrc('columns')\n  }\n\n  mute () {\n    this.muted = true\n  }\n\n  unmute () {\n    this.muted = false\n  }\n\n  _onpipe (src) {\n    this._src = src\n  }\n\n  pipe (dest, options) {\n    this._dest = dest\n    return super.pipe(dest, options)\n  }\n\n  pause () {\n    if (this._src) {\n      return this._src.pause()\n    }\n  }\n\n  resume () {\n    if (this._src) {\n      return this._src.resume()\n    }\n  }\n\n  write (c) {\n    if (this.muted) {\n      if (!this.replace) {\n        return true\n      }\n      // eslint-disable-next-line no-control-regex\n      if (c.match(/^\\u001b/)) {\n        if (c.indexOf(this._prompt) === 0) {\n          c = c.slice(this._prompt.length)\n          c = c.replace(/./g, this.replace)\n          c = this._prompt + c\n        }\n        this._hadControl = true\n        return this.emit('data', c)\n      } else {\n        if (this._prompt && this._hadControl &&\n          c.indexOf(this._prompt) === 0) {\n          this._hadControl = false\n          this.emit('data', this._prompt)\n          c = c.slice(this._prompt.length)\n        }\n        c = c.toString().replace(/./g, this.replace)\n      }\n    }\n    this.emit('data', c)\n  }\n\n  end (c) {\n    if (this.muted) {\n      if (c && this.replace) {\n        c = c.toString().replace(/./g, this.replace)\n      } else {\n        c = null\n      }\n    }\n    if (c) {\n      this.emit('data', c)\n    }\n    this.emit('end')\n  }\n\n  destroy (...args) {\n    return this.#proxy('destroy', ...args)\n  }\n\n  destroySoon (...args) {\n    return this.#proxy('destroySoon', ...args)\n  }\n\n  close (...args) {\n    return this.#proxy('close', ...args)\n  }\n}\n\nmodule.exports = MuteStream\n", "'use strict';\nconst ansiEscapes = module.exports;\n// TODO: remove this in the next major version\nmodule.exports.default = ansiEscapes;\n\nconst ESC = '\\u001B[';\nconst OSC = '\\u001B]';\nconst BEL = '\\u0007';\nconst SEP = ';';\nconst isTerminalApp = process.env.TERM_PROGRAM === 'Apple_Terminal';\n\nansiEscapes.cursorTo = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tif (typeof y !== 'number') {\n\t\treturn ESC + (x + 1) + 'G';\n\t}\n\n\treturn ESC + (y + 1) + ';' + (x + 1) + 'H';\n};\n\nansiEscapes.cursorMove = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tlet ret = '';\n\n\tif (x < 0) {\n\t\tret += ESC + (-x) + 'D';\n\t} else if (x > 0) {\n\t\tret += ESC + x + 'C';\n\t}\n\n\tif (y < 0) {\n\t\tret += ESC + (-y) + 'A';\n\t} else if (y > 0) {\n\t\tret += ESC + y + 'B';\n\t}\n\n\treturn ret;\n};\n\nansiEscapes.cursorUp = (count = 1) => ESC + count + 'A';\nansiEscapes.cursorDown = (count = 1) => ESC + count + 'B';\nansiEscapes.cursorForward = (count = 1) => ESC + count + 'C';\nansiEscapes.cursorBackward = (count = 1) => ESC + count + 'D';\n\nansiEscapes.cursorLeft = ESC + 'G';\nansiEscapes.cursorSavePosition = isTerminalApp ? '\\u001B7' : ESC + 's';\nansiEscapes.cursorRestorePosition = isTerminalApp ? '\\u001B8' : ESC + 'u';\nansiEscapes.cursorGetPosition = ESC + '6n';\nansiEscapes.cursorNextLine = ESC + 'E';\nansiEscapes.cursorPrevLine = ESC + 'F';\nansiEscapes.cursorHide = ESC + '?25l';\nansiEscapes.cursorShow = ESC + '?25h';\n\nansiEscapes.eraseLines = count => {\n\tlet clear = '';\n\n\tfor (let i = 0; i < count; i++) {\n\t\tclear += ansiEscapes.eraseLine + (i < count - 1 ? ansiEscapes.cursorUp() : '');\n\t}\n\n\tif (count) {\n\t\tclear += ansiEscapes.cursorLeft;\n\t}\n\n\treturn clear;\n};\n\nansiEscapes.eraseEndLine = ESC + 'K';\nansiEscapes.eraseStartLine = ESC + '1K';\nansiEscapes.eraseLine = ESC + '2K';\nansiEscapes.eraseDown = ESC + 'J';\nansiEscapes.eraseUp = ESC + '1J';\nansiEscapes.eraseScreen = ESC + '2J';\nansiEscapes.scrollUp = ESC + 'S';\nansiEscapes.scrollDown = ESC + 'T';\n\nansiEscapes.clearScreen = '\\u001Bc';\n\nansiEscapes.clearTerminal = process.platform === 'win32' ?\n\t`${ansiEscapes.eraseScreen}${ESC}0f` :\n\t// 1. Erases the screen (Only done in case `2` is not supported)\n\t// 2. Erases the whole screen including scrollback buffer\n\t// 3. Moves cursor to the top-left position\n\t// More info: https://www.real-world-systems.com/docs/ANSIcode.html\n\t`${ansiEscapes.eraseScreen}${ESC}3J${ESC}H`;\n\nansiEscapes.beep = BEL;\n\nansiEscapes.link = (text, url) => {\n\treturn [\n\t\tOSC,\n\t\t'8',\n\t\tSEP,\n\t\tSEP,\n\t\turl,\n\t\tBEL,\n\t\ttext,\n\t\tOSC,\n\t\t'8',\n\t\tSEP,\n\t\tSEP,\n\t\tBEL\n\t].join('');\n};\n\nansiEscapes.image = (buffer, options = {}) => {\n\tlet ret = `${OSC}1337;File=inline=1`;\n\n\tif (options.width) {\n\t\tret += `;width=${options.width}`;\n\t}\n\n\tif (options.height) {\n\t\tret += `;height=${options.height}`;\n\t}\n\n\tif (options.preserveAspectRatio === false) {\n\t\tret += ';preserveAspectRatio=0';\n\t}\n\n\treturn ret + ':' + buffer.toString('base64') + BEL;\n};\n\nansiEscapes.iTerm = {\n\tsetCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`,\n\n\tannotation: (message, options = {}) => {\n\t\tlet ret = `${OSC}1337;`;\n\n\t\tconst hasX = typeof options.x !== 'undefined';\n\t\tconst hasY = typeof options.y !== 'undefined';\n\t\tif ((hasX || hasY) && !(hasX && hasY && typeof options.length !== 'undefined')) {\n\t\t\tthrow new Error('`x`, `y` and `length` must be defined when `x` or `y` is defined');\n\t\t}\n\n\t\tmessage = message.replace(/\\|/g, '');\n\n\t\tret += options.isHidden ? 'AddHiddenAnnotation=' : 'AddAnnotation=';\n\n\t\tif (options.length > 0) {\n\t\t\tret +=\n\t\t\t\t\t(hasX ?\n\t\t\t\t\t\t[message, options.length, options.x, options.y] :\n\t\t\t\t\t\t[options.length, message]).join('|');\n\t\t} else {\n\t\t\tret += message;\n\t\t}\n\n\t\treturn ret + BEL;\n\t}\n};\n", "\nmodule.exports = function(det, rec, confidence, name, lang) {\n  this.confidence = confidence;\n  this.name = name || rec.name(det);\n  this.lang = lang;\n};\n", "\nvar Match = require ('../match');\n\n/**\n * Charset recognizer for UTF-8\n */\nmodule.exports = function() {\n  this.name = function() {\n    return 'UTF-8';\n  };\n  this.match = function(det) {\n\n    var hasBOM = false,\n      numValid = 0,\n      numInvalid = 0,\n      input = det.fRawInput,\n      trailBytes = 0,\n      confidence;\n\n    if (det.fRawLength >= 3 &&\n      (input[0] & 0xff) == 0xef && (input[1] & 0xff) == 0xbb && (input[2] & 0xff) == 0xbf) {\n      hasBOM = true;\n    }\n\n    // Scan for multi-byte sequences\n    for (var i = 0; i < det.fRawLength; i++) {\n      var b = input[i];\n      if ((b & 0x80) == 0)\n        continue; // ASCII\n\n      // Hi bit on char found.  Figure out how long the sequence should be\n      if ((b & 0x0e0) == 0x0c0) {\n        trailBytes = 1;\n      } else if ((b & 0x0f0) == 0x0e0) {\n        trailBytes = 2;\n      } else if ((b & 0x0f8) == 0xf0) {\n        trailBytes = 3;\n      } else {\n        numInvalid++;\n        if (numInvalid > 5)\n          break;\n        trailBytes = 0;\n      }\n\n      // Verify that we've got the right number of trail bytes in the sequence\n      for (;;) {\n        i++;\n        if (i >= det.fRawLength)\n          break;\n\n        if ((input[i] & 0xc0) != 0x080) {\n          numInvalid++;\n          break;\n        }\n        if (--trailBytes == 0) {\n          numValid++;\n          break;\n        }\n      }\n    }\n\n    // Cook up some sort of confidence score, based on presense of a BOM\n    //    and the existence of valid and/or invalid multi-byte sequences.\n    confidence = 0;\n    if (hasBOM && numInvalid == 0)\n      confidence = 100;\n    else if (hasBOM && numValid > numInvalid * 10)\n      confidence = 80;\n    else if (numValid > 3 && numInvalid == 0)\n      confidence = 100;\n    else if (numValid > 0 && numInvalid == 0)\n      confidence = 80;\n    else if (numValid == 0 && numInvalid == 0)\n      // Plain ASCII.\n      confidence = 10;\n    else if (numValid > numInvalid * 10)\n      // Probably corruput utf-8 data.  Valid sequences aren't likely by chance.\n      confidence = 25;\n    else\n      return null\n\n    return new Match(det, this, confidence);\n  };\n};\n", "'use strict';\nvar util = require('util'),\n  Match = require ('../match');\n\n/**\n * This class matches UTF-16 and UTF-32, both big- and little-endian. The\n * BOM will be used if it is present.\n */\nmodule.exports.UTF_16BE = function() {\n  this.name = function() {\n    return 'UTF-16BE';\n  };\n  this.match = function(det) {\n    var input = det.fRawInput;\n\n    if (input.length >= 2 && ((input[0] & 0xff) == 0xfe && (input[1] & 0xff) == 0xff)) {\n      return new Match(det, this, 100); // confidence = 100\n    }\n\n    // TODO: Do some statistics to check for unsigned UTF-16BE\n    return null;\n  };\n};\n\nmodule.exports.UTF_16LE = function() {\n  this.name = function() {\n    return 'UTF-16LE';\n  };\n  this.match = function(det) {\n    var input = det.fRawInput;\n\n    if (input.length >= 2 && ((input[0] & 0xff) == 0xff && (input[1] & 0xff) == 0xfe)) {\n      // LE BOM is present.\n      if (input.length >= 4 && input[2] == 0x00 && input[3] == 0x00) {\n        // It is probably UTF-32 LE, not UTF-16\n        return null;\n      }\n      return new Match(det, this, 100); // confidence = 100\n    }\n\n    // TODO: Do some statistics to check for unsigned UTF-16LE\n    return null;\n  }\n};\n\nfunction UTF_32() {};\nUTF_32.prototype.match = function(det) {\n  var input      = det.fRawInput,\n    limit      = (det.fRawLength / 4) * 4,\n    numValid   = 0,\n    numInvalid = 0,\n    hasBOM     = false,\n    confidence = 0;\n\n  if (limit == 0) {\n    return null;\n  }\n\n  if (this.getChar(input, 0) == 0x0000FEFF) {\n    hasBOM = true;\n  }\n\n  for (var i = 0; i < limit; i += 4) {\n    var ch = this.getChar(input, i);\n\n    if (ch < 0 || ch >= 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF)) {\n      numInvalid += 1;\n    } else {\n      numValid += 1;\n    }\n  }\n\n  // Cook up some sort of confidence score, based on presence of a BOM\n  //    and the existence of valid and/or invalid multi-byte sequences.\n  if (hasBOM && numInvalid == 0) {\n    confidence = 100;\n  } else if (hasBOM && numValid > numInvalid * 10) {\n    confidence = 80;\n  } else if (numValid > 3 && numInvalid == 0) {\n    confidence = 100;\n  } else if (numValid > 0 && numInvalid == 0) {\n    confidence = 80;\n  } else if (numValid > numInvalid * 10) {\n    // Probably corrupt UTF-32BE data.  Valid sequences aren't likely by chance.\n    confidence = 25;\n  }\n\n  // return confidence == 0 ? null : new CharsetMatch(det, this, confidence);\n  return confidence == 0 ? null : new Match(det, this, confidence);\n};\n\nmodule.exports.UTF_32BE = function() {\n  this.name = function() {\n    return 'UTF-32BE';\n  };\n  this.getChar = function(input, index) {\n    return (input[index + 0] & 0xff) << 24 | (input[index + 1] & 0xff) << 16 |\n         (input[index + 2] & 0xff) <<  8 | (input[index + 3] & 0xff);\n  };\n};\nutil.inherits(module.exports.UTF_32BE, UTF_32);\n\nmodule.exports.UTF_32LE = function() {\n  this.name = function() {\n    return 'UTF-32LE';\n  };\n  this.getChar = function(input, index) {\n    return (input[index + 3] & 0xff) << 24 | (input[index + 2] & 0xff) << 16 |\n         (input[index + 1] & 0xff) <<  8 | (input[index + 0] & 0xff);\n  };\n};\nutil.inherits(module.exports.UTF_32LE, UTF_32);\n", "var util = require('util'),\n  Match = require ('../match');\n\n/**\n * Binary search implementation (recursive)\n */\nfunction binarySearch(arr, searchValue) {\n  function find(arr, searchValue, left, right) {\n    if (right < left)\n      return -1;\n\n    /*\n    int mid = mid = (left + right) / 2;\n    There is a bug in the above line;\n    Joshua Bloch suggests the following replacement:\n    */\n    var mid = Math.floor((left + right) >>> 1);\n    if (searchValue > arr[mid])\n      return find(arr, searchValue, mid + 1, right);\n\n    if (searchValue < arr[mid])\n      return find(arr, searchValue, left, mid - 1);\n\n    return mid;\n  };\n\n  return find(arr, searchValue, 0, arr.length - 1);\n};\n\n// 'Character'  iterated character class.\n//    Recognizers for specific mbcs encodings make their 'characters' available\n//    by providing a nextChar() function that fills in an instance of iteratedChar\n//    with the next char from the input.\n//    The returned characters are not converted to Unicode, but remain as the raw\n//    bytes (concatenated into an int) from the codepage data.\n//\n//  For Asian charsets, use the raw input rather than the input that has been\n//   stripped of markup.  Detection only considers multi-byte chars, effectively\n//   stripping markup anyway, and double byte chars do occur in markup too.\n//\nfunction IteratedChar() {\n\n  this.charValue = 0; // 1-4 bytes from the raw input data\n  this.index     = 0;\n  this.nextIndex = 0;\n  this.error     = false;\n  this.done      = false;\n\n  this.reset = function() {\n    this.charValue = 0;\n    this.index     = -1;\n    this.nextIndex = 0;\n    this.error     = false;\n    this.done      = false;\n  };\n\n  this.nextByte = function(det) {\n    if (this.nextIndex >= det.fRawLength) {\n      this.done = true;\n      return -1;\n    }\n    var byteValue = det.fRawInput[this.nextIndex++] & 0x00ff;\n    return byteValue;\n  };\n};\n\n\n\n/**\n * Asian double or multi-byte - charsets.\n * Match is determined mostly by the input data adhering to the\n * encoding scheme for the charset, and, optionally,\n * frequency-of-occurence of characters.\n */\n\nfunction mbcs() {};\n\n/**\n * Test the match of this charset with the input text data\n *      which is obtained via the CharsetDetector object.\n *\n * @param det  The CharsetDetector, which contains the input text\n *             to be checked for being in this charset.\n * @return     Two values packed into one int  (Damn java, anyhow)\n *             bits 0-7:  the match confidence, ranging from 0-100\n *             bits 8-15: The match reason, an enum-like value.\n */\nmbcs.prototype.match = function(det) {\n\n  var singleByteCharCount = 0,  //TODO Do we really need this?\n    doubleByteCharCount = 0,\n    commonCharCount     = 0,\n    badCharCount        = 0,\n    totalCharCount      = 0,\n    confidence          = 0;\n\n  var iter = new IteratedChar();\n\n  detectBlock: {\n    for (iter.reset(); this.nextChar(iter, det);) {\n      totalCharCount++;\n      if (iter.error) {\n        badCharCount++;\n      } else {\n        var cv = iter.charValue & 0xFFFFFFFF;\n\n        if (cv <= 0xff) {\n          singleByteCharCount++;\n        } else {\n          doubleByteCharCount++;\n          if (this.commonChars != null) {\n            // NOTE: This assumes that there are no 4-byte common chars.\n            if (binarySearch(this.commonChars, cv) >= 0) {\n              commonCharCount++;\n            }\n          }\n        }\n      }\n      if (badCharCount >= 2 && badCharCount * 5 >= doubleByteCharCount) {\n        // console.log('its here!')\n        // Bail out early if the byte data is not matching the encoding scheme.\n        break detectBlock;\n      }\n    }\n\n    if (doubleByteCharCount <= 10 && badCharCount== 0) {\n      // Not many multi-byte chars.\n      if (doubleByteCharCount == 0 && totalCharCount < 10) {\n        // There weren't any multibyte sequences, and there was a low density of non-ASCII single bytes.\n        // We don't have enough data to have any confidence.\n        // Statistical analysis of single byte non-ASCII charcters would probably help here.\n        confidence = 0;\n      }\n      else {\n        //   ASCII or ISO file?  It's probably not our encoding,\n        //   but is not incompatible with our encoding, so don't give it a zero.\n        confidence = 10;\n      }\n      break detectBlock;\n    }\n\n    //\n    //  No match if there are too many characters that don't fit the encoding scheme.\n    //    (should we have zero tolerance for these?)\n    //\n    if (doubleByteCharCount < 20 * badCharCount) {\n      confidence = 0;\n      break detectBlock;\n    }\n\n    if (this.commonChars == null) {\n      // We have no statistics on frequently occuring characters.\n      //  Assess confidence purely on having a reasonable number of\n      //  multi-byte characters (the more the better\n      confidence = 30 + doubleByteCharCount - 20 * badCharCount;\n      if (confidence > 100) {\n        confidence = 100;\n      }\n    } else {\n      //\n      // Frequency of occurence statistics exist.\n      //\n      var maxVal = Math.log(parseFloat(doubleByteCharCount) / 4);\n      var scaleFactor = 90.0 / maxVal;\n      confidence = Math.floor(Math.log(commonCharCount + 1) * scaleFactor + 10);\n      confidence = Math.min(confidence, 100);\n    }\n  }   // end of detectBlock:\n\n  return confidence == 0 ? null : new Match(det, this, confidence);\n};\n\n/**\n * Get the next character (however many bytes it is) from the input data\n *    Subclasses for specific charset encodings must implement this function\n *    to get characters according to the rules of their encoding scheme.\n *\n *  This function is not a method of class iteratedChar only because\n *   that would require a lot of extra derived classes, which is awkward.\n * @param it  The iteratedChar 'struct' into which the returned char is placed.\n * @param det The charset detector, which is needed to get at the input byte data\n *            being iterated over.\n * @return    True if a character was returned, false at end of input.\n */\n\nmbcs.prototype.nextChar = function(iter, det) {};\n\n\n\n/**\n * Shift-JIS charset recognizer.\n */\nmodule.exports.sjis = function() {\n  this.name = function() {\n    return 'Shift-JIS';\n  };\n  this.language = function() {\n    return 'ja';\n  };\n\n  // TODO:  This set of data comes from the character frequency-\n  //        of-occurence analysis tool.  The data needs to be moved\n  //        into a resource and loaded from there.\n  this.commonChars = [\n    0x8140, 0x8141, 0x8142, 0x8145, 0x815b, 0x8169, 0x816a, 0x8175, 0x8176, 0x82a0,\n    0x82a2, 0x82a4, 0x82a9, 0x82aa, 0x82ab, 0x82ad, 0x82af, 0x82b1, 0x82b3, 0x82b5,\n    0x82b7, 0x82bd, 0x82be, 0x82c1, 0x82c4, 0x82c5, 0x82c6, 0x82c8, 0x82c9, 0x82cc,\n    0x82cd, 0x82dc, 0x82e0, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82f0, 0x82f1, 0x8341,\n    0x8343, 0x834e, 0x834f, 0x8358, 0x835e, 0x8362, 0x8367, 0x8375, 0x8376, 0x8389,\n    0x838a, 0x838b, 0x838d, 0x8393, 0x8e96, 0x93fa, 0x95aa\n  ];\n\n  this.nextChar = function(iter, det) {\n    iter.index = iter.nextIndex;\n    iter.error = false;\n\n    var firstByte;\n    firstByte = iter.charValue = iter.nextByte(det);\n    if (firstByte < 0)\n      return false;\n\n    if (firstByte <= 0x7f || (firstByte > 0xa0 && firstByte <= 0xdf))\n      return true;\n\n    var secondByte = iter.nextByte(det);\n    if (secondByte < 0)\n      return false;\n\n    iter.charValue = (firstByte << 8) | secondByte;\n    if (! ((secondByte >= 0x40 && secondByte <= 0x7f) || (secondByte >= 0x80 && secondByte <= 0xff))) {\n      // Illegal second byte value.\n      iter.error = true;\n    }\n    return true;\n  };\n};\nutil.inherits(module.exports.sjis, mbcs);\n\n\n\n/**\n *   Big5 charset recognizer.\n */\nmodule.exports.big5 = function() {\n  this.name = function() {\n    return 'Big5';\n  };\n  this.language = function() {\n    return 'zh';\n  };\n  // TODO:  This set of data comes from the character frequency-\n  //        of-occurence analysis tool.  The data needs to be moved\n  //        into a resource and loaded from there.\n  this.commonChars = [\n    0xa140, 0xa141, 0xa142, 0xa143, 0xa147, 0xa149, 0xa175, 0xa176, 0xa440, 0xa446,\n    0xa447, 0xa448, 0xa451, 0xa454, 0xa457, 0xa464, 0xa46a, 0xa46c, 0xa477, 0xa4a3,\n    0xa4a4, 0xa4a7, 0xa4c1, 0xa4ce, 0xa4d1, 0xa4df, 0xa4e8, 0xa4fd, 0xa540, 0xa548,\n    0xa558, 0xa569, 0xa5cd, 0xa5e7, 0xa657, 0xa661, 0xa662, 0xa668, 0xa670, 0xa6a8,\n    0xa6b3, 0xa6b9, 0xa6d3, 0xa6db, 0xa6e6, 0xa6f2, 0xa740, 0xa751, 0xa759, 0xa7da,\n    0xa8a3, 0xa8a5, 0xa8ad, 0xa8d1, 0xa8d3, 0xa8e4, 0xa8fc, 0xa9c0, 0xa9d2, 0xa9f3,\n    0xaa6b, 0xaaba, 0xaabe, 0xaacc, 0xaafc, 0xac47, 0xac4f, 0xacb0, 0xacd2, 0xad59,\n    0xaec9, 0xafe0, 0xb0ea, 0xb16f, 0xb2b3, 0xb2c4, 0xb36f, 0xb44c, 0xb44e, 0xb54c,\n    0xb5a5, 0xb5bd, 0xb5d0, 0xb5d8, 0xb671, 0xb7ed, 0xb867, 0xb944, 0xbad8, 0xbb44,\n    0xbba1, 0xbdd1, 0xc2c4, 0xc3b9, 0xc440, 0xc45f\n  ];\n  this.nextChar = function(iter, det) {\n    iter.index = iter.nextIndex;\n    iter.error = false;\n\n    var firstByte = iter.charValue = iter.nextByte(det);\n\n    if (firstByte < 0)\n      return false;\n\n    // single byte character.\n    if (firstByte <= 0x7f || firstByte == 0xff)\n      return true;\n\n    var secondByte = iter.nextByte(det);\n\n    if (secondByte < 0)\n      return false;\n\n    iter.charValue = (iter.charValue << 8) | secondByte;\n\n    if (secondByte < 0x40 || secondByte == 0x7f || secondByte == 0xff)\n      iter.error = true;\n\n    return true;\n  };\n};\nutil.inherits(module.exports.big5, mbcs);\n\n\n\n/**\n *  EUC charset recognizers.  One abstract class that provides the common function\n *  for getting the next character according to the EUC encoding scheme,\n *  and nested derived classes for EUC_KR, EUC_JP, EUC_CN.\n *\n *  Get the next character value for EUC based encodings.\n *  Character 'value' is simply the raw bytes that make up the character\n *     packed into an int.\n */\nfunction eucNextChar(iter, det) {\n  iter.index = iter.nextIndex;\n  iter.error = false;\n  var firstByte  = 0;\n  var secondByte = 0;\n  var thirdByte  = 0;\n  //int fourthByte = 0;\n  buildChar: {\n    firstByte = iter.charValue = iter.nextByte(det);\n    if (firstByte < 0) {\n      // Ran off the end of the input data\n      iter.done = true;\n      break buildChar;\n    }\n    if (firstByte <= 0x8d) {\n      // single byte char\n      break buildChar;\n    }\n    secondByte = iter.nextByte(det);\n    iter.charValue = (iter.charValue << 8) | secondByte;\n    if (firstByte >= 0xA1 && firstByte <= 0xfe) {\n      // Two byte Char\n      if (secondByte < 0xa1) {\n        iter.error = true;\n      }\n      break buildChar;\n    }\n    if (firstByte == 0x8e) {\n      // Code Set 2.\n      //   In EUC-JP, total char size is 2 bytes, only one byte of actual char value.\n      //   In EUC-TW, total char size is 4 bytes, three bytes contribute to char value.\n      // We don't know which we've got.\n      // Treat it like EUC-JP.  If the data really was EUC-TW, the following two\n      //   bytes will look like a well formed 2 byte char.\n      if (secondByte < 0xa1) {\n        iter.error = true;\n      }\n      break buildChar;\n    }\n    if (firstByte == 0x8f) {\n      // Code set 3.\n      // Three byte total char size, two bytes of actual char value.\n      thirdByte = iter.nextByte(det);\n      iter.charValue = (iter.charValue << 8) | thirdByte;\n      if (thirdByte < 0xa1) {\n        iter.error = true;\n      }\n    }\n  }\n  return iter.done == false;\n};\n\n\n\n/**\n * The charset recognize for EUC-JP.  A singleton instance of this class\n *    is created and kept by the public CharsetDetector class\n */\nmodule.exports.euc_jp = function() {\n  this.name = function() {\n    return 'EUC-JP';\n  };\n  this.language = function() {\n    return 'ja';\n  };\n\n  // TODO:  This set of data comes from the character frequency-\n  //        of-occurence analysis tool.  The data needs to be moved\n  //        into a resource and loaded from there.\n  this.commonChars = [\n    0xa1a1, 0xa1a2, 0xa1a3, 0xa1a6, 0xa1bc, 0xa1ca, 0xa1cb, 0xa1d6, 0xa1d7, 0xa4a2,\n    0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4af, 0xa4b1, 0xa4b3,\n    0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd, 0xa4bf, 0xa4c0, 0xa4c1, 0xa4c3, 0xa4c4,\n    0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4ce, 0xa4cf, 0xa4d0, 0xa4de,\n    0xa4df, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ef,\n    0xa4f2, 0xa4f3, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a6, 0xa5a7, 0xa5aa, 0xa5ad, 0xa5af,\n    0xa5b0, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5bf, 0xa5c3, 0xa5c6, 0xa5c7,\n    0xa5c8, 0xa5c9, 0xa5cb, 0xa5d0, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5de, 0xa5e0, 0xa5e1,\n    0xa5e5, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5f3, 0xb8a9, 0xb9d4, 0xbaee,\n    0xbbc8, 0xbef0, 0xbfb7, 0xc4ea, 0xc6fc, 0xc7bd, 0xcab8, 0xcaf3, 0xcbdc, 0xcdd1\n  ];\n\n  this.nextChar = eucNextChar;\n};\nutil.inherits(module.exports.euc_jp, mbcs);\n\n\n\n/**\n * The charset recognize for EUC-KR.  A singleton instance of this class\n *    is created and kept by the public CharsetDetector class\n */\nmodule.exports.euc_kr = function() {\n  this.name = function() {\n    return 'EUC-KR';\n  };\n  this.language = function() {\n    return 'ko';\n  };\n\n  // TODO:  This set of data comes from the character frequency-\n  //        of-occurence analysis tool.  The data needs to be moved\n  //        into a resource and loaded from there.\n  this.commonChars = [\n    0xb0a1, 0xb0b3, 0xb0c5, 0xb0cd, 0xb0d4, 0xb0e6, 0xb0ed, 0xb0f8, 0xb0fa, 0xb0fc,\n    0xb1b8, 0xb1b9, 0xb1c7, 0xb1d7, 0xb1e2, 0xb3aa, 0xb3bb, 0xb4c2, 0xb4cf, 0xb4d9,\n    0xb4eb, 0xb5a5, 0xb5b5, 0xb5bf, 0xb5c7, 0xb5e9, 0xb6f3, 0xb7af, 0xb7c2, 0xb7ce,\n    0xb8a6, 0xb8ae, 0xb8b6, 0xb8b8, 0xb8bb, 0xb8e9, 0xb9ab, 0xb9ae, 0xb9cc, 0xb9ce,\n    0xb9fd, 0xbab8, 0xbace, 0xbad0, 0xbaf1, 0xbbe7, 0xbbf3, 0xbbfd, 0xbcad, 0xbcba,\n    0xbcd2, 0xbcf6, 0xbdba, 0xbdc0, 0xbdc3, 0xbdc5, 0xbec6, 0xbec8, 0xbedf, 0xbeee,\n    0xbef8, 0xbefa, 0xbfa1, 0xbfa9, 0xbfc0, 0xbfe4, 0xbfeb, 0xbfec, 0xbff8, 0xc0a7,\n    0xc0af, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0c7, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d6,\n    0xc0da, 0xc0e5, 0xc0fb, 0xc0fc, 0xc1a4, 0xc1a6, 0xc1b6, 0xc1d6, 0xc1df, 0xc1f6,\n    0xc1f8, 0xc4a1, 0xc5cd, 0xc6ae, 0xc7cf, 0xc7d1, 0xc7d2, 0xc7d8, 0xc7e5, 0xc8ad\n  ];\n\n  this.nextChar = eucNextChar;\n};\nutil.inherits(module.exports.euc_kr, mbcs);\n\n\n\n/**\n *   GB-18030 recognizer. Uses simplified Chinese statistics.\n */\nmodule.exports.gb_18030 = function() {\n  this.name = function() {\n    return 'GB18030';\n  };\n  this.language = function() {\n    return 'zh';\n  };\n\n  /*\n   *  Get the next character value for EUC based encodings.\n   *  Character 'value' is simply the raw bytes that make up the character\n   *     packed into an int.\n   */\n  this.nextChar = function(iter, det) {\n    iter.index = iter.nextIndex;\n    iter.error = false;\n    var firstByte  = 0;\n    var secondByte = 0;\n    var thirdByte  = 0;\n    var fourthByte = 0;\n    buildChar: {\n      firstByte = iter.charValue = iter.nextByte(det);\n      if (firstByte < 0) {\n        // Ran off the end of the input data\n        iter.done = true;\n        break buildChar;\n      }\n      if (firstByte <= 0x80) {\n        // single byte char\n        break buildChar;\n      }\n      secondByte = iter.nextByte(det);\n      iter.charValue = (iter.charValue << 8) | secondByte;\n      if (firstByte >= 0x81 && firstByte <= 0xFE) {\n        // Two byte Char\n        if ((secondByte >= 0x40 && secondByte <= 0x7E) || (secondByte >=80 && secondByte <= 0xFE)) {\n          break buildChar;\n        }\n        // Four byte char\n        if (secondByte >= 0x30 && secondByte <= 0x39) {\n          thirdByte = iter.nextByte(det);\n          if (thirdByte >= 0x81 && thirdByte <= 0xFE) {\n            fourthByte = iter.nextByte(det);\n            if (fourthByte >= 0x30 && fourthByte <= 0x39) {\n              iter.charValue = (iter.charValue << 16) | (thirdByte << 8) | fourthByte;\n              break buildChar;\n            }\n          }\n        }\n        iter.error = true;\n        break buildChar;\n      }\n    }\n    return iter.done == false;\n  };\n\n  // TODO:  This set of data comes from the character frequency-\n  //        of-occurence analysis tool.  The data needs to be moved\n  //        into a resource and loaded from there.\n  this.commonChars = [\n    0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1b0, 0xa1b1, 0xa1f1, 0xa1f3, 0xa3a1, 0xa3ac,\n    0xa3ba, 0xb1a8, 0xb1b8, 0xb1be, 0xb2bb, 0xb3c9, 0xb3f6, 0xb4f3, 0xb5bd, 0xb5c4,\n    0xb5e3, 0xb6af, 0xb6d4, 0xb6e0, 0xb7a2, 0xb7a8, 0xb7bd, 0xb7d6, 0xb7dd, 0xb8b4,\n    0xb8df, 0xb8f6, 0xb9ab, 0xb9c9, 0xb9d8, 0xb9fa, 0xb9fd, 0xbacd, 0xbba7, 0xbbd6,\n    0xbbe1, 0xbbfa, 0xbcbc, 0xbcdb, 0xbcfe, 0xbdcc, 0xbecd, 0xbedd, 0xbfb4, 0xbfc6,\n    0xbfc9, 0xc0b4, 0xc0ed, 0xc1cb, 0xc2db, 0xc3c7, 0xc4dc, 0xc4ea, 0xc5cc, 0xc6f7,\n    0xc7f8, 0xc8ab, 0xc8cb, 0xc8d5, 0xc8e7, 0xc9cf, 0xc9fa, 0xcab1, 0xcab5, 0xcac7,\n    0xcad0, 0xcad6, 0xcaf5, 0xcafd, 0xccec, 0xcdf8, 0xceaa, 0xcec4, 0xced2, 0xcee5,\n    0xcfb5, 0xcfc2, 0xcfd6, 0xd0c2, 0xd0c5, 0xd0d0, 0xd0d4, 0xd1a7, 0xd2aa, 0xd2b2,\n    0xd2b5, 0xd2bb, 0xd2d4, 0xd3c3, 0xd3d0, 0xd3fd, 0xd4c2, 0xd4da, 0xd5e2, 0xd6d0\n  ];\n};\nutil.inherits(module.exports.gb_18030, mbcs);\n", "var util = require('util'),\n  Match = require ('../match');\n\n/**\n * This class recognizes single-byte encodings. Because the encoding scheme is so\n * simple, language statistics are used to do the matching.\n */\n\nfunction NGramParser(theNgramList, theByteMap) {\n  var N_GRAM_MASK = 0xFFFFFF;\n\n  this.byteIndex = 0;\n  this.ngram = 0;\n\n  this.ngramList = theNgramList;\n  this.byteMap = theByteMap;\n\n  this.ngramCount = 0;\n  this.hitCount = 0;\n\n  this.spaceChar;\n\n  /*\n   * Binary search for value in table, which must have exactly 64 entries.\n   */\n  this.search = function(table, value) {\n    var index = 0;\n\n    if (table[index + 32] <= value) index += 32;\n    if (table[index + 16] <= value) index += 16;\n    if (table[index + 8]  <= value) index += 8;\n    if (table[index + 4]  <= value) index += 4;\n    if (table[index + 2]  <= value) index += 2;\n    if (table[index + 1]  <= value) index += 1;\n    if (table[index]      > value)  index -= 1;\n\n    if (index < 0 || table[index] != value)\n      return -1;\n\n    return index;\n  };\n\n  this.lookup = function(thisNgram) {\n    this.ngramCount += 1;\n    if (this.search(this.ngramList, thisNgram) >= 0) {\n      this.hitCount += 1;\n    }\n  };\n\n  this.addByte = function(b) {\n    this.ngram = ((this.ngram << 8) + (b & 0xFF)) & N_GRAM_MASK;\n    this.lookup(this.ngram);\n  }\n\n  this.nextByte = function(det) {\n    if (this.byteIndex >= det.fInputLen)\n      return -1;\n\n    return det.fInputBytes[this.byteIndex++] & 0xFF;\n  }\n\n  this.parse = function(det, spaceCh) {\n    var b, ignoreSpace = false;\n    this.spaceChar = spaceCh;\n\n    while ((b = this.nextByte(det)) >= 0) {\n      var mb = this.byteMap[b];\n\n      // TODO: 0x20 might not be a space in all character sets...\n      if (mb != 0) {\n        if (!(mb == this.spaceChar && ignoreSpace)) {\n          this.addByte(mb);\n        }\n\n        ignoreSpace = (mb == this.spaceChar);\n      }\n    }\n\n    // TODO: Is this OK? The buffer could have ended in the middle of a word...\n    this.addByte(this.spaceChar);\n\n    var rawPercent = this.hitCount / this.ngramCount;\n\n    // TODO - This is a bit of a hack to take care of a case\n    // were we were getting a confidence of 135...\n    if (rawPercent > 0.33)\n      return 98;\n\n    return Math.floor(rawPercent * 300.0);\n  };\n};\n\nfunction NGramsPlusLang(la, ng) {\n  this.fLang = la;\n  this.fNGrams = ng;\n};\n\nfunction sbcs() {};\nsbcs.prototype.spaceChar = 0x20;\nsbcs.prototype.ngrams = function() {};\nsbcs.prototype.byteMap = function() {};\nsbcs.prototype.match = function(det) {\n\n  var ngrams = this.ngrams();\n  var multiple = (Array.isArray(ngrams) && ngrams[0] instanceof NGramsPlusLang);\n\n  if (!multiple) {\n    var parser = new NGramParser(ngrams, this.byteMap());\n    var confidence = parser.parse(det, this.spaceChar);\n    return confidence <= 0 ? null : new Match(det, this, confidence);\n  }\n\n  var bestConfidenceSoFar = -1;\n  var lang = null;\n\n  for (var i = ngrams.length - 1; i >= 0; i--) {\n    var ngl = ngrams[i];\n\n    var parser = new NGramParser(ngl.fNGrams, this.byteMap());\n    var confidence = parser.parse(det, this.spaceChar);\n    if (confidence > bestConfidenceSoFar) {\n      bestConfidenceSoFar = confidence;\n      lang = ngl.fLang;\n    }\n  }\n\n  var name = this.name(det);\n  return bestConfidenceSoFar <= 0 ? null : new Match(det, this, bestConfidenceSoFar, name, lang);\n};\n\n\nmodule.exports.ISO_8859_1 = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,\n      0x20, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      new NGramsPlusLang('da', [\n        0x206166, 0x206174, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920,\n        0x206D65, 0x206F67, 0x2070E5, 0x207369, 0x207374, 0x207469, 0x207669, 0x616620,\n        0x616E20, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646572, 0x646574,\n        0x652073, 0x656420, 0x656465, 0x656E20, 0x656E64, 0x657220, 0x657265, 0x657320,\n        0x657420, 0x666F72, 0x676520, 0x67656E, 0x676572, 0x696765, 0x696C20, 0x696E67,\n        0x6B6520, 0x6B6B65, 0x6C6572, 0x6C6967, 0x6C6C65, 0x6D6564, 0x6E6465, 0x6E6520,\n        0x6E6720, 0x6E6765, 0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722064, 0x722065,\n        0x722073, 0x726520, 0x737465, 0x742073, 0x746520, 0x746572, 0x74696C, 0x766572\n      ]),\n      new NGramsPlusLang('de', [\n        0x20616E, 0x206175, 0x206265, 0x206461, 0x206465, 0x206469, 0x206569, 0x206765,\n        0x206861, 0x20696E, 0x206D69, 0x207363, 0x207365, 0x20756E, 0x207665, 0x20766F,\n        0x207765, 0x207A75, 0x626572, 0x636820, 0x636865, 0x636874, 0x646173, 0x64656E,\n        0x646572, 0x646965, 0x652064, 0x652073, 0x65696E, 0x656974, 0x656E20, 0x657220,\n        0x657320, 0x67656E, 0x68656E, 0x687420, 0x696368, 0x696520, 0x696E20, 0x696E65,\n        0x697420, 0x6C6963, 0x6C6C65, 0x6E2061, 0x6E2064, 0x6E2073, 0x6E6420, 0x6E6465,\n        0x6E6520, 0x6E6720, 0x6E6765, 0x6E7465, 0x722064, 0x726465, 0x726569, 0x736368,\n        0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x756E64, 0x756E67, 0x766572\n      ]),\n      new NGramsPlusLang('en', [\n        0x206120, 0x20616E, 0x206265, 0x20636F, 0x20666F, 0x206861, 0x206865, 0x20696E,\n        0x206D61, 0x206F66, 0x207072, 0x207265, 0x207361, 0x207374, 0x207468, 0x20746F,\n        0x207768, 0x616964, 0x616C20, 0x616E20, 0x616E64, 0x617320, 0x617420, 0x617465,\n        0x617469, 0x642061, 0x642074, 0x652061, 0x652073, 0x652074, 0x656420, 0x656E74,\n        0x657220, 0x657320, 0x666F72, 0x686174, 0x686520, 0x686572, 0x696420, 0x696E20,\n        0x696E67, 0x696F6E, 0x697320, 0x6E2061, 0x6E2074, 0x6E6420, 0x6E6720, 0x6E7420,\n        0x6F6620, 0x6F6E20, 0x6F7220, 0x726520, 0x727320, 0x732061, 0x732074, 0x736169,\n        0x737420, 0x742074, 0x746572, 0x746861, 0x746865, 0x74696F, 0x746F20, 0x747320\n      ]),\n      new NGramsPlusLang('es', [\n        0x206120, 0x206361, 0x20636F, 0x206465, 0x20656C, 0x20656E, 0x206573, 0x20696E,\n        0x206C61, 0x206C6F, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365,\n        0x20756E, 0x207920, 0x612063, 0x612064, 0x612065, 0x61206C, 0x612070, 0x616369,\n        0x61646F, 0x616C20, 0x617220, 0x617320, 0x6369F3, 0x636F6E, 0x646520, 0x64656C,\n        0x646F20, 0x652064, 0x652065, 0x65206C, 0x656C20, 0x656E20, 0x656E74, 0x657320,\n        0x657374, 0x69656E, 0x69F36E, 0x6C6120, 0x6C6F73, 0x6E2065, 0x6E7465, 0x6F2064,\n        0x6F2065, 0x6F6E20, 0x6F7220, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573,\n        0x732064, 0x732065, 0x732070, 0x736520, 0x746520, 0x746F20, 0x756520, 0xF36E20\n      ]),\n      new NGramsPlusLang('fr', [\n        0x206175, 0x20636F, 0x206461, 0x206465, 0x206475, 0x20656E, 0x206574, 0x206C61,\n        0x206C65, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207365, 0x20736F, 0x20756E,\n        0x20E020, 0x616E74, 0x617469, 0x636520, 0x636F6E, 0x646520, 0x646573, 0x647520,\n        0x652061, 0x652063, 0x652064, 0x652065, 0x65206C, 0x652070, 0x652073, 0x656E20,\n        0x656E74, 0x657220, 0x657320, 0x657420, 0x657572, 0x696F6E, 0x697320, 0x697420,\n        0x6C6120, 0x6C6520, 0x6C6573, 0x6D656E, 0x6E2064, 0x6E6520, 0x6E7320, 0x6E7420,\n        0x6F6E20, 0x6F6E74, 0x6F7572, 0x717565, 0x72206C, 0x726520, 0x732061, 0x732064,\n        0x732065, 0x73206C, 0x732070, 0x742064, 0x746520, 0x74696F, 0x756520, 0x757220\n      ]),\n      new NGramsPlusLang('it', [\n        0x20616C, 0x206368, 0x20636F, 0x206465, 0x206469, 0x206520, 0x20696C, 0x20696E,\n        0x206C61, 0x207065, 0x207072, 0x20756E, 0x612063, 0x612064, 0x612070, 0x612073,\n        0x61746F, 0x636865, 0x636F6E, 0x64656C, 0x646920, 0x652061, 0x652063, 0x652064,\n        0x652069, 0x65206C, 0x652070, 0x652073, 0x656C20, 0x656C6C, 0x656E74, 0x657220,\n        0x686520, 0x692061, 0x692063, 0x692064, 0x692073, 0x696120, 0x696C20, 0x696E20,\n        0x696F6E, 0x6C6120, 0x6C6520, 0x6C6920, 0x6C6C61, 0x6E6520, 0x6E6920, 0x6E6F20,\n        0x6E7465, 0x6F2061, 0x6F2064, 0x6F2069, 0x6F2073, 0x6F6E20, 0x6F6E65, 0x706572,\n        0x726120, 0x726520, 0x736920, 0x746120, 0x746520, 0x746920, 0x746F20, 0x7A696F\n      ]),\n      new NGramsPlusLang('nl', [\n        0x20616C, 0x206265, 0x206461, 0x206465, 0x206469, 0x206565, 0x20656E, 0x206765,\n        0x206865, 0x20696E, 0x206D61, 0x206D65, 0x206F70, 0x207465, 0x207661, 0x207665,\n        0x20766F, 0x207765, 0x207A69, 0x61616E, 0x616172, 0x616E20, 0x616E64, 0x617220,\n        0x617420, 0x636874, 0x646520, 0x64656E, 0x646572, 0x652062, 0x652076, 0x65656E,\n        0x656572, 0x656E20, 0x657220, 0x657273, 0x657420, 0x67656E, 0x686574, 0x696520,\n        0x696E20, 0x696E67, 0x697320, 0x6E2062, 0x6E2064, 0x6E2065, 0x6E2068, 0x6E206F,\n        0x6E2076, 0x6E6465, 0x6E6720, 0x6F6E64, 0x6F6F72, 0x6F7020, 0x6F7220, 0x736368,\n        0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x76616E, 0x766572, 0x766F6F\n      ]),\n      new NGramsPlusLang('no', [\n        0x206174, 0x206176, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920,\n        0x206D65, 0x206F67, 0x2070E5, 0x207365, 0x20736B, 0x20736F, 0x207374, 0x207469,\n        0x207669, 0x20E520, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646574,\n        0x652073, 0x656420, 0x656E20, 0x656E65, 0x657220, 0x657265, 0x657420, 0x657474,\n        0x666F72, 0x67656E, 0x696B6B, 0x696C20, 0x696E67, 0x6B6520, 0x6B6B65, 0x6C6520,\n        0x6C6C65, 0x6D6564, 0x6D656E, 0x6E2073, 0x6E6520, 0x6E6720, 0x6E6765, 0x6E6E65,\n        0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722073, 0x726520, 0x736F6D, 0x737465,\n        0x742073, 0x746520, 0x74656E, 0x746572, 0x74696C, 0x747420, 0x747465, 0x766572\n      ]),\n      new NGramsPlusLang('pt', [\n        0x206120, 0x20636F, 0x206461, 0x206465, 0x20646F, 0x206520, 0x206573, 0x206D61,\n        0x206E6F, 0x206F20, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365,\n        0x20756D, 0x612061, 0x612063, 0x612064, 0x612070, 0x616465, 0x61646F, 0x616C20,\n        0x617220, 0x617261, 0x617320, 0x636F6D, 0x636F6E, 0x646120, 0x646520, 0x646F20,\n        0x646F73, 0x652061, 0x652064, 0x656D20, 0x656E74, 0x657320, 0x657374, 0x696120,\n        0x696361, 0x6D656E, 0x6E7465, 0x6E746F, 0x6F2061, 0x6F2063, 0x6F2064, 0x6F2065,\n        0x6F2070, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573, 0x732061, 0x732064,\n        0x732065, 0x732070, 0x737461, 0x746520, 0x746F20, 0x756520, 0xE36F20, 0xE7E36F\n      ]),\n      new NGramsPlusLang('sv', [\n        0x206174, 0x206176, 0x206465, 0x20656E, 0x2066F6, 0x206861, 0x206920, 0x20696E,\n        0x206B6F, 0x206D65, 0x206F63, 0x2070E5, 0x20736B, 0x20736F, 0x207374, 0x207469,\n        0x207661, 0x207669, 0x20E472, 0x616465, 0x616E20, 0x616E64, 0x617220, 0x617474,\n        0x636820, 0x646520, 0x64656E, 0x646572, 0x646574, 0x656420, 0x656E20, 0x657220,\n        0x657420, 0x66F672, 0x67656E, 0x696C6C, 0x696E67, 0x6B6120, 0x6C6C20, 0x6D6564,\n        0x6E2073, 0x6E6120, 0x6E6465, 0x6E6720, 0x6E6765, 0x6E696E, 0x6F6368, 0x6F6D20,\n        0x6F6E20, 0x70E520, 0x722061, 0x722073, 0x726120, 0x736B61, 0x736F6D, 0x742073,\n        0x746120, 0x746520, 0x746572, 0x74696C, 0x747420, 0x766172, 0xE47220, 0xF67220,\n      ])\n    ];\n  };\n\n  this.name = function(det) {\n    return (det && det.fC1Bytes) ? 'windows-1252' : 'ISO-8859-1';\n  };\n};\nutil.inherits(module.exports.ISO_8859_1, sbcs);\n\n\nmodule.exports.ISO_8859_2 = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0xB1, 0x20, 0xB3, 0x20, 0xB5, 0xB6, 0x20,\n      0x20, 0xB9, 0xBA, 0xBB, 0xBC, 0x20, 0xBE, 0xBF,\n      0x20, 0xB1, 0x20, 0xB3, 0x20, 0xB5, 0xB6, 0xB7,\n      0x20, 0xB9, 0xBA, 0xBB, 0xBC, 0x20, 0xBE, 0xBF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x20\n    ];\n  }\n\n  this.ngrams = function() {\n    return [\n      new NGramsPlusLang('cs', [\n        0x206120, 0x206279, 0x20646F, 0x206A65, 0x206E61, 0x206E65, 0x206F20, 0x206F64,\n        0x20706F, 0x207072, 0x2070F8, 0x20726F, 0x207365, 0x20736F, 0x207374, 0x20746F,\n        0x207620, 0x207679, 0x207A61, 0x612070, 0x636520, 0x636820, 0x652070, 0x652073,\n        0x652076, 0x656D20, 0x656EED, 0x686F20, 0x686F64, 0x697374, 0x6A6520, 0x6B7465,\n        0x6C6520, 0x6C6920, 0x6E6120, 0x6EE920, 0x6EEC20, 0x6EED20, 0x6F2070, 0x6F646E,\n        0x6F6A69, 0x6F7374, 0x6F7520, 0x6F7661, 0x706F64, 0x706F6A, 0x70726F, 0x70F865,\n        0x736520, 0x736F75, 0x737461, 0x737469, 0x73746E, 0x746572, 0x746EED, 0x746F20,\n        0x752070, 0xBE6520, 0xE16EED, 0xE9686F, 0xED2070, 0xED2073, 0xED6D20, 0xF86564,\n      ]),\n      new NGramsPlusLang('hu', [\n        0x206120, 0x20617A, 0x206265, 0x206567, 0x20656C, 0x206665, 0x206861, 0x20686F,\n        0x206973, 0x206B65, 0x206B69, 0x206BF6, 0x206C65, 0x206D61, 0x206D65, 0x206D69,\n        0x206E65, 0x20737A, 0x207465, 0x20E973, 0x612061, 0x61206B, 0x61206D, 0x612073,\n        0x616B20, 0x616E20, 0x617A20, 0x62616E, 0x62656E, 0x656779, 0x656B20, 0x656C20,\n        0x656C65, 0x656D20, 0x656E20, 0x657265, 0x657420, 0x657465, 0x657474, 0x677920,\n        0x686F67, 0x696E74, 0x697320, 0x6B2061, 0x6BF67A, 0x6D6567, 0x6D696E, 0x6E2061,\n        0x6E616B, 0x6E656B, 0x6E656D, 0x6E7420, 0x6F6779, 0x732061, 0x737A65, 0x737A74,\n        0x737AE1, 0x73E967, 0x742061, 0x747420, 0x74E173, 0x7A6572, 0xE16E20, 0xE97320,\n      ]),\n      new NGramsPlusLang('pl', [\n        0x20637A, 0x20646F, 0x206920, 0x206A65, 0x206B6F, 0x206D61, 0x206D69, 0x206E61,\n        0x206E69, 0x206F64, 0x20706F, 0x207072, 0x207369, 0x207720, 0x207769, 0x207779,\n        0x207A20, 0x207A61, 0x612070, 0x612077, 0x616E69, 0x636820, 0x637A65, 0x637A79,\n        0x646F20, 0x647A69, 0x652070, 0x652073, 0x652077, 0x65207A, 0x65676F, 0x656A20,\n        0x656D20, 0x656E69, 0x676F20, 0x696120, 0x696520, 0x69656A, 0x6B6120, 0x6B6920,\n        0x6B6965, 0x6D6965, 0x6E6120, 0x6E6961, 0x6E6965, 0x6F2070, 0x6F7761, 0x6F7769,\n        0x706F6C, 0x707261, 0x70726F, 0x70727A, 0x727A65, 0x727A79, 0x7369EA, 0x736B69,\n        0x737461, 0x776965, 0x796368, 0x796D20, 0x7A6520, 0x7A6965, 0x7A7920, 0xF37720,\n      ]),\n      new NGramsPlusLang('ro', [\n        0x206120, 0x206163, 0x206361, 0x206365, 0x20636F, 0x206375, 0x206465, 0x206469,\n        0x206C61, 0x206D61, 0x207065, 0x207072, 0x207365, 0x2073E3, 0x20756E, 0x20BA69,\n        0x20EE6E, 0x612063, 0x612064, 0x617265, 0x617420, 0x617465, 0x617520, 0x636172,\n        0x636F6E, 0x637520, 0x63E320, 0x646520, 0x652061, 0x652063, 0x652064, 0x652070,\n        0x652073, 0x656120, 0x656920, 0x656C65, 0x656E74, 0x657374, 0x692061, 0x692063,\n        0x692064, 0x692070, 0x696520, 0x696920, 0x696E20, 0x6C6120, 0x6C6520, 0x6C6F72,\n        0x6C7569, 0x6E6520, 0x6E7472, 0x6F7220, 0x70656E, 0x726520, 0x726561, 0x727520,\n        0x73E320, 0x746520, 0x747275, 0x74E320, 0x756920, 0x756C20, 0xBA6920, 0xEE6E20,\n      ])\n    ];\n  };\n\n  this.name = function(det) {\n    return (det && det.fC1Bytes) ? 'windows-1250' : 'ISO-8859-2';\n  };\n};\nutil.inherits(module.exports.ISO_8859_2, sbcs);\n\n\nmodule.exports.ISO_8859_5 = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x20, 0xFE, 0xFF,\n      0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n      0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n      0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x20, 0xFE, 0xFF\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      0x20D220, 0x20D2DE, 0x20D4DE, 0x20D7D0, 0x20D820, 0x20DAD0, 0x20DADE, 0x20DDD0,\n      0x20DDD5, 0x20DED1, 0x20DFDE, 0x20DFE0, 0x20E0D0, 0x20E1DE, 0x20E1E2, 0x20E2DE,\n      0x20E7E2, 0x20EDE2, 0xD0DDD8, 0xD0E2EC, 0xD3DE20, 0xD5DBEC, 0xD5DDD8, 0xD5E1E2,\n      0xD5E220, 0xD820DF, 0xD8D520, 0xD8D820, 0xD8EF20, 0xDBD5DD, 0xDBD820, 0xDBECDD,\n      0xDDD020, 0xDDD520, 0xDDD8D5, 0xDDD8EF, 0xDDDE20, 0xDDDED2, 0xDE20D2, 0xDE20DF,\n      0xDE20E1, 0xDED220, 0xDED2D0, 0xDED3DE, 0xDED920, 0xDEDBEC, 0xDEDC20, 0xDEE1E2,\n      0xDFDEDB, 0xDFE0D5, 0xDFE0D8, 0xDFE0DE, 0xE0D0D2, 0xE0D5D4, 0xE1E2D0, 0xE1E2D2,\n      0xE1E2D8, 0xE1EF20, 0xE2D5DB, 0xE2DE20, 0xE2DEE0, 0xE2EC20, 0xE7E2DE, 0xEBE520\n    ];\n  };\n\n  this.name = function(det) {\n    return 'ISO-8859-5';\n  };\n\n  this.language = function() {\n    return 'ru';\n  };\n};\nutil.inherits(module.exports.ISO_8859_5, sbcs);\n\n\nmodule.exports.ISO_8859_6 = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,\n      0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,\n      0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n      0xD8, 0xD9, 0xDA, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      0x20C7E4, 0x20C7E6, 0x20C8C7, 0x20D9E4, 0x20E1EA, 0x20E4E4, 0x20E5E6, 0x20E8C7,\n      0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E420, 0xC7E4C3, 0xC7E4C7, 0xC7E4C8,\n      0xC7E4CA, 0xC7E4CC, 0xC7E4CD, 0xC7E4CF, 0xC7E4D3, 0xC7E4D9, 0xC7E4E2, 0xC7E4E5,\n      0xC7E4E8, 0xC7E4EA, 0xC7E520, 0xC7E620, 0xC7E6CA, 0xC820C7, 0xC920C7, 0xC920E1,\n      0xC920E4, 0xC920E5, 0xC920E8, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920,\n      0xD320C7, 0xD920C7, 0xD9E4E9, 0xE1EA20, 0xE420C7, 0xE4C920, 0xE4E920, 0xE4EA20,\n      0xE520C7, 0xE5C720, 0xE5C920, 0xE5E620, 0xE620C7, 0xE720C7, 0xE7C720, 0xE8C7E4,\n      0xE8E620, 0xE920C7, 0xEA20C7, 0xEA20E5, 0xEA20E8, 0xEAC920, 0xEAD120, 0xEAE620\n    ];\n  };\n\n  this.name = function(det) {\n    return 'ISO-8859-6';\n  };\n\n  this.language = function() {\n    return 'ar';\n  };\n};\nutil.inherits(module.exports.ISO_8859_6, sbcs);\n\n\nmodule.exports.ISO_8859_7 = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0xA1, 0xA2, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xDC, 0x20,\n      0xDD, 0xDE, 0xDF, 0x20, 0xFC, 0x20, 0xFD, 0xFE,\n      0xC0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0x20, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xDC, 0xDD, 0xDE, 0xDF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x20\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      0x20E1ED, 0x20E1F0, 0x20E3E9, 0x20E4E9, 0x20E5F0, 0x20E720, 0x20EAE1, 0x20ECE5,\n      0x20EDE1, 0x20EF20, 0x20F0E1, 0x20F0EF, 0x20F0F1, 0x20F3F4, 0x20F3F5, 0x20F4E7,\n      0x20F4EF, 0xDFE120, 0xE120E1, 0xE120F4, 0xE1E920, 0xE1ED20, 0xE1F0FC, 0xE1F220,\n      0xE3E9E1, 0xE5E920, 0xE5F220, 0xE720F4, 0xE7ED20, 0xE7F220, 0xE920F4, 0xE9E120,\n      0xE9EADE, 0xE9F220, 0xEAE1E9, 0xEAE1F4, 0xECE520, 0xED20E1, 0xED20E5, 0xED20F0,\n      0xEDE120, 0xEFF220, 0xEFF520, 0xF0EFF5, 0xF0F1EF, 0xF0FC20, 0xF220E1, 0xF220E5,\n      0xF220EA, 0xF220F0, 0xF220F4, 0xF3E520, 0xF3E720, 0xF3F4EF, 0xF4E120, 0xF4E1E9,\n      0xF4E7ED, 0xF4E7F2, 0xF4E9EA, 0xF4EF20, 0xF4EFF5, 0xF4F9ED, 0xF9ED20, 0xFEED20\n    ];\n  };\n\n  this.name = function(det) {\n    return (det && det.fC1Bytes) ? 'windows-1253' : 'ISO-8859-7';\n  };\n\n  this.language = function() {\n    return 'el';\n  };\n};\nutil.inherits(module.exports.ISO_8859_7, sbcs);\n\nmodule.exports.ISO_8859_8 = function() {\n\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n      0xF8, 0xF9, 0xFA, 0x20, 0x20, 0x20, 0x20, 0x20\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      new NGramsPlusLang('he', [\n        0x20E0E5, 0x20E0E7, 0x20E0E9, 0x20E0FA, 0x20E1E9, 0x20E1EE, 0x20E4E0, 0x20E4E5,\n        0x20E4E9, 0x20E4EE, 0x20E4F2, 0x20E4F9, 0x20E4FA, 0x20ECE0, 0x20ECE4, 0x20EEE0,\n        0x20F2EC, 0x20F9EC, 0xE0FA20, 0xE420E0, 0xE420E1, 0xE420E4, 0xE420EC, 0xE420EE,\n        0xE420F9, 0xE4E5E0, 0xE5E020, 0xE5ED20, 0xE5EF20, 0xE5F820, 0xE5FA20, 0xE920E4,\n        0xE9E420, 0xE9E5FA, 0xE9E9ED, 0xE9ED20, 0xE9EF20, 0xE9F820, 0xE9FA20, 0xEC20E0,\n        0xEC20E4, 0xECE020, 0xECE420, 0xED20E0, 0xED20E1, 0xED20E4, 0xED20EC, 0xED20EE,\n        0xED20F9, 0xEEE420, 0xEF20E4, 0xF0E420, 0xF0E920, 0xF0E9ED, 0xF2EC20, 0xF820E4,\n        0xF8E9ED, 0xF9EC20, 0xFA20E0, 0xFA20E1, 0xFA20E4, 0xFA20EC, 0xFA20EE, 0xFA20F9,\n      ]),\n      new NGramsPlusLang('he', [\n        0x20E0E5, 0x20E0EC, 0x20E4E9, 0x20E4EC, 0x20E4EE, 0x20E4F0, 0x20E9F0, 0x20ECF2,\n        0x20ECF9, 0x20EDE5, 0x20EDE9, 0x20EFE5, 0x20EFE9, 0x20F8E5, 0x20F8E9, 0x20FAE0,\n        0x20FAE5, 0x20FAE9, 0xE020E4, 0xE020EC, 0xE020ED, 0xE020FA, 0xE0E420, 0xE0E5E4,\n        0xE0EC20, 0xE0EE20, 0xE120E4, 0xE120ED, 0xE120FA, 0xE420E4, 0xE420E9, 0xE420EC,\n        0xE420ED, 0xE420EF, 0xE420F8, 0xE420FA, 0xE4EC20, 0xE5E020, 0xE5E420, 0xE7E020,\n        0xE9E020, 0xE9E120, 0xE9E420, 0xEC20E4, 0xEC20ED, 0xEC20FA, 0xECF220, 0xECF920,\n        0xEDE9E9, 0xEDE9F0, 0xEDE9F8, 0xEE20E4, 0xEE20ED, 0xEE20FA, 0xEEE120, 0xEEE420,\n        0xF2E420, 0xF920E4, 0xF920ED, 0xF920FA, 0xF9E420, 0xFAE020, 0xFAE420, 0xFAE5E9,\n      ])\n    ];\n  };\n\n  this.name = function(det) {\n    return (det && det.fC1Bytes) ? 'windows-1255' : 'ISO-8859-8';\n  };\n\n  this.language = function() {\n    return 'he';\n  };\n\n};\nutil.inherits(module.exports.ISO_8859_8, sbcs);\n\n\nmodule.exports.ISO_8859_9 = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,\n      0x20, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0x69, 0xFE, 0xDF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x20,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      0x206261, 0x206269, 0x206275, 0x206461, 0x206465, 0x206765, 0x206861, 0x20696C,\n      0x206B61, 0x206B6F, 0x206D61, 0x206F6C, 0x207361, 0x207461, 0x207665, 0x207961,\n      0x612062, 0x616B20, 0x616C61, 0x616D61, 0x616E20, 0x616EFD, 0x617220, 0x617261,\n      0x6172FD, 0x6173FD, 0x617961, 0x626972, 0x646120, 0x646520, 0x646920, 0x652062,\n      0x65206B, 0x656469, 0x656E20, 0x657220, 0x657269, 0x657369, 0x696C65, 0x696E20,\n      0x696E69, 0x697220, 0x6C616E, 0x6C6172, 0x6C6520, 0x6C6572, 0x6E2061, 0x6E2062,\n      0x6E206B, 0x6E6461, 0x6E6465, 0x6E6520, 0x6E6920, 0x6E696E, 0x6EFD20, 0x72696E,\n      0x72FD6E, 0x766520, 0x796120, 0x796F72, 0xFD6E20, 0xFD6E64, 0xFD6EFD, 0xFDF0FD\n    ];\n  };\n\n  this.name = function(det) {\n    return (det && det.fC1Bytes) ? 'windows-1254' : 'ISO-8859-9';\n  };\n\n  this.language = function() {\n    return 'tr';\n  };\n};\nutil.inherits(module.exports.ISO_8859_9, sbcs);\n\n\nmodule.exports.windows_1251 = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x90, 0x83, 0x20, 0x83, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x9A, 0x20, 0x9C, 0x9D, 0x9E, 0x9F,\n      0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x9A, 0x20, 0x9C, 0x9D, 0x9E, 0x9F,\n      0x20, 0xA2, 0xA2, 0xBC, 0x20, 0xB4, 0x20, 0x20,\n      0xB8, 0x20, 0xBA, 0x20, 0x20, 0x20, 0x20, 0xBF,\n      0x20, 0x20, 0xB3, 0xB3, 0xB4, 0xB5, 0x20, 0x20,\n      0xB8, 0x20, 0xBA, 0x20, 0xBC, 0xBE, 0xBE, 0xBF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,\n      0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      0x20E220, 0x20E2EE, 0x20E4EE, 0x20E7E0, 0x20E820, 0x20EAE0, 0x20EAEE, 0x20EDE0,\n      0x20EDE5, 0x20EEE1, 0x20EFEE, 0x20EFF0, 0x20F0E0, 0x20F1EE, 0x20F1F2, 0x20F2EE,\n      0x20F7F2, 0x20FDF2, 0xE0EDE8, 0xE0F2FC, 0xE3EE20, 0xE5EBFC, 0xE5EDE8, 0xE5F1F2,\n      0xE5F220, 0xE820EF, 0xE8E520, 0xE8E820, 0xE8FF20, 0xEBE5ED, 0xEBE820, 0xEBFCED,\n      0xEDE020, 0xEDE520, 0xEDE8E5, 0xEDE8FF, 0xEDEE20, 0xEDEEE2, 0xEE20E2, 0xEE20EF,\n      0xEE20F1, 0xEEE220, 0xEEE2E0, 0xEEE3EE, 0xEEE920, 0xEEEBFC, 0xEEEC20, 0xEEF1F2,\n      0xEFEEEB, 0xEFF0E5, 0xEFF0E8, 0xEFF0EE, 0xF0E0E2, 0xF0E5E4, 0xF1F2E0, 0xF1F2E2,\n      0xF1F2E8, 0xF1FF20, 0xF2E5EB, 0xF2EE20, 0xF2EEF0, 0xF2FC20, 0xF7F2EE, 0xFBF520\n    ];\n  };\n\n  this.name = function(det) {\n    return 'windows-1251';\n  };\n\n  this.language = function() {\n    return 'ru';\n  };\n};\nutil.inherits(module.exports.windows_1251, sbcs);\n\n\nmodule.exports.windows_1256 = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x81, 0x20, 0x83, 0x20, 0x20, 0x20, 0x20,\n      0x88, 0x20, 0x8A, 0x20, 0x9C, 0x8D, 0x8E, 0x8F,\n      0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x98, 0x20, 0x9A, 0x20, 0x9C, 0x20, 0x20, 0x9F,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,\n      0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,\n      0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0x20,\n      0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,\n      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,\n      0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,\n      0x20, 0x20, 0x20, 0x20, 0xF4, 0x20, 0x20, 0x20,\n      0x20, 0xF9, 0x20, 0xFB, 0xFC, 0x20, 0x20, 0xFF\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      0x20C7E1, 0x20C7E4, 0x20C8C7, 0x20DAE1, 0x20DDED, 0x20E1E1, 0x20E3E4, 0x20E6C7,\n      0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E120, 0xC7E1C3, 0xC7E1C7, 0xC7E1C8,\n      0xC7E1CA, 0xC7E1CC, 0xC7E1CD, 0xC7E1CF, 0xC7E1D3, 0xC7E1DA, 0xC7E1DE, 0xC7E1E3,\n      0xC7E1E6, 0xC7E1ED, 0xC7E320, 0xC7E420, 0xC7E4CA, 0xC820C7, 0xC920C7, 0xC920DD,\n      0xC920E1, 0xC920E3, 0xC920E6, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920,\n      0xD320C7, 0xDA20C7, 0xDAE1EC, 0xDDED20, 0xE120C7, 0xE1C920, 0xE1EC20, 0xE1ED20,\n      0xE320C7, 0xE3C720, 0xE3C920, 0xE3E420, 0xE420C7, 0xE520C7, 0xE5C720, 0xE6C7E1,\n      0xE6E420, 0xEC20C7, 0xED20C7, 0xED20E3, 0xED20E6, 0xEDC920, 0xEDD120, 0xEDE420\n    ];\n  };\n\n  this.name = function(det) {\n    return 'windows-1256';\n  };\n\n  this.language = function() {\n    return 'ar';\n  };\n};\nutil.inherits(module.exports.windows_1256, sbcs);\n\n\nmodule.exports.KOI8_R = function() {\n  this.byteMap = function() {\n    return [\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,\n      0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,\n      0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,\n      0x78, 0x79, 0x7A, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0xA3, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0xA3, 0x20, 0x20, 0x20, 0x20,\n      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,\n      0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,\n      0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,\n      0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n      0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,\n      0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,\n      0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,\n      0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,\n      0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n      0x20C4CF, 0x20C920, 0x20CBC1, 0x20CBCF, 0x20CEC1, 0x20CEC5, 0x20CFC2, 0x20D0CF,\n      0x20D0D2, 0x20D2C1, 0x20D3CF, 0x20D3D4, 0x20D4CF, 0x20D720, 0x20D7CF, 0x20DAC1,\n      0x20DCD4, 0x20DED4, 0xC1CEC9, 0xC1D4D8, 0xC5CCD8, 0xC5CEC9, 0xC5D3D4, 0xC5D420,\n      0xC7CF20, 0xC920D0, 0xC9C520, 0xC9C920, 0xC9D120, 0xCCC5CE, 0xCCC920, 0xCCD8CE,\n      0xCEC120, 0xCEC520, 0xCEC9C5, 0xCEC9D1, 0xCECF20, 0xCECFD7, 0xCF20D0, 0xCF20D3,\n      0xCF20D7, 0xCFC7CF, 0xCFCA20, 0xCFCCD8, 0xCFCD20, 0xCFD3D4, 0xCFD720, 0xCFD7C1,\n      0xD0CFCC, 0xD0D2C5, 0xD0D2C9, 0xD0D2CF, 0xD2C1D7, 0xD2C5C4, 0xD3D120, 0xD3D4C1,\n      0xD3D4C9, 0xD3D4D7, 0xD4C5CC, 0xD4CF20, 0xD4CFD2, 0xD4D820, 0xD9C820, 0xDED4CF\n    ];\n  };\n\n  this.name = function(det) {\n    return 'KOI8-R';\n  };\n\n  this.language = function() {\n    return 'ru';\n  };\n};\nutil.inherits(module.exports.KOI8_R, sbcs);\n\n\n/*\nmodule.exports.ISO_8859_7 = function() {\n  this.byteMap = function() {\n    return [\n\n    ];\n  };\n\n  this.ngrams = function() {\n    return [\n\n    ];\n  };\n\n  this.name = function(det) {\n    if (typeof det == 'undefined')\n      return 'ISO-8859-7';\n    return det.fC1Bytes ? 'windows-1253' : 'ISO-8859-7';\n  };\n\n  this.language = function() {\n    return 'el';\n  };\n};\nutil.inherits(module.exports.ISO_8859_7, sbcs);\n*/\n\n", "var util = require('util'),\n  Match = require ('../match');\n\n\n/**\n * This is a superclass for the individual detectors for\n * each of the detectable members of the ISO 2022 family\n * of encodings.\n */\n\nfunction ISO_2022() {}\n\nISO_2022.prototype.match = function(det) {\n\n  /**\n   * Matching function shared among the 2022 detectors JP, CN and KR\n   * Counts up the number of legal an unrecognized escape sequences in\n   * the sample of text, and computes a score based on the total number &\n   * the proportion that fit the encoding.\n   *\n   *\n   * @param text the byte buffer containing text to analyse\n   * @param textLen  the size of the text in the byte.\n   * @param escapeSequences the byte escape sequences to test for.\n   * @return match quality, in the range of 0-100.\n   */\n\n  var i, j;\n  var escN;\n  var hits   = 0;\n  var misses = 0;\n  var shifts = 0;\n  var quality;\n\n  // TODO: refactor me\n  var text = det.fInputBytes;\n  var textLen = det.fInputLen;\n\n  scanInput:\n    for (i = 0; i < textLen; i++) {\n      if (text[i] == 0x1b) {\n        checkEscapes:\n          for (escN = 0; escN < this.escapeSequences.length; escN++) {\n            var seq = this.escapeSequences[escN];\n\n            if ((textLen - i) < seq.length)\n              continue checkEscapes;\n\n            for (j = 1; j < seq.length; j++)\n              if (seq[j] != text[i + j])\n                continue checkEscapes;\n\n\n            hits++;\n            i += seq.length - 1;\n            continue scanInput;\n          }\n\n          misses++;\n      }\n\n      // Shift in/out\n      if (text[i] == 0x0e || text[i] == 0x0f)\n        shifts++;\n\n    }\n\n  if (hits == 0)\n    return null;\n\n  //\n  // Initial quality is based on relative proportion of recongized vs.\n  //   unrecognized escape sequences.\n  //   All good:  quality = 100;\n  //   half or less good: quality = 0;\n  //   linear inbetween.\n  quality = (100 * hits - 100 * misses) / (hits + misses);\n\n  // Back off quality if there were too few escape sequences seen.\n  //   Include shifts in this computation, so that KR does not get penalized\n  //   for having only a single Escape sequence, but many shifts.\n  if (hits + shifts < 5)\n    quality -= (5 - (hits + shifts)) * 10;\n\n  return quality <= 0 ? null : new Match(det, this, quality);\n};\n\nmodule.exports.ISO_2022_JP = function() {\n  this.name = function() {\n    return 'ISO-2022-JP';\n  };\n  this.escapeSequences = [\n    [ 0x1b, 0x24, 0x28, 0x43 ],   // KS X 1001:1992\n    [ 0x1b, 0x24, 0x28, 0x44 ],   // JIS X 212-1990\n    [ 0x1b, 0x24, 0x40 ],         // JIS C 6226-1978\n    [ 0x1b, 0x24, 0x41 ],         // GB 2312-80\n    [ 0x1b, 0x24, 0x42 ],         // JIS X 208-1983\n    [ 0x1b, 0x26, 0x40 ],         // JIS X 208 1990, 1997\n    [ 0x1b, 0x28, 0x42 ],         // ASCII\n    [ 0x1b, 0x28, 0x48 ],         // JIS-Roman\n    [ 0x1b, 0x28, 0x49 ],         // Half-width katakana\n    [ 0x1b, 0x28, 0x4a ],         // JIS-Roman\n    [ 0x1b, 0x2e, 0x41 ],         // ISO 8859-1\n    [ 0x1b, 0x2e, 0x46 ]          // ISO 8859-7\n  ];\n};\nutil.inherits(module.exports.ISO_2022_JP, ISO_2022);\n\n\n\nmodule.exports.ISO_2022_KR = function() {\n  this.name = function() {\n    return 'ISO-2022-KR';\n  };\n  this.escapeSequences = [\n    [ 0x1b, 0x24, 0x29, 0x43 ]\n  ];\n};\nutil.inherits(module.exports.ISO_2022_KR, ISO_2022);\n\n\n\nmodule.exports.ISO_2022_CN = function() {\n  this.name = function() {\n    return 'ISO-2022-CN';\n  };\n  this.escapeSequences = [\n    [ 0x1b, 0x24, 0x29, 0x41 ],   // GB 2312-80\n    [ 0x1b, 0x24, 0x29, 0x47 ],   // CNS 11643-1992 Plane 1\n    [ 0x1b, 0x24, 0x2A, 0x48 ],   // CNS 11643-1992 Plane 2\n    [ 0x1b, 0x24, 0x29, 0x45 ],   // ISO-IR-165\n    [ 0x1b, 0x24, 0x2B, 0x49 ],   // CNS 11643-1992 Plane 3\n    [ 0x1b, 0x24, 0x2B, 0x4A ],   // CNS 11643-1992 Plane 4\n    [ 0x1b, 0x24, 0x2B, 0x4B ],   // CNS 11643-1992 Plane 5\n    [ 0x1b, 0x24, 0x2B, 0x4C ],   // CNS 11643-1992 Plane 6\n    [ 0x1b, 0x24, 0x2B, 0x4D ],   // CNS 11643-1992 Plane 7\n    [ 0x1b, 0x4e ],               // SS2\n    [ 0x1b, 0x4f ]                // SS3\n  ];\n};\nutil.inherits(module.exports.ISO_2022_CN, ISO_2022);\n", "\nvar fs = require('fs');\n\nvar utf8  = require('./encoding/utf8'),\n  unicode = require('./encoding/unicode'),\n  mbcs    = require('./encoding/mbcs'),\n  sbcs    = require('./encoding/sbcs'),\n  iso2022 = require('./encoding/iso2022');\n\nvar self = this;\n\nvar recognisers = [\n  new utf8,\n  new unicode.UTF_16BE,\n  new unicode.UTF_16LE,\n  new unicode.UTF_32BE,\n  new unicode.UTF_32LE,\n  new mbcs.sjis,\n  new mbcs.big5,\n  new mbcs.euc_jp,\n  new mbcs.euc_kr,\n  new mbcs.gb_18030,\n  new iso2022.ISO_2022_JP,\n  new iso2022.ISO_2022_KR,\n  new iso2022.ISO_2022_CN,\n  new sbcs.ISO_8859_1,\n  new sbcs.ISO_8859_2,\n  new sbcs.ISO_8859_5,\n  new sbcs.ISO_8859_6,\n  new sbcs.ISO_8859_7,\n  new sbcs.ISO_8859_8,\n  new sbcs.ISO_8859_9,\n  new sbcs.windows_1251,\n  new sbcs.windows_1256,\n  new sbcs.KOI8_R\n];\n\nmodule.exports.detect = function(buffer, opts) {\n\n  // Tally up the byte occurence statistics.\n  var fByteStats = [];\n  for (var i = 0; i < 256; i++)\n    fByteStats[i] = 0;\n\n  for (var i = buffer.length - 1; i >= 0; i--)\n    fByteStats[buffer[i] & 0x00ff]++;\n\n  var fC1Bytes = false;\n  for (var i = 0x80; i <= 0x9F; i += 1) {\n    if (fByteStats[i] != 0) {\n      fC1Bytes = true;\n      break;\n    }\n  }\n\n  var context = {\n    fByteStats:  fByteStats,\n    fC1Bytes:    fC1Bytes,\n    fRawInput:   buffer,\n    fRawLength:  buffer.length,\n    fInputBytes: buffer,\n    fInputLen:   buffer.length\n  };\n\n  var matches = recognisers.map(function(rec) {\n    return rec.match(context);\n  }).filter(function(match) {\n    return !!match;\n  }).sort(function(a, b) {\n    return b.confidence - a.confidence;\n  });\n\n  if (opts && opts.returnAllMatches === true) {\n    return matches;\n  }\n  else {\n    return matches.length > 0 ? matches[0].name : null;\n  }\n};\n\nmodule.exports.detectFile = function(filepath, opts, cb) {\n  if (typeof opts === 'function') {\n    cb = opts;\n    opts = undefined;\n  }\n\n  var fd;\n\n  var handler = function(err, buffer) {\n    if (fd) {\n      fs.closeSync(fd);\n    }\n\n    if (err) return cb(err, null);\n    cb(null, self.detect(buffer, opts));\n  };\n\n  if (opts && opts.sampleSize) {\n    fd = fs.openSync(filepath, 'r'),\n      sample = Buffer.allocUnsafe(opts.sampleSize);\n\n    fs.read(fd, sample, 0, opts.sampleSize, null, function(err) {\n      handler(err, sample);\n    });\n    return;\n  }\n\n  fs.readFile(filepath, handler);\n};\n\nmodule.exports.detectFileSync = function(filepath, opts) {\n  if (opts && opts.sampleSize) {\n    var fd = fs.openSync(filepath, 'r'),\n      sample = Buffer.allocUnsafe(opts.sampleSize);\n\n    fs.readSync(fd, sample, 0, opts.sampleSize);\n    fs.closeSync(fd);\n    return self.detect(sample, opts);\n  }\n\n  return self.detect(fs.readFileSync(filepath), opts);\n};\n\n// Wrappers for the previous functions to return all encodings\nmodule.exports.detectAll = function(buffer, opts) {\n  if (typeof opts !== 'object') {\n    opts = {};\n  }\n  opts.returnAllMatches = true;\n  return self.detect(buffer, opts);\n}\n\nmodule.exports.detectFileAll = function(filepath, opts, cb) {\n  if (typeof opts === 'function') {\n    cb = opts;\n    opts = undefined;\n  }\n  if (typeof opts !== 'object') {\n    opts = {};\n  }\n  opts.returnAllMatches = true;\n  self.detectFile(filepath, opts, cb);\n}\n\nmodule.exports.detectFileAllSync = function(filepath, opts) {\n  if (typeof opts !== 'object') {\n    opts = {};\n  }\n  opts.returnAllMatches = true;\n  return self.detectFileSync(filepath, opts);\n}\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n", "\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n    this.encoder = encoder;\n    this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n    if (this.addBOM) {\n        str = BOMChar + str;\n        this.addBOM = false;\n    }\n\n    return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n    this.decoder = decoder;\n    this.pass = false;\n    this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n    var res = this.decoder.write(buf);\n    if (this.pass || !res)\n        return res;\n\n    if (res[0] === BOMChar) {\n        res = res.slice(1);\n        if (typeof this.options.stripBOM === 'function')\n            this.options.stripBOM();\n    }\n\n    this.pass = true;\n    return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n    return this.decoder.end();\n}\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n    // Encodings\n    utf8:   { type: \"_internal\", bomAware: true},\n    cesu8:  { type: \"_internal\", bomAware: true},\n    unicode11utf8: \"utf8\",\n\n    ucs2:   { type: \"_internal\", bomAware: true},\n    utf16le: \"ucs2\",\n\n    binary: { type: \"_internal\" },\n    base64: { type: \"_internal\" },\n    hex:    { type: \"_internal\" },\n\n    // Codec.\n    _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n    this.enc = codecOptions.encodingName;\n    this.bomAware = codecOptions.bomAware;\n\n    if (this.enc === \"base64\")\n        this.encoder = InternalEncoderBase64;\n    else if (this.enc === \"cesu8\") {\n        this.enc = \"utf8\"; // Use utf8 for decoding.\n        this.encoder = InternalEncoderCesu8;\n\n        // Add decoder for versions of Node not supporting CESU-8\n        if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '\uD83D\uDCA9') {\n            this.decoder = InternalDecoderCesu8;\n            this.defaultCharUnicode = iconv.defaultCharUnicode;\n        }\n    }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n    StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n    StringDecoder.call(this, codec.enc);\n}\n\nInternalDecoder.prototype = StringDecoder.prototype;\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n    this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n    return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n    this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n    str = this.prevStr + str;\n    var completeQuads = str.length - (str.length % 4);\n    this.prevStr = str.slice(completeQuads);\n    str = str.slice(0, completeQuads);\n\n    return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n    return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n    for (var i = 0; i < str.length; i++) {\n        var charCode = str.charCodeAt(i);\n        // Naive implementation, but it works because CESU-8 is especially easy\n        // to convert from UTF-16 (which all JS strings are encoded in).\n        if (charCode < 0x80)\n            buf[bufIdx++] = charCode;\n        else if (charCode < 0x800) {\n            buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n        else { // charCode will always be < 0x10000 in javascript.\n            buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n    }\n    return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n    this.acc = 0;\n    this.contBytes = 0;\n    this.accBytes = 0;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n        res = '';\n    for (var i = 0; i < buf.length; i++) {\n        var curByte = buf[i];\n        if ((curByte & 0xC0) !== 0x80) { // Leading byte\n            if (contBytes > 0) { // Previous code is invalid\n                res += this.defaultCharUnicode;\n                contBytes = 0;\n            }\n\n            if (curByte < 0x80) { // Single-byte code\n                res += String.fromCharCode(curByte);\n            } else if (curByte < 0xE0) { // Two-byte code\n                acc = curByte & 0x1F;\n                contBytes = 1; accBytes = 1;\n            } else if (curByte < 0xF0) { // Three-byte code\n                acc = curByte & 0x0F;\n                contBytes = 2; accBytes = 1;\n            } else { // Four or more are not supported for CESU-8.\n                res += this.defaultCharUnicode;\n            }\n        } else { // Continuation byte\n            if (contBytes > 0) { // We're waiting for it.\n                acc = (acc << 6) | (curByte & 0x3f);\n                contBytes--; accBytes++;\n                if (contBytes === 0) {\n                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n                    if (accBytes === 2 && acc < 0x80 && acc > 0)\n                        res += this.defaultCharUnicode;\n                    else if (accBytes === 3 && acc < 0x800)\n                        res += this.defaultCharUnicode;\n                    else\n                        // Actually add character.\n                        res += String.fromCharCode(acc);\n                }\n            } else { // Unexpected continuation byte\n                res += this.defaultCharUnicode;\n            }\n        }\n    }\n    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n    return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n    var res = 0;\n    if (this.contBytes > 0)\n        res += this.defaultCharUnicode;\n    return res;\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n    var buf = Buffer.from(str, 'ucs2');\n    for (var i = 0; i < buf.length; i += 2) {\n        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n    }\n    return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n    this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n    if (buf.length == 0)\n        return '';\n\n    var buf2 = Buffer.alloc(buf.length + 1),\n        i = 0, j = 0;\n\n    if (this.overflowByte !== -1) {\n        buf2[0] = buf[0];\n        buf2[1] = this.overflowByte;\n        i = 1; j = 2;\n    }\n\n    for (; i < buf.length-1; i += 2, j+= 2) {\n        buf2[j] = buf[i+1];\n        buf2[j+1] = buf[i];\n    }\n\n    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n    return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n    options = options || {};\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n    this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n    this.decoder = null;\n    this.initialBytes = [];\n    this.initialBytesLen = 0;\n\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n    if (!this.decoder) {\n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBytes.push(buf);\n        this.initialBytesLen += buf.length;\n        \n        if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var buf = Buffer.concat(this.initialBytes),\n            encoding = detectEncoding(buf, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n        this.initialBytes.length = this.initialBytesLen = 0;\n    }\n\n    return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n    if (!this.decoder) {\n        var buf = Buffer.concat(this.initialBytes),\n            encoding = detectEncoding(buf, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var res = this.decoder.write(buf),\n            trail = this.decoder.end();\n\n        return trail ? (res + trail) : res;\n    }\n    return this.decoder.end();\n}\n\nfunction detectEncoding(buf, defaultEncoding) {\n    var enc = defaultEncoding || 'utf-16le';\n\n    if (buf.length >= 2) {\n        // Check BOM.\n        if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM\n            enc = 'utf-16be';\n        else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM\n            enc = 'utf-16le';\n        else {\n            // No BOM found. Try to deduce encoding from initial content.\n            // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n            // So, we count ASCII as if it was LE or BE, and decide from that.\n            var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n                _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.\n\n            for (var i = 0; i < _len; i += 2) {\n                if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;\n                if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;\n            }\n\n            if (asciiCharsBE > asciiCharsLE)\n                enc = 'utf-16be';\n            else if (asciiCharsBE < asciiCharsLE)\n                enc = 'utf-16le';\n        }\n    }\n\n    return enc;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n    this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n    // Naive implementation.\n    // Non-direct chars are encoded as \"+-\"; single \"+\" char is encoded as \"+-\".\n    return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n        return \"+\" + (chunk === '+' ? '' : \n            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n            + \"-\";\n    }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n    base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n    minusChar = '-'.charCodeAt(0),\n    andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '+'\n            if (buf[i] == plusChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64Chars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n                    res += \"+\";\n                } else {\n                    var b64str = base64Accum + buf.slice(lastI, i).toString();\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus is absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + buf.slice(lastI).toString();\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = Buffer.alloc(6);\n    this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n    var inBase64 = this.inBase64,\n        base64Accum = this.base64Accum,\n        base64AccumIdx = this.base64AccumIdx,\n        buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n    for (var i = 0; i < str.length; i++) {\n        var uChar = str.charCodeAt(i);\n        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n            if (inBase64) {\n                if (base64AccumIdx > 0) {\n                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n                    base64AccumIdx = 0;\n                }\n\n                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n                inBase64 = false;\n            }\n\n            if (!inBase64) {\n                buf[bufIdx++] = uChar; // Write direct character\n\n                if (uChar === andChar)  // Ampersand -> '&-'\n                    buf[bufIdx++] = minusChar;\n            }\n\n        } else { // Non-direct character\n            if (!inBase64) {\n                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n                inBase64 = true;\n            }\n            if (inBase64) {\n                base64Accum[base64AccumIdx++] = uChar >> 8;\n                base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n                if (base64AccumIdx == base64Accum.length) {\n                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n                    base64AccumIdx = 0;\n                }\n            }\n        }\n    }\n\n    this.inBase64 = inBase64;\n    this.base64AccumIdx = base64AccumIdx;\n\n    return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n    var buf = Buffer.alloc(10), bufIdx = 0;\n    if (this.inBase64) {\n        if (this.base64AccumIdx > 0) {\n            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n            this.base64AccumIdx = 0;\n        }\n\n        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n        this.inBase64 = false;\n    }\n\n    return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '&'\n            if (buf[i] == andChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n                    res += \"&\";\n                } else {\n                    var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus may be absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n    if (!codecOptions)\n        throw new Error(\"SBCS codec is called without the data.\")\n    \n    // Prepare char buffer for decoding.\n    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n        throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n    \n    if (codecOptions.chars.length === 128) {\n        var asciiString = \"\";\n        for (var i = 0; i < 128; i++)\n            asciiString += String.fromCharCode(i);\n        codecOptions.chars = asciiString + codecOptions.chars;\n    }\n\n    this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n    \n    // Encoding buffer.\n    var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n    for (var i = 0; i < codecOptions.chars.length; i++)\n        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n    this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n    this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length);\n    for (var i = 0; i < str.length; i++)\n        buf[i] = this.encodeBuf[str.charCodeAt(i)];\n    \n    return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n    this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n    var decodeBuf = this.decodeBuf;\n    var newBuf = Buffer.alloc(buf.length*2);\n    var idx1 = 0, idx2 = 0;\n    for (var i = 0; i < buf.length; i++) {\n        idx1 = buf[i]*2; idx2 = i*2;\n        newBuf[idx2] = decodeBuf[idx1];\n        newBuf[idx2+1] = decodeBuf[idx1+1];\n    }\n    return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n", "\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n    // Not supported by iconv, not sure why.\n    \"10029\": \"maccenteuro\",\n    \"maccenteuro\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n    },\n\n    \"808\": \"cp808\",\n    \"ibm808\": \"cp808\",\n    \"cp808\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n    },\n\n    \"mik\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n    },\n\n    // Aliases of generated encodings.\n    \"ascii8bit\": \"ascii\",\n    \"usascii\": \"ascii\",\n    \"ansix34\": \"ascii\",\n    \"ansix341968\": \"ascii\",\n    \"ansix341986\": \"ascii\",\n    \"csascii\": \"ascii\",\n    \"cp367\": \"ascii\",\n    \"ibm367\": \"ascii\",\n    \"isoir6\": \"ascii\",\n    \"iso646us\": \"ascii\",\n    \"iso646irv\": \"ascii\",\n    \"us\": \"ascii\",\n\n    \"latin1\": \"iso88591\",\n    \"latin2\": \"iso88592\",\n    \"latin3\": \"iso88593\",\n    \"latin4\": \"iso88594\",\n    \"latin5\": \"iso88599\",\n    \"latin6\": \"iso885910\",\n    \"latin7\": \"iso885913\",\n    \"latin8\": \"iso885914\",\n    \"latin9\": \"iso885915\",\n    \"latin10\": \"iso885916\",\n\n    \"csisolatin1\": \"iso88591\",\n    \"csisolatin2\": \"iso88592\",\n    \"csisolatin3\": \"iso88593\",\n    \"csisolatin4\": \"iso88594\",\n    \"csisolatincyrillic\": \"iso88595\",\n    \"csisolatinarabic\": \"iso88596\",\n    \"csisolatingreek\" : \"iso88597\",\n    \"csisolatinhebrew\": \"iso88598\",\n    \"csisolatin5\": \"iso88599\",\n    \"csisolatin6\": \"iso885910\",\n\n    \"l1\": \"iso88591\",\n    \"l2\": \"iso88592\",\n    \"l3\": \"iso88593\",\n    \"l4\": \"iso88594\",\n    \"l5\": \"iso88599\",\n    \"l6\": \"iso885910\",\n    \"l7\": \"iso885913\",\n    \"l8\": \"iso885914\",\n    \"l9\": \"iso885915\",\n    \"l10\": \"iso885916\",\n\n    \"isoir14\": \"iso646jp\",\n    \"isoir57\": \"iso646cn\",\n    \"isoir100\": \"iso88591\",\n    \"isoir101\": \"iso88592\",\n    \"isoir109\": \"iso88593\",\n    \"isoir110\": \"iso88594\",\n    \"isoir144\": \"iso88595\",\n    \"isoir127\": \"iso88596\",\n    \"isoir126\": \"iso88597\",\n    \"isoir138\": \"iso88598\",\n    \"isoir148\": \"iso88599\",\n    \"isoir157\": \"iso885910\",\n    \"isoir166\": \"tis620\",\n    \"isoir179\": \"iso885913\",\n    \"isoir199\": \"iso885914\",\n    \"isoir203\": \"iso885915\",\n    \"isoir226\": \"iso885916\",\n\n    \"cp819\": \"iso88591\",\n    \"ibm819\": \"iso88591\",\n\n    \"cyrillic\": \"iso88595\",\n\n    \"arabic\": \"iso88596\",\n    \"arabic8\": \"iso88596\",\n    \"ecma114\": \"iso88596\",\n    \"asmo708\": \"iso88596\",\n\n    \"greek\" : \"iso88597\",\n    \"greek8\" : \"iso88597\",\n    \"ecma118\" : \"iso88597\",\n    \"elot928\" : \"iso88597\",\n\n    \"hebrew\": \"iso88598\",\n    \"hebrew8\": \"iso88598\",\n\n    \"turkish\": \"iso88599\",\n    \"turkish8\": \"iso88599\",\n\n    \"thai\": \"iso885911\",\n    \"thai8\": \"iso885911\",\n\n    \"celtic\": \"iso885914\",\n    \"celtic8\": \"iso885914\",\n    \"isoceltic\": \"iso885914\",\n\n    \"tis6200\": \"tis620\",\n    \"tis62025291\": \"tis620\",\n    \"tis62025330\": \"tis620\",\n\n    \"10000\": \"macroman\",\n    \"10006\": \"macgreek\",\n    \"10007\": \"maccyrillic\",\n    \"10079\": \"maciceland\",\n    \"10081\": \"macturkish\",\n\n    \"cspc8codepage437\": \"cp437\",\n    \"cspc775baltic\": \"cp775\",\n    \"cspc850multilingual\": \"cp850\",\n    \"cspcp852\": \"cp852\",\n    \"cspc862latinhebrew\": \"cp862\",\n    \"cpgr\": \"cp869\",\n\n    \"msee\": \"cp1250\",\n    \"mscyrl\": \"cp1251\",\n    \"msansi\": \"cp1252\",\n    \"msgreek\": \"cp1253\",\n    \"msturk\": \"cp1254\",\n    \"mshebr\": \"cp1255\",\n    \"msarab\": \"cp1256\",\n    \"winbaltrim\": \"cp1257\",\n\n    \"cp20866\": \"koi8r\",\n    \"20866\": \"koi8r\",\n    \"ibm878\": \"koi8r\",\n    \"cskoi8r\": \"koi8r\",\n\n    \"cp21866\": \"koi8u\",\n    \"21866\": \"koi8u\",\n    \"ibm1168\": \"koi8u\",\n\n    \"strk10482002\": \"rk1048\",\n\n    \"tcvn5712\": \"tcvn\",\n    \"tcvn57121\": \"tcvn\",\n\n    \"gb198880\": \"iso646cn\",\n    \"cn\": \"iso646cn\",\n\n    \"csiso14jisc6220ro\": \"iso646jp\",\n    \"jisc62201969ro\": \"iso646jp\",\n    \"jp\": \"iso646jp\",\n\n    \"cshproman8\": \"hproman8\",\n    \"r8\": \"hproman8\",\n    \"roman8\": \"hproman8\",\n    \"xroman8\": \"hproman8\",\n    \"ibm1051\": \"hproman8\",\n\n    \"mac\": \"macintosh\",\n    \"csmacintosh\": \"macintosh\",\n};\n\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  \"437\": \"cp437\",\n  \"737\": \"cp737\",\n  \"775\": \"cp775\",\n  \"850\": \"cp850\",\n  \"852\": \"cp852\",\n  \"855\": \"cp855\",\n  \"856\": \"cp856\",\n  \"857\": \"cp857\",\n  \"858\": \"cp858\",\n  \"860\": \"cp860\",\n  \"861\": \"cp861\",\n  \"862\": \"cp862\",\n  \"863\": \"cp863\",\n  \"864\": \"cp864\",\n  \"865\": \"cp865\",\n  \"866\": \"cp866\",\n  \"869\": \"cp869\",\n  \"874\": \"windows874\",\n  \"922\": \"cp922\",\n  \"1046\": \"cp1046\",\n  \"1124\": \"cp1124\",\n  \"1125\": \"cp1125\",\n  \"1129\": \"cp1129\",\n  \"1133\": \"cp1133\",\n  \"1161\": \"cp1161\",\n  \"1162\": \"cp1162\",\n  \"1163\": \"cp1163\",\n  \"1250\": \"windows1250\",\n  \"1251\": \"windows1251\",\n  \"1252\": \"windows1252\",\n  \"1253\": \"windows1253\",\n  \"1254\": \"windows1254\",\n  \"1255\": \"windows1255\",\n  \"1256\": \"windows1256\",\n  \"1257\": \"windows1257\",\n  \"1258\": \"windows1258\",\n  \"28591\": \"iso88591\",\n  \"28592\": \"iso88592\",\n  \"28593\": \"iso88593\",\n  \"28594\": \"iso88594\",\n  \"28595\": \"iso88595\",\n  \"28596\": \"iso88596\",\n  \"28597\": \"iso88597\",\n  \"28598\": \"iso88598\",\n  \"28599\": \"iso88599\",\n  \"28600\": \"iso885910\",\n  \"28601\": \"iso885911\",\n  \"28603\": \"iso885913\",\n  \"28604\": \"iso885914\",\n  \"28605\": \"iso885915\",\n  \"28606\": \"iso885916\",\n  \"windows874\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"win874\": \"windows874\",\n  \"cp874\": \"windows874\",\n  \"windows1250\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"win1250\": \"windows1250\",\n  \"cp1250\": \"windows1250\",\n  \"windows1251\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"win1251\": \"windows1251\",\n  \"cp1251\": \"windows1251\",\n  \"windows1252\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"win1252\": \"windows1252\",\n  \"cp1252\": \"windows1252\",\n  \"windows1253\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"win1253\": \"windows1253\",\n  \"cp1253\": \"windows1253\",\n  \"windows1254\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"win1254\": \"windows1254\",\n  \"cp1254\": \"windows1254\",\n  \"windows1255\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"win1255\": \"windows1255\",\n  \"cp1255\": \"windows1255\",\n  \"windows1256\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n  },\n  \"win1256\": \"windows1256\",\n  \"cp1256\": \"windows1256\",\n  \"windows1257\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n  },\n  \"win1257\": \"windows1257\",\n  \"cp1257\": \"windows1257\",\n  \"windows1258\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"win1258\": \"windows1258\",\n  \"cp1258\": \"windows1258\",\n  \"iso88591\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28591\": \"iso88591\",\n  \"iso88592\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"cp28592\": \"iso88592\",\n  \"iso88593\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n  },\n  \"cp28593\": \"iso88593\",\n  \"iso88594\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n  },\n  \"cp28594\": \"iso88594\",\n  \"iso88595\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"cp28595\": \"iso88595\",\n  \"iso88596\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28596\": \"iso88596\",\n  \"iso88597\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"cp28597\": \"iso88597\",\n  \"iso88598\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"cp28598\": \"iso88598\",\n  \"iso88599\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"cp28599\": \"iso88599\",\n  \"iso885910\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n  },\n  \"cp28600\": \"iso885910\",\n  \"iso885911\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28601\": \"iso885911\",\n  \"iso885913\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n  },\n  \"cp28603\": \"iso885913\",\n  \"iso885914\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n  },\n  \"cp28604\": \"iso885914\",\n  \"iso885915\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28605\": \"iso885915\",\n  \"iso885916\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n  },\n  \"cp28606\": \"iso885916\",\n  \"cp437\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm437\": \"cp437\",\n  \"csibm437\": \"cp437\",\n  \"cp737\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm737\": \"cp737\",\n  \"csibm737\": \"cp737\",\n  \"cp775\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm775\": \"cp775\",\n  \"csibm775\": \"cp775\",\n  \"cp850\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm850\": \"cp850\",\n  \"csibm850\": \"cp850\",\n  \"cp852\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n  },\n  \"ibm852\": \"cp852\",\n  \"csibm852\": \"cp852\",\n  \"cp855\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n  },\n  \"ibm855\": \"cp855\",\n  \"csibm855\": \"cp855\",\n  \"cp856\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm856\": \"cp856\",\n  \"csibm856\": \"cp856\",\n  \"cp857\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm857\": \"cp857\",\n  \"csibm857\": \"cp857\",\n  \"cp858\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm858\": \"cp858\",\n  \"csibm858\": \"cp858\",\n  \"cp860\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm860\": \"cp860\",\n  \"csibm860\": \"cp860\",\n  \"cp861\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm861\": \"cp861\",\n  \"csibm861\": \"cp861\",\n  \"cp862\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm862\": \"cp862\",\n  \"csibm862\": \"cp862\",\n  \"cp863\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm863\": \"cp863\",\n  \"csibm863\": \"cp863\",\n  \"cp864\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n  },\n  \"ibm864\": \"cp864\",\n  \"csibm864\": \"cp864\",\n  \"cp865\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm865\": \"cp865\",\n  \"csibm865\": \"cp865\",\n  \"cp866\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm866\": \"cp866\",\n  \"csibm866\": \"cp866\",\n  \"cp869\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n  },\n  \"ibm869\": \"cp869\",\n  \"csibm869\": \"cp869\",\n  \"cp922\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n  },\n  \"ibm922\": \"cp922\",\n  \"csibm922\": \"cp922\",\n  \"cp1046\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n  },\n  \"ibm1046\": \"cp1046\",\n  \"csibm1046\": \"cp1046\",\n  \"cp1124\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"ibm1124\": \"cp1124\",\n  \"csibm1124\": \"cp1124\",\n  \"cp1125\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm1125\": \"cp1125\",\n  \"csibm1125\": \"cp1125\",\n  \"cp1129\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1129\": \"cp1129\",\n  \"csibm1129\": \"cp1129\",\n  \"cp1133\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n  },\n  \"ibm1133\": \"cp1133\",\n  \"csibm1133\": \"cp1133\",\n  \"cp1161\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n  },\n  \"ibm1161\": \"cp1161\",\n  \"csibm1161\": \"cp1161\",\n  \"cp1162\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"ibm1162\": \"cp1162\",\n  \"csibm1162\": \"cp1162\",\n  \"cp1163\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1163\": \"cp1163\",\n  \"csibm1163\": \"cp1163\",\n  \"maccroatian\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n  },\n  \"maccyrillic\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"macgreek\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n  },\n  \"maciceland\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macroman\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macromania\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macthai\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"macturkish\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macukraine\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"koi8r\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8u\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8ru\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8t\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"armscii8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n  },\n  \"rk1048\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"tcvn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n  },\n  \"georgianacademy\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"georgianps\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"pt154\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"viscii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n  },\n  \"iso646cn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"iso646jp\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"hproman8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n  },\n  \"macintosh\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"ascii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"tis620\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  }\n}", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n    GB18030_CODE = -2,\n    SEQ_START  = -10,\n    NODE_START = -1000,\n    UNASSIGNED_NODE = new Array(0x100),\n    DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n    UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n    this.encodingName = codecOptions.encodingName;\n    if (!codecOptions)\n        throw new Error(\"DBCS codec is called without the data.\")\n    if (!codecOptions.table)\n        throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n    // Load tables.\n    var mappingTable = codecOptions.table();\n\n\n    // Decode tables: MBCS -> Unicode.\n\n    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n    // Trie root is decodeTables[0].\n    // Values: >=  0 -> unicode character code. can be > 0xFFFF\n    //         == UNASSIGNED -> unknown/unassigned sequence.\n    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n    //         <= NODE_START -> index of the next node in our trie to process next byte.\n    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n    this.decodeTables = [];\n    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n    this.decodeTableSeq = [];\n\n    // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n    for (var i = 0; i < mappingTable.length; i++)\n        this._addDecodeChunk(mappingTable[i]);\n\n    this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n    \n    // Encode tables: Unicode -> DBCS.\n\n    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n    //         == UNASSIGNED -> no conversion found. Output a default char.\n    //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n    this.encodeTable = [];\n    \n    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n    // means end of sequence (needed when one sequence is a strict subsequence of another).\n    // Objects are kept separately from encodeTable to increase performance.\n    this.encodeTableSeq = [];\n\n    // Some chars can be decoded, but need not be encoded.\n    var skipEncodeChars = {};\n    if (codecOptions.encodeSkipVals)\n        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n            var val = codecOptions.encodeSkipVals[i];\n            if (typeof val === 'number')\n                skipEncodeChars[val] = true;\n            else\n                for (var j = val.from; j <= val.to; j++)\n                    skipEncodeChars[j] = true;\n        }\n        \n    // Use decode trie to recursively fill out encode tables.\n    this._fillEncodeTable(0, 0, skipEncodeChars);\n\n    // Add more encoding pairs when needed.\n    if (codecOptions.encodeAdd) {\n        for (var uChar in codecOptions.encodeAdd)\n            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n    }\n\n    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n\n\n    // Load & create GB18030 tables when needed.\n    if (typeof codecOptions.gb18030 === 'function') {\n        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n        // Add GB18030 decode tables.\n        var thirdByteNodeIdx = this.decodeTables.length;\n        var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n        var fourthByteNodeIdx = this.decodeTables.length;\n        var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n        for (var i = 0x81; i <= 0xFE; i++) {\n            var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];\n            var secondByteNode = this.decodeTables[secondByteNodeIdx];\n            for (var j = 0x30; j <= 0x39; j++)\n                secondByteNode[j] = NODE_START - thirdByteNodeIdx;\n        }\n        for (var i = 0x81; i <= 0xFE; i++)\n            thirdByteNode[i] = NODE_START - fourthByteNodeIdx;\n        for (var i = 0x30; i <= 0x39; i++)\n            fourthByteNode[i] = GB18030_CODE\n    }        \n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n    var bytes = [];\n    for (; addr > 0; addr >>= 8)\n        bytes.push(addr & 0xFF);\n    if (bytes.length == 0)\n        bytes.push(0);\n\n    var node = this.decodeTables[0];\n    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n        var val = node[bytes[i]];\n\n        if (val == UNASSIGNED) { // Create new node.\n            node[bytes[i]] = NODE_START - this.decodeTables.length;\n            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n        }\n        else if (val <= NODE_START) { // Existing node.\n            node = this.decodeTables[NODE_START - val];\n        }\n        else\n            throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n    }\n    return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n    // First element of chunk is the hex mbcs code where we start.\n    var curAddr = parseInt(chunk[0], 16);\n\n    // Choose the decoding node where we'll write our chars.\n    var writeTable = this._getDecodeTrieNode(curAddr);\n    curAddr = curAddr & 0xFF;\n\n    // Write all other elements of the chunk to the table.\n    for (var k = 1; k < chunk.length; k++) {\n        var part = chunk[k];\n        if (typeof part === \"string\") { // String, write as-is.\n            for (var l = 0; l < part.length;) {\n                var code = part.charCodeAt(l++);\n                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n                    var codeTrail = part.charCodeAt(l++);\n                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n                    else\n                        throw new Error(\"Incorrect surrogate pair in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n                }\n                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n                    var len = 0xFFF - code + 2;\n                    var seq = [];\n                    for (var m = 0; m < len; m++)\n                        seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n                    this.decodeTableSeq.push(seq);\n                }\n                else\n                    writeTable[curAddr++] = code; // Basic char\n            }\n        } \n        else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n            var charCode = writeTable[curAddr - 1] + 1;\n            for (var l = 0; l < part; l++)\n                writeTable[curAddr++] = charCode++;\n        }\n        else\n            throw new Error(\"Incorrect type '\" + typeof part + \"' given in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n    }\n    if (curAddr > 0xFF)\n        throw new Error(\"Incorrect chunk in \"  + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n    var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n    if (this.encodeTable[high] === undefined)\n        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n    return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n    if (bucket[low] <= SEQ_START)\n        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n    else if (bucket[low] == UNASSIGNED)\n        bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n    \n    // Get the root of character tree according to first character of the sequence.\n    var uCode = seq[0];\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n\n    var node;\n    if (bucket[low] <= SEQ_START) {\n        // There's already a sequence with  - use it.\n        node = this.encodeTableSeq[SEQ_START-bucket[low]];\n    }\n    else {\n        // There was no sequence object - allocate a new one.\n        node = {};\n        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n        bucket[low] = SEQ_START - this.encodeTableSeq.length;\n        this.encodeTableSeq.push(node);\n    }\n\n    // Traverse the character tree, allocating new nodes as needed.\n    for (var j = 1; j < seq.length-1; j++) {\n        var oldVal = node[uCode];\n        if (typeof oldVal === 'object')\n            node = oldVal;\n        else {\n            node = node[uCode] = {}\n            if (oldVal !== undefined)\n                node[DEF_CHAR] = oldVal\n        }\n    }\n\n    // Set the leaf to given dbcsCode.\n    uCode = seq[seq.length-1];\n    node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n    var node = this.decodeTables[nodeIdx];\n    for (var i = 0; i < 0x100; i++) {\n        var uCode = node[i];\n        var mbCode = prefix + i;\n        if (skipEncodeChars[mbCode])\n            continue;\n\n        if (uCode >= 0)\n            this._setEncodeChar(uCode, mbCode);\n        else if (uCode <= NODE_START)\n            this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);\n        else if (uCode <= SEQ_START)\n            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n    }\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n    // Encoder state\n    this.leadSurrogate = -1;\n    this.seqObj = undefined;\n    \n    // Static data\n    this.encodeTable = codec.encodeTable;\n    this.encodeTableSeq = codec.encodeTableSeq;\n    this.defaultCharSingleByte = codec.defCharSB;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n    var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n        leadSurrogate = this.leadSurrogate,\n        seqObj = this.seqObj, nextChar = -1,\n        i = 0, j = 0;\n\n    while (true) {\n        // 0. Get next character.\n        if (nextChar === -1) {\n            if (i == str.length) break;\n            var uCode = str.charCodeAt(i++);\n        }\n        else {\n            var uCode = nextChar;\n            nextChar = -1;    \n        }\n\n        // 1. Handle surrogates.\n        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n            if (uCode < 0xDC00) { // We've got lead surrogate.\n                if (leadSurrogate === -1) {\n                    leadSurrogate = uCode;\n                    continue;\n                } else {\n                    leadSurrogate = uCode;\n                    // Double lead surrogate found.\n                    uCode = UNASSIGNED;\n                }\n            } else { // We've got trail surrogate.\n                if (leadSurrogate !== -1) {\n                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n                    leadSurrogate = -1;\n                } else {\n                    // Incomplete surrogate pair - only trail surrogate found.\n                    uCode = UNASSIGNED;\n                }\n                \n            }\n        }\n        else if (leadSurrogate !== -1) {\n            // Incomplete surrogate pair - only lead surrogate found.\n            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n            leadSurrogate = -1;\n        }\n\n        // 2. Convert uCode character.\n        var dbcsCode = UNASSIGNED;\n        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n            var resCode = seqObj[uCode];\n            if (typeof resCode === 'object') { // Sequence continues.\n                seqObj = resCode;\n                continue;\n\n            } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n                dbcsCode = resCode;\n\n            } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n                // Try default character for this sequence\n                resCode = seqObj[DEF_CHAR];\n                if (resCode !== undefined) {\n                    dbcsCode = resCode; // Found. Write it.\n                    nextChar = uCode; // Current character will be written too in the next iteration.\n\n                } else {\n                    // TODO: What if we have no default? (resCode == undefined)\n                    // Then, we should write first char of the sequence as-is and try the rest recursively.\n                    // Didn't do it for now because no encoding has this situation yet.\n                    // Currently, just skip the sequence and write current char.\n                }\n            }\n            seqObj = undefined;\n        }\n        else if (uCode >= 0) {  // Regular character\n            var subtable = this.encodeTable[uCode >> 8];\n            if (subtable !== undefined)\n                dbcsCode = subtable[uCode & 0xFF];\n            \n            if (dbcsCode <= SEQ_START) { // Sequence start\n                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n                continue;\n            }\n\n            if (dbcsCode == UNASSIGNED && this.gb18030) {\n                // Use GB18030 algorithm to find character(s) to write.\n                var idx = findIdx(this.gb18030.uChars, uCode);\n                if (idx != -1) {\n                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n                    newBuf[j++] = 0x30 + dbcsCode;\n                    continue;\n                }\n            }\n        }\n\n        // 3. Write dbcsCode character.\n        if (dbcsCode === UNASSIGNED)\n            dbcsCode = this.defaultCharSingleByte;\n        \n        if (dbcsCode < 0x100) {\n            newBuf[j++] = dbcsCode;\n        }\n        else if (dbcsCode < 0x10000) {\n            newBuf[j++] = dbcsCode >> 8;   // high byte\n            newBuf[j++] = dbcsCode & 0xFF; // low byte\n        }\n        else {\n            newBuf[j++] = dbcsCode >> 16;\n            newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        }\n    }\n\n    this.seqObj = seqObj;\n    this.leadSurrogate = leadSurrogate;\n    return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n    if (this.leadSurrogate === -1 && this.seqObj === undefined)\n        return; // All clean. Most often case.\n\n    var newBuf = Buffer.alloc(10), j = 0;\n\n    if (this.seqObj) { // We're in the sequence.\n        var dbcsCode = this.seqObj[DEF_CHAR];\n        if (dbcsCode !== undefined) { // Write beginning of the sequence.\n            if (dbcsCode < 0x100) {\n                newBuf[j++] = dbcsCode;\n            }\n            else {\n                newBuf[j++] = dbcsCode >> 8;   // high byte\n                newBuf[j++] = dbcsCode & 0xFF; // low byte\n            }\n        } else {\n            // See todo above.\n        }\n        this.seqObj = undefined;\n    }\n\n    if (this.leadSurrogate !== -1) {\n        // Incomplete surrogate pair - only lead surrogate found.\n        newBuf[j++] = this.defaultCharSingleByte;\n        this.leadSurrogate = -1;\n    }\n    \n    return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n    // Decoder state\n    this.nodeIdx = 0;\n    this.prevBuf = Buffer.alloc(0);\n\n    // Static data\n    this.decodeTables = codec.decodeTables;\n    this.decodeTableSeq = codec.decodeTableSeq;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n    var newBuf = Buffer.alloc(buf.length*2),\n        nodeIdx = this.nodeIdx, \n        prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,\n        seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.\n        uCode;\n\n    if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.\n        prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);\n    \n    for (var i = 0, j = 0; i < buf.length; i++) {\n        var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];\n\n        // Lookup in current trie node.\n        var uCode = this.decodeTables[nodeIdx][curByte];\n\n        if (uCode >= 0) { \n            // Normal character, just use it.\n        }\n        else if (uCode === UNASSIGNED) { // Unknown char.\n            // TODO: Callback with seq.\n            //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n            i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).\n            uCode = this.defaultCharUnicode.charCodeAt(0);\n        }\n        else if (uCode === GB18030_CODE) {\n            var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n            var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);\n            var idx = findIdx(this.gb18030.gbChars, ptr);\n            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n        }\n        else if (uCode <= NODE_START) { // Go to next trie node.\n            nodeIdx = NODE_START - uCode;\n            continue;\n        }\n        else if (uCode <= SEQ_START) { // Output a sequence of chars.\n            var seq = this.decodeTableSeq[SEQ_START - uCode];\n            for (var k = 0; k < seq.length - 1; k++) {\n                uCode = seq[k];\n                newBuf[j++] = uCode & 0xFF;\n                newBuf[j++] = uCode >> 8;\n            }\n            uCode = seq[seq.length-1];\n        }\n        else\n            throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n        // Write the character to buffer, handling higher planes using surrogate pair.\n        if (uCode > 0xFFFF) { \n            uCode -= 0x10000;\n            var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);\n            newBuf[j++] = uCodeLead & 0xFF;\n            newBuf[j++] = uCodeLead >> 8;\n\n            uCode = 0xDC00 + uCode % 0x400;\n        }\n        newBuf[j++] = uCode & 0xFF;\n        newBuf[j++] = uCode >> 8;\n\n        // Reset trie node.\n        nodeIdx = 0; seqStart = i+1;\n    }\n\n    this.nodeIdx = nodeIdx;\n    this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);\n    return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n    var ret = '';\n\n    // Try to parse all remaining chars.\n    while (this.prevBuf.length > 0) {\n        // Skip 1 character in the buffer.\n        ret += this.defaultCharUnicode;\n        var buf = this.prevBuf.slice(1);\n\n        // Parse remaining as usual.\n        this.prevBuf = Buffer.alloc(0);\n        this.nodeIdx = 0;\n        if (buf.length > 0)\n            ret += this.write(buf);\n    }\n\n    this.nodeIdx = 0;\n    return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n    if (table[0] > val)\n        return -1;\n\n    var l = 0, r = table.length;\n    while (l < r-1) { // always table[l] <= val < table[r]\n        var mid = l + Math.floor((r-l+1)/2);\n        if (table[mid] <= val)\n            l = mid;\n        else\n            r = mid;\n    }\n    return l;\n}\n\n", "\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n    \n    // == Japanese/ShiftJIS ====================================================\n    // All japanese encodings are based on JIS X set of standards:\n    // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n    //              Has several variations in 1978, 1983, 1990 and 1997.\n    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n    //              2 planes, first is superset of 0208, second - revised 0212.\n    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n    // Byte encodings are:\n    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n    //               0x00-0x7F       - lower part of 0201\n    //               0x8E, 0xA1-0xDF - upper part of 0201\n    //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n    //               Used as-is in ISO2022 family.\n    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n    //                0201-1976 Roman, 0208-1978, 0208-1983.\n    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n    //\n    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n    //\n    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n    'shiftjis': {\n        type: '_dbcs',\n        table: function() { return require('./tables/shiftjis.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n        encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n    },\n    'csshiftjis': 'shiftjis',\n    'mskanji': 'shiftjis',\n    'sjis': 'shiftjis',\n    'windows31j': 'shiftjis',\n    'ms31j': 'shiftjis',\n    'xsjis': 'shiftjis',\n    'windows932': 'shiftjis',\n    'ms932': 'shiftjis',\n    '932': 'shiftjis',\n    'cp932': 'shiftjis',\n\n    'eucjp': {\n        type: '_dbcs',\n        table: function() { return require('./tables/eucjp.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n    },\n\n    // TODO: KDDI extension to Shift_JIS\n    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n    // == Chinese/GBK ==========================================================\n    // http://en.wikipedia.org/wiki/GBK\n    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n    'gb2312': 'cp936',\n    'gb231280': 'cp936',\n    'gb23121980': 'cp936',\n    'csgb2312': 'cp936',\n    'csiso58gb231280': 'cp936',\n    'euccn': 'cp936',\n\n    // Microsoft's CP936 is a subset and approximation of GBK.\n    'windows936': 'cp936',\n    'ms936': 'cp936',\n    '936': 'cp936',\n    'cp936': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json') },\n    },\n\n    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n    'gbk': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n    },\n    'xgbk': 'gbk',\n    'isoir58': 'gbk',\n\n    // GB18030 is an algorithmic extension of GBK.\n    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n    // http://icu-project.org/docs/papers/gb18030.html\n    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n    'gb18030': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n        gb18030: function() { return require('./tables/gb18030-ranges.json') },\n        encodeSkipVals: [0x80],\n        encodeAdd: {'\u20AC': 0xA2E3},\n    },\n\n    'chinese': 'gb18030',\n\n\n    // == Korean ===============================================================\n    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n    'windows949': 'cp949',\n    'ms949': 'cp949',\n    '949': 'cp949',\n    'cp949': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp949.json') },\n    },\n\n    'cseuckr': 'cp949',\n    'csksc56011987': 'cp949',\n    'euckr': 'cp949',\n    'isoir149': 'cp949',\n    'korean': 'cp949',\n    'ksc56011987': 'cp949',\n    'ksc56011989': 'cp949',\n    'ksc5601': 'cp949',\n\n\n    // == Big5/Taiwan/Hong Kong ================================================\n    // There are lots of tables for Big5 and cp950. Please see the following links for history:\n    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n    // Variations, in roughly number of defined chars:\n    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n    //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n    //    Plus, it has 4 combining sequences.\n    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n    //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n    // \n    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n    'windows950': 'cp950',\n    'ms950': 'cp950',\n    '950': 'cp950',\n    'cp950': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json') },\n    },\n\n    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n    'big5': 'big5hkscs',\n    'big5hkscs': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n        encodeSkipVals: [0xa2cc],\n    },\n\n    'cnbig5': 'big5hkscs',\n    'csbig5': 'big5hkscs',\n    'xxbig5': 'big5hkscs',\n};\n", "\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n    require(\"./internal\"),\n    require(\"./utf16\"),\n    require(\"./utf7\"),\n    require(\"./sbcs-codec\"),\n    require(\"./sbcs-data\"),\n    require(\"./sbcs-data-generated\"),\n    require(\"./dbcs-codec\"),\n    require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it. \nfor (var i = 0; i < modules.length; i++) {\n    var module = modules[i];\n    for (var enc in module)\n        if (Object.prototype.hasOwnProperty.call(module, enc))\n            exports[enc] = module[enc];\n}\n", "\"use strict\";\n\nvar Buffer = require(\"buffer\").Buffer,\n    Transform = require(\"stream\").Transform;\n\n\n// == Exports ==================================================================\nmodule.exports = function(iconv) {\n    \n    // Additional Public API.\n    iconv.encodeStream = function encodeStream(encoding, options) {\n        return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n    }\n\n    iconv.decodeStream = function decodeStream(encoding, options) {\n        return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n    }\n\n    iconv.supportsStreams = true;\n\n\n    // Not published yet.\n    iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;\n    iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;\n    iconv._collect = IconvLiteDecoderStream.prototype.collect;\n};\n\n\n// == Encoder stream =======================================================\nfunction IconvLiteEncoderStream(conv, options) {\n    this.conv = conv;\n    options = options || {};\n    options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n    Transform.call(this, options);\n}\n\nIconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteEncoderStream }\n});\n\nIconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n    if (typeof chunk != 'string')\n        return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n    try {\n        var res = this.conv.write(chunk);\n        if (res && res.length) this.push(res);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteEncoderStream.prototype._flush = function(done) {\n    try {\n        var res = this.conv.end();\n        if (res && res.length) this.push(res);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteEncoderStream.prototype.collect = function(cb) {\n    var chunks = [];\n    this.on('error', cb);\n    this.on('data', function(chunk) { chunks.push(chunk); });\n    this.on('end', function() {\n        cb(null, Buffer.concat(chunks));\n    });\n    return this;\n}\n\n\n// == Decoder stream =======================================================\nfunction IconvLiteDecoderStream(conv, options) {\n    this.conv = conv;\n    options = options || {};\n    options.encoding = this.encoding = 'utf8'; // We output strings.\n    Transform.call(this, options);\n}\n\nIconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteDecoderStream }\n});\n\nIconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n    if (!Buffer.isBuffer(chunk))\n        return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n    try {\n        var res = this.conv.write(chunk);\n        if (res && res.length) this.push(res, this.encoding);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteDecoderStream.prototype._flush = function(done) {\n    try {\n        var res = this.conv.end();\n        if (res && res.length) this.push(res, this.encoding);                \n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteDecoderStream.prototype.collect = function(cb) {\n    var res = '';\n    this.on('error', cb);\n    this.on('data', function(chunk) { res += chunk; });\n    this.on('end', function() {\n        cb(null, res);\n    });\n    return this;\n}\n\n", "\"use strict\";\nvar Buffer = require(\"buffer\").Buffer;\n// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer\n\n// == Extend Node primitives to use iconv-lite =================================\n\nmodule.exports = function (iconv) {\n    var original = undefined; // Place to keep original methods.\n\n    // Node authors rewrote Buffer internals to make it compatible with\n    // Uint8Array and we cannot patch key functions since then.\n    // Note: this does use older Buffer API on a purpose\n    iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);\n\n    iconv.extendNodeEncodings = function extendNodeEncodings() {\n        if (original) return;\n        original = {};\n\n        if (!iconv.supportsNodeEncodingsExtension) {\n            console.error(\"ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node\");\n            console.error(\"See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility\");\n            return;\n        }\n\n        var nodeNativeEncodings = {\n            'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, \n            'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,\n        };\n\n        Buffer.isNativeEncoding = function(enc) {\n            return enc && nodeNativeEncodings[enc.toLowerCase()];\n        }\n\n        // -- SlowBuffer -----------------------------------------------------------\n        var SlowBuffer = require('buffer').SlowBuffer;\n\n        original.SlowBufferToString = SlowBuffer.prototype.toString;\n        SlowBuffer.prototype.toString = function(encoding, start, end) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.SlowBufferToString.call(this, encoding, start, end);\n\n            // Otherwise, use our decoding method.\n            if (typeof start == 'undefined') start = 0;\n            if (typeof end == 'undefined') end = this.length;\n            return iconv.decode(this.slice(start, end), encoding);\n        }\n\n        original.SlowBufferWrite = SlowBuffer.prototype.write;\n        SlowBuffer.prototype.write = function(string, offset, length, encoding) {\n            // Support both (string, offset, length, encoding)\n            // and the legacy (string, encoding, offset, length)\n            if (isFinite(offset)) {\n                if (!isFinite(length)) {\n                    encoding = length;\n                    length = undefined;\n                }\n            } else {  // legacy\n                var swap = encoding;\n                encoding = offset;\n                offset = length;\n                length = swap;\n            }\n\n            offset = +offset || 0;\n            var remaining = this.length - offset;\n            if (!length) {\n                length = remaining;\n            } else {\n                length = +length;\n                if (length > remaining) {\n                    length = remaining;\n                }\n            }\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.SlowBufferWrite.call(this, string, offset, length, encoding);\n\n            if (string.length > 0 && (length < 0 || offset < 0))\n                throw new RangeError('attempt to write beyond buffer bounds');\n\n            // Otherwise, use our encoding method.\n            var buf = iconv.encode(string, encoding);\n            if (buf.length < length) length = buf.length;\n            buf.copy(this, offset, 0, length);\n            return length;\n        }\n\n        // -- Buffer ---------------------------------------------------------------\n\n        original.BufferIsEncoding = Buffer.isEncoding;\n        Buffer.isEncoding = function(encoding) {\n            return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);\n        }\n\n        original.BufferByteLength = Buffer.byteLength;\n        Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferByteLength.call(this, str, encoding);\n\n            // Slow, I know, but we don't have a better way yet.\n            return iconv.encode(str, encoding).length;\n        }\n\n        original.BufferToString = Buffer.prototype.toString;\n        Buffer.prototype.toString = function(encoding, start, end) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferToString.call(this, encoding, start, end);\n\n            // Otherwise, use our decoding method.\n            if (typeof start == 'undefined') start = 0;\n            if (typeof end == 'undefined') end = this.length;\n            return iconv.decode(this.slice(start, end), encoding);\n        }\n\n        original.BufferWrite = Buffer.prototype.write;\n        Buffer.prototype.write = function(string, offset, length, encoding) {\n            var _offset = offset, _length = length, _encoding = encoding;\n            // Support both (string, offset, length, encoding)\n            // and the legacy (string, encoding, offset, length)\n            if (isFinite(offset)) {\n                if (!isFinite(length)) {\n                    encoding = length;\n                    length = undefined;\n                }\n            } else {  // legacy\n                var swap = encoding;\n                encoding = offset;\n                offset = length;\n                length = swap;\n            }\n\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferWrite.call(this, string, _offset, _length, _encoding);\n\n            offset = +offset || 0;\n            var remaining = this.length - offset;\n            if (!length) {\n                length = remaining;\n            } else {\n                length = +length;\n                if (length > remaining) {\n                    length = remaining;\n                }\n            }\n\n            if (string.length > 0 && (length < 0 || offset < 0))\n                throw new RangeError('attempt to write beyond buffer bounds');\n\n            // Otherwise, use our encoding method.\n            var buf = iconv.encode(string, encoding);\n            if (buf.length < length) length = buf.length;\n            buf.copy(this, offset, 0, length);\n            return length;\n\n            // TODO: Set _charsWritten.\n        }\n\n\n        // -- Readable -------------------------------------------------------------\n        if (iconv.supportsStreams) {\n            var Readable = require('stream').Readable;\n\n            original.ReadableSetEncoding = Readable.prototype.setEncoding;\n            Readable.prototype.setEncoding = function setEncoding(enc, options) {\n                // Use our own decoder, it has the same interface.\n                // We cannot use original function as it doesn't handle BOM-s.\n                this._readableState.decoder = iconv.getDecoder(enc, options);\n                this._readableState.encoding = enc;\n            }\n\n            Readable.prototype.collect = iconv._collect;\n        }\n    }\n\n    // Remove iconv-lite Node primitive extensions.\n    iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {\n        if (!iconv.supportsNodeEncodingsExtension)\n            return;\n        if (!original)\n            throw new Error(\"require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.\")\n\n        delete Buffer.isNativeEncoding;\n\n        var SlowBuffer = require('buffer').SlowBuffer;\n\n        SlowBuffer.prototype.toString = original.SlowBufferToString;\n        SlowBuffer.prototype.write = original.SlowBufferWrite;\n\n        Buffer.isEncoding = original.BufferIsEncoding;\n        Buffer.byteLength = original.BufferByteLength;\n        Buffer.prototype.toString = original.BufferToString;\n        Buffer.prototype.write = original.BufferWrite;\n\n        if (iconv.supportsStreams) {\n            var Readable = require('stream').Readable;\n\n            Readable.prototype.setEncoding = original.ReadableSetEncoding;\n            delete Readable.prototype.collect;\n        }\n\n        original = undefined;\n    }\n}\n", "\"use strict\";\n\n// Some environments don't have global Buffer (e.g. React Native).\n// Solution would be installing npm modules \"buffer\" and \"stream\" explicitly.\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n    iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '\uFFFD';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n    str = \"\" + (str || \"\"); // Ensure string.\n\n    var encoder = iconv.getEncoder(encoding, options);\n\n    var res = encoder.write(str);\n    var trail = encoder.end();\n    \n    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n    if (typeof buf === 'string') {\n        if (!iconv.skipDecodeWarning) {\n            console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n            iconv.skipDecodeWarning = true;\n        }\n\n        buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n    }\n\n    var decoder = iconv.getDecoder(encoding, options);\n\n    var res = decoder.write(buf);\n    var trail = decoder.end();\n\n    return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n    try {\n        iconv.getCodec(enc);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n    if (!iconv.encodings)\n        iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n    \n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    var enc = iconv._canonicalizeEncoding(encoding);\n\n    // Traverse iconv.encodings to find actual codec.\n    var codecOptions = {};\n    while (true) {\n        var codec = iconv._codecDataCache[enc];\n        if (codec)\n            return codec;\n\n        var codecDef = iconv.encodings[enc];\n\n        switch (typeof codecDef) {\n            case \"string\": // Direct alias to other encoding.\n                enc = codecDef;\n                break;\n\n            case \"object\": // Alias with options. Can be layered.\n                for (var key in codecDef)\n                    codecOptions[key] = codecDef[key];\n\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n                \n                enc = codecDef.type;\n                break;\n\n            case \"function\": // Codec itself.\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n\n                // The codec function must load all tables and return object with .encoder and .decoder methods.\n                // It'll be called only once (for each different options object).\n                codec = new codecDef(codecOptions, iconv);\n\n                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n                return codec;\n\n            default:\n                throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n        }\n    }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        encoder = new codec.encoder(options, codec);\n\n    if (codec.bomAware && options && options.addBOM)\n        encoder = new bomHandling.PrependBOM(encoder, options);\n\n    return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        decoder = new codec.decoder(options, codec);\n\n    if (codec.bomAware && !(options && options.stripBOM === false))\n        decoder = new bomHandling.StripBOM(decoder, options);\n\n    return decoder;\n}\n\n\n// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.\nvar nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;\nif (nodeVer) {\n\n    // Load streaming support in Node v0.10+\n    var nodeVerArr = nodeVer.split(\".\").map(Number);\n    if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {\n        require(\"./streams\")(iconv);\n    }\n\n    // Load Node primitive extensions.\n    require(\"./extend-node\")(iconv);\n}\n\nif (\"\u0100\" != \"\\u0100\") {\n    console.error(\"iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n", "'use strict';\nvar isWindows = process.platform === 'win32';\nvar trailingSlashRe = isWindows ? /[^:]\\\\$/ : /.\\/$/;\n\n// https://github.com/nodejs/node/blob/3e7a14381497a3b73dda68d05b5130563cdab420/lib/os.js#L25-L43\nmodule.exports = function () {\n\tvar path;\n\n\tif (isWindows) {\n\t\tpath = process.env.TEMP ||\n\t\t\tprocess.env.TMP ||\n\t\t\t(process.env.SystemRoot || process.env.windir) + '\\\\temp';\n\t} else {\n\t\tpath = process.env.TMPDIR ||\n\t\t\tprocess.env.TMP ||\n\t\t\tprocess.env.TEMP ||\n\t\t\t'/tmp';\n\t}\n\n\tif (trailingSlashRe.test(path)) {\n\t\tpath = path.slice(0, -1);\n\t}\n\n\treturn path;\n};\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst path = require('path');\nconst crypto = require('crypto');\nconst osTmpDir = require('os-tmpdir');\nconst _c = process.binding('constants');\n\n/*\n * The working inner variables.\n */\nconst\n  /**\n   * The temporary directory.\n   * @type {string}\n   */\n  tmpDir = osTmpDir(),\n\n  // the random characters to choose from\n  RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n  TEMPLATE_PATTERN = /XXXXXX/,\n\n  DEFAULT_TRIES = 3,\n\n  CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n  EBADF = _c.EBADF || _c.os.errno.EBADF,\n  ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n  DIR_MODE = 448 /* 0o700 */,\n  FILE_MODE = 384 /* 0o600 */,\n\n  // this will hold the objects need to be removed on exit\n  _removeObjects = [];\n\nvar\n  _gracefulCleanup = false,\n  _uncaughtException = false;\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n  var\n    value = [],\n    rnd = null;\n\n  // make sure that we do not fail because we ran out of entropy\n  try {\n    rnd = crypto.randomBytes(howMany);\n  } catch (e) {\n    rnd = crypto.pseudoRandomBytes(howMany);\n  }\n\n  for (var i = 0; i < howMany; i++) {\n    value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n  }\n\n  return value.join('');\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n  return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|Function)} options\n * @param {Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n  if (typeof options == 'function') {\n    return [callback || {}, options];\n  }\n\n  if (_isUndefined(options)) {\n    return [{}, callback];\n  }\n\n  return [options, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n  if (opts.name) {\n    return path.join(opts.dir || tmpDir, opts.name);\n  }\n\n  // mkstemps like template\n  if (opts.template) {\n    return opts.template.replace(TEMPLATE_PATTERN, _randomChars(6));\n  }\n\n  // prefix and postfix\n  const name = [\n    opts.prefix || 'tmp-',\n    process.pid,\n    _randomChars(12),\n    opts.postfix || ''\n  ].join('');\n\n  return path.join(opts.dir || tmpDir, name);\n}\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n  var\n    args = _parseArguments(options, callback),\n    opts = args[0],\n    cb = args[1],\n    tries = opts.name ? 1 : opts.tries || DEFAULT_TRIES;\n\n  if (isNaN(tries) || tries < 0)\n    return cb(new Error('Invalid tries'));\n\n  if (opts.template && !opts.template.match(TEMPLATE_PATTERN))\n    return cb(new Error('Invalid template provided'));\n\n  (function _getUniqueName() {\n    const name = _generateTmpName(opts);\n\n    // check whether the path exists then retry if needed\n    fs.stat(name, function (err) {\n      if (!err) {\n        if (tries-- > 0) return _getUniqueName();\n\n        return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n      }\n\n      cb(null, name);\n    });\n  }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n  var\n    args = _parseArguments(options),\n    opts = args[0],\n    tries = opts.name ? 1 : opts.tries || DEFAULT_TRIES;\n\n  if (isNaN(tries) || tries < 0)\n    throw new Error('Invalid tries');\n\n  if (opts.template && !opts.template.match(TEMPLATE_PATTERN))\n    throw new Error('Invalid template provided');\n\n  do {\n    const name = _generateTmpName(opts);\n    try {\n      fs.statSync(name);\n    } catch (e) {\n      return name;\n    }\n  } while (tries-- > 0);\n\n  throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|fileCallback)} options the config options or the callback function\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n  var\n    args = _parseArguments(options, callback),\n    opts = args[0],\n    cb = args[1];\n\n  opts.postfix = (_isUndefined(opts.postfix)) ? '.tmp' : opts.postfix;\n\n  // gets a temporary filename\n  tmpName(opts, function _tmpNameCreated(err, name) {\n    if (err) return cb(err);\n\n    // create and open the file\n    fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n      if (err) return cb(err);\n\n      if (opts.discardDescriptor) {\n        return fs.close(fd, function _discardCallback(err) {\n          if (err) {\n            // Low probability, and the file exists, so this could be\n            // ignored.  If it isn't we certainly need to unlink the\n            // file, and if that fails too its error is more\n            // important.\n            try {\n              fs.unlinkSync(name);\n            } catch (e) {\n              if (!isENOENT(e)) {\n                err = e;\n              }\n            }\n            return cb(err);\n          }\n          cb(null, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts));\n        });\n      }\n      if (opts.detachDescriptor) {\n        return cb(null, name, fd, _prepareTmpFileRemoveCallback(name, -1, opts));\n      }\n      cb(null, name, fd, _prepareTmpFileRemoveCallback(name, fd, opts));\n    });\n  });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n  var\n    args = _parseArguments(options),\n    opts = args[0];\n\n  opts.postfix = opts.postfix || '.tmp';\n\n  const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n  const name = tmpNameSync(opts);\n  var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n  if (opts.discardDescriptor) {\n    fs.closeSync(fd); \n    fd = undefined;\n  }\n\n  return {\n    name: name,\n    fd: fd,\n    removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts)\n  };\n}\n\n/**\n * Removes files and folders in a directory recursively.\n *\n * @param {string} root\n * @private\n */\nfunction _rmdirRecursiveSync(root) {\n  const dirs = [root];\n\n  do {\n    var\n      dir = dirs.pop(),\n      deferred = false,\n      files = fs.readdirSync(dir);\n\n    for (var i = 0, length = files.length; i < length; i++) {\n      var\n        file = path.join(dir, files[i]),\n        stat = fs.lstatSync(file); // lstat so we don't recurse into symlinked directories\n\n      if (stat.isDirectory()) {\n        if (!deferred) {\n          deferred = true;\n          dirs.push(dir);\n        }\n        dirs.push(file);\n      } else {\n        fs.unlinkSync(file);\n      }\n    }\n\n    if (!deferred) {\n      fs.rmdirSync(dir);\n    }\n  } while (dirs.length !== 0);\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n  var\n    args = _parseArguments(options, callback),\n    opts = args[0],\n    cb = args[1];\n\n  // gets a temporary filename\n  tmpName(opts, function _tmpNameCreated(err, name) {\n    if (err) return cb(err);\n\n    // create the directory\n    fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n      if (err) return cb(err);\n\n      cb(null, name, _prepareTmpDirRemoveCallback(name, opts));\n    });\n  });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n  var\n    args = _parseArguments(options),\n    opts = args[0];\n\n  const name = tmpNameSync(opts);\n  fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n  return {\n    name: name,\n    removeCallback: _prepareTmpDirRemoveCallback(name, opts)\n  };\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @returns {fileCallback}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts) {\n  const removeCallback = _prepareRemoveCallback(function _removeCallback(fdPath) {\n    try {\n      if (0 <= fdPath[0]) {\n        fs.closeSync(fdPath[0]);\n      }\n    }\n    catch (e) {\n      // under some node/windows related circumstances, a temporary file\n      // may have not be created as expected or the file was already closed\n      // by the user, in which case we will simply ignore the error\n      if (!isEBADF(e) && !isENOENT(e)) {\n        // reraise any unanticipated error\n        throw e;\n      }\n    }\n    try {\n      fs.unlinkSync(fdPath[1]);\n    }\n    catch (e) {\n      if (!isENOENT(e)) {\n        // reraise any unanticipated error\n        throw e;\n      }\n    }\n  }, [fd, name]);\n\n  if (!opts.keep) {\n    _removeObjects.unshift(removeCallback);\n  }\n\n  return removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * @param {string} name\n * @param {Object} opts\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts) {\n  const removeFunction = opts.unsafeCleanup ? _rmdirRecursiveSync : fs.rmdirSync.bind(fs);\n  const removeCallback = _prepareRemoveCallback(removeFunction, name);\n\n  if (!opts.keep) {\n    _removeObjects.unshift(removeCallback);\n  }\n\n  return removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * @param {Function} removeFunction\n * @param {Object} arg\n * @returns {Function}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, arg) {\n  var called = false;\n\n  return function _cleanupCallback(next) {\n    if (!called) {\n      const index = _removeObjects.indexOf(_cleanupCallback);\n      if (index >= 0) {\n        _removeObjects.splice(index, 1);\n      }\n\n      called = true;\n      removeFunction(arg);\n    }\n\n    if (next) next(null);\n  };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n  if (_uncaughtException && !_gracefulCleanup) {\n    return;\n  }\n\n  // the function being called removes itself from _removeObjects,\n  // loop until _removeObjects is empty\n  while (_removeObjects.length) {\n    try {\n      _removeObjects[0].call(null);\n    } catch (e) {\n      // already removed?\n    }\n  }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n */\nfunction isEBADF(error) {\n  return isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n */\nfunction isENOENT(error) {\n  return isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n *   error.code {String}\n *   error.errno {String|Number} any numerical value will be negated\n *\n * - Node >= 6.0 < 7.0:\n *   error.code {String}\n *   error.errno {Number} negated\n *\n * - Node >= 4.0 < 6.0: introduces SystemError\n *   error.code {String}\n *   error.errno {Number} negated\n *\n * - Node >= 0.10 < 4.0:\n *   error.code {Number} negated\n *   error.errno n/a\n */\nfunction isExpectedError(error, code, errno) {\n  return error.code == code || error.code == errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * Also removes the created files and directories when an uncaught exception occurs.\n */\nfunction setGracefulCleanup() {\n  _gracefulCleanup = true;\n}\n\nconst version = process.versions.node.split('.').map(function (value) {\n  return parseInt(value, 10);\n});\n\nif (version[0] === 0 && (version[1] < 9 || version[1] === 9 && version[2] < 5)) {\n  process.addListener('uncaughtException', function _uncaughtExceptionThrown(err) {\n    _uncaughtException = true;\n    _garbageCollector();\n\n    throw err;\n  });\n}\n\nprocess.addListener('exit', function _exit(code) {\n  if (code) _uncaughtException = true;\n  _garbageCollector();\n});\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?number} tries the number of tries before give up the name generation\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fix name\n * @property {?string} dir the tmp directory to use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call after entry was removed\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\nmodule.exports.tmpdir = tmpDir;\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2018\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CreateFileError = /** @class */ (function (_super) {\n    __extends(CreateFileError, _super);\n    function CreateFileError(originalError) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, \"Failed to create temporary file for editor\") || this;\n        _this.originalError = originalError;\n        var proto = _newTarget.prototype;\n        if (Object.setPrototypeOf) {\n            Object.setPrototypeOf(_this, proto);\n        }\n        else {\n            _this.__proto__ = _newTarget.prototype;\n        }\n        return _this;\n    }\n    return CreateFileError;\n}(Error));\nexports.CreateFileError = CreateFileError;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2018\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LaunchEditorError = /** @class */ (function (_super) {\n    __extends(LaunchEditorError, _super);\n    function LaunchEditorError(originalError) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, \"Failed launch editor\") || this;\n        _this.originalError = originalError;\n        var proto = _newTarget.prototype;\n        if (Object.setPrototypeOf) {\n            Object.setPrototypeOf(_this, proto);\n        }\n        else {\n            _this.__proto__ = _newTarget.prototype;\n        }\n        return _this;\n    }\n    return LaunchEditorError;\n}(Error));\nexports.LaunchEditorError = LaunchEditorError;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2018\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ReadFileError = /** @class */ (function (_super) {\n    __extends(ReadFileError, _super);\n    function ReadFileError(originalError) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, \"Failed to read temporary file\") || this;\n        _this.originalError = originalError;\n        var proto = _newTarget.prototype;\n        if (Object.setPrototypeOf) {\n            Object.setPrototypeOf(_this, proto);\n        }\n        else {\n            _this.__proto__ = _newTarget.prototype;\n        }\n        return _this;\n    }\n    return ReadFileError;\n}(Error));\nexports.ReadFileError = ReadFileError;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2018\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RemoveFileError = /** @class */ (function (_super) {\n    __extends(RemoveFileError, _super);\n    function RemoveFileError(originalError) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, \"Failed to cleanup temporary file\") || this;\n        _this.originalError = originalError;\n        var proto = _newTarget.prototype;\n        if (Object.setPrototypeOf) {\n            Object.setPrototypeOf(_this, proto);\n        }\n        else {\n            _this.__proto__ = _newTarget.prototype;\n        }\n        return _this;\n    }\n    return RemoveFileError;\n}(Error));\nexports.RemoveFileError = RemoveFileError;\n", "\"use strict\";\n/***\n * Node External Editor\n *\n * Kevin Gravier \n * MIT 2019\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chardet_1 = require(\"chardet\");\nvar child_process_1 = require(\"child_process\");\nvar fs_1 = require(\"fs\");\nvar iconv_lite_1 = require(\"iconv-lite\");\nvar tmp_1 = require(\"tmp\");\nvar CreateFileError_1 = require(\"./errors/CreateFileError\");\nexports.CreateFileError = CreateFileError_1.CreateFileError;\nvar LaunchEditorError_1 = require(\"./errors/LaunchEditorError\");\nexports.LaunchEditorError = LaunchEditorError_1.LaunchEditorError;\nvar ReadFileError_1 = require(\"./errors/ReadFileError\");\nexports.ReadFileError = ReadFileError_1.ReadFileError;\nvar RemoveFileError_1 = require(\"./errors/RemoveFileError\");\nexports.RemoveFileError = RemoveFileError_1.RemoveFileError;\nfunction edit(text, fileOptions) {\n    if (text === void 0) { text = \"\"; }\n    var editor = new ExternalEditor(text, fileOptions);\n    editor.run();\n    editor.cleanup();\n    return editor.text;\n}\nexports.edit = edit;\nfunction editAsync(text, callback, fileOptions) {\n    if (text === void 0) { text = \"\"; }\n    var editor = new ExternalEditor(text, fileOptions);\n    editor.runAsync(function (err, result) {\n        if (err) {\n            setImmediate(callback, err, null);\n        }\n        else {\n            try {\n                editor.cleanup();\n                setImmediate(callback, null, result);\n            }\n            catch (cleanupError) {\n                setImmediate(callback, cleanupError, null);\n            }\n        }\n    });\n}\nexports.editAsync = editAsync;\nvar ExternalEditor = /** @class */ (function () {\n    function ExternalEditor(text, fileOptions) {\n        if (text === void 0) { text = \"\"; }\n        this.text = \"\";\n        this.fileOptions = {};\n        this.text = text;\n        if (fileOptions) {\n            this.fileOptions = fileOptions;\n        }\n        this.determineEditor();\n        this.createTemporaryFile();\n    }\n    ExternalEditor.splitStringBySpace = function (str) {\n        var pieces = [];\n        var currentString = \"\";\n        for (var strIndex = 0; strIndex < str.length; strIndex++) {\n            var currentLetter = str[strIndex];\n            if (strIndex > 0 && currentLetter === \" \" && str[strIndex - 1] !== \"\\\\\" && currentString.length > 0) {\n                pieces.push(currentString);\n                currentString = \"\";\n            }\n            else {\n                currentString += currentLetter;\n            }\n        }\n        if (currentString.length > 0) {\n            pieces.push(currentString);\n        }\n        return pieces;\n    };\n    Object.defineProperty(ExternalEditor.prototype, \"temp_file\", {\n        get: function () {\n            console.log(\"DEPRECATED: temp_file. Use tempFile moving forward.\");\n            return this.tempFile;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ExternalEditor.prototype, \"last_exit_status\", {\n        get: function () {\n            console.log(\"DEPRECATED: last_exit_status. Use lastExitStatus moving forward.\");\n            return this.lastExitStatus;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ExternalEditor.prototype.run = function () {\n        this.launchEditor();\n        this.readTemporaryFile();\n        return this.text;\n    };\n    ExternalEditor.prototype.runAsync = function (callback) {\n        var _this = this;\n        try {\n            this.launchEditorAsync(function () {\n                try {\n                    _this.readTemporaryFile();\n                    setImmediate(callback, null, _this.text);\n                }\n                catch (readError) {\n                    setImmediate(callback, readError, null);\n                }\n            });\n        }\n        catch (launchError) {\n            setImmediate(callback, launchError, null);\n        }\n    };\n    ExternalEditor.prototype.cleanup = function () {\n        this.removeTemporaryFile();\n    };\n    ExternalEditor.prototype.determineEditor = function () {\n        var editor = process.env.VISUAL ? process.env.VISUAL :\n            process.env.EDITOR ? process.env.EDITOR :\n                /^win/.test(process.platform) ? \"notepad\" :\n                    \"vim\";\n        var editorOpts = ExternalEditor.splitStringBySpace(editor).map(function (piece) { return piece.replace(\"\\\\ \", \" \"); });\n        var bin = editorOpts.shift();\n        this.editor = { args: editorOpts, bin: bin };\n    };\n    ExternalEditor.prototype.createTemporaryFile = function () {\n        try {\n            this.tempFile = tmp_1.tmpNameSync(this.fileOptions);\n            var opt = { encoding: \"utf8\" };\n            if (this.fileOptions.hasOwnProperty(\"mode\")) {\n                opt.mode = this.fileOptions.mode;\n            }\n            fs_1.writeFileSync(this.tempFile, this.text, opt);\n        }\n        catch (createFileError) {\n            throw new CreateFileError_1.CreateFileError(createFileError);\n        }\n    };\n    ExternalEditor.prototype.readTemporaryFile = function () {\n        try {\n            var tempFileBuffer = fs_1.readFileSync(this.tempFile);\n            if (tempFileBuffer.length === 0) {\n                this.text = \"\";\n            }\n            else {\n                var encoding = chardet_1.detect(tempFileBuffer).toString();\n                if (!iconv_lite_1.encodingExists(encoding)) {\n                    // Probably a bad idea, but will at least prevent crashing\n                    encoding = \"utf8\";\n                }\n                this.text = iconv_lite_1.decode(tempFileBuffer, encoding);\n            }\n        }\n        catch (readFileError) {\n            throw new ReadFileError_1.ReadFileError(readFileError);\n        }\n    };\n    ExternalEditor.prototype.removeTemporaryFile = function () {\n        try {\n            fs_1.unlinkSync(this.tempFile);\n        }\n        catch (removeFileError) {\n            throw new RemoveFileError_1.RemoveFileError(removeFileError);\n        }\n    };\n    ExternalEditor.prototype.launchEditor = function () {\n        try {\n            var editorProcess = child_process_1.spawnSync(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: \"inherit\" });\n            this.lastExitStatus = editorProcess.status;\n        }\n        catch (launchError) {\n            throw new LaunchEditorError_1.LaunchEditorError(launchError);\n        }\n    };\n    ExternalEditor.prototype.launchEditorAsync = function (callback) {\n        var _this = this;\n        try {\n            var editorProcess = child_process_1.spawn(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: \"inherit\" });\n            editorProcess.on(\"exit\", function (code) {\n                _this.lastExitStatus = code;\n                setImmediate(callback);\n            });\n        }\n        catch (launchError) {\n            throw new LaunchEditorError_1.LaunchEditorError(launchError);\n        }\n    };\n    return ExternalEditor;\n}());\nexports.ExternalEditor = ExternalEditor;\n", "'use strict'\n\nconst CATCH_ALL = /()(.+)/gi\nconst SCISSOR = '# ------------------------ >8 ------------------------'\n\nfunction trimOffNewlines (input) {\n  const result = input.match(/[^\\r\\n]/)\n  if (!result) {\n    return ''\n  }\n  const firstIndex = result.index\n  let lastIndex = input.length - 1\n  while (input[lastIndex] === '\\r' || input[lastIndex] === '\\n') {\n    lastIndex--\n  }\n  return input.substring(firstIndex, lastIndex + 1)\n}\n\nfunction append (src, line) {\n  if (src) {\n    src += '\\n' + line\n  } else {\n    src = line\n  }\n\n  return src\n}\n\nfunction getCommentFilter (char) {\n  return function (line) {\n    return line.charAt(0) !== char\n  }\n}\n\nfunction truncateToScissor (lines) {\n  const scissorIndex = lines.indexOf(SCISSOR)\n\n  if (scissorIndex === -1) {\n    return lines\n  }\n\n  return lines.slice(0, scissorIndex)\n}\n\nfunction getReferences (input, regex) {\n  const references = []\n  let referenceSentences\n  let referenceMatch\n\n  const reApplicable = input.match(regex.references) !== null\n    ? regex.references\n    : CATCH_ALL\n\n  while ((referenceSentences = reApplicable.exec(input))) {\n    const action = referenceSentences[1] || null\n    const sentence = referenceSentences[2]\n\n    while ((referenceMatch = regex.referenceParts.exec(sentence))) {\n      let owner = null\n      let repository = referenceMatch[1] || ''\n      const ownerRepo = repository.split('/')\n\n      if (ownerRepo.length > 1) {\n        owner = ownerRepo.shift()\n        repository = ownerRepo.join('/')\n      }\n\n      const reference = {\n        action,\n        owner,\n        repository: repository || null,\n        issue: referenceMatch[3],\n        raw: referenceMatch[0],\n        prefix: referenceMatch[2]\n      }\n\n      references.push(reference)\n    }\n  }\n\n  return references\n}\n\nfunction passTrough () {\n  return true\n}\n\nfunction parser (raw, options, regex) {\n  if (!raw || !raw.trim()) {\n    throw new TypeError('Expected a raw commit')\n  }\n\n  if (!options || (typeof options === 'object' && !Object.keys(options).length)) {\n    throw new TypeError('Expected options')\n  }\n\n  if (!regex) {\n    throw new TypeError('Expected regex')\n  }\n\n  let currentProcessedField\n  let mentionsMatch\n  const otherFields = {}\n  const commentFilter = typeof options.commentChar === 'string'\n    ? getCommentFilter(options.commentChar)\n    : passTrough\n  const gpgFilter = line => !line.match(/^\\s*gpg:/)\n\n  const rawLines = trimOffNewlines(raw).split(/\\r?\\n/)\n  const lines = truncateToScissor(rawLines).filter(commentFilter).filter(gpgFilter)\n\n  let continueNote = false\n  let isBody = true\n  const headerCorrespondence = options.headerCorrespondence?.map(function (part) {\n    return part.trim()\n  }) || []\n  const revertCorrespondence = options.revertCorrespondence?.map(function (field) {\n    return field.trim()\n  }) || []\n  const mergeCorrespondence = options.mergeCorrespondence?.map(function (field) {\n    return field.trim()\n  }) || []\n\n  let body = null\n  let footer = null\n  let header = null\n  const mentions = []\n  let merge = null\n  const notes = []\n  const references = []\n  let revert = null\n\n  if (lines.length === 0) {\n    return {\n      body,\n      footer,\n      header,\n      mentions,\n      merge,\n      notes,\n      references,\n      revert,\n      scope: null,\n      subject: null,\n      type: null\n    }\n  }\n\n  // msg parts\n  merge = lines.shift()\n  const mergeParts = {}\n  const headerParts = {}\n  body = ''\n  footer = ''\n\n  const mergeMatch = merge.match(options.mergePattern)\n  if (mergeMatch && options.mergePattern) {\n    merge = mergeMatch[0]\n\n    header = lines.shift()\n    while (header !== undefined && !header.trim()) {\n      header = lines.shift()\n    }\n    if (!header) {\n      header = ''\n    }\n\n    mergeCorrespondence.forEach(function (partName, index) {\n      const partValue = mergeMatch[index + 1] || null\n      mergeParts[partName] = partValue\n    })\n  } else {\n    header = merge\n    merge = null\n\n    mergeCorrespondence.forEach(function (partName) {\n      mergeParts[partName] = null\n    })\n  }\n\n  const headerMatch = header.match(options.headerPattern)\n  if (headerMatch) {\n    headerCorrespondence.forEach(function (partName, index) {\n      const partValue = headerMatch[index + 1] || null\n      headerParts[partName] = partValue\n    })\n  } else {\n    headerCorrespondence.forEach(function (partName) {\n      headerParts[partName] = null\n    })\n  }\n\n  references.push(...getReferences(header, {\n    references: regex.references,\n    referenceParts: regex.referenceParts\n  }))\n\n  // body or footer\n  lines.forEach(function (line) {\n    if (options.fieldPattern) {\n      const fieldMatch = options.fieldPattern.exec(line)\n\n      if (fieldMatch) {\n        currentProcessedField = fieldMatch[1]\n\n        return\n      }\n\n      if (currentProcessedField) {\n        otherFields[currentProcessedField] = append(otherFields[currentProcessedField], line)\n\n        return\n      }\n    }\n\n    let referenceMatched\n\n    // this is a new important note\n    const notesMatch = line.match(regex.notes)\n    if (notesMatch) {\n      continueNote = true\n      isBody = false\n      footer = append(footer, line)\n\n      const note = {\n        title: notesMatch[1],\n        text: notesMatch[2]\n      }\n\n      notes.push(note)\n\n      return\n    }\n\n    const lineReferences = getReferences(line, {\n      references: regex.references,\n      referenceParts: regex.referenceParts\n    })\n\n    if (lineReferences.length > 0) {\n      isBody = false\n      referenceMatched = true\n      continueNote = false\n    }\n\n    Array.prototype.push.apply(references, lineReferences)\n\n    if (referenceMatched) {\n      footer = append(footer, line)\n\n      return\n    }\n\n    if (continueNote) {\n      notes[notes.length - 1].text = append(notes[notes.length - 1].text, line)\n      footer = append(footer, line)\n\n      return\n    }\n\n    if (isBody) {\n      body = append(body, line)\n    } else {\n      footer = append(footer, line)\n    }\n  })\n\n  if (options.breakingHeaderPattern && notes.length === 0) {\n    const breakingHeader = header.match(options.breakingHeaderPattern)\n    if (breakingHeader) {\n      const noteText = breakingHeader[3] // the description of the change.\n      notes.push({\n        title: 'BREAKING CHANGE',\n        text: noteText\n      })\n    }\n  }\n\n  while ((mentionsMatch = regex.mentions.exec(raw))) {\n    mentions.push(mentionsMatch[1])\n  }\n\n  // does this commit revert any other commit?\n  const revertMatch = raw.match(options.revertPattern)\n  if (revertMatch) {\n    revert = {}\n    revertCorrespondence.forEach(function (partName, index) {\n      const partValue = revertMatch[index + 1] || null\n      revert[partName] = partValue\n    })\n  } else {\n    revert = null\n  }\n\n  notes.forEach(function (note) {\n    note.text = trimOffNewlines(note.text)\n  })\n\n  const msg = {\n    ...headerParts,\n    ...mergeParts,\n    merge,\n    header,\n    body: body ? trimOffNewlines(body) : null,\n    footer: footer ? trimOffNewlines(footer) : null,\n    notes,\n    references,\n    mentions,\n    revert,\n    ...otherFields\n  }\n\n  return msg\n}\n\nmodule.exports = parser\n", "'use strict'\n\nconst reNomatch = /(?!.*)/\n\nfunction join (array, joiner) {\n  return array\n    .map(function (val) {\n      return val.trim()\n    })\n    .filter(function (val) {\n      return val.length\n    })\n    .join(joiner)\n}\n\nfunction getNotesRegex (noteKeywords, notesPattern) {\n  if (!noteKeywords) {\n    return reNomatch\n  }\n\n  const noteKeywordsSelection = join(noteKeywords, '|')\n\n  if (!notesPattern) {\n    return new RegExp('^[\\\\s|*]*(' + noteKeywordsSelection + ')[:\\\\s]+(.*)', 'i')\n  }\n\n  return notesPattern(noteKeywordsSelection)\n}\n\nfunction getReferencePartsRegex (issuePrefixes, issuePrefixesCaseSensitive) {\n  if (!issuePrefixes) {\n    return reNomatch\n  }\n\n  const flags = issuePrefixesCaseSensitive ? 'g' : 'gi'\n  return new RegExp('(?:.*?)??\\\\s*([\\\\w-\\\\.\\\\/]*?)??(' + join(issuePrefixes, '|') + ')([\\\\w-]*\\\\d+)', flags)\n}\n\nfunction getReferencesRegex (referenceActions) {\n  if (!referenceActions) {\n    // matches everything\n    return /()(.+)/gi\n  }\n\n  const joinedKeywords = join(referenceActions, '|')\n  return new RegExp('(' + joinedKeywords + ')(?:\\\\s+(.*?))(?=(?:' + joinedKeywords + ')|$)', 'gi')\n}\n\nmodule.exports = function (options) {\n  options = options || {}\n  const reNotes = getNotesRegex(options.noteKeywords, options.notesPattern)\n  const reReferenceParts = getReferencePartsRegex(options.issuePrefixes, options.issuePrefixesCaseSensitive)\n  const reReferences = getReferencesRegex(options.referenceActions)\n\n  return {\n    notes: reNotes,\n    referenceParts: reReferenceParts,\n    references: reReferences,\n    mentions: /@([\\w-]+)/g\n  }\n}\n", "'use strict'\n\nconst { Transform } = require('stream')\nconst parser = require('./lib/parser')\nconst regex = require('./lib/regex')\n\nfunction assignOpts (options) {\n  options = {\n    headerPattern: /^(\\w*)(?:\\(([\\w$.\\-*/ ]*)\\))?: (.*)$/,\n    headerCorrespondence: ['type', 'scope', 'subject'],\n    referenceActions: [\n      'close',\n      'closes',\n      'closed',\n      'fix',\n      'fixes',\n      'fixed',\n      'resolve',\n      'resolves',\n      'resolved'\n    ],\n    issuePrefixes: ['#'],\n    noteKeywords: ['BREAKING CHANGE', 'BREAKING-CHANGE'],\n    fieldPattern: /^-(.*?)-$/,\n    revertPattern: /^Revert\\s\"([\\s\\S]*)\"\\s*This reverts commit (\\w*)\\./,\n    revertCorrespondence: ['header', 'hash'],\n    warn: function () {},\n    mergePattern: null,\n    mergeCorrespondence: null,\n    ...options\n  }\n\n  if (typeof options.headerPattern === 'string') {\n    options.headerPattern = new RegExp(options.headerPattern)\n  }\n\n  if (typeof options.headerCorrespondence === 'string') {\n    options.headerCorrespondence = options.headerCorrespondence.split(',')\n  }\n\n  if (typeof options.referenceActions === 'string') {\n    options.referenceActions = options.referenceActions.split(',')\n  }\n\n  if (typeof options.issuePrefixes === 'string') {\n    options.issuePrefixes = options.issuePrefixes.split(',')\n  }\n\n  if (typeof options.noteKeywords === 'string') {\n    options.noteKeywords = options.noteKeywords.split(',')\n  }\n\n  if (typeof options.fieldPattern === 'string') {\n    options.fieldPattern = new RegExp(options.fieldPattern)\n  }\n\n  if (typeof options.revertPattern === 'string') {\n    options.revertPattern = new RegExp(options.revertPattern)\n  }\n\n  if (typeof options.revertCorrespondence === 'string') {\n    options.revertCorrespondence = options.revertCorrespondence.split(',')\n  }\n\n  if (typeof options.mergePattern === 'string') {\n    options.mergePattern = new RegExp(options.mergePattern)\n  }\n\n  return options\n}\n\nfunction conventionalCommitsParser (options) {\n  options = assignOpts(options)\n  const reg = regex(options)\n\n  return new Transform({\n    objectMode: true,\n    highWaterMark: 16,\n    transform (data, enc, cb) {\n      let commit\n\n      try {\n        commit = parser(data.toString(), options, reg)\n        cb(null, commit)\n      } catch (err) {\n        if (options.warn === true) {\n          cb(err)\n        } else {\n          options.warn(err.toString())\n          cb(null, '')\n        }\n      }\n    }\n  })\n}\n\nfunction sync (commit, options) {\n  options = assignOpts(options)\n  const reg = regex(options)\n\n  return parser(commit, options, reg)\n}\n\nmodule.exports = conventionalCommitsParser\nmodule.exports.sync = sync\n", "/*\nCopyright (c) 2014-2021, Matteo Collina \n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n*/\n\n'use strict'\n\nconst { Transform } = require('stream')\nconst { StringDecoder } = require('string_decoder')\nconst kLast = Symbol('last')\nconst kDecoder = Symbol('decoder')\n\nfunction transform (chunk, enc, cb) {\n  let list\n  if (this.overflow) { // Line buffer is full. Skip to start of next line.\n    const buf = this[kDecoder].write(chunk)\n    list = buf.split(this.matcher)\n\n    if (list.length === 1) return cb() // Line ending not found. Discard entire chunk.\n\n    // Line ending found. Discard trailing fragment of previous line and reset overflow state.\n    list.shift()\n    this.overflow = false\n  } else {\n    this[kLast] += this[kDecoder].write(chunk)\n    list = this[kLast].split(this.matcher)\n  }\n\n  this[kLast] = list.pop()\n\n  for (let i = 0; i < list.length; i++) {\n    try {\n      push(this, this.mapper(list[i]))\n    } catch (error) {\n      return cb(error)\n    }\n  }\n\n  this.overflow = this[kLast].length > this.maxLength\n  if (this.overflow && !this.skipOverflow) {\n    cb(new Error('maximum buffer reached'))\n    return\n  }\n\n  cb()\n}\n\nfunction flush (cb) {\n  // forward any gibberish left in there\n  this[kLast] += this[kDecoder].end()\n\n  if (this[kLast]) {\n    try {\n      push(this, this.mapper(this[kLast]))\n    } catch (error) {\n      return cb(error)\n    }\n  }\n\n  cb()\n}\n\nfunction push (self, val) {\n  if (val !== undefined) {\n    self.push(val)\n  }\n}\n\nfunction noop (incoming) {\n  return incoming\n}\n\nfunction split (matcher, mapper, options) {\n  // Set defaults for any arguments not supplied.\n  matcher = matcher || /\\r?\\n/\n  mapper = mapper || noop\n  options = options || {}\n\n  // Test arguments explicitly.\n  switch (arguments.length) {\n    case 1:\n      // If mapper is only argument.\n      if (typeof matcher === 'function') {\n        mapper = matcher\n        matcher = /\\r?\\n/\n      // If options is only argument.\n      } else if (typeof matcher === 'object' && !(matcher instanceof RegExp) && !matcher[Symbol.split]) {\n        options = matcher\n        matcher = /\\r?\\n/\n      }\n      break\n\n    case 2:\n      // If mapper and options are arguments.\n      if (typeof matcher === 'function') {\n        options = mapper\n        mapper = matcher\n        matcher = /\\r?\\n/\n      // If matcher and options are arguments.\n      } else if (typeof mapper === 'object') {\n        options = mapper\n        mapper = noop\n      }\n  }\n\n  options = Object.assign({}, options)\n  options.autoDestroy = true\n  options.transform = transform\n  options.flush = flush\n  options.readableObjectMode = true\n\n  const stream = new Transform(options)\n\n  stream[kLast] = ''\n  stream[kDecoder] = new StringDecoder('utf8')\n  stream.matcher = matcher\n  stream.mapper = mapper\n  stream.maxLength = options.maxLength\n  stream.skipOverflow = options.skipOverflow || false\n  stream.overflow = false\n  stream._destroy = function (err, cb) {\n    // Weird Node v12 bug that we need to work around\n    this._writableState.errorEmitted = false\n    cb(err)\n  }\n\n  return stream\n}\n\nmodule.exports = split\n", "\nconst { Readable, Transform } = require('stream')\nconst { execFile } = require('child_process')\nconst split = require('split2')\n\nconst DELIMITER = '------------------------ >8 ------------------------'\n\nfunction normalizeExecOpts (execOpts) {\n  execOpts = execOpts || {}\n  execOpts.cwd = execOpts.cwd || process.cwd()\n\n  return execOpts\n}\n\nfunction normalizeGitOpts (gitOpts) {\n  gitOpts = gitOpts || {}\n  gitOpts.format = gitOpts.format || '%B'\n  gitOpts.from = gitOpts.from || ''\n  gitOpts.to = gitOpts.to || 'HEAD'\n\n  return gitOpts\n}\n\nasync function getGitArgs (gitOpts) {\n  const { default: dargs } = await import('dargs')\n  const gitFormat = `--format=${gitOpts.format || ''}%n${DELIMITER}`\n  const gitFromTo = [gitOpts.from, gitOpts.to].filter(Boolean).join('..')\n  const gitArgs = ['log', gitFormat, gitFromTo]\n    .concat(dargs(gitOpts, {\n      excludes: ['debug', 'from', 'to', 'format', 'path', 'ignore']\n    }))\n\n  // allow commits to focus on specific directories.\n  // this is useful for monorepos.\n  if (gitOpts.path) {\n    gitArgs.push('--', ...Array.isArray(gitOpts.path) ? gitOpts.path : [gitOpts.path])\n  }\n\n  return gitArgs\n}\n\nfunction gitRawCommits (rawGitOpts, rawExecOpts) {\n  const readable = new Readable()\n  readable._read = () => {}\n\n  const gitOpts = normalizeGitOpts(rawGitOpts)\n  const execOpts = normalizeExecOpts(rawExecOpts)\n  let isError = false\n\n  getGitArgs(gitOpts).then((args) => {\n    if (gitOpts.debug) {\n      gitOpts.debug('Your git-log command is:\\ngit ' + args.join(' '))\n    }\n\n    const ignoreRegex = typeof gitOpts.ignore === 'string'\n      ? new RegExp(gitOpts.ignore)\n      : gitOpts.ignore\n    const shouldNotIgnore = ignoreRegex\n      ? chunk => !ignoreRegex.test(chunk.toString())\n      : () => true\n\n    const child = execFile('git', args, {\n      cwd: execOpts.cwd,\n      maxBuffer: Infinity\n    })\n\n    child.stdout\n      .pipe(split(DELIMITER + '\\n'))\n      .pipe(\n        new Transform({\n          transform (chunk, enc, cb) {\n            isError = false\n            setImmediate(() => {\n              if (shouldNotIgnore(chunk)) {\n                readable.push(chunk)\n              }\n              cb()\n            })\n          },\n          flush (cb) {\n            setImmediate(() => {\n              if (!isError) {\n                readable.push(null)\n                readable.emit('close')\n              }\n\n              cb()\n            })\n          }\n        })\n      )\n\n    child.stderr\n      .pipe(\n        new Transform({\n          objectMode: true,\n          highWaterMark: 16,\n          transform (chunk) {\n            isError = true\n            readable.emit('error', new Error(chunk))\n            readable.emit('close')\n          }\n        })\n      )\n  })\n\n  return readable\n}\n\nmodule.exports = gitRawCommits\n", "\n// ETA calculation\nclass ETA{\n\n    constructor(length, initTime, initValue){\n        // size of eta buffer\n        this.etaBufferLength = length || 100;\n\n        // eta buffer with initial values\n        this.valueBuffer = [initValue];\n        this.timeBuffer = [initTime];\n\n        // eta time value\n        this.eta = '0';\n    }\n\n    // add new values to calculation buffer\n    update(time, value, total){\n        this.valueBuffer.push(value);\n        this.timeBuffer.push(time);\n\n        // trigger recalculation\n        this.calculate(total-value);\n    }\n\n    // fetch estimated time\n    getTime(){\n        return this.eta;\n    }\n\n    // eta calculation - request number of remaining events\n    calculate(remaining){\n        // get number of samples in eta buffer\n        const currentBufferSize = this.valueBuffer.length;\n        const buffer = Math.min(this.etaBufferLength, currentBufferSize);\n\n        const v_diff = this.valueBuffer[currentBufferSize - 1] - this.valueBuffer[currentBufferSize - buffer];\n        const t_diff = this.timeBuffer[currentBufferSize - 1] - this.timeBuffer[currentBufferSize - buffer];\n\n        // get progress per ms\n        const vt_rate = v_diff/t_diff;\n\n        // strip past elements\n        this.valueBuffer = this.valueBuffer.slice(-this.etaBufferLength);\n        this.timeBuffer  = this.timeBuffer.slice(-this.etaBufferLength);\n\n        // eq: vt_rate *x = total\n        const eta = Math.ceil(remaining/vt_rate/1000);\n\n        // check values\n        if (isNaN(eta)){\n            this.eta = 'NULL';\n\n        // +/- Infinity --- NaN already handled\n        }else if (!isFinite(eta)){\n            this.eta = 'INF';\n\n        // > 10M s ? - set upper display limit ~115days (1e7/60/60/24)\n        }else if (eta > 1e7){\n            this.eta = 'INF';\n\n        // negative ?\n        }else if (eta < 0){\n            this.eta = 0;\n\n        }else{\n            // assign\n            this.eta = eta;\n        }\n    }\n}\n\nmodule.exports = ETA;", "const _readline = require('readline');\n\n// low-level terminal interactions\nclass Terminal{\n\n    constructor(outputStream){\n        this.stream = outputStream;\n\n        // default: line wrapping enabled\n        this.linewrap = true;\n\n        // current, relative y position\n        this.dy = 0;\n    }\n\n    // save cursor position + settings\n    cursorSave(){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        // save position\n        this.stream.write('\\x1B7');\n    }\n\n    // restore last cursor position + settings\n    cursorRestore(){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        // restore cursor\n        this.stream.write('\\x1B8');\n    }\n\n    // show/hide cursor\n    cursor(enabled){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        if (enabled){\n            this.stream.write('\\x1B[?25h');\n        }else{\n            this.stream.write('\\x1B[?25l');\n        }\n    }\n\n    // change cursor positionn\n    cursorTo(x=null, y=null){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        // move cursor absolute\n        _readline.cursorTo(this.stream, x, y);\n    }\n\n    // change relative cursor position\n    cursorRelative(dx=null, dy=null){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        // store current position\n        this.dy = this.dy + dy;\n        \n        // move cursor relative\n        _readline.moveCursor(this.stream, dx, dy);\n    }\n\n    // relative reset\n    cursorRelativeReset(){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        // move cursor to initial line\n        _readline.moveCursor(this.stream, 0, -this.dy);\n\n        // first char\n        _readline.cursorTo(this.stream, 0, null);\n\n        // reset counter\n        this.dy = 0;\n    }\n\n    // clear to the right from cursor\n    clearRight(){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        _readline.clearLine(this.stream, 1);\n    }\n\n    // clear the full line\n    clearLine(){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        _readline.clearLine(this.stream, 0);\n    }\n\n    // clear everyting beyond the current line\n    clearBottom(){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        _readline.clearScreenDown(this.stream);\n    }\n\n    // add new line; increment counter\n    newline(){\n        this.stream.write('\\n');\n        this.dy++;\n    }\n\n    // write content to output stream\n    // @TODO use string-width to strip length\n    write(s, rawWrite=false){\n        // line wrapping enabled ? trim output\n        // this is just a fallback mechanism in case user enabled line-wrapping via options or set it to auto\n        if (this.linewrap === true && rawWrite === false){\n            this.stream.write(s.substr(0, this.getWidth()));\n\n        // standard behaviour with disabled linewrapping\n        }else{\n            this.stream.write(s);\n        }\n    }\n\n    // control line wrapping\n    lineWrapping(enabled){\n        if (!this.stream.isTTY){\n            return;\n        }\n\n        // store state\n        this.linewrap = enabled;\n        if (enabled){\n            this.stream.write('\\x1B[?7h');\n        }else{\n            this.stream.write('\\x1B[?7l');\n        }\n    }\n\n    // tty environment ?\n    isTTY(){\n        return (this.stream.isTTY === true);\n    }\n\n    // get terminal width\n    getWidth(){\n        // set max width to 80 in tty-mode and 200 in notty-mode\n        return this.stream.columns || (this.stream.isTTY ? 80 : 200);\n    }\n}\n\nmodule.exports = Terminal;\n", "// default value format (apply autopadding)\n\n// format valueset\nmodule.exports = function formatValue(v, options, type){\n    // no autopadding ? passthrough\n    if (options.autopadding !== true){\n        return v;\n    }\n\n    // padding\n    function autopadding(value, length){\n        return (options.autopaddingChar + value).slice(-length);\n    }\n\n    switch (type){\n        case 'percentage':\n            return autopadding(v, 3);\n\n        default:\n            return v;\n    }\n}", "// format bar\nmodule.exports = function formatBar(progress, options){\n    // calculate barsize\n    const completeSize = Math.round(progress*options.barsize);\n    const incompleteSize = options.barsize-completeSize;\n\n   // generate bar string by stripping the pre-rendered strings\n   return   options.barCompleteString.substr(0, completeSize) +\n            options.barGlue +\n            options.barIncompleteString.substr(0, incompleteSize);\n}", "// default time format\n\n// format a number of seconds into hours and minutes as appropriate\nmodule.exports = function formatTime(t, options, roundToMultipleOf){\n    function round(input) {\n        if (roundToMultipleOf) {\n            return roundToMultipleOf * Math.round(input / roundToMultipleOf);\n        } else {\n            return input\n        }\n    }\n\n    // leading zero padding\n    function autopadding(v){\n        return (options.autopaddingChar + v).slice(-2);\n    }\n\n    // > 1h ?\n    if (t > 3600) {\n        return autopadding(Math.floor(t / 3600)) + 'h' + autopadding(round((t % 3600) / 60)) + 'm';\n\n    // > 60s ?\n    } else if (t > 60) {\n        return autopadding(Math.floor(t / 60)) + 'm' + autopadding(round((t % 60))) + 's';\n\n    // > 10s ?\n    } else if (t > 10) {\n        return autopadding(round(t)) + 's';\n\n    // default: don't apply round to multiple\n    }else{\n        return autopadding(t) + 's';\n    }\n}", "const _stringWidth = require('string-width');\nconst _defaultFormatValue = require('./format-value');\nconst _defaultFormatBar = require('./format-bar');\nconst _defaultFormatTime = require('./format-time');\n\n// generic formatter\nmodule.exports = function defaultFormatter(options, params, payload){\n\n    // copy format string\n    let s = options.format;\n\n    // custom time format set ?\n    const formatTime = options.formatTime || _defaultFormatTime;\n    \n    // custom value format set ?\n    const formatValue = options.formatValue || _defaultFormatValue;\n\n    // custom bar format set ?\n    const formatBar = options.formatBar || _defaultFormatBar;\n\n    // calculate progress in percent\n    const percentage =  Math.floor(params.progress*100) + '';\n\n    // bar stopped and stopTime set ?\n    const stopTime = params.stopTime || Date.now();\n\n    // calculate elapsed time\n    const elapsedTime = Math.round((stopTime - params.startTime)/1000);\n\n    // merges data from payload and calculated\n    const context = Object.assign({}, payload, {\n        bar:                    formatBar(params.progress, options),\n\n        percentage:             formatValue(percentage, options, 'percentage'),\n        total:                  formatValue(params.total, options, 'total'),\n        value:                  formatValue(params.value, options, 'value'),\n\n        eta:                    formatValue(params.eta, options, 'eta'),\n        eta_formatted:          formatTime(params.eta, options, 5),\n        \n        duration:               formatValue(elapsedTime, options, 'duration'),\n        duration_formatted:     formatTime(elapsedTime, options, 1)\n    });\n\n    // assign placeholder tokens\n    s = s.replace(/\\{(\\w+)\\}/g, function(match, key){\n        // key exists within payload/context\n        if (typeof context[key] !== 'undefined') {\n            return context[key];\n        }\n\n        // no changes to unknown values\n        return match;\n    });\n\n    // calculate available whitespace (2 characters margin of error)\n    const fullMargin = Math.max(0, params.maxWidth - _stringWidth(s) -2);\n    const halfMargin = Math.floor(fullMargin / 2);\n\n    // distribute available whitespace according to position\n    switch (options.align) {\n\n        // fill start-of-line with whitespaces\n        case 'right':\n            s = (fullMargin > 0) ? ' '.repeat(fullMargin) + s : s;\n            break;\n\n        // distribute whitespaces to left+right\n        case 'center':\n            s = (halfMargin > 0) ? ' '.repeat(halfMargin) + s : s;\n            break;\n\n        // default: left align, no additional whitespaces\n        case 'left':\n        default:\n            break;\n    }\n\n    return s;\n}\n", "// utility to merge defaults\nfunction mergeOption(v, defaultValue){\n    if (typeof v === 'undefined' || v === null){\n        return defaultValue;\n    }else{\n        return v;\n    }\n}\n\nmodule.exports = {\n    // set global options\n    parse: function parse(rawOptions, preset){\n\n        // options storage\n        const options = {};\n\n        // merge preset\n        const opt = Object.assign({}, preset, rawOptions);\n\n        // the max update rate in fps (redraw will only triggered on value change)\n        options.throttleTime = 1000 / (mergeOption(opt.fps, 10));\n\n        // the output stream to write on\n        options.stream = mergeOption(opt.stream, process.stderr);\n\n        // external terminal provided ?\n        options.terminal = mergeOption(opt.terminal, null);\n\n        // clear on finish ?\n        options.clearOnComplete = mergeOption(opt.clearOnComplete, false);\n\n        // stop on finish ?\n        options.stopOnComplete = mergeOption(opt.stopOnComplete, false);\n\n        // size of the progressbar in chars\n        options.barsize = mergeOption(opt.barsize, 40);\n\n        // position of the progress bar - 'left' (default), 'right' or 'center'\n        options.align = mergeOption(opt.align, 'left');\n\n        // hide the cursor ?\n        options.hideCursor = mergeOption(opt.hideCursor, false);\n\n        // disable linewrapping ?\n        options.linewrap = mergeOption(opt.linewrap, false);\n\n        // glue sequence (control chars) between bar elements ?\n        options.barGlue = mergeOption(opt.barGlue, '');\n\n        // bar chars\n        options.barCompleteChar = mergeOption(opt.barCompleteChar, '=');\n        options.barIncompleteChar = mergeOption(opt.barIncompleteChar, '-');\n\n        // the bar format\n        options.format = mergeOption(opt.format, 'progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}');\n\n        // external time-format provided ?\n        options.formatTime = mergeOption(opt.formatTime, null);\n\n        // external value-format provided ?\n        options.formatValue = mergeOption(opt.formatValue, null);\n\n        // external bar-format provided ?\n        options.formatBar = mergeOption(opt.formatBar, null);\n\n        // the number of results to average ETA over\n        options.etaBufferLength = mergeOption(opt.etaBuffer, 10);\n\n        // automatic eta updates based on fps\n        options.etaAsynchronousUpdate = mergeOption(opt.etaAsynchronousUpdate, false);\n\n        // progress calculation relative to start value ? default start at 0\n        options.progressCalculationRelative = mergeOption(opt.progressCalculationRelative, false);\n\n        // allow synchronous updates ?\n        options.synchronousUpdate = mergeOption(opt.synchronousUpdate, true);\n\n        // notty mode\n        options.noTTYOutput = mergeOption(opt.noTTYOutput, false);\n\n        // schedule - 2s\n        options.notTTYSchedule = mergeOption(opt.notTTYSchedule, 2000);\n        \n        // emptyOnZero - false\n        options.emptyOnZero = mergeOption(opt.emptyOnZero, false);\n\n        // force bar redraw even if progress did not change\n        options.forceRedraw = mergeOption(opt.forceRedraw, false);\n\n        // automated padding to fixed width ?\n        options.autopadding = mergeOption(opt.autopadding, false);\n\n        // stop bar on SIGINT/SIGTERM to restore cursor settings ?\n        options.gracefulExit = mergeOption(opt.gracefulExit, false);\n\n        return options;\n    },\n\n    // derived options: instance specific, has to be created for every bar element\n    assignDerivedOptions: function assignDerivedOptions(options){\n        // pre-render bar strings (performance)\n        options.barCompleteString = options.barCompleteChar.repeat(options.barsize + 1);\n        options.barIncompleteString = options.barIncompleteChar.repeat(options.barsize + 1);\n\n        // autopadding character - empty in case autopadding is disabled\n        options.autopaddingChar = options.autopadding ? mergeOption(options.autopaddingChar, '   ') : '';\n\n        return options;\n    }\n};", "const _ETA = require('./eta');\nconst _Terminal = require('./terminal');\nconst _formatter = require('./formatter');\nconst _options = require('./options');\nconst _EventEmitter = require('events');\n\n// Progress-Bar constructor\nmodule.exports = class GenericBar extends _EventEmitter{\n\n    constructor(options){\n        super();\n\n        // store options and assign derived ones (instance specific)\n        this.options = _options.assignDerivedOptions(options);\n\n        // store terminal instance\n        this.terminal = (this.options.terminal) ? this.options.terminal : new _Terminal(this.options.stream);\n\n        // the current bar value\n        this.value = 0;\n\n        // bar start value (used for progress calculation)\n        this.startValue = 0;\n\n        // the end value of the bar\n        this.total = 100;\n\n        // last drawn string - only render on change!\n        this.lastDrawnString = null;\n\n        // start time (used for eta calculation)\n        this.startTime = null;\n\n        // stop time (used for duration calculation)\n        this.stopTime = null;\n\n        // last update time\n        this.lastRedraw = Date.now();\n\n        // default eta calculator (will be re-create on start)\n        this.eta = new _ETA(this.options.etaBufferLength, 0, 0);\n\n        // payload data\n        this.payload = {};\n\n        // progress bar active ?\n        this.isActive = false;\n\n        // use default formatter or custom one ?\n        this.formatter = (typeof this.options.format === 'function') ? this.options.format : _formatter;\n    }\n\n    // internal render function\n    render(forceRendering=false){\n\n        // formatter params\n        const params = {\n            progress: this.getProgress(),\n            eta: this.eta.getTime(),\n            startTime: this.startTime,\n            stopTime: this.stopTime,\n            total: this.total,\n            value: this.value,\n            maxWidth: this.terminal.getWidth()\n        };\n\n        // automatic eta update ? (long running processes)\n        if (this.options.etaAsynchronousUpdate){\n            this.updateETA();\n        }\n\n        // format string\n        const s = this.formatter(this.options, params, this.payload);\n\n        const forceRedraw = forceRendering || this.options.forceRedraw\n            // force redraw in notty-mode!\n            || (this.options.noTTYOutput && !this.terminal.isTTY());\n\n        // string changed ? only trigger redraw on change!\n        if (forceRedraw || this.lastDrawnString != s){\n            // trigger event\n            this.emit('redraw-pre');\n\n            // set cursor to start of line\n            this.terminal.cursorTo(0, null);\n\n            // write output\n            this.terminal.write(s);\n\n            // clear to the right from cursor\n            this.terminal.clearRight();\n\n            // store string\n            this.lastDrawnString = s;\n\n            // set last redraw time\n            this.lastRedraw = Date.now();\n\n            // trigger event\n            this.emit('redraw-post');\n        }\n    }\n\n    // start the progress bar\n    start(total, startValue, payload){\n        // set initial values\n        this.value = startValue || 0;\n        this.total = (typeof total !== 'undefined' && total >= 0) ? total : 100;\n\n        // set start value for progress calculation\n        this.startValue = (startValue || 0);\n\n        // store payload (optional)\n        this.payload = payload || {};\n\n        // store start time for duration+eta calculation\n        this.startTime = Date.now();\n\n        // reset stop time for 're-start' scenario (used for duration calculation)\n        this.stopTime = null;\n\n        // reset string line buffer (redraw detection)\n        this.lastDrawnString = '';\n\n        // initialize eta buffer\n        this.eta = new _ETA(this.options.etaBufferLength, this.startTime, this.value);\n\n        // set flag\n        this.isActive = true;\n\n        // start event\n        this.emit('start', total, startValue);\n    }\n\n    // stop the bar\n    stop(){\n        // set flag\n        this.isActive = false;\n        \n        // store stop timestamp to get total duration\n        this.stopTime = Date.now();\n\n        // stop event\n        this.emit('stop', this.total, this.value);\n    }\n\n    // update the bar value\n    // update(value, payload)\n    // update(payload)\n    update(arg0, arg1 = {}){\n        // value set ?\n        // update(value, [payload]);\n        if (typeof arg0 === 'number') {\n            // update value\n            this.value = arg0;\n\n            // add new value; recalculate eta\n            this.eta.update(Date.now(), arg0, this.total);\n        }\n\n        // extract payload\n        // update(value, payload)\n        // update(payload)\n        const payloadData = ((typeof arg0 === 'object') ? arg0 : arg1) || {};\n\n        // update event (before stop() is called)\n        this.emit('update', this.total, this.value);\n\n        // merge payload\n        for (const key in payloadData){\n            this.payload[key] = payloadData[key];\n        }\n\n        // limit reached ? autostop set ?\n        if (this.value >= this.getTotal() && this.options.stopOnComplete) {\n            this.stop();\n        }\n    }\n\n    // calculate the actual progress value\n    getProgress(){\n        // calculate the normalized current progress\n        let progress = (this.value/this.total);\n\n        // use relative progress calculation ? range between startValue and total is then used as 100%\n        // startValue (offset) is ignored for calculations\n        if (this.options.progressCalculationRelative){\n            progress = (this.value-this.startValue)/(this.total-this.startValue);\n        }\n\n        // handle NaN Errors caused by total=0. Set to complete in this case\n        if (isNaN(progress)){\n            progress = (this.options && this.options.emptyOnZero) ? 0.0 : 1.0;\n        }\n\n        // limiter\n        progress = Math.min(Math.max(progress, 0.0), 1.0);\n\n        return progress;\n    }\n\n    // update the bar value\n    // increment(delta, payload)\n    // increment(payload)\n    increment(arg0 = 1, arg1 = {}){\n        // increment([payload]) => step=1\n        // handle the use case when `step` is omitted but payload is passed\n        if (typeof arg0 === 'object') {\n            this.update(this.value + 1, arg0);\n        \n        // increment([step=1], [payload={}])\n        }else{\n            this.update(this.value + arg0, arg1);\n        }\n    }\n\n    // get the total (limit) value\n    getTotal(){\n        return this.total;\n    }\n\n    // set the total (limit) value\n    setTotal(total){\n        if (typeof total !== 'undefined' && total >= 0){\n            this.total = total;\n        }\n    }\n\n    // force eta calculation update (long running processes)\n    updateETA(){\n        // add new value; recalculate eta\n        this.eta.update(Date.now(), this.value, this.total);\n    }\n}\n", "const _GenericBar = require('./generic-bar');\nconst _options = require('./options');\n\n// Progress-Bar constructor\nmodule.exports = class SingleBar extends _GenericBar{\n\n    constructor(options, preset){\n        super(_options.parse(options, preset));\n\n        // the update timer\n        this.timer = null;\n\n        // disable synchronous updates in notty mode\n        if (this.options.noTTYOutput && this.terminal.isTTY() === false){\n            this.options.synchronousUpdate = false;\n        }\n\n        // update interval\n        this.schedulingRate = (this.terminal.isTTY() ? this.options.throttleTime : this.options.notTTYSchedule);\n\n        // callback used for gracefulExit\n        this.sigintCallback = null;\n    }\n\n    // internal render function\n    render(){\n        // stop timer\n        if (this.timer){\n            clearTimeout(this.timer);\n            this.timer = null;\n        }\n\n        // run internal rendering\n        super.render();\n\n        // add new line in notty mode!\n        if (this.options.noTTYOutput && this.terminal.isTTY() === false){\n            this.terminal.newline();\n        }\n\n        // next update\n        this.timer = setTimeout(this.render.bind(this), this.schedulingRate);\n    }\n\n    update(current, payload){\n        // timer inactive ?\n        if (!this.timer) {\n            return;\n        }\n\n        super.update(current, payload);\n\n        // trigger synchronous update ?\n        // check for throttle time \n        if (this.options.synchronousUpdate && (this.lastRedraw + this.options.throttleTime*2) < Date.now()){\n            // force update\n            this.render();\n        }\n    }\n\n    // start the progress bar\n    start(total, startValue, payload){\n        // progress updates are only visible in TTY mode!\n        if (this.options.noTTYOutput === false && this.terminal.isTTY() === false){\n            return;\n        }\n\n        // add handler to restore cursor settings (stop the bar) on SIGINT/SIGTERM ?\n        if (this.sigintCallback === null && this.options.gracefulExit){\n            this.sigintCallback = this.stop.bind(this);\n            process.once('SIGINT', this.sigintCallback);\n            process.once('SIGTERM', this.sigintCallback);\n        }\n\n        // save current cursor settings\n        this.terminal.cursorSave();\n\n        // hide the cursor ?\n        if (this.options.hideCursor === true){\n            this.terminal.cursor(false);\n        }\n\n        // disable line wrapping ?\n        if (this.options.linewrap === false){\n            this.terminal.lineWrapping(false);\n        }\n\n        // initialize bar\n        super.start(total, startValue, payload);\n\n        // redraw on start!\n        this.render();\n    }\n\n    // stop the bar\n    stop(){\n        // timer inactive ?\n        if (!this.timer) {\n            return;\n        }\n        \n        // remove sigint listener\n        if (this.sigintCallback){\n            process.removeListener('SIGINT', this.sigintCallback);\n            process.removeListener('SIGTERM', this.sigintCallback);\n            this.sigintCallback = null;\n        }\n\n        // trigger final rendering\n        this.render();\n\n        // restore state\n        super.stop();\n\n        // stop timer\n        clearTimeout(this.timer);\n        this.timer = null;\n\n        // cursor hidden ?\n        if (this.options.hideCursor === true){\n            this.terminal.cursor(true);\n        }\n\n        // re-enable line wrapping ?\n        if (this.options.linewrap === false){\n            this.terminal.lineWrapping(true);\n        }\n\n        // restore cursor on complete (position + settings)\n        this.terminal.cursorRestore();\n\n        // clear line on complete ?\n        if (this.options.clearOnComplete){\n            this.terminal.cursorTo(0, null);\n            this.terminal.clearLine();\n        }else{\n            // new line on complete\n            this.terminal.newline();\n        }\n    }\n}", "const _Terminal = require('./terminal');\nconst _BarElement = require('./generic-bar');\nconst _options = require('./options');\nconst _EventEmitter = require('events');\n\n// Progress-Bar constructor\nmodule.exports = class MultiBar extends _EventEmitter{\n\n    constructor(options, preset){\n        super();\n\n        // list of bars\n        this.bars = [];\n\n        // parse+store options\n        this.options = _options.parse(options, preset);\n\n        // disable synchronous updates\n        this.options.synchronousUpdate = false;\n\n        // store terminal instance\n        this.terminal = (this.options.terminal) ? this.options.terminal : new _Terminal(this.options.stream);\n\n        // the update timer\n        this.timer = null;\n\n        // progress bar active ?\n        this.isActive = false;\n\n        // update interval\n        this.schedulingRate = (this.terminal.isTTY() ? this.options.throttleTime : this.options.notTTYSchedule);\n\n        // logging output buffer\n        this.loggingBuffer = [];\n\n        // callback used for gracefulExit\n        this.sigintCallback = null;\n    }\n\n    // add a new bar to the stack\n    create(total, startValue, payload, barOptions={}){\n        // create new bar element and merge global options + overrides\n        // use the same global terminal instance for all instances\n        const bar = new _BarElement(Object.assign(\n            {}, \n\n            // global options\n            this.options, \n\n            // terminal instance\n            {\n                terminal: this.terminal\n            },\n\n            // overrides\n            barOptions,\n        ));\n\n        // store bar\n        this.bars.push(bar);\n\n        // progress updates are only visible in TTY mode!\n        if (this.options.noTTYOutput === false && this.terminal.isTTY() === false){\n            return bar;\n        }\n\n        // add handler to restore cursor settings (stop the bar) on SIGINT/SIGTERM ?\n        if (this.sigintCallback === null && this.options.gracefulExit){\n            this.sigintCallback = this.stop.bind(this);\n            process.once('SIGINT', this.sigintCallback);\n            process.once('SIGTERM', this.sigintCallback);\n        }\n        \n        // multiprogress already active ?\n        if (!this.isActive){\n            // hide the cursor ?\n            if (this.options.hideCursor === true){\n                this.terminal.cursor(false);\n            }\n\n            // disable line wrapping ?\n            if (this.options.linewrap === false){\n                this.terminal.lineWrapping(false);\n            }\n    \n            // initialize update timer\n            this.timer = setTimeout(this.update.bind(this), this.schedulingRate);\n        }\n\n        // set flag\n        this.isActive = true;\n\n        // start progress bar\n        bar.start(total, startValue, payload);\n\n        // trigger event\n        this.emit('start');\n\n        // return new instance\n        return bar;\n    }\n\n    // remove a bar from the stack\n    remove(bar){\n        // find element\n        const index = this.bars.indexOf(bar);\n\n        // element found ?\n        if (index < 0){\n            return false;\n        }\n\n        // remove element\n        this.bars.splice(index, 1);\n\n        // force update\n        this.update();\n\n        // clear bottom\n        this.terminal.newline();\n        this.terminal.clearBottom();\n\n        return true;\n    }\n\n    // internal update routine\n    update(){\n        // stop timer\n        if (this.timer){\n            clearTimeout(this.timer);\n            this.timer = null;\n        }\n\n        // trigger event\n        this.emit('update-pre');\n        \n        // reset cursor\n        this.terminal.cursorRelativeReset();\n\n        // trigger event\n        this.emit('redraw-pre');\n\n        // content within logging buffer ?\n        if (this.loggingBuffer.length > 0){\n            this.terminal.clearLine();\n\n            // flush logging buffer and write content to terminal\n            while (this.loggingBuffer.length > 0){\n                this.terminal.write(this.loggingBuffer.shift(), true);\n            }\n        }\n\n        // update each bar\n        for (let i=0; i< this.bars.length; i++){\n            // add new line ?\n            if (i > 0){\n                this.terminal.newline();\n            }\n\n            // render\n            this.bars[i].render();\n        }\n\n        // trigger event\n        this.emit('redraw-post');\n\n        // add new line in notty mode!\n        if (this.options.noTTYOutput && this.terminal.isTTY() === false){\n            this.terminal.newline();\n            this.terminal.newline();\n        }\n\n        // next update\n        this.timer = setTimeout(this.update.bind(this), this.schedulingRate);\n\n        // trigger event\n        this.emit('update-post');\n\n        // stop if stopOnComplete and all bars stopped\n        if (this.options.stopOnComplete && !this.bars.find(bar => bar.isActive)) {\n            this.stop();\n        }\n    }\n\n    stop(){\n\n        // stop timer\n        clearTimeout(this.timer);\n        this.timer = null;\n\n        // remove sigint listener\n        if (this.sigintCallback){\n            process.removeListener('SIGINT', this.sigintCallback);\n            process.removeListener('SIGTERM', this.sigintCallback);\n            this.sigintCallback = null;\n        }\n\n        // set flag\n        this.isActive = false;\n\n        // cursor hidden ?\n        if (this.options.hideCursor === true){\n            this.terminal.cursor(true);\n        }\n\n        // re-enable line wrpaping ?\n        if (this.options.linewrap === false){\n            this.terminal.lineWrapping(true);\n        }\n\n        // reset cursor\n        this.terminal.cursorRelativeReset();\n\n        // trigger event\n        this.emit('stop-pre-clear');\n\n        // clear line on complete ?\n        if (this.options.clearOnComplete){\n            // clear all bars\n            this.terminal.clearBottom();\n            \n        // or show final progress ?\n        }else{\n            // update each bar\n            for (let i=0; i< this.bars.length; i++){\n                // add new line ?\n                if (i > 0){\n                    this.terminal.newline();\n                }\n\n                // trigger final rendering\n                this.bars[i].render();\n\n                // stop\n                this.bars[i].stop();\n            }\n\n            // new line on complete\n            this.terminal.newline();\n        }\n\n        // trigger event\n        this.emit('stop');\n    }\n\n    log(s){\n        // push content into logging buffer\n        this.loggingBuffer.push(s);\n    }\n}\n", "// cli-progress legacy style as of 1.x\nmodule.exports = {\n    format: 'progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}',\n    barCompleteChar: '=',\n    barIncompleteChar: '-'\n};", "// cli-progress legacy style as of 1.x\nmodule.exports = {\n    format: ' {bar} {percentage}% | ETA: {eta}s | {value}/{total}',\n    barCompleteChar: '\\u2588',\n    barIncompleteChar: '\\u2591'\n};", "\n// cli-progress legacy style as of 1.x\nmodule.exports = {\n    format: ' \\u001b[90m{bar}\\u001b[0m {percentage}% | ETA: {eta}s | {value}/{total}',\n    barCompleteChar: '\\u2588',\n    barIncompleteChar: '\\u2591'\n};", "module.exports = {\n    format: ' {bar}\\u25A0 {percentage}% | ETA: {eta}s | {value}/{total}',\n    barCompleteChar: '\\u25A0',\n    barIncompleteChar: ' '\n};", "const _legacy = require('./legacy');\nconst _shades_classic = require('./shades-classic');\nconst _shades_grey = require('./shades-grey');\nconst _rect = require('./rect');\n\nmodule.exports = {\n    legacy: _legacy,\n    shades_classic: _shades_classic,\n    shades_grey: _shades_grey,\n    rect: _rect\n};", "const _SingleBar = require('./lib/single-bar');\nconst _MultiBar = require('./lib/multi-bar');\nconst _Presets = require('./presets/index');\nconst _Formatter = require('./lib/formatter');\nconst _defaultFormatValue = require('./lib/format-value');\nconst _defaultFormatBar = require('./lib/format-bar');\nconst _defaultFormatTime = require('./lib/format-time');\n\n// sub-module access\nmodule.exports = {\n    Bar: _SingleBar,\n    SingleBar: _SingleBar,\n    MultiBar: _MultiBar,\n    Presets: _Presets,\n    Format: {\n        Formatter: _Formatter,\n        BarFormat: _defaultFormatBar,\n        ValueFormat: _defaultFormatValue,\n        TimeFormat: _defaultFormatTime\n    }\n};", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitWhen = exports.flatten = void 0;\nfunction flatten(items) {\n    return items.reduce((collection, item) => [].concat(collection, item), []);\n}\nexports.flatten = flatten;\nfunction splitWhen(items, predicate) {\n    const result = [[]];\n    let groupIndex = 0;\n    for (const item of items) {\n        if (predicate(item)) {\n            groupIndex++;\n            result[groupIndex] = [];\n        }\n        else {\n            result[groupIndex].push(item);\n        }\n    }\n    return result;\n}\nexports.splitWhen = splitWhen;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEnoentCodeError = void 0;\nfunction isEnoentCodeError(error) {\n    return error.code === 'ENOENT';\n}\nexports.isEnoentCodeError = isEnoentCodeError;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n    constructor(name, stats) {\n        this.name = name;\n        this.isBlockDevice = stats.isBlockDevice.bind(stats);\n        this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n        this.isDirectory = stats.isDirectory.bind(stats);\n        this.isFIFO = stats.isFIFO.bind(stats);\n        this.isFile = stats.isFile.bind(stats);\n        this.isSocket = stats.isSocket.bind(stats);\n        this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n    }\n}\nfunction createDirentFromStats(name, stats) {\n    return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = void 0;\nconst os = require(\"os\");\nconst path = require(\"path\");\nconst IS_WINDOWS_PLATFORM = os.platform() === 'win32';\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\n/**\n * All non-escaped special characters.\n * Posix: ()*?[]{|}, !+@ before (, ! at the beginning, \\\\ before non-special characters.\n * Windows: (){}[], !+@ before (, ! at the beginning.\n */\nconst POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\()|\\\\(?![!()*+?@[\\]{|}]))/g;\nconst WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()[\\]{}]|^!|[!+@](?=\\())/g;\n/**\n * The device path (\\\\.\\ or \\\\?\\).\n * https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#dos-device-paths\n */\nconst DOS_DEVICE_PATH_RE = /^\\\\\\\\([.?])/;\n/**\n * All backslashes except those escaping special characters.\n * Windows: !()+@{}\n * https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions\n */\nconst WINDOWS_BACKSLASHES_RE = /\\\\(?![!()+@[\\]{}])/g;\n/**\n * Designed to work only with simple paths: `dir\\\\file`.\n */\nfunction unixify(filepath) {\n    return filepath.replace(/\\\\/g, '/');\n}\nexports.unixify = unixify;\nfunction makeAbsolute(cwd, filepath) {\n    return path.resolve(cwd, filepath);\n}\nexports.makeAbsolute = makeAbsolute;\nfunction removeLeadingDotSegment(entry) {\n    // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\n    // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n    if (entry.charAt(0) === '.') {\n        const secondCharactery = entry.charAt(1);\n        if (secondCharactery === '/' || secondCharactery === '\\\\') {\n            return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\n        }\n    }\n    return entry;\n}\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\nexports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath;\nfunction escapeWindowsPath(pattern) {\n    return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\n}\nexports.escapeWindowsPath = escapeWindowsPath;\nfunction escapePosixPath(pattern) {\n    return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\n}\nexports.escapePosixPath = escapePosixPath;\nexports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern;\nfunction convertWindowsPathToPattern(filepath) {\n    return escapeWindowsPath(filepath)\n        .replace(DOS_DEVICE_PATH_RE, '//$1')\n        .replace(WINDOWS_BACKSLASHES_RE, '/');\n}\nexports.convertWindowsPathToPattern = convertWindowsPathToPattern;\nfunction convertPosixPathToPattern(filepath) {\n    return escapePosixPath(filepath);\n}\nexports.convertPosixPathToPattern = convertPosixPathToPattern;\n", "/*!\n * is-extglob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n  if (typeof str !== 'string' || str === '') {\n    return false;\n  }\n\n  var match;\n  while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n    if (match[2]) return true;\n    str = str.slice(match.index + match[0].length);\n  }\n\n  return false;\n};\n", "/*!\n * is-glob \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n  if (str[0] === '!') {\n    return true;\n  }\n  var index = 0;\n  var pipeIndex = -2;\n  var closeSquareIndex = -2;\n  var closeCurlyIndex = -2;\n  var closeParenIndex = -2;\n  var backSlashIndex = -2;\n  while (index < str.length) {\n    if (str[index] === '*') {\n      return true;\n    }\n\n    if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n      return true;\n    }\n\n    if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n      if (closeSquareIndex < index) {\n        closeSquareIndex = str.indexOf(']', index);\n      }\n      if (closeSquareIndex > index) {\n        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n          return true;\n        }\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n      closeCurlyIndex = str.indexOf('}', index);\n      if (closeCurlyIndex > index) {\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n      closeParenIndex = str.indexOf(')', index);\n      if (closeParenIndex > index) {\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n      if (pipeIndex < index) {\n        pipeIndex = str.indexOf('|', index);\n      }\n      if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n        closeParenIndex = str.indexOf(')', pipeIndex);\n        if (closeParenIndex > pipeIndex) {\n          backSlashIndex = str.indexOf('\\\\', pipeIndex);\n          if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n            return true;\n          }\n        }\n      }\n    }\n\n    if (str[index] === '\\\\') {\n      var open = str[index + 1];\n      index += 2;\n      var close = chars[open];\n\n      if (close) {\n        var n = str.indexOf(close, index);\n        if (n !== -1) {\n          index = n + 1;\n        }\n      }\n\n      if (str[index] === '!') {\n        return true;\n      }\n    } else {\n      index++;\n    }\n  }\n  return false;\n};\n\nvar relaxedCheck = function(str) {\n  if (str[0] === '!') {\n    return true;\n  }\n  var index = 0;\n  while (index < str.length) {\n    if (/[*?{}()[\\]]/.test(str[index])) {\n      return true;\n    }\n\n    if (str[index] === '\\\\') {\n      var open = str[index + 1];\n      index += 2;\n      var close = chars[open];\n\n      if (close) {\n        var n = str.indexOf(close, index);\n        if (n !== -1) {\n          index = n + 1;\n        }\n      }\n\n      if (str[index] === '!') {\n        return true;\n      }\n    } else {\n      index++;\n    }\n  }\n  return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n  if (typeof str !== 'string' || str === '') {\n    return false;\n  }\n\n  if (isExtglob(str)) {\n    return true;\n  }\n\n  var check = strictCheck;\n\n  // optionally relax check\n  if (options && options.strict === false) {\n    check = relaxedCheck;\n  }\n\n  return check(str);\n};\n", "'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n  var options = Object.assign({ flipBackslashes: true }, opts);\n\n  // flip windows path separators\n  if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n    str = str.replace(backslash, slash);\n  }\n\n  // special case for strings ending in enclosure containing path separator\n  if (enclosure.test(str)) {\n    str += slash;\n  }\n\n  // preserves full path in case of trailing path separator\n  str += 'a';\n\n  // remove path parts that are globby\n  do {\n    str = pathPosixDirname(str);\n  } while (isGlob(str) || globby.test(str));\n\n  // remove escape chars and return result\n  return str.replace(escaped, '$1');\n};\n", "'use strict';\n\nexports.isInteger = num => {\n  if (typeof num === 'number') {\n    return Number.isInteger(num);\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isInteger(Number(num));\n  }\n  return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n  if (limit === false) return false;\n  if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n  return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n  const node = block.nodes[n];\n  if (!node) return;\n\n  if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n    if (node.escaped !== true) {\n      node.value = '\\\\' + node.value;\n      node.escaped = true;\n    }\n  }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n  if (node.type !== 'brace') return false;\n  if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n    node.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n  if (block.type !== 'brace') return false;\n  if (block.invalid === true || block.dollar) return true;\n  if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n    block.invalid = true;\n    return true;\n  }\n  if (block.open !== true || block.close !== true) {\n    block.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n  if (node.type === 'open' || node.type === 'close') {\n    return true;\n  }\n  return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n  if (node.type === 'text') acc.push(node.value);\n  if (node.type === 'range') node.type = 'text';\n  return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n  const result = [];\n\n  const flat = arr => {\n    for (let i = 0; i < arr.length; i++) {\n      const ele = arr[i];\n\n      if (Array.isArray(ele)) {\n        flat(ele);\n        continue;\n      }\n\n      if (ele !== undefined) {\n        result.push(ele);\n      }\n    }\n    return result;\n  };\n\n  flat(args);\n  return result;\n};\n", "'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n  const stringify = (node, parent = {}) => {\n    const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    let output = '';\n\n    if (node.value) {\n      if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n        return '\\\\' + node.value;\n      }\n      return node.value;\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += stringify(child);\n      }\n    }\n    return output;\n  };\n\n  return stringify(ast);\n};\n\n", "/*!\n * is-number \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n  if (typeof num === 'number') {\n    return num - num === 0;\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n  }\n  return false;\n};\n", "/*!\n * to-regex-range \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n  if (isNumber(min) === false) {\n    throw new TypeError('toRegexRange: expected the first argument to be a number');\n  }\n\n  if (max === void 0 || min === max) {\n    return String(min);\n  }\n\n  if (isNumber(max) === false) {\n    throw new TypeError('toRegexRange: expected the second argument to be a number.');\n  }\n\n  let opts = { relaxZeros: true, ...options };\n  if (typeof opts.strictZeros === 'boolean') {\n    opts.relaxZeros = opts.strictZeros === false;\n  }\n\n  let relax = String(opts.relaxZeros);\n  let shorthand = String(opts.shorthand);\n  let capture = String(opts.capture);\n  let wrap = String(opts.wrap);\n  let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n  if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n    return toRegexRange.cache[cacheKey].result;\n  }\n\n  let a = Math.min(min, max);\n  let b = Math.max(min, max);\n\n  if (Math.abs(a - b) === 1) {\n    let result = min + '|' + max;\n    if (opts.capture) {\n      return `(${result})`;\n    }\n    if (opts.wrap === false) {\n      return result;\n    }\n    return `(?:${result})`;\n  }\n\n  let isPadded = hasPadding(min) || hasPadding(max);\n  let state = { min, max, a, b };\n  let positives = [];\n  let negatives = [];\n\n  if (isPadded) {\n    state.isPadded = isPadded;\n    state.maxLen = String(state.max).length;\n  }\n\n  if (a < 0) {\n    let newMin = b < 0 ? Math.abs(b) : 1;\n    negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n    a = state.a = 0;\n  }\n\n  if (b >= 0) {\n    positives = splitToPatterns(a, b, state, opts);\n  }\n\n  state.negatives = negatives;\n  state.positives = positives;\n  state.result = collatePatterns(negatives, positives, opts);\n\n  if (opts.capture === true) {\n    state.result = `(${state.result})`;\n  } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n    state.result = `(?:${state.result})`;\n  }\n\n  toRegexRange.cache[cacheKey] = state;\n  return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n  let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n  let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n  let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n  let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n  return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n  let nines = 1;\n  let zeros = 1;\n\n  let stop = countNines(min, nines);\n  let stops = new Set([max]);\n\n  while (min <= stop && stop <= max) {\n    stops.add(stop);\n    nines += 1;\n    stop = countNines(min, nines);\n  }\n\n  stop = countZeros(max + 1, zeros) - 1;\n\n  while (min < stop && stop <= max) {\n    stops.add(stop);\n    zeros += 1;\n    stop = countZeros(max + 1, zeros) - 1;\n  }\n\n  stops = [...stops];\n  stops.sort(compare);\n  return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n  if (start === stop) {\n    return { pattern: start, count: [], digits: 0 };\n  }\n\n  let zipped = zip(start, stop);\n  let digits = zipped.length;\n  let pattern = '';\n  let count = 0;\n\n  for (let i = 0; i < digits; i++) {\n    let [startDigit, stopDigit] = zipped[i];\n\n    if (startDigit === stopDigit) {\n      pattern += startDigit;\n\n    } else if (startDigit !== '0' || stopDigit !== '9') {\n      pattern += toCharacterClass(startDigit, stopDigit, options);\n\n    } else {\n      count++;\n    }\n  }\n\n  if (count) {\n    pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n  }\n\n  return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n  let ranges = splitToRanges(min, max);\n  let tokens = [];\n  let start = min;\n  let prev;\n\n  for (let i = 0; i < ranges.length; i++) {\n    let max = ranges[i];\n    let obj = rangeToPattern(String(start), String(max), options);\n    let zeros = '';\n\n    if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n      if (prev.count.length > 1) {\n        prev.count.pop();\n      }\n\n      prev.count.push(obj.count[0]);\n      prev.string = prev.pattern + toQuantifier(prev.count);\n      start = max + 1;\n      continue;\n    }\n\n    if (tok.isPadded) {\n      zeros = padZeros(max, tok, options);\n    }\n\n    obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n    tokens.push(obj);\n    start = max + 1;\n    prev = obj;\n  }\n\n  return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n  let result = [];\n\n  for (let ele of arr) {\n    let { string } = ele;\n\n    // only push if _both_ are negative...\n    if (!intersection && !contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n\n    // or _both_ are positive\n    if (intersection && contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n  }\n  return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n  let arr = [];\n  for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n  return arr;\n}\n\nfunction compare(a, b) {\n  return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n  return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n  return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n  return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n  let [start = 0, stop = ''] = digits;\n  if (stop || start > 1) {\n    return `{${start + (stop ? ',' + stop : '')}}`;\n  }\n  return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n  return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n  return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n  if (!tok.isPadded) {\n    return value;\n  }\n\n  let diff = Math.abs(tok.maxLen - String(value).length);\n  let relax = options.relaxZeros !== false;\n\n  switch (diff) {\n    case 0:\n      return '';\n    case 1:\n      return relax ? '0?' : '0';\n    case 2:\n      return relax ? '0{0,2}' : '00';\n    default: {\n      return relax ? `0{0,${diff}}` : `0{${diff}}`;\n    }\n  }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n", "/*!\n * fill-range \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n  return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n  return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n  let value = `${input}`;\n  let index = -1;\n  if (value[0] === '-') value = value.slice(1);\n  if (value === '0') return false;\n  while (value[++index] === '0');\n  return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n  if (typeof start === 'string' || typeof end === 'string') {\n    return true;\n  }\n  return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n  if (maxLength > 0) {\n    let dash = input[0] === '-' ? '-' : '';\n    if (dash) input = input.slice(1);\n    input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n  }\n  if (toNumber === false) {\n    return String(input);\n  }\n  return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n  let negative = input[0] === '-' ? '-' : '';\n  if (negative) {\n    input = input.slice(1);\n    maxLength--;\n  }\n  while (input.length < maxLength) input = '0' + input;\n  return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n  parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n  parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n  let prefix = options.capture ? '' : '?:';\n  let positives = '';\n  let negatives = '';\n  let result;\n\n  if (parts.positives.length) {\n    positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n  }\n\n  if (parts.negatives.length) {\n    negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n  }\n\n  if (positives && negatives) {\n    result = `${positives}|${negatives}`;\n  } else {\n    result = positives || negatives;\n  }\n\n  if (options.wrap) {\n    return `(${prefix}${result})`;\n  }\n\n  return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n  if (isNumbers) {\n    return toRegexRange(a, b, { wrap: false, ...options });\n  }\n\n  let start = String.fromCharCode(a);\n  if (a === b) return start;\n\n  let stop = String.fromCharCode(b);\n  return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n  if (Array.isArray(start)) {\n    let wrap = options.wrap === true;\n    let prefix = options.capture ? '' : '?:';\n    return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n  }\n  return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n  return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n  if (options.strictRanges === true) throw rangeError([start, end]);\n  return [];\n};\n\nconst invalidStep = (step, options) => {\n  if (options.strictRanges === true) {\n    throw new TypeError(`Expected step \"${step}\" to be a number`);\n  }\n  return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n  let a = Number(start);\n  let b = Number(end);\n\n  if (!Number.isInteger(a) || !Number.isInteger(b)) {\n    if (options.strictRanges === true) throw rangeError([start, end]);\n    return [];\n  }\n\n  // fix negative zero\n  if (a === 0) a = 0;\n  if (b === 0) b = 0;\n\n  let descending = a > b;\n  let startString = String(start);\n  let endString = String(end);\n  let stepString = String(step);\n  step = Math.max(Math.abs(step), 1);\n\n  let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n  let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n  let toNumber = padded === false && stringify(start, end, options) === false;\n  let format = options.transform || transform(toNumber);\n\n  if (options.toRegex && step === 1) {\n    return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n  }\n\n  let parts = { negatives: [], positives: [] };\n  let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    if (options.toRegex === true && step > 1) {\n      push(a);\n    } else {\n      range.push(pad(format(a, index), maxLen, toNumber));\n    }\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return step > 1\n      ? toSequence(parts, options, maxLen)\n      : toRegex(range, null, { wrap: false, ...options });\n  }\n\n  return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n  if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n    return invalidRange(start, end, options);\n  }\n\n  let format = options.transform || (val => String.fromCharCode(val));\n  let a = `${start}`.charCodeAt(0);\n  let b = `${end}`.charCodeAt(0);\n\n  let descending = a > b;\n  let min = Math.min(a, b);\n  let max = Math.max(a, b);\n\n  if (options.toRegex && step === 1) {\n    return toRange(min, max, false, options);\n  }\n\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    range.push(format(a, index));\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return toRegex(range, null, { wrap: false, options });\n  }\n\n  return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n  if (end == null && isValidValue(start)) {\n    return [start];\n  }\n\n  if (!isValidValue(start) || !isValidValue(end)) {\n    return invalidRange(start, end, options);\n  }\n\n  if (typeof step === 'function') {\n    return fill(start, end, 1, { transform: step });\n  }\n\n  if (isObject(step)) {\n    return fill(start, end, 0, step);\n  }\n\n  let opts = { ...options };\n  if (opts.capture === true) opts.wrap = true;\n  step = step || opts.step || 1;\n\n  if (!isNumber(step)) {\n    if (step != null && !isObject(step)) return invalidStep(step, opts);\n    return fill(start, end, 1, step);\n  }\n\n  if (isNumber(start) && isNumber(end)) {\n    return fillNumbers(start, end, step, opts);\n  }\n\n  return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n", "'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n  const walk = (node, parent = {}) => {\n    const invalidBlock = utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    const invalid = invalidBlock === true || invalidNode === true;\n    const prefix = options.escapeInvalid === true ? '\\\\' : '';\n    let output = '';\n\n    if (node.isOpen === true) {\n      return prefix + node.value;\n    }\n\n    if (node.isClose === true) {\n      console.log('node.isClose', prefix, node.value);\n      return prefix + node.value;\n    }\n\n    if (node.type === 'open') {\n      return invalid ? prefix + node.value : '(';\n    }\n\n    if (node.type === 'close') {\n      return invalid ? prefix + node.value : ')';\n    }\n\n    if (node.type === 'comma') {\n      return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n      const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n      if (range.length !== 0) {\n        return args.length > 1 && range.length > 1 ? `(${range})` : range;\n      }\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += walk(child, node);\n      }\n    }\n\n    return output;\n  };\n\n  return walk(ast);\n};\n\nmodule.exports = compile;\n", "'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n  const result = [];\n\n  queue = [].concat(queue);\n  stash = [].concat(stash);\n\n  if (!stash.length) return queue;\n  if (!queue.length) {\n    return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n  }\n\n  for (const item of queue) {\n    if (Array.isArray(item)) {\n      for (const value of item) {\n        result.push(append(value, stash, enclose));\n      }\n    } else {\n      for (let ele of stash) {\n        if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n        result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n      }\n    }\n  }\n  return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n  const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n  const walk = (node, parent = {}) => {\n    node.queue = [];\n\n    let p = parent;\n    let q = parent.queue;\n\n    while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n      p = p.parent;\n      q = p.queue;\n    }\n\n    if (node.invalid || node.dollar) {\n      q.push(append(q.pop(), stringify(node, options)));\n      return;\n    }\n\n    if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n      q.push(append(q.pop(), ['{}']));\n      return;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n\n      if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n        throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n      }\n\n      let range = fill(...args, options);\n      if (range.length === 0) {\n        range = stringify(node, options);\n      }\n\n      q.push(append(q.pop(), range));\n      node.nodes = [];\n      return;\n    }\n\n    const enclose = utils.encloseBrace(node);\n    let queue = node.queue;\n    let block = node;\n\n    while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n      block = block.parent;\n      queue = block.queue;\n    }\n\n    for (let i = 0; i < node.nodes.length; i++) {\n      const child = node.nodes[i];\n\n      if (child.type === 'comma' && node.type === 'brace') {\n        if (i === 1) queue.push('');\n        queue.push('');\n        continue;\n      }\n\n      if (child.type === 'close') {\n        q.push(append(q.pop(), queue, enclose));\n        continue;\n      }\n\n      if (child.value && child.type !== 'open') {\n        queue.push(append(queue.pop(), child.value));\n        continue;\n      }\n\n      if (child.nodes) {\n        walk(child, node);\n      }\n    }\n\n    return queue;\n  };\n\n  return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n", "'use strict';\n\nmodule.exports = {\n  MAX_LENGTH: 10000,\n\n  // Digits\n  CHAR_0: '0', /* 0 */\n  CHAR_9: '9', /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 'A', /* A */\n  CHAR_LOWERCASE_A: 'a', /* a */\n  CHAR_UPPERCASE_Z: 'Z', /* Z */\n  CHAR_LOWERCASE_Z: 'z', /* z */\n\n  CHAR_LEFT_PARENTHESES: '(', /* ( */\n  CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n  CHAR_ASTERISK: '*', /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: '&', /* & */\n  CHAR_AT: '@', /* @ */\n  CHAR_BACKSLASH: '\\\\', /* \\ */\n  CHAR_BACKTICK: '`', /* ` */\n  CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n  CHAR_COLON: ':', /* : */\n  CHAR_COMMA: ',', /* , */\n  CHAR_DOLLAR: '$', /* . */\n  CHAR_DOT: '.', /* . */\n  CHAR_DOUBLE_QUOTE: '\"', /* \" */\n  CHAR_EQUAL: '=', /* = */\n  CHAR_EXCLAMATION_MARK: '!', /* ! */\n  CHAR_FORM_FEED: '\\f', /* \\f */\n  CHAR_FORWARD_SLASH: '/', /* / */\n  CHAR_HASH: '#', /* # */\n  CHAR_HYPHEN_MINUS: '-', /* - */\n  CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n  CHAR_LEFT_CURLY_BRACE: '{', /* { */\n  CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n  CHAR_LINE_FEED: '\\n', /* \\n */\n  CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n  CHAR_PERCENT: '%', /* % */\n  CHAR_PLUS: '+', /* + */\n  CHAR_QUESTION_MARK: '?', /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n  CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n  CHAR_SEMICOLON: ';', /* ; */\n  CHAR_SINGLE_QUOTE: '\\'', /* ' */\n  CHAR_SPACE: ' ', /*   */\n  CHAR_TAB: '\\t', /* \\t */\n  CHAR_UNDERSCORE: '_', /* _ */\n  CHAR_VERTICAL_LINE: '|', /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n", "'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  CHAR_BACKSLASH, /* \\ */\n  CHAR_BACKTICK, /* ` */\n  CHAR_COMMA, /* , */\n  CHAR_DOT, /* . */\n  CHAR_LEFT_PARENTHESES, /* ( */\n  CHAR_RIGHT_PARENTHESES, /* ) */\n  CHAR_LEFT_CURLY_BRACE, /* { */\n  CHAR_RIGHT_CURLY_BRACE, /* } */\n  CHAR_LEFT_SQUARE_BRACKET, /* [ */\n  CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n  CHAR_DOUBLE_QUOTE, /* \" */\n  CHAR_SINGLE_QUOTE, /* ' */\n  CHAR_NO_BREAK_SPACE,\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  const opts = options || {};\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  if (input.length > max) {\n    throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n  }\n\n  const ast = { type: 'root', input, nodes: [] };\n  const stack = [ast];\n  let block = ast;\n  let prev = ast;\n  let brackets = 0;\n  const length = input.length;\n  let index = 0;\n  let depth = 0;\n  let value;\n\n  /**\n   * Helpers\n   */\n\n  const advance = () => input[index++];\n  const push = node => {\n    if (node.type === 'text' && prev.type === 'dot') {\n      prev.type = 'text';\n    }\n\n    if (prev && prev.type === 'text' && node.type === 'text') {\n      prev.value += node.value;\n      return;\n    }\n\n    block.nodes.push(node);\n    node.parent = block;\n    node.prev = prev;\n    prev = node;\n    return node;\n  };\n\n  push({ type: 'bos' });\n\n  while (index < length) {\n    block = stack[stack.length - 1];\n    value = advance();\n\n    /**\n     * Invalid chars\n     */\n\n    if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n      continue;\n    }\n\n    /**\n     * Escaped chars\n     */\n\n    if (value === CHAR_BACKSLASH) {\n      push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n      continue;\n    }\n\n    /**\n     * Right square bracket (literal): ']'\n     */\n\n    if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n      push({ type: 'text', value: '\\\\' + value });\n      continue;\n    }\n\n    /**\n     * Left square bracket: '['\n     */\n\n    if (value === CHAR_LEFT_SQUARE_BRACKET) {\n      brackets++;\n\n      let next;\n\n      while (index < length && (next = advance())) {\n        value += next;\n\n        if (next === CHAR_LEFT_SQUARE_BRACKET) {\n          brackets++;\n          continue;\n        }\n\n        if (next === CHAR_BACKSLASH) {\n          value += advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          brackets--;\n\n          if (brackets === 0) {\n            break;\n          }\n        }\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === CHAR_LEFT_PARENTHESES) {\n      block = push({ type: 'paren', nodes: [] });\n      stack.push(block);\n      push({ type: 'text', value });\n      continue;\n    }\n\n    if (value === CHAR_RIGHT_PARENTHESES) {\n      if (block.type !== 'paren') {\n        push({ type: 'text', value });\n        continue;\n      }\n      block = stack.pop();\n      push({ type: 'text', value });\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Quotes: '|\"|`\n     */\n\n    if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n      const open = value;\n      let next;\n\n      if (options.keepQuotes !== true) {\n        value = '';\n      }\n\n      while (index < length && (next = advance())) {\n        if (next === CHAR_BACKSLASH) {\n          value += next + advance();\n          continue;\n        }\n\n        if (next === open) {\n          if (options.keepQuotes === true) value += next;\n          break;\n        }\n\n        value += next;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Left curly brace: '{'\n     */\n\n    if (value === CHAR_LEFT_CURLY_BRACE) {\n      depth++;\n\n      const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n      const brace = {\n        type: 'brace',\n        open: true,\n        close: false,\n        dollar,\n        depth,\n        commas: 0,\n        ranges: 0,\n        nodes: []\n      };\n\n      block = push(brace);\n      stack.push(block);\n      push({ type: 'open', value });\n      continue;\n    }\n\n    /**\n     * Right curly brace: '}'\n     */\n\n    if (value === CHAR_RIGHT_CURLY_BRACE) {\n      if (block.type !== 'brace') {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      const type = 'close';\n      block = stack.pop();\n      block.close = true;\n\n      push({ type, value });\n      depth--;\n\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Comma: ','\n     */\n\n    if (value === CHAR_COMMA && depth > 0) {\n      if (block.ranges > 0) {\n        block.ranges = 0;\n        const open = block.nodes.shift();\n        block.nodes = [open, { type: 'text', value: stringify(block) }];\n      }\n\n      push({ type: 'comma', value });\n      block.commas++;\n      continue;\n    }\n\n    /**\n     * Dot: '.'\n     */\n\n    if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n      const siblings = block.nodes;\n\n      if (depth === 0 || siblings.length === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      if (prev.type === 'dot') {\n        block.range = [];\n        prev.value += value;\n        prev.type = 'range';\n\n        if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n          block.invalid = true;\n          block.ranges = 0;\n          prev.type = 'text';\n          continue;\n        }\n\n        block.ranges++;\n        block.args = [];\n        continue;\n      }\n\n      if (prev.type === 'range') {\n        siblings.pop();\n\n        const before = siblings[siblings.length - 1];\n        before.value += prev.value + value;\n        prev = before;\n        block.ranges--;\n        continue;\n      }\n\n      push({ type: 'dot', value });\n      continue;\n    }\n\n    /**\n     * Text\n     */\n\n    push({ type: 'text', value });\n  }\n\n  // Mark imbalanced braces and brackets as invalid\n  do {\n    block = stack.pop();\n\n    if (block.type !== 'root') {\n      block.nodes.forEach(node => {\n        if (!node.nodes) {\n          if (node.type === 'open') node.isOpen = true;\n          if (node.type === 'close') node.isClose = true;\n          if (!node.nodes) node.type = 'text';\n          node.invalid = true;\n        }\n      });\n\n      // get the location of the block on parent.nodes (block's siblings)\n      const parent = stack[stack.length - 1];\n      const index = parent.nodes.indexOf(block);\n      // replace the (invalid) block with it's nodes\n      parent.nodes.splice(index, 1, ...block.nodes);\n    }\n  } while (stack.length > 0);\n\n  push({ type: 'eos' });\n  return ast;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n  let output = [];\n\n  if (Array.isArray(input)) {\n    for (const pattern of input) {\n      const result = braces.create(pattern, options);\n      if (Array.isArray(result)) {\n        output.push(...result);\n      } else {\n        output.push(result);\n      }\n    }\n  } else {\n    output = [].concat(braces.create(input, options));\n  }\n\n  if (options && options.expand === true && options.nodupes === true) {\n    output = [...new Set(output)];\n  }\n  return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n  if (typeof input === 'string') {\n    return stringify(braces.parse(input, options), options);\n  }\n  return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n  return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n\n  let result = expand(input, options);\n\n  // filter out empty strings if specified\n  if (options.noempty === true) {\n    result = result.filter(Boolean);\n  }\n\n  // filter out duplicates if specified\n  if (options.nodupes === true) {\n    result = [...new Set(result)];\n  }\n\n  return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n  if (input === '' || input.length < 3) {\n    return [input];\n  }\n\n  return options.expand !== true\n    ? braces.compile(input, options)\n    : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n", "'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n  DOT_LITERAL,\n  PLUS_LITERAL,\n  QMARK_LITERAL,\n  SLASH_LITERAL,\n  ONE_CHAR,\n  QMARK,\n  END_ANCHOR,\n  DOTS_SLASH,\n  NO_DOT,\n  NO_DOTS,\n  NO_DOT_SLASH,\n  NO_DOTS_SLASH,\n  QMARK_NO_DOT,\n  STAR,\n  START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n  ...POSIX_CHARS,\n\n  SLASH_LITERAL: `[${WIN_SLASH}]`,\n  QMARK: WIN_NO_SLASH,\n  STAR: `${WIN_NO_SLASH}*?`,\n  DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n  NO_DOT: `(?!${DOT_LITERAL})`,\n  NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n  NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n  START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n  alnum: 'a-zA-Z0-9',\n  alpha: 'a-zA-Z',\n  ascii: '\\\\x00-\\\\x7F',\n  blank: ' \\\\t',\n  cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n  digit: '0-9',\n  graph: '\\\\x21-\\\\x7E',\n  lower: 'a-z',\n  print: '\\\\x20-\\\\x7E ',\n  punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n  space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n  upper: 'A-Z',\n  word: 'A-Za-z0-9_',\n  xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n  MAX_LENGTH: 1024 * 64,\n  POSIX_REGEX_SOURCE,\n\n  // regular expressions\n  REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n  REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n  REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n  REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n  REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n  // Replace globs with equivalent patterns to reduce parsing time.\n  REPLACEMENTS: {\n    '***': '*',\n    '**/**': '**',\n    '**/**/**': '**'\n  },\n\n  // Digits\n  CHAR_0: 48, /* 0 */\n  CHAR_9: 57, /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 65, /* A */\n  CHAR_LOWERCASE_A: 97, /* a */\n  CHAR_UPPERCASE_Z: 90, /* Z */\n  CHAR_LOWERCASE_Z: 122, /* z */\n\n  CHAR_LEFT_PARENTHESES: 40, /* ( */\n  CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n  CHAR_ASTERISK: 42, /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: 38, /* & */\n  CHAR_AT: 64, /* @ */\n  CHAR_BACKWARD_SLASH: 92, /* \\ */\n  CHAR_CARRIAGE_RETURN: 13, /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n  CHAR_COLON: 58, /* : */\n  CHAR_COMMA: 44, /* , */\n  CHAR_DOT: 46, /* . */\n  CHAR_DOUBLE_QUOTE: 34, /* \" */\n  CHAR_EQUAL: 61, /* = */\n  CHAR_EXCLAMATION_MARK: 33, /* ! */\n  CHAR_FORM_FEED: 12, /* \\f */\n  CHAR_FORWARD_SLASH: 47, /* / */\n  CHAR_GRAVE_ACCENT: 96, /* ` */\n  CHAR_HASH: 35, /* # */\n  CHAR_HYPHEN_MINUS: 45, /* - */\n  CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n  CHAR_LEFT_CURLY_BRACE: 123, /* { */\n  CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n  CHAR_LINE_FEED: 10, /* \\n */\n  CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n  CHAR_PERCENT: 37, /* % */\n  CHAR_PLUS: 43, /* + */\n  CHAR_QUESTION_MARK: 63, /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n  CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n  CHAR_SEMICOLON: 59, /* ; */\n  CHAR_SINGLE_QUOTE: 39, /* ' */\n  CHAR_SPACE: 32, /*   */\n  CHAR_TAB: 9, /* \\t */\n  CHAR_UNDERSCORE: 95, /* _ */\n  CHAR_VERTICAL_LINE: 124, /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n  SEP: path.sep,\n\n  /**\n   * Create EXTGLOB_CHARS\n   */\n\n  extglobChars(chars) {\n    return {\n      '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n      '?': { type: 'qmark', open: '(?:', close: ')?' },\n      '+': { type: 'plus', open: '(?:', close: ')+' },\n      '*': { type: 'star', open: '(?:', close: ')*' },\n      '@': { type: 'at', open: '(?:', close: ')' }\n    };\n  },\n\n  /**\n   * Create GLOB_CHARS\n   */\n\n  globChars(win32) {\n    return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n  }\n};\n", "'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n  REGEX_BACKSLASH,\n  REGEX_REMOVE_BACKSLASH,\n  REGEX_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n  return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n    return match === '\\\\' ? '' : match;\n  });\n};\n\nexports.supportsLookbehinds = () => {\n  const segs = process.version.slice(1).split('.').map(Number);\n  if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n    return true;\n  }\n  return false;\n};\n\nexports.isWindows = options => {\n  if (options && typeof options.windows === 'boolean') {\n    return options.windows;\n  }\n  return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n  const idx = input.lastIndexOf(char, lastIdx);\n  if (idx === -1) return input;\n  if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n  return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n  let output = input;\n  if (output.startsWith('./')) {\n    output = output.slice(2);\n    state.prefix = './';\n  }\n  return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n  const prepend = options.contains ? '' : '^';\n  const append = options.contains ? '' : '$';\n\n  let output = `${prepend}(?:${input})${append}`;\n  if (state.negated === true) {\n    output = `(?:^(?!${output}).*$)`;\n  }\n  return output;\n};\n", "'use strict';\n\nconst utils = require('./utils');\nconst {\n  CHAR_ASTERISK,             /* * */\n  CHAR_AT,                   /* @ */\n  CHAR_BACKWARD_SLASH,       /* \\ */\n  CHAR_COMMA,                /* , */\n  CHAR_DOT,                  /* . */\n  CHAR_EXCLAMATION_MARK,     /* ! */\n  CHAR_FORWARD_SLASH,        /* / */\n  CHAR_LEFT_CURLY_BRACE,     /* { */\n  CHAR_LEFT_PARENTHESES,     /* ( */\n  CHAR_LEFT_SQUARE_BRACKET,  /* [ */\n  CHAR_PLUS,                 /* + */\n  CHAR_QUESTION_MARK,        /* ? */\n  CHAR_RIGHT_CURLY_BRACE,    /* } */\n  CHAR_RIGHT_PARENTHESES,    /* ) */\n  CHAR_RIGHT_SQUARE_BRACKET  /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n  if (token.isPrefix !== true) {\n    token.depth = token.isGlobstar ? Infinity : 1;\n  }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n  const opts = options || {};\n\n  const length = input.length - 1;\n  const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n  const slashes = [];\n  const tokens = [];\n  const parts = [];\n\n  let str = input;\n  let index = -1;\n  let start = 0;\n  let lastIndex = 0;\n  let isBrace = false;\n  let isBracket = false;\n  let isGlob = false;\n  let isExtglob = false;\n  let isGlobstar = false;\n  let braceEscaped = false;\n  let backslashes = false;\n  let negated = false;\n  let negatedExtglob = false;\n  let finished = false;\n  let braces = 0;\n  let prev;\n  let code;\n  let token = { value: '', depth: 0, isGlob: false };\n\n  const eos = () => index >= length;\n  const peek = () => str.charCodeAt(index + 1);\n  const advance = () => {\n    prev = code;\n    return str.charCodeAt(++index);\n  };\n\n  while (index < length) {\n    code = advance();\n    let next;\n\n    if (code === CHAR_BACKWARD_SLASH) {\n      backslashes = token.backslashes = true;\n      code = advance();\n\n      if (code === CHAR_LEFT_CURLY_BRACE) {\n        braceEscaped = true;\n      }\n      continue;\n    }\n\n    if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n      braces++;\n\n      while (eos() !== true && (code = advance())) {\n        if (code === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (code === CHAR_LEFT_CURLY_BRACE) {\n          braces++;\n          continue;\n        }\n\n        if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (braceEscaped !== true && code === CHAR_COMMA) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (code === CHAR_RIGHT_CURLY_BRACE) {\n          braces--;\n\n          if (braces === 0) {\n            braceEscaped = false;\n            isBrace = token.isBrace = true;\n            finished = true;\n            break;\n          }\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (code === CHAR_FORWARD_SLASH) {\n      slashes.push(index);\n      tokens.push(token);\n      token = { value: '', depth: 0, isGlob: false };\n\n      if (finished === true) continue;\n      if (prev === CHAR_DOT && index === (start + 1)) {\n        start += 2;\n        continue;\n      }\n\n      lastIndex = index + 1;\n      continue;\n    }\n\n    if (opts.noext !== true) {\n      const isExtglobChar = code === CHAR_PLUS\n        || code === CHAR_AT\n        || code === CHAR_ASTERISK\n        || code === CHAR_QUESTION_MARK\n        || code === CHAR_EXCLAMATION_MARK;\n\n      if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n        isGlob = token.isGlob = true;\n        isExtglob = token.isExtglob = true;\n        finished = true;\n        if (code === CHAR_EXCLAMATION_MARK && index === start) {\n          negatedExtglob = true;\n        }\n\n        if (scanToEnd === true) {\n          while (eos() !== true && (code = advance())) {\n            if (code === CHAR_BACKWARD_SLASH) {\n              backslashes = token.backslashes = true;\n              code = advance();\n              continue;\n            }\n\n            if (code === CHAR_RIGHT_PARENTHESES) {\n              isGlob = token.isGlob = true;\n              finished = true;\n              break;\n            }\n          }\n          continue;\n        }\n        break;\n      }\n    }\n\n    if (code === CHAR_ASTERISK) {\n      if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_QUESTION_MARK) {\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_LEFT_SQUARE_BRACKET) {\n      while (eos() !== true && (next = advance())) {\n        if (next === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          isBracket = token.isBracket = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n          break;\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n      negated = token.negated = true;\n      start++;\n      continue;\n    }\n\n    if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n      isGlob = token.isGlob = true;\n\n      if (scanToEnd === true) {\n        while (eos() !== true && (code = advance())) {\n          if (code === CHAR_LEFT_PARENTHESES) {\n            backslashes = token.backslashes = true;\n            code = advance();\n            continue;\n          }\n\n          if (code === CHAR_RIGHT_PARENTHESES) {\n            finished = true;\n            break;\n          }\n        }\n        continue;\n      }\n      break;\n    }\n\n    if (isGlob === true) {\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n  }\n\n  if (opts.noext === true) {\n    isExtglob = false;\n    isGlob = false;\n  }\n\n  let base = str;\n  let prefix = '';\n  let glob = '';\n\n  if (start > 0) {\n    prefix = str.slice(0, start);\n    str = str.slice(start);\n    lastIndex -= start;\n  }\n\n  if (base && isGlob === true && lastIndex > 0) {\n    base = str.slice(0, lastIndex);\n    glob = str.slice(lastIndex);\n  } else if (isGlob === true) {\n    base = '';\n    glob = str;\n  } else {\n    base = str;\n  }\n\n  if (base && base !== '' && base !== '/' && base !== str) {\n    if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n      base = base.slice(0, -1);\n    }\n  }\n\n  if (opts.unescape === true) {\n    if (glob) glob = utils.removeBackslashes(glob);\n\n    if (base && backslashes === true) {\n      base = utils.removeBackslashes(base);\n    }\n  }\n\n  const state = {\n    prefix,\n    input,\n    start,\n    base,\n    glob,\n    isBrace,\n    isBracket,\n    isGlob,\n    isExtglob,\n    isGlobstar,\n    negated,\n    negatedExtglob\n  };\n\n  if (opts.tokens === true) {\n    state.maxDepth = 0;\n    if (!isPathSeparator(code)) {\n      tokens.push(token);\n    }\n    state.tokens = tokens;\n  }\n\n  if (opts.parts === true || opts.tokens === true) {\n    let prevIndex;\n\n    for (let idx = 0; idx < slashes.length; idx++) {\n      const n = prevIndex ? prevIndex + 1 : start;\n      const i = slashes[idx];\n      const value = input.slice(n, i);\n      if (opts.tokens) {\n        if (idx === 0 && start !== 0) {\n          tokens[idx].isPrefix = true;\n          tokens[idx].value = prefix;\n        } else {\n          tokens[idx].value = value;\n        }\n        depth(tokens[idx]);\n        state.maxDepth += tokens[idx].depth;\n      }\n      if (idx !== 0 || value !== '') {\n        parts.push(value);\n      }\n      prevIndex = i;\n    }\n\n    if (prevIndex && prevIndex + 1 < input.length) {\n      const value = input.slice(prevIndex + 1);\n      parts.push(value);\n\n      if (opts.tokens) {\n        tokens[tokens.length - 1].value = value;\n        depth(tokens[tokens.length - 1]);\n        state.maxDepth += tokens[tokens.length - 1].depth;\n      }\n    }\n\n    state.slashes = slashes;\n    state.parts = parts;\n  }\n\n  return state;\n};\n\nmodule.exports = scan;\n", "'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  POSIX_REGEX_SOURCE,\n  REGEX_NON_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_BACKREF,\n  REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n  if (typeof options.expandRange === 'function') {\n    return options.expandRange(...args, options);\n  }\n\n  args.sort();\n  const value = `[${args.join('-')}]`;\n\n  try {\n    /* eslint-disable-next-line no-new */\n    new RegExp(value);\n  } catch (ex) {\n    return args.map(v => utils.escapeRegex(v)).join('..');\n  }\n\n  return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n  return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  input = REPLACEMENTS[input] || input;\n\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n  let len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n  const tokens = [bos];\n\n  const capture = opts.capture ? '' : '?:';\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const PLATFORM_CHARS = constants.globChars(win32);\n  const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n  const {\n    DOT_LITERAL,\n    PLUS_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOT_SLASH,\n    NO_DOTS_SLASH,\n    QMARK,\n    QMARK_NO_DOT,\n    STAR,\n    START_ANCHOR\n  } = PLATFORM_CHARS;\n\n  const globstar = opts => {\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const nodot = opts.dot ? '' : NO_DOT;\n  const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n  let star = opts.bash === true ? globstar(opts) : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  // minimatch options support\n  if (typeof opts.noext === 'boolean') {\n    opts.noextglob = opts.noext;\n  }\n\n  const state = {\n    input,\n    index: -1,\n    start: 0,\n    dot: opts.dot === true,\n    consumed: '',\n    output: '',\n    prefix: '',\n    backtrack: false,\n    negated: false,\n    brackets: 0,\n    braces: 0,\n    parens: 0,\n    quotes: 0,\n    globstar: false,\n    tokens\n  };\n\n  input = utils.removePrefix(input, state);\n  len = input.length;\n\n  const extglobs = [];\n  const braces = [];\n  const stack = [];\n  let prev = bos;\n  let value;\n\n  /**\n   * Tokenizing helpers\n   */\n\n  const eos = () => state.index === len - 1;\n  const peek = state.peek = (n = 1) => input[state.index + n];\n  const advance = state.advance = () => input[++state.index] || '';\n  const remaining = () => input.slice(state.index + 1);\n  const consume = (value = '', num = 0) => {\n    state.consumed += value;\n    state.index += num;\n  };\n\n  const append = token => {\n    state.output += token.output != null ? token.output : token.value;\n    consume(token.value);\n  };\n\n  const negate = () => {\n    let count = 1;\n\n    while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n      advance();\n      state.start++;\n      count++;\n    }\n\n    if (count % 2 === 0) {\n      return false;\n    }\n\n    state.negated = true;\n    state.start++;\n    return true;\n  };\n\n  const increment = type => {\n    state[type]++;\n    stack.push(type);\n  };\n\n  const decrement = type => {\n    state[type]--;\n    stack.pop();\n  };\n\n  /**\n   * Push tokens onto the tokens array. This helper speeds up\n   * tokenizing by 1) helping us avoid backtracking as much as possible,\n   * and 2) helping us avoid creating extra tokens when consecutive\n   * characters are plain text. This improves performance and simplifies\n   * lookbehinds.\n   */\n\n  const push = tok => {\n    if (prev.type === 'globstar') {\n      const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n      const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n      if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n        state.output = state.output.slice(0, -prev.output.length);\n        prev.type = 'star';\n        prev.value = '*';\n        prev.output = star;\n        state.output += prev.output;\n      }\n    }\n\n    if (extglobs.length && tok.type !== 'paren') {\n      extglobs[extglobs.length - 1].inner += tok.value;\n    }\n\n    if (tok.value || tok.output) append(tok);\n    if (prev && prev.type === 'text' && tok.type === 'text') {\n      prev.value += tok.value;\n      prev.output = (prev.output || '') + tok.value;\n      return;\n    }\n\n    tok.prev = prev;\n    tokens.push(tok);\n    prev = tok;\n  };\n\n  const extglobOpen = (type, value) => {\n    const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n    token.prev = prev;\n    token.parens = state.parens;\n    token.output = state.output;\n    const output = (opts.capture ? '(' : '') + token.open;\n\n    increment('parens');\n    push({ type, value, output: state.output ? '' : ONE_CHAR });\n    push({ type: 'paren', extglob: true, value: advance(), output });\n    extglobs.push(token);\n  };\n\n  const extglobClose = token => {\n    let output = token.close + (opts.capture ? ')' : '');\n    let rest;\n\n    if (token.type === 'negate') {\n      let extglobStar = star;\n\n      if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n        extglobStar = globstar(opts);\n      }\n\n      if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n        output = token.close = `)$))${extglobStar}`;\n      }\n\n      if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n        // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n        // In this case, we need to parse the string and use it in the output of the original pattern.\n        // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n        //\n        // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n        const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n        output = token.close = `)${expression})${extglobStar})`;\n      }\n\n      if (token.prev.type === 'bos') {\n        state.negatedExtglob = true;\n      }\n    }\n\n    push({ type: 'paren', extglob: true, value, output });\n    decrement('parens');\n  };\n\n  /**\n   * Fast paths\n   */\n\n  if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n    let backslashes = false;\n\n    let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n      if (first === '\\\\') {\n        backslashes = true;\n        return m;\n      }\n\n      if (first === '?') {\n        if (esc) {\n          return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        if (index === 0) {\n          return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        return QMARK.repeat(chars.length);\n      }\n\n      if (first === '.') {\n        return DOT_LITERAL.repeat(chars.length);\n      }\n\n      if (first === '*') {\n        if (esc) {\n          return esc + first + (rest ? star : '');\n        }\n        return star;\n      }\n      return esc ? m : `\\\\${m}`;\n    });\n\n    if (backslashes === true) {\n      if (opts.unescape === true) {\n        output = output.replace(/\\\\/g, '');\n      } else {\n        output = output.replace(/\\\\+/g, m => {\n          return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n        });\n      }\n    }\n\n    if (output === input && opts.contains === true) {\n      state.output = input;\n      return state;\n    }\n\n    state.output = utils.wrapOutput(output, state, options);\n    return state;\n  }\n\n  /**\n   * Tokenize input until we reach end-of-string\n   */\n\n  while (!eos()) {\n    value = advance();\n\n    if (value === '\\u0000') {\n      continue;\n    }\n\n    /**\n     * Escaped characters\n     */\n\n    if (value === '\\\\') {\n      const next = peek();\n\n      if (next === '/' && opts.bash !== true) {\n        continue;\n      }\n\n      if (next === '.' || next === ';') {\n        continue;\n      }\n\n      if (!next) {\n        value += '\\\\';\n        push({ type: 'text', value });\n        continue;\n      }\n\n      // collapse slashes to reduce potential for exploits\n      const match = /^\\\\+/.exec(remaining());\n      let slashes = 0;\n\n      if (match && match[0].length > 2) {\n        slashes = match[0].length;\n        state.index += slashes;\n        if (slashes % 2 !== 0) {\n          value += '\\\\';\n        }\n      }\n\n      if (opts.unescape === true) {\n        value = advance();\n      } else {\n        value += advance();\n      }\n\n      if (state.brackets === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n    }\n\n    /**\n     * If we're inside a regex character class, continue\n     * until we reach the closing bracket.\n     */\n\n    if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n      if (opts.posix !== false && value === ':') {\n        const inner = prev.value.slice(1);\n        if (inner.includes('[')) {\n          prev.posix = true;\n\n          if (inner.includes(':')) {\n            const idx = prev.value.lastIndexOf('[');\n            const pre = prev.value.slice(0, idx);\n            const rest = prev.value.slice(idx + 2);\n            const posix = POSIX_REGEX_SOURCE[rest];\n            if (posix) {\n              prev.value = pre + posix;\n              state.backtrack = true;\n              advance();\n\n              if (!bos.output && tokens.indexOf(prev) === 1) {\n                bos.output = ONE_CHAR;\n              }\n              continue;\n            }\n          }\n        }\n      }\n\n      if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n        value = `\\\\${value}`;\n      }\n\n      if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n        value = `\\\\${value}`;\n      }\n\n      if (opts.posix === true && value === '!' && prev.value === '[') {\n        value = '^';\n      }\n\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * If we're inside a quoted string, continue\n     * until we reach the closing double quote.\n     */\n\n    if (state.quotes === 1 && value !== '\"') {\n      value = utils.escapeRegex(value);\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * Double quotes\n     */\n\n    if (value === '\"') {\n      state.quotes = state.quotes === 1 ? 0 : 1;\n      if (opts.keepQuotes === true) {\n        push({ type: 'text', value });\n      }\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === '(') {\n      increment('parens');\n      push({ type: 'paren', value });\n      continue;\n    }\n\n    if (value === ')') {\n      if (state.parens === 0 && opts.strictBrackets === true) {\n        throw new SyntaxError(syntaxError('opening', '('));\n      }\n\n      const extglob = extglobs[extglobs.length - 1];\n      if (extglob && state.parens === extglob.parens + 1) {\n        extglobClose(extglobs.pop());\n        continue;\n      }\n\n      push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n      decrement('parens');\n      continue;\n    }\n\n    /**\n     * Square brackets\n     */\n\n    if (value === '[') {\n      if (opts.nobracket === true || !remaining().includes(']')) {\n        if (opts.nobracket !== true && opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('closing', ']'));\n        }\n\n        value = `\\\\${value}`;\n      } else {\n        increment('brackets');\n      }\n\n      push({ type: 'bracket', value });\n      continue;\n    }\n\n    if (value === ']') {\n      if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      if (state.brackets === 0) {\n        if (opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('opening', '['));\n        }\n\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      decrement('brackets');\n\n      const prevValue = prev.value.slice(1);\n      if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n        value = `/${value}`;\n      }\n\n      prev.value += value;\n      append({ value });\n\n      // when literal brackets are explicitly disabled\n      // assume we should match with a regex character class\n      if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n        continue;\n      }\n\n      const escaped = utils.escapeRegex(prev.value);\n      state.output = state.output.slice(0, -prev.value.length);\n\n      // when literal brackets are explicitly enabled\n      // assume we should escape the brackets to match literal characters\n      if (opts.literalBrackets === true) {\n        state.output += escaped;\n        prev.value = escaped;\n        continue;\n      }\n\n      // when the user specifies nothing, try to match both\n      prev.value = `(${capture}${escaped}|${prev.value})`;\n      state.output += prev.value;\n      continue;\n    }\n\n    /**\n     * Braces\n     */\n\n    if (value === '{' && opts.nobrace !== true) {\n      increment('braces');\n\n      const open = {\n        type: 'brace',\n        value,\n        output: '(',\n        outputIndex: state.output.length,\n        tokensIndex: state.tokens.length\n      };\n\n      braces.push(open);\n      push(open);\n      continue;\n    }\n\n    if (value === '}') {\n      const brace = braces[braces.length - 1];\n\n      if (opts.nobrace === true || !brace) {\n        push({ type: 'text', value, output: value });\n        continue;\n      }\n\n      let output = ')';\n\n      if (brace.dots === true) {\n        const arr = tokens.slice();\n        const range = [];\n\n        for (let i = arr.length - 1; i >= 0; i--) {\n          tokens.pop();\n          if (arr[i].type === 'brace') {\n            break;\n          }\n          if (arr[i].type !== 'dots') {\n            range.unshift(arr[i].value);\n          }\n        }\n\n        output = expandRange(range, opts);\n        state.backtrack = true;\n      }\n\n      if (brace.comma !== true && brace.dots !== true) {\n        const out = state.output.slice(0, brace.outputIndex);\n        const toks = state.tokens.slice(brace.tokensIndex);\n        brace.value = brace.output = '\\\\{';\n        value = output = '\\\\}';\n        state.output = out;\n        for (const t of toks) {\n          state.output += (t.output || t.value);\n        }\n      }\n\n      push({ type: 'brace', value, output });\n      decrement('braces');\n      braces.pop();\n      continue;\n    }\n\n    /**\n     * Pipes\n     */\n\n    if (value === '|') {\n      if (extglobs.length > 0) {\n        extglobs[extglobs.length - 1].conditions++;\n      }\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Commas\n     */\n\n    if (value === ',') {\n      let output = value;\n\n      const brace = braces[braces.length - 1];\n      if (brace && stack[stack.length - 1] === 'braces') {\n        brace.comma = true;\n        output = '|';\n      }\n\n      push({ type: 'comma', value, output });\n      continue;\n    }\n\n    /**\n     * Slashes\n     */\n\n    if (value === '/') {\n      // if the beginning of the glob is \"./\", advance the start\n      // to the current index, and don't add the \"./\" characters\n      // to the state. This greatly simplifies lookbehinds when\n      // checking for BOS characters like \"!\" and \".\" (not \"./\")\n      if (prev.type === 'dot' && state.index === state.start + 1) {\n        state.start = state.index + 1;\n        state.consumed = '';\n        state.output = '';\n        tokens.pop();\n        prev = bos; // reset \"prev\" to the first token\n        continue;\n      }\n\n      push({ type: 'slash', value, output: SLASH_LITERAL });\n      continue;\n    }\n\n    /**\n     * Dots\n     */\n\n    if (value === '.') {\n      if (state.braces > 0 && prev.type === 'dot') {\n        if (prev.value === '.') prev.output = DOT_LITERAL;\n        const brace = braces[braces.length - 1];\n        prev.type = 'dots';\n        prev.output += value;\n        prev.value += value;\n        brace.dots = true;\n        continue;\n      }\n\n      if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n        push({ type: 'text', value, output: DOT_LITERAL });\n        continue;\n      }\n\n      push({ type: 'dot', value, output: DOT_LITERAL });\n      continue;\n    }\n\n    /**\n     * Question marks\n     */\n\n    if (value === '?') {\n      const isGroup = prev && prev.value === '(';\n      if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('qmark', value);\n        continue;\n      }\n\n      if (prev && prev.type === 'paren') {\n        const next = peek();\n        let output = value;\n\n        if (next === '<' && !utils.supportsLookbehinds()) {\n          throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n        }\n\n        if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n          output = `\\\\${value}`;\n        }\n\n        push({ type: 'text', value, output });\n        continue;\n      }\n\n      if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n        push({ type: 'qmark', value, output: QMARK_NO_DOT });\n        continue;\n      }\n\n      push({ type: 'qmark', value, output: QMARK });\n      continue;\n    }\n\n    /**\n     * Exclamation\n     */\n\n    if (value === '!') {\n      if (opts.noextglob !== true && peek() === '(') {\n        if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n          extglobOpen('negate', value);\n          continue;\n        }\n      }\n\n      if (opts.nonegate !== true && state.index === 0) {\n        negate();\n        continue;\n      }\n    }\n\n    /**\n     * Plus\n     */\n\n    if (value === '+') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('plus', value);\n        continue;\n      }\n\n      if ((prev && prev.value === '(') || opts.regex === false) {\n        push({ type: 'plus', value, output: PLUS_LITERAL });\n        continue;\n      }\n\n      if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n        push({ type: 'plus', value });\n        continue;\n      }\n\n      push({ type: 'plus', value: PLUS_LITERAL });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value === '@') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        push({ type: 'at', extglob: true, value, output: '' });\n        continue;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value !== '*') {\n      if (value === '$' || value === '^') {\n        value = `\\\\${value}`;\n      }\n\n      const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n      if (match) {\n        value += match[0];\n        state.index += match[0].length;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Stars\n     */\n\n    if (prev && (prev.type === 'globstar' || prev.star === true)) {\n      prev.type = 'star';\n      prev.star = true;\n      prev.value += value;\n      prev.output = star;\n      state.backtrack = true;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    let rest = remaining();\n    if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n      extglobOpen('star', value);\n      continue;\n    }\n\n    if (prev.type === 'star') {\n      if (opts.noglobstar === true) {\n        consume(value);\n        continue;\n      }\n\n      const prior = prev.prev;\n      const before = prior.prev;\n      const isStart = prior.type === 'slash' || prior.type === 'bos';\n      const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n      if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n      const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n      if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      // strip consecutive `/**/`\n      while (rest.slice(0, 3) === '/**') {\n        const after = input[state.index + 4];\n        if (after && after !== '/') {\n          break;\n        }\n        rest = rest.slice(3);\n        consume('/**', 3);\n      }\n\n      if (prior.type === 'bos' && eos()) {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = globstar(opts);\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n        prev.value += value;\n        state.globstar = true;\n        state.output += prior.output + prev.output;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n        const end = rest[1] !== void 0 ? '|$' : '';\n\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n        prev.value += value;\n\n        state.output += prior.output + prev.output;\n        state.globstar = true;\n\n        consume(value + advance());\n\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      if (prior.type === 'bos' && rest[0] === '/') {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value + advance());\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      // remove single star from output\n      state.output = state.output.slice(0, -prev.output.length);\n\n      // reset previous token to globstar\n      prev.type = 'globstar';\n      prev.output = globstar(opts);\n      prev.value += value;\n\n      // reset output with globstar\n      state.output += prev.output;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    const token = { type: 'star', value, output: star };\n\n    if (opts.bash === true) {\n      token.output = '.*?';\n      if (prev.type === 'bos' || prev.type === 'slash') {\n        token.output = nodot + token.output;\n      }\n      push(token);\n      continue;\n    }\n\n    if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n      token.output = value;\n      push(token);\n      continue;\n    }\n\n    if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n      if (prev.type === 'dot') {\n        state.output += NO_DOT_SLASH;\n        prev.output += NO_DOT_SLASH;\n\n      } else if (opts.dot === true) {\n        state.output += NO_DOTS_SLASH;\n        prev.output += NO_DOTS_SLASH;\n\n      } else {\n        state.output += nodot;\n        prev.output += nodot;\n      }\n\n      if (peek() !== '*') {\n        state.output += ONE_CHAR;\n        prev.output += ONE_CHAR;\n      }\n    }\n\n    push(token);\n  }\n\n  while (state.brackets > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n    state.output = utils.escapeLast(state.output, '[');\n    decrement('brackets');\n  }\n\n  while (state.parens > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n    state.output = utils.escapeLast(state.output, '(');\n    decrement('parens');\n  }\n\n  while (state.braces > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n    state.output = utils.escapeLast(state.output, '{');\n    decrement('braces');\n  }\n\n  if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n    push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n  }\n\n  // rebuild the output if we had to backtrack at any point\n  if (state.backtrack === true) {\n    state.output = '';\n\n    for (const token of state.tokens) {\n      state.output += token.output != null ? token.output : token.value;\n\n      if (token.suffix) {\n        state.output += token.suffix;\n      }\n    }\n  }\n\n  return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  const len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  input = REPLACEMENTS[input] || input;\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const {\n    DOT_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOTS,\n    NO_DOTS_SLASH,\n    STAR,\n    START_ANCHOR\n  } = constants.globChars(win32);\n\n  const nodot = opts.dot ? NO_DOTS : NO_DOT;\n  const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n  const capture = opts.capture ? '' : '?:';\n  const state = { negated: false, prefix: '' };\n  let star = opts.bash === true ? '.*?' : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  const globstar = opts => {\n    if (opts.noglobstar === true) return star;\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const create = str => {\n    switch (str) {\n      case '*':\n        return `${nodot}${ONE_CHAR}${star}`;\n\n      case '.*':\n        return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*.*':\n        return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*/*':\n        return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n      case '**':\n        return nodot + globstar(opts);\n\n      case '**/*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n      case '**/*.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '**/.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      default: {\n        const match = /^(.*?)\\.(\\w+)$/.exec(str);\n        if (!match) return;\n\n        const source = create(match[1]);\n        if (!source) return;\n\n        return source + DOT_LITERAL + match[2];\n      }\n    }\n  };\n\n  const output = utils.removePrefix(input, state);\n  let source = create(output);\n\n  if (source && opts.strictSlashes !== true) {\n    source += `${SLASH_LITERAL}?`;\n  }\n\n  return source;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n  if (Array.isArray(glob)) {\n    const fns = glob.map(input => picomatch(input, options, returnState));\n    const arrayMatcher = str => {\n      for (const isMatch of fns) {\n        const state = isMatch(str);\n        if (state) return state;\n      }\n      return false;\n    };\n    return arrayMatcher;\n  }\n\n  const isState = isObject(glob) && glob.tokens && glob.input;\n\n  if (glob === '' || (typeof glob !== 'string' && !isState)) {\n    throw new TypeError('Expected pattern to be a non-empty string');\n  }\n\n  const opts = options || {};\n  const posix = utils.isWindows(options);\n  const regex = isState\n    ? picomatch.compileRe(glob, options)\n    : picomatch.makeRe(glob, options, false, true);\n\n  const state = regex.state;\n  delete regex.state;\n\n  let isIgnored = () => false;\n  if (opts.ignore) {\n    const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n    isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n  }\n\n  const matcher = (input, returnObject = false) => {\n    const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n    const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n    if (typeof opts.onResult === 'function') {\n      opts.onResult(result);\n    }\n\n    if (isMatch === false) {\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (isIgnored(input)) {\n      if (typeof opts.onIgnore === 'function') {\n        opts.onIgnore(result);\n      }\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (typeof opts.onMatch === 'function') {\n      opts.onMatch(result);\n    }\n    return returnObject ? result : true;\n  };\n\n  if (returnState) {\n    matcher.state = state;\n  }\n\n  return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected input to be a string');\n  }\n\n  if (input === '') {\n    return { isMatch: false, output: '' };\n  }\n\n  const opts = options || {};\n  const format = opts.format || (posix ? utils.toPosixSlashes : null);\n  let match = input === glob;\n  let output = (match && format) ? format(input) : input;\n\n  if (match === false) {\n    output = format ? format(input) : input;\n    match = output === glob;\n  }\n\n  if (match === false || opts.capture === true) {\n    if (opts.matchBase === true || opts.basename === true) {\n      match = picomatch.matchBase(input, regex, options, posix);\n    } else {\n      match = regex.exec(output);\n    }\n  }\n\n  return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n  return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n  if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n  return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n *   input: '!./foo/*.js',\n *   start: 3,\n *   base: 'foo',\n *   glob: '*.js',\n *   isBrace: false,\n *   isBracket: false,\n *   isGlob: true,\n *   isExtglob: false,\n *   isGlobstar: false,\n *   negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n  if (returnOutput === true) {\n    return state.output;\n  }\n\n  const opts = options || {};\n  const prepend = opts.contains ? '' : '^';\n  const append = opts.contains ? '' : '$';\n\n  let source = `${prepend}(?:${state.output})${append}`;\n  if (state && state.negated === true) {\n    source = `^(?!${source}).*$`;\n  }\n\n  const regex = picomatch.toRegex(source, options);\n  if (returnState === true) {\n    regex.state = state;\n  }\n\n  return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n  if (!input || typeof input !== 'string') {\n    throw new TypeError('Expected a non-empty string');\n  }\n\n  let parsed = { negated: false, fastpaths: true };\n\n  if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n    parsed.output = parse.fastpaths(input, options);\n  }\n\n  if (!parsed.output) {\n    parsed = parse(input, options);\n  }\n\n  return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n  try {\n    const opts = options || {};\n    return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n  } catch (err) {\n    if (options && options.debug === true) throw err;\n    return /$^/;\n  }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n", "'use strict';\n\nmodule.exports = require('./lib/picomatch');\n", "'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\n\nconst isEmptyString = v => v === '' || v === './';\nconst hasBraces = v => {\n  const index = v.indexOf('{');\n  return index > -1 && v.indexOf('}', index) > -1;\n};\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array} `list` List of strings to match.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n  patterns = [].concat(patterns);\n  list = [].concat(list);\n\n  let omit = new Set();\n  let keep = new Set();\n  let items = new Set();\n  let negatives = 0;\n\n  let onResult = state => {\n    items.add(state.output);\n    if (options && options.onResult) {\n      options.onResult(state);\n    }\n  };\n\n  for (let i = 0; i < patterns.length; i++) {\n    let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n    let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n    if (negated) negatives++;\n\n    for (let item of list) {\n      let matched = isMatch(item, true);\n\n      let match = negated ? !matched.isMatch : matched.isMatch;\n      if (!match) continue;\n\n      if (negated) {\n        omit.add(matched.output);\n      } else {\n        omit.delete(matched.output);\n        keep.add(matched.output);\n      }\n    }\n  }\n\n  let result = negatives === patterns.length ? [...items] : [...keep];\n  let matches = result.filter(item => !omit.has(item));\n\n  if (options && matches.length === 0) {\n    if (options.failglob === true) {\n      throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n    }\n\n    if (options.nonull === true || options.nullglob === true) {\n      return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n    }\n  }\n\n  return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n  patterns = [].concat(patterns).map(String);\n  let result = new Set();\n  let items = [];\n\n  let onResult = state => {\n    if (options.onResult) options.onResult(state);\n    items.push(state.output);\n  };\n\n  let matches = new Set(micromatch(list, patterns, { ...options, onResult }));\n\n  for (let item of items) {\n    if (!matches.has(item)) {\n      result.add(item);\n    }\n  }\n  return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  if (Array.isArray(pattern)) {\n    return pattern.some(p => micromatch.contains(str, p, options));\n  }\n\n  if (typeof pattern === 'string') {\n    if (isEmptyString(str) || isEmptyString(pattern)) {\n      return false;\n    }\n\n    if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n      return true;\n    }\n  }\n\n  return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('Expected the first argument to be an object');\n  }\n  let keys = micromatch(Object.keys(obj), patterns, options);\n  let res = {};\n  for (let key of keys) res[key] = obj[key];\n  return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (items.some(item => isMatch(item))) {\n      return true;\n    }\n  }\n  return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (!items.every(item => isMatch(item))) {\n      return false;\n    }\n  }\n  return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n  let posix = utils.isWindows(options);\n  let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n  let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n  if (match) {\n    return match.slice(1).map(v => v === void 0 ? '' : v);\n  }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.parse(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n  let res = [];\n  for (let pattern of [].concat(patterns || [])) {\n    for (let str of braces(String(pattern), options)) {\n      res.push(picomatch.parse(str, options));\n    }\n  }\n  return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  if ((options && options.nobrace === true) || !hasBraces(pattern)) {\n    return [pattern];\n  }\n  return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\n// exposed for tests\nmicromatch.hasBraces = hasBraces;\nmodule.exports = micromatch;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAbsolute = exports.partitionAbsoluteAndRelative = exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\nconst path = require(\"path\");\nconst globParent = require(\"glob-parent\");\nconst micromatch = require(\"micromatch\");\nconst GLOBSTAR = '**';\nconst ESCAPE_SYMBOL = '\\\\';\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[[^[]*]/;\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/;\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\([^(]*\\)/;\nconst BRACE_EXPANSION_SEPARATORS_RE = /,|\\.\\./;\n/**\n * Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string.\n * The latter is due to the presence of the device path at the beginning of the UNC path.\n */\nconst DOUBLE_SLASH_RE = /(?!^)\\/{2,}/g;\nfunction isStaticPattern(pattern, options = {}) {\n    return !isDynamicPattern(pattern, options);\n}\nexports.isStaticPattern = isStaticPattern;\nfunction isDynamicPattern(pattern, options = {}) {\n    /**\n     * A special case with an empty string is necessary for matching patterns that start with a forward slash.\n     * An empty string cannot be a dynamic pattern.\n     * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\n     */\n    if (pattern === '') {\n        return false;\n    }\n    /**\n     * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\n     * filepath directly (without read directory).\n     */\n    if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\n        return true;\n    }\n    if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\n        return true;\n    }\n    if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\n        return true;\n    }\n    if (options.braceExpansion !== false && hasBraceExpansion(pattern)) {\n        return true;\n    }\n    return false;\n}\nexports.isDynamicPattern = isDynamicPattern;\nfunction hasBraceExpansion(pattern) {\n    const openingBraceIndex = pattern.indexOf('{');\n    if (openingBraceIndex === -1) {\n        return false;\n    }\n    const closingBraceIndex = pattern.indexOf('}', openingBraceIndex + 1);\n    if (closingBraceIndex === -1) {\n        return false;\n    }\n    const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex);\n    return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent);\n}\nfunction convertToPositivePattern(pattern) {\n    return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\n}\nexports.convertToPositivePattern = convertToPositivePattern;\nfunction convertToNegativePattern(pattern) {\n    return '!' + pattern;\n}\nexports.convertToNegativePattern = convertToNegativePattern;\nfunction isNegativePattern(pattern) {\n    return pattern.startsWith('!') && pattern[1] !== '(';\n}\nexports.isNegativePattern = isNegativePattern;\nfunction isPositivePattern(pattern) {\n    return !isNegativePattern(pattern);\n}\nexports.isPositivePattern = isPositivePattern;\nfunction getNegativePatterns(patterns) {\n    return patterns.filter(isNegativePattern);\n}\nexports.getNegativePatterns = getNegativePatterns;\nfunction getPositivePatterns(patterns) {\n    return patterns.filter(isPositivePattern);\n}\nexports.getPositivePatterns = getPositivePatterns;\n/**\n * Returns patterns that can be applied inside the current directory.\n *\n * @example\n * // ['./*', '*', 'a/*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsInsideCurrentDirectory(patterns) {\n    return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern));\n}\nexports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory;\n/**\n * Returns patterns to be expanded relative to (outside) the current directory.\n *\n * @example\n * // ['../*', './../*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsOutsideCurrentDirectory(patterns) {\n    return patterns.filter(isPatternRelatedToParentDirectory);\n}\nexports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory;\nfunction isPatternRelatedToParentDirectory(pattern) {\n    return pattern.startsWith('..') || pattern.startsWith('./..');\n}\nexports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory;\nfunction getBaseDirectory(pattern) {\n    return globParent(pattern, { flipBackslashes: false });\n}\nexports.getBaseDirectory = getBaseDirectory;\nfunction hasGlobStar(pattern) {\n    return pattern.includes(GLOBSTAR);\n}\nexports.hasGlobStar = hasGlobStar;\nfunction endsWithSlashGlobStar(pattern) {\n    return pattern.endsWith('/' + GLOBSTAR);\n}\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\nfunction isAffectDepthOfReadingPattern(pattern) {\n    const basename = path.basename(pattern);\n    return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\n}\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\nfunction expandPatternsWithBraceExpansion(patterns) {\n    return patterns.reduce((collection, pattern) => {\n        return collection.concat(expandBraceExpansion(pattern));\n    }, []);\n}\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\nfunction expandBraceExpansion(pattern) {\n    const patterns = micromatch.braces(pattern, { expand: true, nodupes: true, keepEscaping: true });\n    /**\n     * Sort the patterns by length so that the same depth patterns are processed side by side.\n     * `a/{b,}/{c,}/*` \u2013 `['a///*', 'a/b//*', 'a//c/*', 'a/b/c/*']`\n     */\n    patterns.sort((a, b) => a.length - b.length);\n    /**\n     * Micromatch can return an empty string in the case of patterns like `{a,}`.\n     */\n    return patterns.filter((pattern) => pattern !== '');\n}\nexports.expandBraceExpansion = expandBraceExpansion;\nfunction getPatternParts(pattern, options) {\n    let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\n    /**\n     * The scan method returns an empty array in some cases.\n     * See micromatch/picomatch#58 for more details.\n     */\n    if (parts.length === 0) {\n        parts = [pattern];\n    }\n    /**\n     * The scan method does not return an empty part for the pattern with a forward slash.\n     * This is another part of micromatch/picomatch#58.\n     */\n    if (parts[0].startsWith('/')) {\n        parts[0] = parts[0].slice(1);\n        parts.unshift('');\n    }\n    return parts;\n}\nexports.getPatternParts = getPatternParts;\nfunction makeRe(pattern, options) {\n    return micromatch.makeRe(pattern, options);\n}\nexports.makeRe = makeRe;\nfunction convertPatternsToRe(patterns, options) {\n    return patterns.map((pattern) => makeRe(pattern, options));\n}\nexports.convertPatternsToRe = convertPatternsToRe;\nfunction matchAny(entry, patternsRe) {\n    return patternsRe.some((patternRe) => patternRe.test(entry));\n}\nexports.matchAny = matchAny;\n/**\n * This package only works with forward slashes as a path separator.\n * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes.\n */\nfunction removeDuplicateSlashes(pattern) {\n    return pattern.replace(DOUBLE_SLASH_RE, '/');\n}\nexports.removeDuplicateSlashes = removeDuplicateSlashes;\nfunction partitionAbsoluteAndRelative(patterns) {\n    const absolute = [];\n    const relative = [];\n    for (const pattern of patterns) {\n        if (isAbsolute(pattern)) {\n            absolute.push(pattern);\n        }\n        else {\n            relative.push(pattern);\n        }\n    }\n    return [absolute, relative];\n}\nexports.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative;\nfunction isAbsolute(pattern) {\n    return path.isAbsolute(pattern);\n}\nexports.isAbsolute = isAbsolute;\n", "'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n  const streamsQueue = []\n  const args = slice.call(arguments)\n  let merging = false\n  let options = args[args.length - 1]\n\n  if (options && !Array.isArray(options) && options.pipe == null) {\n    args.pop()\n  } else {\n    options = {}\n  }\n\n  const doEnd = options.end !== false\n  const doPipeError = options.pipeError === true\n  if (options.objectMode == null) {\n    options.objectMode = true\n  }\n  if (options.highWaterMark == null) {\n    options.highWaterMark = 64 * 1024\n  }\n  const mergedStream = PassThrough(options)\n\n  function addStream () {\n    for (let i = 0, len = arguments.length; i < len; i++) {\n      streamsQueue.push(pauseStreams(arguments[i], options))\n    }\n    mergeStream()\n    return this\n  }\n\n  function mergeStream () {\n    if (merging) {\n      return\n    }\n    merging = true\n\n    let streams = streamsQueue.shift()\n    if (!streams) {\n      process.nextTick(endStream)\n      return\n    }\n    if (!Array.isArray(streams)) {\n      streams = [streams]\n    }\n\n    let pipesCount = streams.length + 1\n\n    function next () {\n      if (--pipesCount > 0) {\n        return\n      }\n      merging = false\n      mergeStream()\n    }\n\n    function pipe (stream) {\n      function onend () {\n        stream.removeListener('merge2UnpipeEnd', onend)\n        stream.removeListener('end', onend)\n        if (doPipeError) {\n          stream.removeListener('error', onerror)\n        }\n        next()\n      }\n      function onerror (err) {\n        mergedStream.emit('error', err)\n      }\n      // skip ended stream\n      if (stream._readableState.endEmitted) {\n        return next()\n      }\n\n      stream.on('merge2UnpipeEnd', onend)\n      stream.on('end', onend)\n\n      if (doPipeError) {\n        stream.on('error', onerror)\n      }\n\n      stream.pipe(mergedStream, { end: false })\n      // compatible for old stream\n      stream.resume()\n    }\n\n    for (let i = 0; i < streams.length; i++) {\n      pipe(streams[i])\n    }\n\n    next()\n  }\n\n  function endStream () {\n    merging = false\n    // emit 'queueDrain' when all streams merged.\n    mergedStream.emit('queueDrain')\n    if (doEnd) {\n      mergedStream.end()\n    }\n  }\n\n  mergedStream.setMaxListeners(0)\n  mergedStream.add = addStream\n  mergedStream.on('unpipe', function (stream) {\n    stream.emit('merge2UnpipeEnd')\n  })\n\n  if (args.length) {\n    addStream.apply(null, args)\n  }\n  return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n  if (!Array.isArray(streams)) {\n    // Backwards-compat with old-style streams\n    if (!streams._readableState && streams.pipe) {\n      streams = streams.pipe(PassThrough(options))\n    }\n    if (!streams._readableState || !streams.pause || !streams.pipe) {\n      throw new Error('Only readable stream can be merged.')\n    }\n    streams.pause()\n  } else {\n    for (let i = 0, len = streams.length; i < len; i++) {\n      streams[i] = pauseStreams(streams[i], options)\n    }\n  }\n  return streams\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nconst merge2 = require(\"merge2\");\nfunction merge(streams) {\n    const mergedStream = merge2(streams);\n    streams.forEach((stream) => {\n        stream.once('error', (error) => mergedStream.emit('error', error));\n    });\n    mergedStream.once('close', () => propagateCloseEventToSources(streams));\n    mergedStream.once('end', () => propagateCloseEventToSources(streams));\n    return mergedStream;\n}\nexports.merge = merge;\nfunction propagateCloseEventToSources(streams) {\n    streams.forEach((stream) => stream.emit('close'));\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmpty = exports.isString = void 0;\nfunction isString(input) {\n    return typeof input === 'string';\n}\nexports.isString = isString;\nfunction isEmpty(input) {\n    return input === '';\n}\nexports.isEmpty = isEmpty;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\nconst array = require(\"./array\");\nexports.array = array;\nconst errno = require(\"./errno\");\nexports.errno = errno;\nconst fs = require(\"./fs\");\nexports.fs = fs;\nconst path = require(\"./path\");\nexports.path = path;\nconst pattern = require(\"./pattern\");\nexports.pattern = pattern;\nconst stream = require(\"./stream\");\nexports.stream = stream;\nconst string = require(\"./string\");\nexports.string = string;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;\nconst utils = require(\"../utils\");\nfunction generate(input, settings) {\n    const patterns = processPatterns(input, settings);\n    const ignore = processPatterns(settings.ignore, settings);\n    const positivePatterns = getPositivePatterns(patterns);\n    const negativePatterns = getNegativePatternsAsPositive(patterns, ignore);\n    const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));\n    const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\n    const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\n    const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\n    return staticTasks.concat(dynamicTasks);\n}\nexports.generate = generate;\nfunction processPatterns(input, settings) {\n    let patterns = input;\n    /**\n     * The original pattern like `{,*,**,a/*}` can lead to problems checking the depth when matching entry\n     * and some problems with the micromatch package (see fast-glob issues: #365, #394).\n     *\n     * To solve this problem, we expand all patterns containing brace expansion. This can lead to a slight slowdown\n     * in matching in the case of a large set of patterns after expansion.\n     */\n    if (settings.braceExpansion) {\n        patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns);\n    }\n    /**\n     * If the `baseNameMatch` option is enabled, we must add globstar to patterns, so that they can be used\n     * at any nesting level.\n     *\n     * We do this here, because otherwise we have to complicate the filtering logic. For example, we need to change\n     * the pattern in the filter before creating a regular expression. There is no need to change the patterns\n     * in the application. Only on the input.\n     */\n    if (settings.baseNameMatch) {\n        patterns = patterns.map((pattern) => pattern.includes('/') ? pattern : `**/${pattern}`);\n    }\n    /**\n     * This method also removes duplicate slashes that may have been in the pattern or formed as a result of expansion.\n     */\n    return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern));\n}\n/**\n * Returns tasks grouped by basic pattern directories.\n *\n * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.\n * This is necessary because directory traversal starts at the base directory and goes deeper.\n */\nfunction convertPatternsToTasks(positive, negative, dynamic) {\n    const tasks = [];\n    const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive);\n    const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive);\n    const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory);\n    const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory);\n    tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic));\n    /*\n     * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory\n     * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest.\n     */\n    if ('.' in insideCurrentDirectoryGroup) {\n        tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic));\n    }\n    else {\n        tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic));\n    }\n    return tasks;\n}\nexports.convertPatternsToTasks = convertPatternsToTasks;\nfunction getPositivePatterns(patterns) {\n    return utils.pattern.getPositivePatterns(patterns);\n}\nexports.getPositivePatterns = getPositivePatterns;\nfunction getNegativePatternsAsPositive(patterns, ignore) {\n    const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\n    const positive = negative.map(utils.pattern.convertToPositivePattern);\n    return positive;\n}\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\nfunction groupPatternsByBaseDirectory(patterns) {\n    const group = {};\n    return patterns.reduce((collection, pattern) => {\n        const base = utils.pattern.getBaseDirectory(pattern);\n        if (base in collection) {\n            collection[base].push(pattern);\n        }\n        else {\n            collection[base] = [pattern];\n        }\n        return collection;\n    }, group);\n}\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\n    return Object.keys(positive).map((base) => {\n        return convertPatternGroupToTask(base, positive[base], negative, dynamic);\n    });\n}\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\n    return {\n        dynamic,\n        positive,\n        negative,\n        base,\n        patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\n    };\n}\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings, callback) {\n    settings.fs.lstat(path, (lstatError, lstat) => {\n        if (lstatError !== null) {\n            callFailureCallback(callback, lstatError);\n            return;\n        }\n        if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n            callSuccessCallback(callback, lstat);\n            return;\n        }\n        settings.fs.stat(path, (statError, stat) => {\n            if (statError !== null) {\n                if (settings.throwErrorOnBrokenSymbolicLink) {\n                    callFailureCallback(callback, statError);\n                    return;\n                }\n                callSuccessCallback(callback, lstat);\n                return;\n            }\n            if (settings.markSymbolicLink) {\n                stat.isSymbolicLink = () => true;\n            }\n            callSuccessCallback(callback, stat);\n        });\n    });\n}\nexports.read = read;\nfunction callFailureCallback(callback, error) {\n    callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n    callback(null, result);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings) {\n    const lstat = settings.fs.lstatSync(path);\n    if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n        return lstat;\n    }\n    try {\n        const stat = settings.fs.statSync(path);\n        if (settings.markSymbolicLink) {\n            stat.isSymbolicLink = () => true;\n        }\n        return stat;\n    }\n    catch (error) {\n        if (!settings.throwErrorOnBrokenSymbolicLink) {\n            return lstat;\n        }\n        throw error;\n    }\n}\nexports.read = read;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n    lstat: fs.lstat,\n    stat: fs.stat,\n    lstatSync: fs.lstatSync,\n    statSync: fs.statSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n    if (fsMethods === undefined) {\n        return exports.FILE_SYSTEM_ADAPTER;\n    }\n    return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n    constructor(_options = {}) {\n        this._options = _options;\n        this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\n        this.fs = fs.createFileSystemAdapter(this._options.fs);\n        this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\n        this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n    }\n    _getValue(option, value) {\n        return option !== null && option !== void 0 ? option : value;\n    }\n}\nexports.default = Settings;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.statSync = exports.stat = exports.Settings = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\n    if (typeof optionsOrSettingsOrCallback === 'function') {\n        async.read(path, getSettings(), optionsOrSettingsOrCallback);\n        return;\n    }\n    async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.stat = stat;\nfunction statSync(path, optionsOrSettings) {\n    const settings = getSettings(optionsOrSettings);\n    return sync.read(path, settings);\n}\nexports.statSync = statSync;\nfunction getSettings(settingsOrOptions = {}) {\n    if (settingsOrOptions instanceof settings_1.default) {\n        return settingsOrOptions;\n    }\n    return new settings_1.default(settingsOrOptions);\n}\n", "/*! queue-microtask. MIT License. Feross Aboukhadijeh  */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n  ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n  // reuse resolved promise, and allocate it lazily\n  : cb => (promise || (promise = Promise.resolve()))\n    .then(cb)\n    .catch(err => setTimeout(() => { throw err }, 0))\n", "/*! run-parallel. MIT License. Feross Aboukhadijeh  */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n  let results, pending, keys\n  let isSync = true\n\n  if (Array.isArray(tasks)) {\n    results = []\n    pending = tasks.length\n  } else {\n    keys = Object.keys(tasks)\n    results = {}\n    pending = keys.length\n  }\n\n  function done (err) {\n    function end () {\n      if (cb) cb(err, results)\n      cb = null\n    }\n    if (isSync) queueMicrotask(end)\n    else end()\n  }\n\n  function each (i, err, result) {\n    results[i] = result\n    if (--pending === 0 || err) {\n      done(err)\n    }\n  }\n\n  if (!pending) {\n    // empty\n    done(null)\n  } else if (keys) {\n    // object\n    keys.forEach(function (key) {\n      tasks[key](function (err, result) { each(key, err, result) })\n    })\n  } else {\n    // array\n    tasks.forEach(function (task, i) {\n      task(function (err, result) { each(i, err, result) })\n    })\n  }\n\n  isSync = false\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\nif (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) {\n    throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);\n}\nconst MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\nconst MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\nconst SUPPORTED_MAJOR_VERSION = 10;\nconst SUPPORTED_MINOR_VERSION = 10;\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\n/**\n * IS `true` for Node.js 10.10 and greater.\n */\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n    constructor(name, stats) {\n        this.name = name;\n        this.isBlockDevice = stats.isBlockDevice.bind(stats);\n        this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n        this.isDirectory = stats.isDirectory.bind(stats);\n        this.isFIFO = stats.isFIFO.bind(stats);\n        this.isFile = stats.isFile.bind(stats);\n        this.isSocket = stats.isSocket.bind(stats);\n        this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n    }\n}\nfunction createDirentFromStats(name, stats) {\n    return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fs = void 0;\nconst fs = require(\"./fs\");\nexports.fs = fs;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = void 0;\nfunction joinPathSegments(a, b, separator) {\n    /**\n     * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n     */\n    if (a.endsWith(separator)) {\n        return a + b;\n    }\n    return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst rpl = require(\"run-parallel\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings, callback) {\n    if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n        readdirWithFileTypes(directory, settings, callback);\n        return;\n    }\n    readdir(directory, settings, callback);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings, callback) {\n    settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\n        if (readdirError !== null) {\n            callFailureCallback(callback, readdirError);\n            return;\n        }\n        const entries = dirents.map((dirent) => ({\n            dirent,\n            name: dirent.name,\n            path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n        }));\n        if (!settings.followSymbolicLinks) {\n            callSuccessCallback(callback, entries);\n            return;\n        }\n        const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\n        rpl(tasks, (rplError, rplEntries) => {\n            if (rplError !== null) {\n                callFailureCallback(callback, rplError);\n                return;\n            }\n            callSuccessCallback(callback, rplEntries);\n        });\n    });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction makeRplTaskEntry(entry, settings) {\n    return (done) => {\n        if (!entry.dirent.isSymbolicLink()) {\n            done(null, entry);\n            return;\n        }\n        settings.fs.stat(entry.path, (statError, stats) => {\n            if (statError !== null) {\n                if (settings.throwErrorOnBrokenSymbolicLink) {\n                    done(statError);\n                    return;\n                }\n                done(null, entry);\n                return;\n            }\n            entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n            done(null, entry);\n        });\n    };\n}\nfunction readdir(directory, settings, callback) {\n    settings.fs.readdir(directory, (readdirError, names) => {\n        if (readdirError !== null) {\n            callFailureCallback(callback, readdirError);\n            return;\n        }\n        const tasks = names.map((name) => {\n            const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n            return (done) => {\n                fsStat.stat(path, settings.fsStatSettings, (error, stats) => {\n                    if (error !== null) {\n                        done(error);\n                        return;\n                    }\n                    const entry = {\n                        name,\n                        path,\n                        dirent: utils.fs.createDirentFromStats(name, stats)\n                    };\n                    if (settings.stats) {\n                        entry.stats = stats;\n                    }\n                    done(null, entry);\n                });\n            };\n        });\n        rpl(tasks, (rplError, entries) => {\n            if (rplError !== null) {\n                callFailureCallback(callback, rplError);\n                return;\n            }\n            callSuccessCallback(callback, entries);\n        });\n    });\n}\nexports.readdir = readdir;\nfunction callFailureCallback(callback, error) {\n    callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n    callback(null, result);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings) {\n    if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n        return readdirWithFileTypes(directory, settings);\n    }\n    return readdir(directory, settings);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings) {\n    const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\n    return dirents.map((dirent) => {\n        const entry = {\n            dirent,\n            name: dirent.name,\n            path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n        };\n        if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\n            try {\n                const stats = settings.fs.statSync(entry.path);\n                entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n            }\n            catch (error) {\n                if (settings.throwErrorOnBrokenSymbolicLink) {\n                    throw error;\n                }\n            }\n        }\n        return entry;\n    });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction readdir(directory, settings) {\n    const names = settings.fs.readdirSync(directory);\n    return names.map((name) => {\n        const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n        const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\n        const entry = {\n            name,\n            path: entryPath,\n            dirent: utils.fs.createDirentFromStats(name, stats)\n        };\n        if (settings.stats) {\n            entry.stats = stats;\n        }\n        return entry;\n    });\n}\nexports.readdir = readdir;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n    lstat: fs.lstat,\n    stat: fs.stat,\n    lstatSync: fs.lstatSync,\n    statSync: fs.statSync,\n    readdir: fs.readdir,\n    readdirSync: fs.readdirSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n    if (fsMethods === undefined) {\n        return exports.FILE_SYSTEM_ADAPTER;\n    }\n    return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n    constructor(_options = {}) {\n        this._options = _options;\n        this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\n        this.fs = fs.createFileSystemAdapter(this._options.fs);\n        this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n        this.stats = this._getValue(this._options.stats, false);\n        this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n        this.fsStatSettings = new fsStat.Settings({\n            followSymbolicLink: this.followSymbolicLinks,\n            fs: this.fs,\n            throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\n        });\n    }\n    _getValue(option, value) {\n        return option !== null && option !== void 0 ? option : value;\n    }\n}\nexports.default = Settings;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\n    if (typeof optionsOrSettingsOrCallback === 'function') {\n        async.read(path, getSettings(), optionsOrSettingsOrCallback);\n        return;\n    }\n    async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.scandir = scandir;\nfunction scandirSync(path, optionsOrSettings) {\n    const settings = getSettings(optionsOrSettings);\n    return sync.read(path, settings);\n}\nexports.scandirSync = scandirSync;\nfunction getSettings(settingsOrOptions = {}) {\n    if (settingsOrOptions instanceof settings_1.default) {\n        return settingsOrOptions;\n    }\n    return new settings_1.default(settingsOrOptions);\n}\n", "'use strict'\n\nfunction reusify (Constructor) {\n  var head = new Constructor()\n  var tail = head\n\n  function get () {\n    var current = head\n\n    if (current.next) {\n      head = current.next\n    } else {\n      head = new Constructor()\n      tail = head\n    }\n\n    current.next = null\n\n    return current\n  }\n\n  function release (obj) {\n    tail.next = obj\n    tail = obj\n  }\n\n  return {\n    get: get,\n    release: release\n  }\n}\n\nmodule.exports = reusify\n", "'use strict'\n\n/* eslint-disable no-var */\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, _concurrency) {\n  if (typeof context === 'function') {\n    _concurrency = worker\n    worker = context\n    context = null\n  }\n\n  if (!(_concurrency >= 1)) {\n    throw new Error('fastqueue concurrency must be equal to or greater than 1')\n  }\n\n  var cache = reusify(Task)\n  var queueHead = null\n  var queueTail = null\n  var _running = 0\n  var errorHandler = null\n\n  var self = {\n    push: push,\n    drain: noop,\n    saturated: noop,\n    pause: pause,\n    paused: false,\n\n    get concurrency () {\n      return _concurrency\n    },\n    set concurrency (value) {\n      if (!(value >= 1)) {\n        throw new Error('fastqueue concurrency must be equal to or greater than 1')\n      }\n      _concurrency = value\n\n      if (self.paused) return\n      for (; queueHead && _running < _concurrency;) {\n        _running++\n        release()\n      }\n    },\n\n    running: running,\n    resume: resume,\n    idle: idle,\n    length: length,\n    getQueue: getQueue,\n    unshift: unshift,\n    empty: noop,\n    kill: kill,\n    killAndDrain: killAndDrain,\n    error: error\n  }\n\n  return self\n\n  function running () {\n    return _running\n  }\n\n  function pause () {\n    self.paused = true\n  }\n\n  function length () {\n    var current = queueHead\n    var counter = 0\n\n    while (current) {\n      current = current.next\n      counter++\n    }\n\n    return counter\n  }\n\n  function getQueue () {\n    var current = queueHead\n    var tasks = []\n\n    while (current) {\n      tasks.push(current.value)\n      current = current.next\n    }\n\n    return tasks\n  }\n\n  function resume () {\n    if (!self.paused) return\n    self.paused = false\n    if (queueHead === null) {\n      _running++\n      release()\n      return\n    }\n    for (; queueHead && _running < _concurrency;) {\n      _running++\n      release()\n    }\n  }\n\n  function idle () {\n    return _running === 0 && self.length() === 0\n  }\n\n  function push (value, done) {\n    var current = cache.get()\n\n    current.context = context\n    current.release = release\n    current.value = value\n    current.callback = done || noop\n    current.errorHandler = errorHandler\n\n    if (_running >= _concurrency || self.paused) {\n      if (queueTail) {\n        queueTail.next = current\n        queueTail = current\n      } else {\n        queueHead = current\n        queueTail = current\n        self.saturated()\n      }\n    } else {\n      _running++\n      worker.call(context, current.value, current.worked)\n    }\n  }\n\n  function unshift (value, done) {\n    var current = cache.get()\n\n    current.context = context\n    current.release = release\n    current.value = value\n    current.callback = done || noop\n    current.errorHandler = errorHandler\n\n    if (_running >= _concurrency || self.paused) {\n      if (queueHead) {\n        current.next = queueHead\n        queueHead = current\n      } else {\n        queueHead = current\n        queueTail = current\n        self.saturated()\n      }\n    } else {\n      _running++\n      worker.call(context, current.value, current.worked)\n    }\n  }\n\n  function release (holder) {\n    if (holder) {\n      cache.release(holder)\n    }\n    var next = queueHead\n    if (next && _running <= _concurrency) {\n      if (!self.paused) {\n        if (queueTail === queueHead) {\n          queueTail = null\n        }\n        queueHead = next.next\n        next.next = null\n        worker.call(context, next.value, next.worked)\n        if (queueTail === null) {\n          self.empty()\n        }\n      } else {\n        _running--\n      }\n    } else if (--_running === 0) {\n      self.drain()\n    }\n  }\n\n  function kill () {\n    queueHead = null\n    queueTail = null\n    self.drain = noop\n  }\n\n  function killAndDrain () {\n    queueHead = null\n    queueTail = null\n    self.drain()\n    self.drain = noop\n  }\n\n  function error (handler) {\n    errorHandler = handler\n  }\n}\n\nfunction noop () {}\n\nfunction Task () {\n  this.value = null\n  this.callback = noop\n  this.next = null\n  this.release = noop\n  this.context = null\n  this.errorHandler = null\n\n  var self = this\n\n  this.worked = function worked (err, result) {\n    var callback = self.callback\n    var errorHandler = self.errorHandler\n    var val = self.value\n    self.value = null\n    self.callback = noop\n    if (self.errorHandler) {\n      errorHandler(err, val)\n    }\n    callback.call(self.context, err, result)\n    self.release(self)\n  }\n}\n\nfunction queueAsPromised (context, worker, _concurrency) {\n  if (typeof context === 'function') {\n    _concurrency = worker\n    worker = context\n    context = null\n  }\n\n  function asyncWrapper (arg, cb) {\n    worker.call(this, arg)\n      .then(function (res) {\n        cb(null, res)\n      }, cb)\n  }\n\n  var queue = fastqueue(context, asyncWrapper, _concurrency)\n\n  var pushCb = queue.push\n  var unshiftCb = queue.unshift\n\n  queue.push = push\n  queue.unshift = unshift\n  queue.drained = drained\n\n  return queue\n\n  function push (value) {\n    var p = new Promise(function (resolve, reject) {\n      pushCb(value, function (err, result) {\n        if (err) {\n          reject(err)\n          return\n        }\n        resolve(result)\n      })\n    })\n\n    // Let's fork the promise chain to\n    // make the error bubble up to the user but\n    // not lead to a unhandledRejection\n    p.catch(noop)\n\n    return p\n  }\n\n  function unshift (value) {\n    var p = new Promise(function (resolve, reject) {\n      unshiftCb(value, function (err, result) {\n        if (err) {\n          reject(err)\n          return\n        }\n        resolve(result)\n      })\n    })\n\n    // Let's fork the promise chain to\n    // make the error bubble up to the user but\n    // not lead to a unhandledRejection\n    p.catch(noop)\n\n    return p\n  }\n\n  function drained () {\n    var p = new Promise(function (resolve) {\n      process.nextTick(function () {\n        if (queue.idle()) {\n          resolve()\n        } else {\n          var previousDrain = queue.drain\n          queue.drain = function () {\n            if (typeof previousDrain === 'function') previousDrain()\n            resolve()\n            queue.drain = previousDrain\n          }\n        }\n      })\n    })\n\n    return p\n  }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\nfunction isFatalError(settings, error) {\n    if (settings.errorFilter === null) {\n        return true;\n    }\n    return !settings.errorFilter(error);\n}\nexports.isFatalError = isFatalError;\nfunction isAppliedFilter(filter, value) {\n    return filter === null || filter(value);\n}\nexports.isAppliedFilter = isAppliedFilter;\nfunction replacePathSegmentSeparator(filepath, separator) {\n    return filepath.split(/[/\\\\]/).join(separator);\n}\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\nfunction joinPathSegments(a, b, separator) {\n    if (a === '') {\n        return b;\n    }\n    /**\n     * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n     */\n    if (a.endsWith(separator)) {\n        return a + b;\n    }\n    return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst common = require(\"./common\");\nclass Reader {\n    constructor(_root, _settings) {\n        this._root = _root;\n        this._settings = _settings;\n        this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\n    }\n}\nexports.default = Reader;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst fastq = require(\"fastq\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass AsyncReader extends reader_1.default {\n    constructor(_root, _settings) {\n        super(_root, _settings);\n        this._settings = _settings;\n        this._scandir = fsScandir.scandir;\n        this._emitter = new events_1.EventEmitter();\n        this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\n        this._isFatalError = false;\n        this._isDestroyed = false;\n        this._queue.drain = () => {\n            if (!this._isFatalError) {\n                this._emitter.emit('end');\n            }\n        };\n    }\n    read() {\n        this._isFatalError = false;\n        this._isDestroyed = false;\n        setImmediate(() => {\n            this._pushToQueue(this._root, this._settings.basePath);\n        });\n        return this._emitter;\n    }\n    get isDestroyed() {\n        return this._isDestroyed;\n    }\n    destroy() {\n        if (this._isDestroyed) {\n            throw new Error('The reader is already destroyed');\n        }\n        this._isDestroyed = true;\n        this._queue.killAndDrain();\n    }\n    onEntry(callback) {\n        this._emitter.on('entry', callback);\n    }\n    onError(callback) {\n        this._emitter.once('error', callback);\n    }\n    onEnd(callback) {\n        this._emitter.once('end', callback);\n    }\n    _pushToQueue(directory, base) {\n        const queueItem = { directory, base };\n        this._queue.push(queueItem, (error) => {\n            if (error !== null) {\n                this._handleError(error);\n            }\n        });\n    }\n    _worker(item, done) {\n        this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\n            if (error !== null) {\n                done(error, undefined);\n                return;\n            }\n            for (const entry of entries) {\n                this._handleEntry(entry, item.base);\n            }\n            done(null, undefined);\n        });\n    }\n    _handleError(error) {\n        if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\n            return;\n        }\n        this._isFatalError = true;\n        this._isDestroyed = true;\n        this._emitter.emit('error', error);\n    }\n    _handleEntry(entry, base) {\n        if (this._isDestroyed || this._isFatalError) {\n            return;\n        }\n        const fullpath = entry.path;\n        if (base !== undefined) {\n            entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n        }\n        if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n            this._emitEntry(entry);\n        }\n        if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n            this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n        }\n    }\n    _emitEntry(entry) {\n        this._emitter.emit('entry', entry);\n    }\n}\nexports.default = AsyncReader;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_1 = require(\"../readers/async\");\nclass AsyncProvider {\n    constructor(_root, _settings) {\n        this._root = _root;\n        this._settings = _settings;\n        this._reader = new async_1.default(this._root, this._settings);\n        this._storage = [];\n    }\n    read(callback) {\n        this._reader.onError((error) => {\n            callFailureCallback(callback, error);\n        });\n        this._reader.onEntry((entry) => {\n            this._storage.push(entry);\n        });\n        this._reader.onEnd(() => {\n            callSuccessCallback(callback, this._storage);\n        });\n        this._reader.read();\n    }\n}\nexports.default = AsyncProvider;\nfunction callFailureCallback(callback, error) {\n    callback(error);\n}\nfunction callSuccessCallback(callback, entries) {\n    callback(null, entries);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst async_1 = require(\"../readers/async\");\nclass StreamProvider {\n    constructor(_root, _settings) {\n        this._root = _root;\n        this._settings = _settings;\n        this._reader = new async_1.default(this._root, this._settings);\n        this._stream = new stream_1.Readable({\n            objectMode: true,\n            read: () => { },\n            destroy: () => {\n                if (!this._reader.isDestroyed) {\n                    this._reader.destroy();\n                }\n            }\n        });\n    }\n    read() {\n        this._reader.onError((error) => {\n            this._stream.emit('error', error);\n        });\n        this._reader.onEntry((entry) => {\n            this._stream.push(entry);\n        });\n        this._reader.onEnd(() => {\n            this._stream.push(null);\n        });\n        this._reader.read();\n        return this._stream;\n    }\n}\nexports.default = StreamProvider;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass SyncReader extends reader_1.default {\n    constructor() {\n        super(...arguments);\n        this._scandir = fsScandir.scandirSync;\n        this._storage = [];\n        this._queue = new Set();\n    }\n    read() {\n        this._pushToQueue(this._root, this._settings.basePath);\n        this._handleQueue();\n        return this._storage;\n    }\n    _pushToQueue(directory, base) {\n        this._queue.add({ directory, base });\n    }\n    _handleQueue() {\n        for (const item of this._queue.values()) {\n            this._handleDirectory(item.directory, item.base);\n        }\n    }\n    _handleDirectory(directory, base) {\n        try {\n            const entries = this._scandir(directory, this._settings.fsScandirSettings);\n            for (const entry of entries) {\n                this._handleEntry(entry, base);\n            }\n        }\n        catch (error) {\n            this._handleError(error);\n        }\n    }\n    _handleError(error) {\n        if (!common.isFatalError(this._settings, error)) {\n            return;\n        }\n        throw error;\n    }\n    _handleEntry(entry, base) {\n        const fullpath = entry.path;\n        if (base !== undefined) {\n            entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n        }\n        if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n            this._pushToStorage(entry);\n        }\n        if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n            this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n        }\n    }\n    _pushToStorage(entry) {\n        this._storage.push(entry);\n    }\n}\nexports.default = SyncReader;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nclass SyncProvider {\n    constructor(_root, _settings) {\n        this._root = _root;\n        this._settings = _settings;\n        this._reader = new sync_1.default(this._root, this._settings);\n    }\n    read() {\n        return this._reader.read();\n    }\n}\nexports.default = SyncProvider;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nclass Settings {\n    constructor(_options = {}) {\n        this._options = _options;\n        this.basePath = this._getValue(this._options.basePath, undefined);\n        this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY);\n        this.deepFilter = this._getValue(this._options.deepFilter, null);\n        this.entryFilter = this._getValue(this._options.entryFilter, null);\n        this.errorFilter = this._getValue(this._options.errorFilter, null);\n        this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n        this.fsScandirSettings = new fsScandir.Settings({\n            followSymbolicLinks: this._options.followSymbolicLinks,\n            fs: this._options.fs,\n            pathSegmentSeparator: this._options.pathSegmentSeparator,\n            stats: this._options.stats,\n            throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\n        });\n    }\n    _getValue(option, value) {\n        return option !== null && option !== void 0 ? option : value;\n    }\n}\nexports.default = Settings;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\n    if (typeof optionsOrSettingsOrCallback === 'function') {\n        new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\n        return;\n    }\n    new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\n}\nexports.walk = walk;\nfunction walkSync(directory, optionsOrSettings) {\n    const settings = getSettings(optionsOrSettings);\n    const provider = new sync_1.default(directory, settings);\n    return provider.read();\n}\nexports.walkSync = walkSync;\nfunction walkStream(directory, optionsOrSettings) {\n    const settings = getSettings(optionsOrSettings);\n    const provider = new stream_1.default(directory, settings);\n    return provider.read();\n}\nexports.walkStream = walkStream;\nfunction getSettings(settingsOrOptions = {}) {\n    if (settingsOrOptions instanceof settings_1.default) {\n        return settingsOrOptions;\n    }\n    return new settings_1.default(settingsOrOptions);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst utils = require(\"../utils\");\nclass Reader {\n    constructor(_settings) {\n        this._settings = _settings;\n        this._fsStatSettings = new fsStat.Settings({\n            followSymbolicLink: this._settings.followSymbolicLinks,\n            fs: this._settings.fs,\n            throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\n        });\n    }\n    _getFullEntryPath(filepath) {\n        return path.resolve(this._settings.cwd, filepath);\n    }\n    _makeEntry(stats, pattern) {\n        const entry = {\n            name: pattern,\n            path: pattern,\n            dirent: utils.fs.createDirentFromStats(pattern, stats)\n        };\n        if (this._settings.stats) {\n            entry.stats = stats;\n        }\n        return entry;\n    }\n    _isFatalError(error) {\n        return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\n    }\n}\nexports.default = Reader;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderStream extends reader_1.default {\n    constructor() {\n        super(...arguments);\n        this._walkStream = fsWalk.walkStream;\n        this._stat = fsStat.stat;\n    }\n    dynamic(root, options) {\n        return this._walkStream(root, options);\n    }\n    static(patterns, options) {\n        const filepaths = patterns.map(this._getFullEntryPath, this);\n        const stream = new stream_1.PassThrough({ objectMode: true });\n        stream._write = (index, _enc, done) => {\n            return this._getEntry(filepaths[index], patterns[index], options)\n                .then((entry) => {\n                if (entry !== null && options.entryFilter(entry)) {\n                    stream.push(entry);\n                }\n                if (index === filepaths.length - 1) {\n                    stream.end();\n                }\n                done();\n            })\n                .catch(done);\n        };\n        for (let i = 0; i < filepaths.length; i++) {\n            stream.write(i);\n        }\n        return stream;\n    }\n    _getEntry(filepath, pattern, options) {\n        return this._getStat(filepath)\n            .then((stats) => this._makeEntry(stats, pattern))\n            .catch((error) => {\n            if (options.errorFilter(error)) {\n                return null;\n            }\n            throw error;\n        });\n    }\n    _getStat(filepath) {\n        return new Promise((resolve, reject) => {\n            this._stat(filepath, this._fsStatSettings, (error, stats) => {\n                return error === null ? resolve(stats) : reject(error);\n            });\n        });\n    }\n}\nexports.default = ReaderStream;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nconst stream_1 = require(\"./stream\");\nclass ReaderAsync extends reader_1.default {\n    constructor() {\n        super(...arguments);\n        this._walkAsync = fsWalk.walk;\n        this._readerStream = new stream_1.default(this._settings);\n    }\n    dynamic(root, options) {\n        return new Promise((resolve, reject) => {\n            this._walkAsync(root, options, (error, entries) => {\n                if (error === null) {\n                    resolve(entries);\n                }\n                else {\n                    reject(error);\n                }\n            });\n        });\n    }\n    async static(patterns, options) {\n        const entries = [];\n        const stream = this._readerStream.static(patterns, options);\n        // After #235, replace it with an asynchronous iterator.\n        return new Promise((resolve, reject) => {\n            stream.once('error', reject);\n            stream.on('data', (entry) => entries.push(entry));\n            stream.once('end', () => resolve(entries));\n        });\n    }\n}\nexports.default = ReaderAsync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass Matcher {\n    constructor(_patterns, _settings, _micromatchOptions) {\n        this._patterns = _patterns;\n        this._settings = _settings;\n        this._micromatchOptions = _micromatchOptions;\n        this._storage = [];\n        this._fillStorage();\n    }\n    _fillStorage() {\n        for (const pattern of this._patterns) {\n            const segments = this._getPatternSegments(pattern);\n            const sections = this._splitSegmentsIntoSections(segments);\n            this._storage.push({\n                complete: sections.length <= 1,\n                pattern,\n                segments,\n                sections\n            });\n        }\n    }\n    _getPatternSegments(pattern) {\n        const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\n        return parts.map((part) => {\n            const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\n            if (!dynamic) {\n                return {\n                    dynamic: false,\n                    pattern: part\n                };\n            }\n            return {\n                dynamic: true,\n                pattern: part,\n                patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\n            };\n        });\n    }\n    _splitSegmentsIntoSections(segments) {\n        return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\n    }\n}\nexports.default = Matcher;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst matcher_1 = require(\"./matcher\");\nclass PartialMatcher extends matcher_1.default {\n    match(filepath) {\n        const parts = filepath.split('/');\n        const levels = parts.length;\n        const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\n        for (const pattern of patterns) {\n            const section = pattern.sections[0];\n            /**\n             * In this case, the pattern has a globstar and we must read all directories unconditionally,\n             * but only if the level has reached the end of the first group.\n             *\n             * fixtures/{a,b}/**\n             *  ^ true/false  ^ always true\n            */\n            if (!pattern.complete && levels > section.length) {\n                return true;\n            }\n            const match = parts.every((part, index) => {\n                const segment = pattern.segments[index];\n                if (segment.dynamic && segment.patternRe.test(part)) {\n                    return true;\n                }\n                if (!segment.dynamic && segment.pattern === part) {\n                    return true;\n                }\n                return false;\n            });\n            if (match) {\n                return true;\n            }\n        }\n        return false;\n    }\n}\nexports.default = PartialMatcher;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nconst partial_1 = require(\"../matchers/partial\");\nclass DeepFilter {\n    constructor(_settings, _micromatchOptions) {\n        this._settings = _settings;\n        this._micromatchOptions = _micromatchOptions;\n    }\n    getFilter(basePath, positive, negative) {\n        const matcher = this._getMatcher(positive);\n        const negativeRe = this._getNegativePatternsRe(negative);\n        return (entry) => this._filter(basePath, entry, matcher, negativeRe);\n    }\n    _getMatcher(patterns) {\n        return new partial_1.default(patterns, this._settings, this._micromatchOptions);\n    }\n    _getNegativePatternsRe(patterns) {\n        const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\n        return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\n    }\n    _filter(basePath, entry, matcher, negativeRe) {\n        if (this._isSkippedByDeep(basePath, entry.path)) {\n            return false;\n        }\n        if (this._isSkippedSymbolicLink(entry)) {\n            return false;\n        }\n        const filepath = utils.path.removeLeadingDotSegment(entry.path);\n        if (this._isSkippedByPositivePatterns(filepath, matcher)) {\n            return false;\n        }\n        return this._isSkippedByNegativePatterns(filepath, negativeRe);\n    }\n    _isSkippedByDeep(basePath, entryPath) {\n        /**\n         * Avoid unnecessary depth calculations when it doesn't matter.\n         */\n        if (this._settings.deep === Infinity) {\n            return false;\n        }\n        return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\n    }\n    _getEntryLevel(basePath, entryPath) {\n        const entryPathDepth = entryPath.split('/').length;\n        if (basePath === '') {\n            return entryPathDepth;\n        }\n        const basePathDepth = basePath.split('/').length;\n        return entryPathDepth - basePathDepth;\n    }\n    _isSkippedSymbolicLink(entry) {\n        return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\n    }\n    _isSkippedByPositivePatterns(entryPath, matcher) {\n        return !this._settings.baseNameMatch && !matcher.match(entryPath);\n    }\n    _isSkippedByNegativePatterns(entryPath, patternsRe) {\n        return !utils.pattern.matchAny(entryPath, patternsRe);\n    }\n}\nexports.default = DeepFilter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryFilter {\n    constructor(_settings, _micromatchOptions) {\n        this._settings = _settings;\n        this._micromatchOptions = _micromatchOptions;\n        this.index = new Map();\n    }\n    getFilter(positive, negative) {\n        const [absoluteNegative, relativeNegative] = utils.pattern.partitionAbsoluteAndRelative(negative);\n        const patterns = {\n            positive: {\n                all: utils.pattern.convertPatternsToRe(positive, this._micromatchOptions)\n            },\n            negative: {\n                absolute: utils.pattern.convertPatternsToRe(absoluteNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })),\n                relative: utils.pattern.convertPatternsToRe(relativeNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true }))\n            }\n        };\n        return (entry) => this._filter(entry, patterns);\n    }\n    _filter(entry, patterns) {\n        const filepath = utils.path.removeLeadingDotSegment(entry.path);\n        if (this._settings.unique && this._isDuplicateEntry(filepath)) {\n            return false;\n        }\n        if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\n            return false;\n        }\n        const isMatched = this._isMatchToPatternsSet(filepath, patterns, entry.dirent.isDirectory());\n        if (this._settings.unique && isMatched) {\n            this._createIndexRecord(filepath);\n        }\n        return isMatched;\n    }\n    _isDuplicateEntry(filepath) {\n        return this.index.has(filepath);\n    }\n    _createIndexRecord(filepath) {\n        this.index.set(filepath, undefined);\n    }\n    _onlyFileFilter(entry) {\n        return this._settings.onlyFiles && !entry.dirent.isFile();\n    }\n    _onlyDirectoryFilter(entry) {\n        return this._settings.onlyDirectories && !entry.dirent.isDirectory();\n    }\n    _isMatchToPatternsSet(filepath, patterns, isDirectory) {\n        const isMatched = this._isMatchToPatterns(filepath, patterns.positive.all, isDirectory);\n        if (!isMatched) {\n            return false;\n        }\n        const isMatchedByRelativeNegative = this._isMatchToPatterns(filepath, patterns.negative.relative, isDirectory);\n        if (isMatchedByRelativeNegative) {\n            return false;\n        }\n        const isMatchedByAbsoluteNegative = this._isMatchToAbsoluteNegative(filepath, patterns.negative.absolute, isDirectory);\n        if (isMatchedByAbsoluteNegative) {\n            return false;\n        }\n        return true;\n    }\n    _isMatchToAbsoluteNegative(filepath, patternsRe, isDirectory) {\n        if (patternsRe.length === 0) {\n            return false;\n        }\n        const fullpath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n        return this._isMatchToPatterns(fullpath, patternsRe, isDirectory);\n    }\n    _isMatchToPatterns(filepath, patternsRe, isDirectory) {\n        if (patternsRe.length === 0) {\n            return false;\n        }\n        // Trying to match files and directories by patterns.\n        const isMatched = utils.pattern.matchAny(filepath, patternsRe);\n        // A pattern with a trailling slash can be used for directory matching.\n        // To apply such pattern, we need to add a tralling slash to the path.\n        if (!isMatched && isDirectory) {\n            return utils.pattern.matchAny(filepath + '/', patternsRe);\n        }\n        return isMatched;\n    }\n}\nexports.default = EntryFilter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass ErrorFilter {\n    constructor(_settings) {\n        this._settings = _settings;\n    }\n    getFilter() {\n        return (error) => this._isNonFatalError(error);\n    }\n    _isNonFatalError(error) {\n        return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\n    }\n}\nexports.default = ErrorFilter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryTransformer {\n    constructor(_settings) {\n        this._settings = _settings;\n    }\n    getTransformer() {\n        return (entry) => this._transform(entry);\n    }\n    _transform(entry) {\n        let filepath = entry.path;\n        if (this._settings.absolute) {\n            filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n            filepath = utils.path.unixify(filepath);\n        }\n        if (this._settings.markDirectories && entry.dirent.isDirectory()) {\n            filepath += '/';\n        }\n        if (!this._settings.objectMode) {\n            return filepath;\n        }\n        return Object.assign(Object.assign({}, entry), { path: filepath });\n    }\n}\nexports.default = EntryTransformer;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst deep_1 = require(\"./filters/deep\");\nconst entry_1 = require(\"./filters/entry\");\nconst error_1 = require(\"./filters/error\");\nconst entry_2 = require(\"./transformers/entry\");\nclass Provider {\n    constructor(_settings) {\n        this._settings = _settings;\n        this.errorFilter = new error_1.default(this._settings);\n        this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\n        this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\n        this.entryTransformer = new entry_2.default(this._settings);\n    }\n    _getRootDirectory(task) {\n        return path.resolve(this._settings.cwd, task.base);\n    }\n    _getReaderOptions(task) {\n        const basePath = task.base === '.' ? '' : task.base;\n        return {\n            basePath,\n            pathSegmentSeparator: '/',\n            concurrency: this._settings.concurrency,\n            deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\n            entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\n            errorFilter: this.errorFilter.getFilter(),\n            followSymbolicLinks: this._settings.followSymbolicLinks,\n            fs: this._settings.fs,\n            stats: this._settings.stats,\n            throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\n            transform: this.entryTransformer.getTransformer()\n        };\n    }\n    _getMicromatchOptions() {\n        return {\n            dot: this._settings.dot,\n            matchBase: this._settings.baseNameMatch,\n            nobrace: !this._settings.braceExpansion,\n            nocase: !this._settings.caseSensitiveMatch,\n            noext: !this._settings.extglob,\n            noglobstar: !this._settings.globstar,\n            posix: true,\n            strictSlashes: false\n        };\n    }\n}\nexports.default = Provider;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_1 = require(\"../readers/async\");\nconst provider_1 = require(\"./provider\");\nclass ProviderAsync extends provider_1.default {\n    constructor() {\n        super(...arguments);\n        this._reader = new async_1.default(this._settings);\n    }\n    async read(task) {\n        const root = this._getRootDirectory(task);\n        const options = this._getReaderOptions(task);\n        const entries = await this.api(root, task, options);\n        return entries.map((entry) => options.transform(entry));\n    }\n    api(root, task, options) {\n        if (task.dynamic) {\n            return this._reader.dynamic(root, options);\n        }\n        return this._reader.static(task.patterns, options);\n    }\n}\nexports.default = ProviderAsync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst stream_2 = require(\"../readers/stream\");\nconst provider_1 = require(\"./provider\");\nclass ProviderStream extends provider_1.default {\n    constructor() {\n        super(...arguments);\n        this._reader = new stream_2.default(this._settings);\n    }\n    read(task) {\n        const root = this._getRootDirectory(task);\n        const options = this._getReaderOptions(task);\n        const source = this.api(root, task, options);\n        const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\n        source\n            .once('error', (error) => destination.emit('error', error))\n            .on('data', (entry) => destination.emit('data', options.transform(entry)))\n            .once('end', () => destination.emit('end'));\n        destination\n            .once('close', () => source.destroy());\n        return destination;\n    }\n    api(root, task, options) {\n        if (task.dynamic) {\n            return this._reader.dynamic(root, options);\n        }\n        return this._reader.static(task.patterns, options);\n    }\n}\nexports.default = ProviderStream;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderSync extends reader_1.default {\n    constructor() {\n        super(...arguments);\n        this._walkSync = fsWalk.walkSync;\n        this._statSync = fsStat.statSync;\n    }\n    dynamic(root, options) {\n        return this._walkSync(root, options);\n    }\n    static(patterns, options) {\n        const entries = [];\n        for (const pattern of patterns) {\n            const filepath = this._getFullEntryPath(pattern);\n            const entry = this._getEntry(filepath, pattern, options);\n            if (entry === null || !options.entryFilter(entry)) {\n                continue;\n            }\n            entries.push(entry);\n        }\n        return entries;\n    }\n    _getEntry(filepath, pattern, options) {\n        try {\n            const stats = this._getStat(filepath);\n            return this._makeEntry(stats, pattern);\n        }\n        catch (error) {\n            if (options.errorFilter(error)) {\n                return null;\n            }\n            throw error;\n        }\n    }\n    _getStat(filepath) {\n        return this._statSync(filepath, this._fsStatSettings);\n    }\n}\nexports.default = ReaderSync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nconst provider_1 = require(\"./provider\");\nclass ProviderSync extends provider_1.default {\n    constructor() {\n        super(...arguments);\n        this._reader = new sync_1.default(this._settings);\n    }\n    read(task) {\n        const root = this._getRootDirectory(task);\n        const options = this._getReaderOptions(task);\n        const entries = this.api(root, task, options);\n        return entries.map(options.transform);\n    }\n    api(root, task, options) {\n        if (task.dynamic) {\n            return this._reader.dynamic(root, options);\n        }\n        return this._reader.static(task.patterns, options);\n    }\n}\nexports.default = ProviderSync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nconst os = require(\"os\");\n/**\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\n */\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\n    lstat: fs.lstat,\n    lstatSync: fs.lstatSync,\n    stat: fs.stat,\n    statSync: fs.statSync,\n    readdir: fs.readdir,\n    readdirSync: fs.readdirSync\n};\nclass Settings {\n    constructor(_options = {}) {\n        this._options = _options;\n        this.absolute = this._getValue(this._options.absolute, false);\n        this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\n        this.braceExpansion = this._getValue(this._options.braceExpansion, true);\n        this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\n        this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\n        this.cwd = this._getValue(this._options.cwd, process.cwd());\n        this.deep = this._getValue(this._options.deep, Infinity);\n        this.dot = this._getValue(this._options.dot, false);\n        this.extglob = this._getValue(this._options.extglob, true);\n        this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\n        this.fs = this._getFileSystemMethods(this._options.fs);\n        this.globstar = this._getValue(this._options.globstar, true);\n        this.ignore = this._getValue(this._options.ignore, []);\n        this.markDirectories = this._getValue(this._options.markDirectories, false);\n        this.objectMode = this._getValue(this._options.objectMode, false);\n        this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\n        this.onlyFiles = this._getValue(this._options.onlyFiles, true);\n        this.stats = this._getValue(this._options.stats, false);\n        this.suppressErrors = this._getValue(this._options.suppressErrors, false);\n        this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\n        this.unique = this._getValue(this._options.unique, true);\n        if (this.onlyDirectories) {\n            this.onlyFiles = false;\n        }\n        if (this.stats) {\n            this.objectMode = true;\n        }\n        // Remove the cast to the array in the next major (#404).\n        this.ignore = [].concat(this.ignore);\n    }\n    _getValue(option, value) {\n        return option === undefined ? value : option;\n    }\n    _getFileSystemMethods(methods = {}) {\n        return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\n    }\n}\nexports.default = Settings;\n", "\"use strict\";\nconst taskManager = require(\"./managers/tasks\");\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nconst utils = require(\"./utils\");\nasync function FastGlob(source, options) {\n    assertPatternsInput(source);\n    const works = getWorks(source, async_1.default, options);\n    const result = await Promise.all(works);\n    return utils.array.flatten(result);\n}\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\n// eslint-disable-next-line no-redeclare\n(function (FastGlob) {\n    FastGlob.glob = FastGlob;\n    FastGlob.globSync = sync;\n    FastGlob.globStream = stream;\n    FastGlob.async = FastGlob;\n    function sync(source, options) {\n        assertPatternsInput(source);\n        const works = getWorks(source, sync_1.default, options);\n        return utils.array.flatten(works);\n    }\n    FastGlob.sync = sync;\n    function stream(source, options) {\n        assertPatternsInput(source);\n        const works = getWorks(source, stream_1.default, options);\n        /**\n         * The stream returned by the provider cannot work with an asynchronous iterator.\n         * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\n         * This affects performance (+25%). I don't see best solution right now.\n         */\n        return utils.stream.merge(works);\n    }\n    FastGlob.stream = stream;\n    function generateTasks(source, options) {\n        assertPatternsInput(source);\n        const patterns = [].concat(source);\n        const settings = new settings_1.default(options);\n        return taskManager.generate(patterns, settings);\n    }\n    FastGlob.generateTasks = generateTasks;\n    function isDynamicPattern(source, options) {\n        assertPatternsInput(source);\n        const settings = new settings_1.default(options);\n        return utils.pattern.isDynamicPattern(source, settings);\n    }\n    FastGlob.isDynamicPattern = isDynamicPattern;\n    function escapePath(source) {\n        assertPatternsInput(source);\n        return utils.path.escape(source);\n    }\n    FastGlob.escapePath = escapePath;\n    function convertPathToPattern(source) {\n        assertPatternsInput(source);\n        return utils.path.convertPathToPattern(source);\n    }\n    FastGlob.convertPathToPattern = convertPathToPattern;\n    let posix;\n    (function (posix) {\n        function escapePath(source) {\n            assertPatternsInput(source);\n            return utils.path.escapePosixPath(source);\n        }\n        posix.escapePath = escapePath;\n        function convertPathToPattern(source) {\n            assertPatternsInput(source);\n            return utils.path.convertPosixPathToPattern(source);\n        }\n        posix.convertPathToPattern = convertPathToPattern;\n    })(posix = FastGlob.posix || (FastGlob.posix = {}));\n    let win32;\n    (function (win32) {\n        function escapePath(source) {\n            assertPatternsInput(source);\n            return utils.path.escapeWindowsPath(source);\n        }\n        win32.escapePath = escapePath;\n        function convertPathToPattern(source) {\n            assertPatternsInput(source);\n            return utils.path.convertWindowsPathToPattern(source);\n        }\n        win32.convertPathToPattern = convertPathToPattern;\n    })(win32 = FastGlob.win32 || (FastGlob.win32 = {}));\n})(FastGlob || (FastGlob = {}));\nfunction getWorks(source, _Provider, options) {\n    const patterns = [].concat(source);\n    const settings = new settings_1.default(options);\n    const tasks = taskManager.generate(patterns, settings);\n    const provider = new _Provider(settings);\n    return tasks.map(provider.read, provider);\n}\nfunction assertPatternsInput(input) {\n    const source = [].concat(input);\n    const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\n    if (!isValidSource) {\n        throw new TypeError('Patterns must be a string (non empty) or an array of strings');\n    }\n}\nmodule.exports = FastGlob;\n", "/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *         http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n/**\n * Private utility functions\n * @module utils\n * @private\n */\n\n'use strict';\n\nvar regExpChars = /[|\\\\{}()[\\]^$+*?.]/g;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hasOwn = function (obj, key) { return hasOwnProperty.apply(obj, [key]); };\n\n/**\n * Escape characters reserved in regular expressions.\n *\n * If `string` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} string Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\nexports.escapeRegExpChars = function (string) {\n  // istanbul ignore if\n  if (!string) {\n    return '';\n  }\n  return String(string).replace(regExpChars, '\\\\$&');\n};\n\nvar _ENCODE_HTML_RULES = {\n  '&': '&',\n  '<': '<',\n  '>': '>',\n  '\"': '"',\n  \"'\": '''\n};\nvar _MATCH_HTML = /[&<>'\"]/g;\n\nfunction encode_char(c) {\n  return _ENCODE_HTML_RULES[c] || c;\n}\n\n/**\n * Stringified version of constants used by {@link module:utils.escapeXML}.\n *\n * It is used in the process of generating {@link ClientFunction}s.\n *\n * @readonly\n * @type {String}\n */\n\nvar escapeFuncStr =\n  'var _ENCODE_HTML_RULES = {\\n'\n+ '      \"&\": \"&\"\\n'\n+ '    , \"<\": \"<\"\\n'\n+ '    , \">\": \">\"\\n'\n+ '    , \\'\"\\': \""\"\\n'\n+ '    , \"\\'\": \"'\"\\n'\n+ '    }\\n'\n+ '  , _MATCH_HTML = /[&<>\\'\"]/g;\\n'\n+ 'function encode_char(c) {\\n'\n+ '  return _ENCODE_HTML_RULES[c] || c;\\n'\n+ '};\\n';\n\n/**\n * Escape characters reserved in XML.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @implements {EscapeCallback}\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\n\nexports.escapeXML = function (markup) {\n  return markup == undefined\n    ? ''\n    : String(markup)\n      .replace(_MATCH_HTML, encode_char);\n};\n\nfunction escapeXMLToString() {\n  return Function.prototype.toString.call(this) + ';\\n' + escapeFuncStr;\n}\n\ntry {\n  if (typeof Object.defineProperty === 'function') {\n  // If the Function prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n  // cannot have the property changed using an assignment. If using strict mode, attempting that will cause an error. If not using strict\n  // mode, attempting that will be silently ignored.\n  // However, we can still explicitly shadow the prototype's \"toString\" property by defining a new \"toString\" property on this object.\n    Object.defineProperty(exports.escapeXML, 'toString', { value: escapeXMLToString });\n  } else {\n    // If Object.defineProperty() doesn't exist, attempt to shadow this property using the assignment operator.\n    exports.escapeXML.toString = escapeXMLToString;\n  }\n} catch (err) {\n  console.warn('Unable to set escapeXML.toString (is the Function prototype frozen?)');\n}\n\n/**\n * Naive copy of properties from one object to another.\n * Does not recurse into non-scalar properties\n * Does not check to see if the property has a value before copying\n *\n * @param  {Object} to   Destination object\n * @param  {Object} from Source object\n * @return {Object}      Destination object\n * @static\n * @private\n */\nexports.shallowCopy = function (to, from) {\n  from = from || {};\n  if ((to !== null) && (to !== undefined)) {\n    for (var p in from) {\n      if (!hasOwn(from, p)) {\n        continue;\n      }\n      if (p === '__proto__' || p === 'constructor') {\n        continue;\n      }\n      to[p] = from[p];\n    }\n  }\n  return to;\n};\n\n/**\n * Naive copy of a list of key names, from one object to another.\n * Only copies property if it is actually defined\n * Does not recurse into non-scalar properties\n *\n * @param  {Object} to   Destination object\n * @param  {Object} from Source object\n * @param  {Array} list List of properties to copy\n * @return {Object}      Destination object\n * @static\n * @private\n */\nexports.shallowCopyFromList = function (to, from, list) {\n  list = list || [];\n  from = from || {};\n  if ((to !== null) && (to !== undefined)) {\n    for (var i = 0; i < list.length; i++) {\n      var p = list[i];\n      if (typeof from[p] != 'undefined') {\n        if (!hasOwn(from, p)) {\n          continue;\n        }\n        if (p === '__proto__' || p === 'constructor') {\n          continue;\n        }\n        to[p] = from[p];\n      }\n    }\n  }\n  return to;\n};\n\n/**\n * Simple in-process cache implementation. Does not implement limits of any\n * sort.\n *\n * @implements {Cache}\n * @static\n * @private\n */\nexports.cache = {\n  _data: {},\n  set: function (key, val) {\n    this._data[key] = val;\n  },\n  get: function (key) {\n    return this._data[key];\n  },\n  remove: function (key) {\n    delete this._data[key];\n  },\n  reset: function () {\n    this._data = {};\n  }\n};\n\n/**\n * Transforms hyphen case variable into camel case.\n *\n * @param {String} string Hyphen case string\n * @return {String} Camel case string\n * @static\n * @private\n */\nexports.hyphenToCamel = function (str) {\n  return str.replace(/-[a-z]/g, function (match) { return match[1].toUpperCase(); });\n};\n\n/**\n * Returns a null-prototype object in runtimes that support it\n *\n * @return {Object} Object, prototype will be set to null where possible\n * @static\n * @private\n */\nexports.createNullProtoObjWherePossible = (function () {\n  if (typeof Object.create == 'function') {\n    return function () {\n      return Object.create(null);\n    };\n  }\n  if (!({__proto__: null} instanceof Object)) {\n    return function () {\n      return {__proto__: null};\n    };\n  }\n  // Not possible, just pass through\n  return function () {\n    return {};\n  };\n})();\n\nexports.hasOwnOnlyObject = function (obj) {\n  var o = exports.createNullProtoObjWherePossible();\n  for (var p in obj) {\n    if (hasOwn(obj, p)) {\n      o[p] = obj[p];\n    }\n  }\n  return o;\n};\n\n", "/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *         http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n'use strict';\n\n/**\n * @file Embedded JavaScript templating engine. {@link http://ejs.co}\n * @author Matthew Eernisse \n * @author Tiancheng \"Timothy\" Gu \n * @project EJS\n * @license {@link http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0}\n */\n\n/**\n * EJS internal functions.\n *\n * Technically this \"module\" lies in the same file as {@link module:ejs}, for\n * the sake of organization all the private functions re grouped into this\n * module.\n *\n * @module ejs-internal\n * @private\n */\n\n/**\n * Embedded JavaScript templating engine.\n *\n * @module ejs\n * @public\n */\n\n\nvar fs = require('fs');\nvar path = require('path');\nvar utils = require('./utils');\n\nvar scopeOptionWarned = false;\n/** @type {string} */\nvar _VERSION_STRING = require('../package.json').version;\nvar _DEFAULT_OPEN_DELIMITER = '<';\nvar _DEFAULT_CLOSE_DELIMITER = '>';\nvar _DEFAULT_DELIMITER = '%';\nvar _DEFAULT_LOCALS_NAME = 'locals';\nvar _NAME = 'ejs';\nvar _REGEX_STRING = '(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)';\nvar _OPTS_PASSABLE_WITH_DATA = ['delimiter', 'scope', 'context', 'debug', 'compileDebug',\n  'client', '_with', 'rmWhitespace', 'strict', 'filename', 'async'];\n// We don't allow 'cache' option to be passed in the data obj for\n// the normal `render` call, but this is where Express 2 & 3 put it\n// so we make an exception for `renderFile`\nvar _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat('cache');\nvar _BOM = /^\\uFEFF/;\nvar _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/;\n\n/**\n * EJS template function cache. This can be a LRU object from lru-cache NPM\n * module. By default, it is {@link module:utils.cache}, a simple in-process\n * cache that grows continuously.\n *\n * @type {Cache}\n */\n\nexports.cache = utils.cache;\n\n/**\n * Custom file loader. Useful for template preprocessing or restricting access\n * to a certain part of the filesystem.\n *\n * @type {fileLoader}\n */\n\nexports.fileLoader = fs.readFileSync;\n\n/**\n * Name of the object containing the locals.\n *\n * This variable is overridden by {@link Options}`.localsName` if it is not\n * `undefined`.\n *\n * @type {String}\n * @public\n */\n\nexports.localsName = _DEFAULT_LOCALS_NAME;\n\n/**\n * Promise implementation -- defaults to the native implementation if available\n * This is mostly just for testability\n *\n * @type {PromiseConstructorLike}\n * @public\n */\n\nexports.promiseImpl = (new Function('return this;'))().Promise;\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String}  name     specified path\n * @param {String}  filename parent file path\n * @param {Boolean} [isDir=false] whether the parent file path is a directory\n * @return {String}\n */\nexports.resolveInclude = function(name, filename, isDir) {\n  var dirname = path.dirname;\n  var extname = path.extname;\n  var resolve = path.resolve;\n  var includePath = resolve(isDir ? filename : dirname(filename), name);\n  var ext = extname(name);\n  if (!ext) {\n    includePath += '.ejs';\n  }\n  return includePath;\n};\n\n/**\n * Try to resolve file path on multiple directories\n *\n * @param  {String}        name  specified path\n * @param  {Array} paths list of possible parent directory paths\n * @return {String}\n */\nfunction resolvePaths(name, paths) {\n  var filePath;\n  if (paths.some(function (v) {\n    filePath = exports.resolveInclude(name, v, true);\n    return fs.existsSync(filePath);\n  })) {\n    return filePath;\n  }\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param  {String}  path    specified path\n * @param  {Options} options compilation options\n * @return {String}\n */\nfunction getIncludePath(path, options) {\n  var includePath;\n  var filePath;\n  var views = options.views;\n  var match = /^[A-Za-z]+:\\\\|^\\//.exec(path);\n\n  // Abs path\n  if (match && match.length) {\n    path = path.replace(/^\\/*/, '');\n    if (Array.isArray(options.root)) {\n      includePath = resolvePaths(path, options.root);\n    } else {\n      includePath = exports.resolveInclude(path, options.root || '/', true);\n    }\n  }\n  // Relative paths\n  else {\n    // Look relative to a passed filename first\n    if (options.filename) {\n      filePath = exports.resolveInclude(path, options.filename);\n      if (fs.existsSync(filePath)) {\n        includePath = filePath;\n      }\n    }\n    // Then look in any views directories\n    if (!includePath && Array.isArray(views)) {\n      includePath = resolvePaths(path, views);\n    }\n    if (!includePath && typeof options.includer !== 'function') {\n      throw new Error('Could not find the include file \"' +\n          options.escapeFunction(path) + '\"');\n    }\n  }\n  return includePath;\n}\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `template` is not set, the file specified in `options.filename` will be\n * read.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @memberof module:ejs-internal\n * @param {Options} options   compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache(options, template) {\n  var func;\n  var filename = options.filename;\n  var hasTemplate = arguments.length > 1;\n\n  if (options.cache) {\n    if (!filename) {\n      throw new Error('cache option requires a filename');\n    }\n    func = exports.cache.get(filename);\n    if (func) {\n      return func;\n    }\n    if (!hasTemplate) {\n      template = fileLoader(filename).toString().replace(_BOM, '');\n    }\n  }\n  else if (!hasTemplate) {\n    // istanbul ignore if: should not happen at all\n    if (!filename) {\n      throw new Error('Internal EJS error: no file name or template '\n                    + 'provided');\n    }\n    template = fileLoader(filename).toString().replace(_BOM, '');\n  }\n  func = exports.compile(template, options);\n  if (options.cache) {\n    exports.cache.set(filename, func);\n  }\n  return func;\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @memberof module:ejs-internal\n * @param {Options} options    compilation options\n * @param {Object} data        template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache(options, data, cb) {\n  var result;\n  if (!cb) {\n    if (typeof exports.promiseImpl == 'function') {\n      return new exports.promiseImpl(function (resolve, reject) {\n        try {\n          result = handleCache(options)(data);\n          resolve(result);\n        }\n        catch (err) {\n          reject(err);\n        }\n      });\n    }\n    else {\n      throw new Error('Please provide a callback function');\n    }\n  }\n  else {\n    try {\n      result = handleCache(options)(data);\n    }\n    catch (err) {\n      return cb(err);\n    }\n\n    cb(null, result);\n  }\n}\n\n/**\n * fileLoader is independent\n *\n * @param {String} filePath ejs file path.\n * @return {String} The contents of the specified file.\n * @static\n */\n\nfunction fileLoader(filePath){\n  return exports.fileLoader(filePath);\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @memberof module:ejs-internal\n * @param {String}  path    path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile(path, options) {\n  var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options);\n  opts.filename = getIncludePath(path, opts);\n  if (typeof options.includer === 'function') {\n    var includerResult = options.includer(path, opts.filename);\n    if (includerResult) {\n      if (includerResult.filename) {\n        opts.filename = includerResult.filename;\n      }\n      if (includerResult.template) {\n        return handleCache(opts, includerResult.template);\n      }\n    }\n  }\n  return handleCache(opts);\n}\n\n/**\n * Re-throw the given `err` in context to the `str` of ejs, `filename`, and\n * `lineno`.\n *\n * @implements {RethrowCallback}\n * @memberof module:ejs-internal\n * @param {Error}  err      Error object\n * @param {String} str      EJS source\n * @param {String} flnm     file name of the EJS file\n * @param {Number} lineno   line number of the error\n * @param {EscapeCallback} esc\n * @static\n */\n\nfunction rethrow(err, str, flnm, lineno, esc) {\n  var lines = str.split('\\n');\n  var start = Math.max(lineno - 3, 0);\n  var end = Math.min(lines.length, lineno + 3);\n  var filename = esc(flnm);\n  // Error context\n  var context = lines.slice(start, end).map(function (line, i){\n    var curr = i + start + 1;\n    return (curr == lineno ? ' >> ' : '    ')\n      + curr\n      + '| '\n      + line;\n  }).join('\\n');\n\n  // Alter exception message\n  err.path = filename;\n  err.message = (filename || 'ejs') + ':'\n    + lineno + '\\n'\n    + context + '\\n\\n'\n    + err.message;\n\n  throw err;\n}\n\nfunction stripSemi(str){\n  return str.replace(/;(\\s*$)/, '$1');\n}\n\n/**\n * Compile the given `str` of ejs into a template function.\n *\n * @param {String}  template EJS template\n *\n * @param {Options} [opts] compilation options\n *\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `opts.client`, either type might be returned.\n * Note that the return type of the function also depends on the value of `opts.async`.\n * @public\n */\n\nexports.compile = function compile(template, opts) {\n  var templ;\n\n  // v1 compat\n  // 'scope' is 'context'\n  // FIXME: Remove this in a future version\n  if (opts && opts.scope) {\n    if (!scopeOptionWarned){\n      console.warn('`scope` option is deprecated and will be removed in EJS 3');\n      scopeOptionWarned = true;\n    }\n    if (!opts.context) {\n      opts.context = opts.scope;\n    }\n    delete opts.scope;\n  }\n  templ = new Template(template, opts);\n  return templ.compile();\n};\n\n/**\n * Render the given `template` of ejs.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String}   template EJS template\n * @param {Object}  [data={}] template data\n * @param {Options} [opts={}] compilation and rendering options\n * @return {(String|Promise)}\n * Return value type depends on `opts.async`.\n * @public\n */\n\nexports.render = function (template, d, o) {\n  var data = d || utils.createNullProtoObjWherePossible();\n  var opts = o || utils.createNullProtoObjWherePossible();\n\n  // No options object -- if there are optiony names\n  // in the data, copy them to options\n  if (arguments.length == 2) {\n    utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA);\n  }\n\n  return handleCache(opts, template)(data);\n};\n\n/**\n * Render an EJS file at the given `path` and callback `cb(err, str)`.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String}             path     path to the EJS file\n * @param {Object}            [data={}] template data\n * @param {Options}           [opts={}] compilation and rendering options\n * @param {RenderFileCallback} cb callback\n * @public\n */\n\nexports.renderFile = function () {\n  var args = Array.prototype.slice.call(arguments);\n  var filename = args.shift();\n  var cb;\n  var opts = {filename: filename};\n  var data;\n  var viewOpts;\n\n  // Do we have a callback?\n  if (typeof arguments[arguments.length - 1] == 'function') {\n    cb = args.pop();\n  }\n  // Do we have data/opts?\n  if (args.length) {\n    // Should always have data obj\n    data = args.shift();\n    // Normal passed opts (data obj + opts obj)\n    if (args.length) {\n      // Use shallowCopy so we don't pollute passed in opts obj with new vals\n      utils.shallowCopy(opts, args.pop());\n    }\n    // Special casing for Express (settings + opts-in-data)\n    else {\n      // Express 3 and 4\n      if (data.settings) {\n        // Pull a few things from known locations\n        if (data.settings.views) {\n          opts.views = data.settings.views;\n        }\n        if (data.settings['view cache']) {\n          opts.cache = true;\n        }\n        // Undocumented after Express 2, but still usable, esp. for\n        // items that are unsafe to be passed along with data, like `root`\n        viewOpts = data.settings['view options'];\n        if (viewOpts) {\n          utils.shallowCopy(opts, viewOpts);\n        }\n      }\n      // Express 2 and lower, values set in app.locals, or people who just\n      // want to pass options in their data. NOTE: These values will override\n      // anything previously set in settings  or settings['view options']\n      utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);\n    }\n    opts.filename = filename;\n  }\n  else {\n    data = utils.createNullProtoObjWherePossible();\n  }\n\n  return tryHandleCache(opts, data, cb);\n};\n\n/**\n * Clear intermediate JavaScript cache. Calls {@link Cache#reset}.\n * @public\n */\n\n/**\n * EJS template class\n * @public\n */\nexports.Template = Template;\n\nexports.clearCache = function () {\n  exports.cache.reset();\n};\n\nfunction Template(text, optsParam) {\n  var opts = utils.hasOwnOnlyObject(optsParam);\n  var options = utils.createNullProtoObjWherePossible();\n  this.templateText = text;\n  /** @type {string | null} */\n  this.mode = null;\n  this.truncate = false;\n  this.currentLine = 1;\n  this.source = '';\n  options.client = opts.client || false;\n  options.escapeFunction = opts.escape || opts.escapeFunction || utils.escapeXML;\n  options.compileDebug = opts.compileDebug !== false;\n  options.debug = !!opts.debug;\n  options.filename = opts.filename;\n  options.openDelimiter = opts.openDelimiter || exports.openDelimiter || _DEFAULT_OPEN_DELIMITER;\n  options.closeDelimiter = opts.closeDelimiter || exports.closeDelimiter || _DEFAULT_CLOSE_DELIMITER;\n  options.delimiter = opts.delimiter || exports.delimiter || _DEFAULT_DELIMITER;\n  options.strict = opts.strict || false;\n  options.context = opts.context;\n  options.cache = opts.cache || false;\n  options.rmWhitespace = opts.rmWhitespace;\n  options.root = opts.root;\n  options.includer = opts.includer;\n  options.outputFunctionName = opts.outputFunctionName;\n  options.localsName = opts.localsName || exports.localsName || _DEFAULT_LOCALS_NAME;\n  options.views = opts.views;\n  options.async = opts.async;\n  options.destructuredLocals = opts.destructuredLocals;\n  options.legacyInclude = typeof opts.legacyInclude != 'undefined' ? !!opts.legacyInclude : true;\n\n  if (options.strict) {\n    options._with = false;\n  }\n  else {\n    options._with = typeof opts._with != 'undefined' ? opts._with : true;\n  }\n\n  this.opts = options;\n\n  this.regex = this.createRegex();\n}\n\nTemplate.modes = {\n  EVAL: 'eval',\n  ESCAPED: 'escaped',\n  RAW: 'raw',\n  COMMENT: 'comment',\n  LITERAL: 'literal'\n};\n\nTemplate.prototype = {\n  createRegex: function () {\n    var str = _REGEX_STRING;\n    var delim = utils.escapeRegExpChars(this.opts.delimiter);\n    var open = utils.escapeRegExpChars(this.opts.openDelimiter);\n    var close = utils.escapeRegExpChars(this.opts.closeDelimiter);\n    str = str.replace(/%/g, delim)\n      .replace(//g, close);\n    return new RegExp(str);\n  },\n\n  compile: function () {\n    /** @type {string} */\n    var src;\n    /** @type {ClientFunction} */\n    var fn;\n    var opts = this.opts;\n    var prepended = '';\n    var appended = '';\n    /** @type {EscapeCallback} */\n    var escapeFn = opts.escapeFunction;\n    /** @type {FunctionConstructor} */\n    var ctor;\n    /** @type {string} */\n    var sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : 'undefined';\n\n    if (!this.source) {\n      this.generateSource();\n      prepended +=\n        '  var __output = \"\";\\n' +\n        '  function __append(s) { if (s !== undefined && s !== null) __output += s }\\n';\n      if (opts.outputFunctionName) {\n        if (!_JS_IDENTIFIER.test(opts.outputFunctionName)) {\n          throw new Error('outputFunctionName is not a valid JS identifier.');\n        }\n        prepended += '  var ' + opts.outputFunctionName + ' = __append;' + '\\n';\n      }\n      if (opts.localsName && !_JS_IDENTIFIER.test(opts.localsName)) {\n        throw new Error('localsName is not a valid JS identifier.');\n      }\n      if (opts.destructuredLocals && opts.destructuredLocals.length) {\n        var destructuring = '  var __locals = (' + opts.localsName + ' || {}),\\n';\n        for (var i = 0; i < opts.destructuredLocals.length; i++) {\n          var name = opts.destructuredLocals[i];\n          if (!_JS_IDENTIFIER.test(name)) {\n            throw new Error('destructuredLocals[' + i + '] is not a valid JS identifier.');\n          }\n          if (i > 0) {\n            destructuring += ',\\n  ';\n          }\n          destructuring += name + ' = __locals.' + name;\n        }\n        prepended += destructuring + ';\\n';\n      }\n      if (opts._with !== false) {\n        prepended +=  '  with (' + opts.localsName + ' || {}) {' + '\\n';\n        appended += '  }' + '\\n';\n      }\n      appended += '  return __output;' + '\\n';\n      this.source = prepended + this.source + appended;\n    }\n\n    if (opts.compileDebug) {\n      src = 'var __line = 1' + '\\n'\n        + '  , __lines = ' + JSON.stringify(this.templateText) + '\\n'\n        + '  , __filename = ' + sanitizedFilename + ';' + '\\n'\n        + 'try {' + '\\n'\n        + this.source\n        + '} catch (e) {' + '\\n'\n        + '  rethrow(e, __lines, __filename, __line, escapeFn);' + '\\n'\n        + '}' + '\\n';\n    }\n    else {\n      src = this.source;\n    }\n\n    if (opts.client) {\n      src = 'escapeFn = escapeFn || ' + escapeFn.toString() + ';' + '\\n' + src;\n      if (opts.compileDebug) {\n        src = 'rethrow = rethrow || ' + rethrow.toString() + ';' + '\\n' + src;\n      }\n    }\n\n    if (opts.strict) {\n      src = '\"use strict\";\\n' + src;\n    }\n    if (opts.debug) {\n      console.log(src);\n    }\n    if (opts.compileDebug && opts.filename) {\n      src = src + '\\n'\n        + '//# sourceURL=' + sanitizedFilename + '\\n';\n    }\n\n    try {\n      if (opts.async) {\n        // Have to use generated function for this, since in envs without support,\n        // it breaks in parsing\n        try {\n          ctor = (new Function('return (async function(){}).constructor;'))();\n        }\n        catch(e) {\n          if (e instanceof SyntaxError) {\n            throw new Error('This environment does not support async/await');\n          }\n          else {\n            throw e;\n          }\n        }\n      }\n      else {\n        ctor = Function;\n      }\n      fn = new ctor(opts.localsName + ', escapeFn, include, rethrow', src);\n    }\n    catch(e) {\n      // istanbul ignore else\n      if (e instanceof SyntaxError) {\n        if (opts.filename) {\n          e.message += ' in ' + opts.filename;\n        }\n        e.message += ' while compiling ejs\\n\\n';\n        e.message += 'If the above error is not helpful, you may want to try EJS-Lint:\\n';\n        e.message += 'https://github.com/RyanZim/EJS-Lint';\n        if (!opts.async) {\n          e.message += '\\n';\n          e.message += 'Or, if you meant to create an async function, pass `async: true` as an option.';\n        }\n      }\n      throw e;\n    }\n\n    // Return a callable function which will execute the function\n    // created by the source-code, with the passed data as locals\n    // Adds a local `include` function which allows full recursive include\n    var returnedFn = opts.client ? fn : function anonymous(data) {\n      var include = function (path, includeData) {\n        var d = utils.shallowCopy(utils.createNullProtoObjWherePossible(), data);\n        if (includeData) {\n          d = utils.shallowCopy(d, includeData);\n        }\n        return includeFile(path, opts)(d);\n      };\n      return fn.apply(opts.context,\n        [data || utils.createNullProtoObjWherePossible(), escapeFn, include, rethrow]);\n    };\n    if (opts.filename && typeof Object.defineProperty === 'function') {\n      var filename = opts.filename;\n      var basename = path.basename(filename, path.extname(filename));\n      try {\n        Object.defineProperty(returnedFn, 'name', {\n          value: basename,\n          writable: false,\n          enumerable: false,\n          configurable: true\n        });\n      } catch (e) {/* ignore */}\n    }\n    return returnedFn;\n  },\n\n  generateSource: function () {\n    var opts = this.opts;\n\n    if (opts.rmWhitespace) {\n      // Have to use two separate replace here as `^` and `$` operators don't\n      // work well with `\\r` and empty lines don't work well with the `m` flag.\n      this.templateText =\n        this.templateText.replace(/[\\r\\n]+/g, '\\n').replace(/^\\s+|\\s+$/gm, '');\n    }\n\n    // Slurp spaces and tabs before <%_ and after _%>\n    this.templateText =\n      this.templateText.replace(/[ \\t]*<%_/gm, '<%_').replace(/_%>[ \\t]*/gm, '_%>');\n\n    var self = this;\n    var matches = this.parseTemplateText();\n    var d = this.opts.delimiter;\n    var o = this.opts.openDelimiter;\n    var c = this.opts.closeDelimiter;\n\n    if (matches && matches.length) {\n      matches.forEach(function (line, index) {\n        var closing;\n        // If this is an opening tag, check for closing tags\n        // FIXME: May end up with some false positives here\n        // Better to store modes as k/v with openDelimiter + delimiter as key\n        // Then this can simply check against the map\n        if ( line.indexOf(o + d) === 0        // If it is a tag\n          && line.indexOf(o + d + d) !== 0) { // and is not escaped\n          closing = matches[index + 2];\n          if (!(closing == d + c || closing == '-' + d + c || closing == '_' + d + c)) {\n            throw new Error('Could not find matching close tag for \"' + line + '\".');\n          }\n        }\n        self.scanLine(line);\n      });\n    }\n\n  },\n\n  parseTemplateText: function () {\n    var str = this.templateText;\n    var pat = this.regex;\n    var result = pat.exec(str);\n    var arr = [];\n    var firstPos;\n\n    while (result) {\n      firstPos = result.index;\n\n      if (firstPos !== 0) {\n        arr.push(str.substring(0, firstPos));\n        str = str.slice(firstPos);\n      }\n\n      arr.push(result[0]);\n      str = str.slice(result[0].length);\n      result = pat.exec(str);\n    }\n\n    if (str) {\n      arr.push(str);\n    }\n\n    return arr;\n  },\n\n  _addOutput: function (line) {\n    if (this.truncate) {\n      // Only replace single leading linebreak in the line after\n      // -%> tag -- this is the single, trailing linebreak\n      // after the tag that the truncation mode replaces\n      // Handle Win / Unix / old Mac linebreaks -- do the \\r\\n\n      // combo first in the regex-or\n      line = line.replace(/^(?:\\r\\n|\\r|\\n)/, '');\n      this.truncate = false;\n    }\n    if (!line) {\n      return line;\n    }\n\n    // Preserve literal slashes\n    line = line.replace(/\\\\/g, '\\\\\\\\');\n\n    // Convert linebreaks\n    line = line.replace(/\\n/g, '\\\\n');\n    line = line.replace(/\\r/g, '\\\\r');\n\n    // Escape double-quotes\n    // - this will be the delimiter during execution\n    line = line.replace(/\"/g, '\\\\\"');\n    this.source += '    ; __append(\"' + line + '\")' + '\\n';\n  },\n\n  scanLine: function (line) {\n    var self = this;\n    var d = this.opts.delimiter;\n    var o = this.opts.openDelimiter;\n    var c = this.opts.closeDelimiter;\n    var newLineCount = 0;\n\n    newLineCount = (line.split('\\n').length - 1);\n\n    switch (line) {\n    case o + d:\n    case o + d + '_':\n      this.mode = Template.modes.EVAL;\n      break;\n    case o + d + '=':\n      this.mode = Template.modes.ESCAPED;\n      break;\n    case o + d + '-':\n      this.mode = Template.modes.RAW;\n      break;\n    case o + d + '#':\n      this.mode = Template.modes.COMMENT;\n      break;\n    case o + d + d:\n      this.mode = Template.modes.LITERAL;\n      this.source += '    ; __append(\"' + line.replace(o + d + d, o + d) + '\")' + '\\n';\n      break;\n    case d + d + c:\n      this.mode = Template.modes.LITERAL;\n      this.source += '    ; __append(\"' + line.replace(d + d + c, d + c) + '\")' + '\\n';\n      break;\n    case d + c:\n    case '-' + d + c:\n    case '_' + d + c:\n      if (this.mode == Template.modes.LITERAL) {\n        this._addOutput(line);\n      }\n\n      this.mode = null;\n      this.truncate = line.indexOf('-') === 0 || line.indexOf('_') === 0;\n      break;\n    default:\n      // In script mode, depends on type of tag\n      if (this.mode) {\n        // If '//' is found without a line break, add a line break.\n        switch (this.mode) {\n        case Template.modes.EVAL:\n        case Template.modes.ESCAPED:\n        case Template.modes.RAW:\n          if (line.lastIndexOf('//') > line.lastIndexOf('\\n')) {\n            line += '\\n';\n          }\n        }\n        switch (this.mode) {\n        // Just executing code\n        case Template.modes.EVAL:\n          this.source += '    ; ' + line + '\\n';\n          break;\n          // Exec, esc, and output\n        case Template.modes.ESCAPED:\n          this.source += '    ; __append(escapeFn(' + stripSemi(line) + '))' + '\\n';\n          break;\n          // Exec and output\n        case Template.modes.RAW:\n          this.source += '    ; __append(' + stripSemi(line) + ')' + '\\n';\n          break;\n        case Template.modes.COMMENT:\n          // Do nothing\n          break;\n          // Literal <%% mode, append as raw output\n        case Template.modes.LITERAL:\n          this._addOutput(line);\n          break;\n        }\n      }\n      // In string mode, just add the output\n      else {\n        this._addOutput(line);\n      }\n    }\n\n    if (self.opts.compileDebug && newLineCount) {\n      this.currentLine += newLineCount;\n      this.source += '    ; __line = ' + this.currentLine + '\\n';\n    }\n  }\n};\n\n/**\n * Escape characters reserved in XML.\n *\n * This is simply an export of {@link module:utils.escapeXML}.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @public\n * @func\n * */\nexports.escapeXML = utils.escapeXML;\n\n/**\n * Express.js support.\n *\n * This is an alias for {@link module:ejs.renderFile}, in order to support\n * Express.js out-of-the-box.\n *\n * @func\n */\n\nexports.__express = exports.renderFile;\n\n/**\n * Version of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.VERSION = _VERSION_STRING;\n\n/**\n * Name for detection of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.name = _NAME;\n\n/* istanbul ignore if */\nif (typeof window != 'undefined') {\n  window.ejs = exports;\n}\n\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(' ', ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = `  ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n  '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n  '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n  '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n  '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n  '[:cntrl:]': ['\\\\p{Cc}', true],\n  '[:digit:]': ['\\\\p{Nd}', true],\n  '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n  '[:lower:]': ['\\\\p{Ll}', true],\n  '[:print:]': ['\\\\p{C}', true],\n  '[:punct:]': ['\\\\p{P}', true],\n  '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n  '[:upper:]': ['\\\\p{Lu}', true],\n  '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n  '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length\n      ? '(' + sranges + '|' + snegs + ')'\n      : ranges.length\n      ? sranges\n      : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  return windowsPathsNoEscape\n    ? s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  return windowsPathsNoEscape\n    ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n    : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n", "import expand from 'brace-expansion'\nimport { parseClass } from './brace-expressions.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  nobrace?: boolean\n  nocomment?: boolean\n  nonegate?: boolean\n  debug?: boolean\n  noglobstar?: boolean\n  noext?: boolean\n  nonull?: boolean\n  windowsPathsNoEscape?: boolean\n  allowWindowsEscape?: boolean\n  partial?: boolean\n  dot?: boolean\n  nocase?: boolean\n  nocaseMagicOnly?: boolean\n  magicalBraces?: boolean\n  matchBase?: boolean\n  flipNegate?: boolean\n  preserveMultipleSlashes?: boolean\n  optimizationLevel?: number\n  platform?: Platform\n  windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\nexport default minimatch\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n      process.platform\n    : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\nconst plTypes = {\n  '!': { open: '(?:(?!(?:', close: '))[^/]*?)' },\n  '?': { open: '(?:', close: ')?' },\n  '+': { open: '(?:', close: ')+' },\n  '*': { open: '(?:', close: ')*' },\n  '@': { open: '(?:', close: ')' },\n}\ntype StateChar = '!' | '?' | '+' | '*' | '@'\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\n// \"abc\" -> { a:true, b:true, c:true }\nconst charSet = (s: string) =>\n  s.split('').reduce((set: { [k: string]: boolean }, c) => {\n    set[c] = true\n    return set\n  }, {})\n\n// characters that need to be escaped in RegExp.\nconst reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// characters that indicate we have to add the pattern start\nconst addPatternStartSet = charSet('[.(')\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n      orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\nconst MAX_PATTERN_LENGTH = 1024 * 64\nconst assertValidPattern: (pattern: any) => void = (\n  pattern: any\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globUnescape = (s: string) => s.replace(/\\\\(.)/g, '$1')\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\ninterface PatternListEntry {\n  type: string\n  start: number\n  reStart: number\n  open: string\n  close: string\n}\ninterface NegativePatternListEntry extends PatternListEntry {\n  reEnd: number\n}\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\ntype SubparseReturn = [string, boolean]\ntype ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\ntype ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined\n        ? options.windowsNoMagicRoot\n        : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn all ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes\n        )\n        if (!matched) continue\n        globParts[i] = matched\n        globParts[j] = []\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // a UNC pattern like //?/c:/* can match a path like c:/x\n    // and vice versa\n    if (this.isWindows) {\n      const fileUNC =\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        typeof file[3] === 'string' &&\n        /^[a-z]:$/i.test(file[3])\n      const patternUNC =\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      if (fileUNC && patternUNC) {\n        const fd = file[3] as string\n        const pd = pattern[3] as string\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          file[3] = pd\n        }\n      } else if (patternUNC && typeof file[0] === 'string') {\n        const pd = pattern[3] as string\n        const fd = file[0]\n        if (pd.toLowerCase() === fd.toLowerCase()) {\n          pattern[3] = fd\n          pattern = pattern.slice(3)\n        }\n      } else if (fileUNC && typeof pattern[0] === 'string') {\n        const fd = file[3]\n        if (fd.toLowerCase() === pattern[0].toLowerCase()) {\n          pattern[0] = fd\n          file = file.slice(3)\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // dont' need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn | SubparseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n          ? starDotExtTestDot\n          : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n          ? qmarksTestDot\n          : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    let re = ''\n    let hasMagic = false\n    let escaping = false\n    // ? => one single character\n    const patternListStack: PatternListEntry[] = []\n    const negativeLists: NegativePatternListEntry[] = []\n    let stateChar: StateChar | false = false\n    let uflag = false\n    let pl: PatternListEntry | undefined\n    // . and .. never match anything that doesn't start with .,\n    // even when options.dot is set.  However, if the pattern\n    // starts with ., then traversal patterns can match.\n    let dotTravAllowed = pattern.charAt(0) === '.'\n    let dotFileAllowed = options.dot || dotTravAllowed\n    const patternStart = () =>\n      dotTravAllowed\n        ? ''\n        : dotFileAllowed\n        ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n        : '(?!\\\\.)'\n    const subPatternStart = (p: string) =>\n      p.charAt(0) === '.'\n        ? ''\n        : options.dot\n        ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n        : '(?!\\\\.)'\n\n    const clearStateChar = () => {\n      if (stateChar) {\n        // we had some state-tracking character\n        // that wasn't consumed by this pass.\n        switch (stateChar) {\n          case '*':\n            re += star\n            hasMagic = true\n            break\n          case '?':\n            re += qmark\n            hasMagic = true\n            break\n          default:\n            re += '\\\\' + stateChar\n            break\n        }\n        this.debug('clearStateChar %j %j', stateChar, re)\n        stateChar = false\n      }\n    }\n\n    for (\n      let i = 0, c: string;\n      i < pattern.length && (c = pattern.charAt(i));\n      i++\n    ) {\n      this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n      // skip over any that are escaped.\n      if (escaping) {\n        // completely not allowed, even escaped.\n        // should be impossible.\n        /* c8 ignore start */\n        if (c === '/') {\n          return false\n        }\n        /* c8 ignore stop */\n\n        if (reSpecials[c]) {\n          re += '\\\\'\n        }\n        re += c\n        escaping = false\n        continue\n      }\n\n      switch (c) {\n        // Should already be path-split by now.\n        /* c8 ignore start */\n        case '/': {\n          return false\n        }\n        /* c8 ignore stop */\n\n        case '\\\\':\n          clearStateChar()\n          escaping = true\n          continue\n\n        // the various stateChar values\n        // for the \"extglob\" stuff.\n        case '?':\n        case '*':\n        case '+':\n        case '@':\n        case '!':\n          this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n          // if we already have a stateChar, then it means\n          // that there was something like ** or +? in there.\n          // Handle the stateChar, then proceed with this one.\n          this.debug('call clearStateChar %j', stateChar)\n          clearStateChar()\n          stateChar = c\n          // if extglob is disabled, then +(asdf|foo) isn't a thing.\n          // just clear the statechar *now*, rather than even diving into\n          // the patternList stuff.\n          if (options.noext) clearStateChar()\n          continue\n\n        case '(': {\n          if (!stateChar) {\n            re += '\\\\('\n            continue\n          }\n\n          const plEntry: PatternListEntry = {\n            type: stateChar,\n            start: i - 1,\n            reStart: re.length,\n            open: plTypes[stateChar].open,\n            close: plTypes[stateChar].close,\n          }\n          this.debug(this.pattern, '\\t', plEntry)\n          patternListStack.push(plEntry)\n          // negation is (?:(?!(?:js)(?:))[^/]*)\n          re += plEntry.open\n          // next entry starts with a dot maybe?\n          if (plEntry.start === 0 && plEntry.type !== '!') {\n            dotTravAllowed = true\n            re += subPatternStart(pattern.slice(i + 1))\n          }\n          this.debug('plType %j %j', stateChar, re)\n          stateChar = false\n          continue\n        }\n\n        case ')': {\n          const plEntry = patternListStack[patternListStack.length - 1]\n          if (!plEntry) {\n            re += '\\\\)'\n            continue\n          }\n          patternListStack.pop()\n\n          // closing an extglob\n          clearStateChar()\n          hasMagic = true\n          pl = plEntry\n          // negation is (?:(?!js)[^/]*)\n          // The others are (?:)\n          re += pl.close\n          if (pl.type === '!') {\n            negativeLists.push(Object.assign(pl, { reEnd: re.length }))\n          }\n          continue\n        }\n\n        case '|': {\n          const plEntry = patternListStack[patternListStack.length - 1]\n          if (!plEntry) {\n            re += '\\\\|'\n            continue\n          }\n\n          clearStateChar()\n          re += '|'\n          // next subpattern can start with a dot?\n          if (plEntry.start === 0 && plEntry.type !== '!') {\n            dotTravAllowed = true\n            re += subPatternStart(pattern.slice(i + 1))\n          }\n          continue\n        }\n\n        // these are mostly the same in regexp and glob\n        case '[':\n          // swallow any state-tracking char before the [\n          clearStateChar()\n          const [src, needUflag, consumed, magic] = parseClass(pattern, i)\n          if (consumed) {\n            re += src\n            uflag = uflag || needUflag\n            i += consumed - 1\n            hasMagic = hasMagic || magic\n          } else {\n            re += '\\\\['\n          }\n          continue\n\n        case ']':\n          re += '\\\\' + c\n          continue\n\n        default:\n          // swallow any state char that wasn't consumed\n          clearStateChar()\n\n          re += regExpEscape(c)\n          break\n      } // switch\n    } // for\n\n    // handle the case where we had a +( thing at the *end*\n    // of the pattern.\n    // each pattern list stack adds 3 chars, and we need to go through\n    // and escape any | chars that were passed through as-is for the regexp.\n    // Go through and escape them, taking care not to double-escape any\n    // | chars that were already escaped.\n    for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n      let tail: string\n      tail = re.slice(pl.reStart + pl.open.length)\n      this.debug(this.pattern, 'setting tail', re, pl)\n      // maybe some even number of \\, then maybe 1 \\, followed by a |\n      tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, (_, $1, $2) => {\n        if (!$2) {\n          // the | isn't already escaped, so escape it.\n          $2 = '\\\\'\n          // should already be done\n          /* c8 ignore start */\n        }\n        /* c8 ignore stop */\n\n        // need to escape all those slashes *again*, without escaping the\n        // one that we need for escaping the | character.  As it works out,\n        // escaping an even number of slashes can be done by simply repeating\n        // it exactly after itself.  That's why this trick works.\n        //\n        // I am sorry that you have to see this.\n        return $1 + $1 + $2 + '|'\n      })\n\n      this.debug('tail=%j\\n   %s', tail, tail, pl, re)\n      const t =\n        pl.type === '*' ? star : pl.type === '?' ? qmark : '\\\\' + pl.type\n\n      hasMagic = true\n      re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n    }\n\n    // handle trailing things that only matter at the very end.\n    clearStateChar()\n    if (escaping) {\n      // trailing \\\\\n      re += '\\\\\\\\'\n    }\n\n    // only need to apply the nodot start if the re starts with\n    // something that could conceivably capture a dot\n    const addPatternStart = addPatternStartSet[re.charAt(0)]\n\n    // Hack to work around lack of negative lookbehind in JS\n    // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n    // like 'a.xyz.yz' doesn't match.  So, the first negative\n    // lookahead, has to look ALL the way ahead, to the end of\n    // the pattern.\n    for (let n = negativeLists.length - 1; n > -1; n--) {\n      const nl = negativeLists[n]\n\n      const nlBefore = re.slice(0, nl.reStart)\n      const nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n      let nlAfter = re.slice(nl.reEnd)\n      const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter\n\n      // Handle nested stuff like *(*.js|!(*.json)), where open parens\n      // mean that we should *not* include the ) in the bit that is considered\n      // \"after\" the negated section.\n      const closeParensBefore = nlBefore.split(')').length\n      const openParensBefore = nlBefore.split('(').length - closeParensBefore\n      let cleanAfter = nlAfter\n      for (let i = 0; i < openParensBefore; i++) {\n        cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n      }\n      nlAfter = cleanAfter\n\n      const dollar = nlAfter === '' ? '(?:$|\\\\/)' : ''\n\n      re = nlBefore + nlFirst + nlAfter + dollar + nlLast\n    }\n\n    // if the re is not \"\" at this point, then we need to make sure\n    // it doesn't match against an empty path part.\n    // Otherwise a/* will match a/, which it should not.\n    if (re !== '' && hasMagic) {\n      re = '(?=.)' + re\n    }\n\n    if (addPatternStart) {\n      re = patternStart() + re\n    }\n\n    // if it's nocase, and the lcase/uppercase don't match, it's magic\n    if (options.nocase && !hasMagic && !options.nocaseMagicOnly) {\n      hasMagic = pattern.toUpperCase() !== pattern.toLowerCase()\n    }\n\n    // skip the regexp for non-magical patterns\n    // unescape anything in it, though, so that it'll be\n    // an exact match against a file etc.\n    if (!hasMagic) {\n      return globUnescape(re)\n    }\n\n    const flags = (options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    try {\n      const ext = fastTest\n        ? {\n            _glob: pattern,\n            _src: re,\n            test: fastTest,\n          }\n        : {\n            _glob: pattern,\n            _src: re,\n          }\n      return Object.assign(new RegExp('^' + re + '$', flags), ext)\n      /* c8 ignore start */\n    } catch (er) {\n      // should be impossible\n      // If it was an invalid regular expression, then it can't match\n      // anything.  This trick looks for a character after the end of\n      // the string, which is of course impossible, except in multi-line\n      // mode, but it's not a /m regex.\n      this.debug('invalid regexp', er)\n      return new RegExp('$.')\n    }\n    /* c8 ignore stop */\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n      ? twoStarDot\n      : twoStarNoDot\n    const flags = options.nocase ? 'i' : ''\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p =>\n          typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n            ? GLOBSTAR\n            : p._src\n        ) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        return pp.filter(p => p !== GLOBSTAR).join('/')\n      })\n      .join('|')\n\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^(?:' + re + ')$'\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').*$'\n\n    try {\n      this.regexp = new RegExp(re, flags)\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "import minimatch from './index.js'\n\nexport = Object.assign(minimatch, { default: minimatch, minimatch })\n", "\uFEFFconst crypto = require('crypto'),\n  debug = require('debug'),\n  minimatch = require('minimatch'),\n  path = require('path');\n\nconst defaultOptions = {\n  algo: 'sha1', // see crypto.getHashes() for options\n  algoOptions: {},\n  encoding: 'base64', // 'base64', 'base64url', 'hex' or 'binary'\n  files: {\n    exclude: [],\n    include: [],\n    matchBasename: true,\n    matchPath: false,\n    ignoreBasename: false,\n    ignoreRootName: false,\n  },\n  folders: {\n    exclude: [],\n    include: [],\n    matchBasename: true,\n    matchPath: false,\n    ignoreBasename: false,\n    ignoreRootName: false,\n  },\n  symbolicLinks: {\n    include: true,\n    ignoreBasename: false,\n    ignoreTargetPath: true,\n    ignoreTargetContent: false,\n    ignoreTargetContentAfterError: false,\n  },\n};\n\n// Use the environment variable DEBUG to log output, e.g. `set DEBUG=fhash:*`\nconst log = {\n  match: debug('fhash:match'),\n  params: params => {\n    debug('fhash:parameters')(params);\n    return params;\n  },\n  err: debug('fhash:err'),\n  symlink: debug('fhash:symlink'),\n  queue: debug('fhash:queue'),\n  glob: debug('fhash:glob'),\n};\n\nfunction prep(fs) {\n  let queue = [];\n  let queueTimer = undefined;\n\n  function hashElement(name, dir, options, callback) {\n    callback = arguments[arguments.length - 1];\n\n    return parseParameters(arguments)\n      .then(({ basename, dir, options }) => {\n        // this is only used for the root level\n        options.skipMatching = true;\n        return fs.promises\n          .lstat(path.join(dir, basename))\n          .then(stats => {\n            stats.name = basename;\n            return stats;\n          })\n          .then(stats => hashElementPromise(stats, dir, options, true));\n      })\n      .then(result => {\n        if (isFunction(callback)) {\n          return callback(undefined, result);\n        } else {\n          return result;\n        }\n      })\n      .catch(reason => {\n        log.err('Fatal error:', reason);\n        if (isFunction(callback)) {\n          return callback(reason);\n        } else {\n          throw reason;\n        }\n      });\n  }\n\n  /**\n   * @param {fs.Stats} stats folder element, can also be of type fs.Dirent\n   * @param {string} dirname\n   * @param {Options} options\n   * @param {boolean} isRootElement\n   */\n  function hashElementPromise(stats, dirname, options, isRootElement = false) {\n    const name = stats.name;\n    let promise = undefined;\n    if (stats.isDirectory()) {\n      promise = hashFolderPromise(name, dirname, options, isRootElement);\n    } else if (stats.isFile()) {\n      promise = hashFilePromise(name, dirname, options, isRootElement);\n    } else if (stats.isSymbolicLink()) {\n      promise = hashSymLinkPromise(name, dirname, options, isRootElement);\n    } else {\n      log.err('hashElementPromise cannot handle ', stats);\n      return Promise.resolve({ name, hash: 'Error: unknown element type' });\n    }\n\n    return promise.catch(err => {\n      if (err.code && (err.code === 'EMFILE' || err.code === 'ENFILE')) {\n        log.queue(`queued ${dirname}/${name} because of ${err.code}`);\n\n        const promise = new Promise((resolve, reject) => {\n          queue.push(() => {\n            log.queue(`Will processs queued ${dirname}/${name}`);\n            return hashElementPromise(stats, dirname, options, isRootElement)\n              .then(ok => resolve(ok))\n              .catch(err => reject(err));\n          });\n        });\n\n        if (queueTimer === undefined) {\n          queueTimer = setTimeout(processQueue, 0);\n        }\n        return promise;\n      }\n\n      throw err;\n    });\n  }\n\n  function processQueue() {\n    queueTimer = undefined;\n    const runnables = queue;\n    queue = [];\n    runnables.forEach(run => run());\n  }\n\n  async function hashFolderPromise(name, dir, options, isRootElement = false) {\n    const folderPath = path.join(dir, name);\n    let ignoreBasenameOnce = options.ignoreBasenameOnce;\n    delete options.ignoreBasenameOnce;\n\n    if (options.skipMatching) {\n      // this is currently only used for the root folder\n      log.match(`skipped '${folderPath}'`);\n      delete options.skipMatching;\n    } else if (ignore(name, folderPath, options.folders)) {\n      return undefined;\n    }\n\n    const files = await fs.promises.readdir(folderPath, { withFileTypes: true });\n    const children = await Promise.all(\n      files\n        .sort((a, b) => a.name.localeCompare(b.name))\n        .map(child => hashElementPromise(child, folderPath, options)),\n    );\n\n    if (ignoreBasenameOnce) options.ignoreBasenameOnce = true;\n    const hash = new HashedFolder(name, children.filter(notUndefined), options, isRootElement);\n    return hash;\n  }\n\n  function hashFilePromise(name, dir, options, isRootElement = false) {\n    const filePath = path.join(dir, name);\n\n    if (options.skipMatching) {\n      // this is currently only used for the root folder\n      log.match(`skipped '${filePath}'`);\n      delete options.skipMatching;\n    } else if (ignore(name, filePath, options.files)) {\n      return Promise.resolve(undefined);\n    }\n\n    return new Promise((resolve, reject) => {\n      try {\n        const hash = crypto.createHash(options.algo, options.algoOptions);\n        if (\n          options.files.ignoreBasename ||\n          options.ignoreBasenameOnce ||\n          (isRootElement && options.files.ignoreRootName)\n        ) {\n          delete options.ignoreBasenameOnce;\n          log.match(`omitted name of ${filePath} from hash`);\n        } else {\n          hash.update(name);\n        }\n\n        const f = fs.createReadStream(filePath);\n        f.on('error', err => {\n          reject(err);\n        });\n        f.pipe(hash, { end: false });\n\n        f.on('end', () => {\n          const hashedFile = new HashedFile(name, hash, options.encoding);\n          return resolve(hashedFile);\n        });\n      } catch (ex) {\n        return reject(ex);\n      }\n    });\n  }\n\n  async function hashSymLinkPromise(name, dir, options, isRootElement = false) {\n    const target = await fs.promises.readlink(path.join(dir, name));\n    log.symlink(`handling symbolic link ${name} -> ${target}`);\n    if (options.symbolicLinks.include) {\n      if (options.symbolicLinks.ignoreTargetContent) {\n        return symLinkIgnoreTargetContent(name, target, options, isRootElement);\n      } else {\n        return symLinkResolve(name, dir, target, options, isRootElement);\n      }\n    } else {\n      log.symlink('skipping symbolic link');\n      return Promise.resolve(undefined);\n    }\n  }\n\n  function symLinkIgnoreTargetContent(name, target, options, isRootElement) {\n    delete options.skipMatching; // only used for the root level\n    log.symlink('ignoring symbolic link target content');\n    const hash = crypto.createHash(options.algo, options.algoOptions);\n    if (!options.symbolicLinks.ignoreBasename && !(isRootElement && options.files.ignoreRootName)) {\n      log.symlink('hash basename');\n      hash.update(name);\n    }\n    if (!options.symbolicLinks.ignoreTargetPath) {\n      log.symlink('hash targetpath');\n      hash.update(target);\n    }\n    return Promise.resolve(new HashedFile(name, hash, options.encoding));\n  }\n\n  async function symLinkResolve(name, dir, target, options, isRootElement) {\n    delete options.skipMatching; // only used for the root level\n    if (options.symbolicLinks.ignoreBasename) {\n      options.ignoreBasenameOnce = true;\n    }\n\n    try {\n      const stats = await fs.promises.stat(path.join(dir, name));\n      stats.name = name;\n      const temp = await hashElementPromise(stats, dir, options, isRootElement);\n\n      if (!options.symbolicLinks.ignoreTargetPath) {\n        const hash = crypto.createHash(options.algo, options.algoOptions);\n        hash.update(temp.hash);\n        log.symlink('hash targetpath');\n        hash.update(target);\n        temp.hash = hash.digest(options.encoding);\n      }\n      return temp;\n    } catch (err) {\n      if (options.symbolicLinks.ignoreTargetContentAfterError) {\n        log.symlink(`Ignoring error \"${err.code}\" when hashing symbolic link ${name}`, err);\n        const hash = crypto.createHash(options.algo, options.algoOptions);\n        if (\n          !options.symbolicLinks.ignoreBasename &&\n          !(isRootElement && options.files.ignoreRootName)\n        ) {\n          hash.update(name);\n        }\n        if (!options.symbolicLinks.ignoreTargetPath) {\n          hash.update(target);\n        }\n        return new HashedFile(name, hash, options.encoding);\n      } else {\n        log.symlink(`Error \"${err.code}\": When hashing symbolic link ${name}`, err);\n        throw err;\n      }\n    }\n  }\n\n  function ignore(name, path, rules) {\n    if (rules.exclude) {\n      if (rules.matchBasename && rules.exclude(name)) {\n        log.match(`exclude basename '${name}'`);\n        return true;\n      } else if (rules.matchPath && rules.exclude(path)) {\n        log.match(`exclude path '${path}'`);\n        return true;\n      }\n    }\n    if (rules.include) {\n      if (rules.matchBasename && rules.include(name)) {\n        log.match(`include basename '${name}'`);\n        return false;\n      } else if (rules.matchPath && rules.include(path)) {\n        log.match(`include path '${path}'`);\n        return false;\n      } else {\n        log.match(`include rule failed for path '${path}'`);\n        return true;\n      }\n    }\n\n    log.match(`Will not ignore unmatched '${path}'`);\n    return false;\n  }\n\n  return hashElement;\n}\n\nfunction parseParameters(args) {\n  let basename = args[0],\n    dir = args[1],\n    options_ = args[2];\n\n  if (!isString(basename)) {\n    return Promise.reject(new TypeError('First argument must be a string'));\n  }\n\n  if (!isString(dir)) {\n    dir = path.dirname(basename);\n    basename = path.basename(basename);\n    options_ = args[1];\n  }\n\n  // parse options (fallback default options)\n  if (!isObject(options_)) options_ = {};\n  const options = {\n    algo: options_.algo || defaultOptions.algo,\n    algoOptions: options_.algoOptions || defaultOptions.algoOptions,\n    encoding: options_.encoding || defaultOptions.encoding,\n    files: Object.assign({}, defaultOptions.files, options_.files),\n    folders: Object.assign({}, defaultOptions.folders, options_.folders),\n    match: Object.assign({}, defaultOptions.match, options_.match),\n    symbolicLinks: Object.assign({}, defaultOptions.symbolicLinks, options_.symbolicLinks),\n  };\n\n  // transform match globs to Regex\n  options.files.exclude = reduceGlobPatterns(options.files.exclude, 'exclude files');\n  options.files.include = reduceGlobPatterns(options.files.include, 'include files');\n  options.folders.exclude = reduceGlobPatterns(options.folders.exclude, 'exclude folders');\n  options.folders.include = reduceGlobPatterns(options.folders.include, 'include folders');\n\n  return Promise.resolve(log.params({ basename, dir, options }));\n}\n\nconst HashedFolder = function HashedFolder(name, children, options, isRootElement = false) {\n  this.name = name;\n  this.children = children;\n\n  const hash = crypto.createHash(options.algo, options.algoOptions);\n  if (\n    options.folders.ignoreBasename ||\n    options.ignoreBasenameOnce ||\n    (isRootElement && options.folders.ignoreRootName)\n  ) {\n    delete options.ignoreBasenameOnce;\n    log.match(`omitted name of folder ${name} from hash`);\n  } else {\n    hash.update(name);\n  }\n  children.forEach(child => {\n    if (child.hash) {\n      hash.update(child.hash);\n    }\n  });\n\n  this.hash = hash.digest(options.encoding);\n};\n\nHashedFolder.prototype.toString = function (padding = '') {\n  const first = `${padding}{ name: '${this.name}', hash: '${this.hash}',\\n`;\n  padding += '  ';\n\n  return `${first}${padding}children: ${this.childrenToString(padding)}}`;\n};\n\nHashedFolder.prototype.childrenToString = function (padding = '') {\n  if (this.children.length === 0) {\n    return '[]';\n  } else {\n    const nextPadding = padding + '  ';\n    const children = this.children.map(child => child.toString(nextPadding)).join('\\n');\n    return `[\\n${children}\\n${padding}]`;\n  }\n};\n\nconst HashedFile = function HashedFile(name, hash, encoding) {\n  this.name = name;\n  this.hash = hash.digest(encoding);\n};\n\nHashedFile.prototype.toString = function (padding = '') {\n  return padding + \"{ name: '\" + this.name + \"', hash: '\" + this.hash + \"' }\";\n};\n\nfunction isFunction(any) {\n  return typeof any === 'function';\n}\n\nfunction isString(str) {\n  return typeof str === 'string' || str instanceof String;\n}\n\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object';\n}\n\nfunction notUndefined(obj) {\n  return typeof obj !== 'undefined';\n}\n\nfunction reduceGlobPatterns(globs, name) {\n  if (isFunction(globs)) {\n    log.glob(`Using function to ${name}`);\n    return globs;\n  } else if (!globs || !Array.isArray(globs) || globs.length === 0) {\n    return undefined;\n  } else {\n    // combine globs into one single RegEx\n    const regex = new RegExp(\n      globs\n        .reduce((acc, exclude) => {\n          return acc + '|' + minimatch.makeRe(exclude).source;\n        }, '')\n        .substr(1),\n    );\n    log.glob(`Reduced glob patterns to ${name}`, { from: globs, to: regex });\n    return param => regex.test(param);\n  }\n}\n\nmodule.exports = {\n  defaults: defaultOptions,\n  hashElement: prep(require('fs')),\n  // exposed for testing\n  prep,\n  parseParameters,\n};\n", "'use strict'\n\nimport { notStrictEqual, strictEqual } from 'assert'\nimport cliui from 'cliui'\nimport escalade from 'escalade/sync'\nimport { inspect } from 'util'\nimport { readFileSync } from 'fs'\nimport { fileURLToPath } from 'url';\nimport Parser from 'yargs-parser'\nimport { basename, dirname, extname, relative, resolve } from 'path'\nimport { getProcessArgvBin } from '../../build/lib/utils/process-argv.js'\nimport { YError } from '../../build/lib/yerror.js'\nimport y18n from 'y18n'\n\nconst REQUIRE_ERROR = 'require is not supported by ESM'\nconst REQUIRE_DIRECTORY_ERROR = 'loading a directory of commands is not supported yet for ESM'\n\nlet __dirname;\ntry {\n  __dirname = fileURLToPath(import.meta.url);\n} catch (e) {\n  __dirname = process.cwd();\n}\nconst mainFilename = __dirname.substring(0, __dirname.lastIndexOf('node_modules'));\n\nexport default {\n  assert: {\n    notStrictEqual,\n    strictEqual\n  },\n  cliui,\n  findUp: escalade,\n  getEnv: (key) => {\n    return process.env[key]\n  },\n  inspect,\n  getCallerFile: () => {\n    throw new YError(REQUIRE_DIRECTORY_ERROR)\n  },\n  getProcessArgvBin,\n  mainFilename: mainFilename || process.cwd(),\n  Parser,\n  path: {\n    basename,\n    dirname,\n    extname,\n    relative,\n    resolve\n  },\n  process: {\n    argv: () => process.argv,\n    cwd: process.cwd,\n    emitWarning: (warning, type) => process.emitWarning(warning, type),\n    execPath: () => process.execPath,\n    exit: process.exit,\n    nextTick: process.nextTick,\n    stdColumns: typeof process.stdout.columns !== 'undefined' ? process.stdout.columns : null\n  },\n  readFileSync,\n  require: () => {\n    throw new YError(REQUIRE_ERROR)\n  },\n  requireDirectory: () => {\n    throw new YError(REQUIRE_DIRECTORY_ERROR)\n  },\n  stringWidth: (str) => {\n    return [...str].length\n  },\n  y18n: y18n({\n    directory: resolve(__dirname, '../../../locales'),\n    updateFiles: false\n  })\n}\n", "'use strict';\nconst align = {\n    right: alignRight,\n    center: alignCenter\n};\nconst top = 0;\nconst right = 1;\nconst bottom = 2;\nconst left = 3;\nexport class UI {\n    constructor(opts) {\n        var _a;\n        this.width = opts.width;\n        this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true;\n        this.rows = [];\n    }\n    span(...args) {\n        const cols = this.div(...args);\n        cols.span = true;\n    }\n    resetOutput() {\n        this.rows = [];\n    }\n    div(...args) {\n        if (args.length === 0) {\n            this.div('');\n        }\n        if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') {\n            return this.applyLayoutDSL(args[0]);\n        }\n        const cols = args.map(arg => {\n            if (typeof arg === 'string') {\n                return this.colFromString(arg);\n            }\n            return arg;\n        });\n        this.rows.push(cols);\n        return cols;\n    }\n    shouldApplyLayoutDSL(...args) {\n        return args.length === 1 && typeof args[0] === 'string' &&\n            /[\\t\\n]/.test(args[0]);\n    }\n    applyLayoutDSL(str) {\n        const rows = str.split('\\n').map(row => row.split('\\t'));\n        let leftColumnWidth = 0;\n        // simple heuristic for layout, make sure the\n        // second column lines up along the left-hand.\n        // don't allow the first column to take up more\n        // than 50% of the screen.\n        rows.forEach(columns => {\n            if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) {\n                leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0]));\n            }\n        });\n        // generate a table:\n        //  replacing ' ' with padding calculations.\n        //  using the algorithmically generated width.\n        rows.forEach(columns => {\n            this.div(...columns.map((r, i) => {\n                return {\n                    text: r.trim(),\n                    padding: this.measurePadding(r),\n                    width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined\n                };\n            }));\n        });\n        return this.rows[this.rows.length - 1];\n    }\n    colFromString(text) {\n        return {\n            text,\n            padding: this.measurePadding(text)\n        };\n    }\n    measurePadding(str) {\n        // measure padding without ansi escape codes\n        const noAnsi = mixin.stripAnsi(str);\n        return [0, noAnsi.match(/\\s*$/)[0].length, 0, noAnsi.match(/^\\s*/)[0].length];\n    }\n    toString() {\n        const lines = [];\n        this.rows.forEach(row => {\n            this.rowToString(row, lines);\n        });\n        // don't display any lines with the\n        // hidden flag set.\n        return lines\n            .filter(line => !line.hidden)\n            .map(line => line.text)\n            .join('\\n');\n    }\n    rowToString(row, lines) {\n        this.rasterize(row).forEach((rrow, r) => {\n            let str = '';\n            rrow.forEach((col, c) => {\n                const { width } = row[c]; // the width with padding.\n                const wrapWidth = this.negatePadding(row[c]); // the width without padding.\n                let ts = col; // temporary string used during alignment/padding.\n                if (wrapWidth > mixin.stringWidth(col)) {\n                    ts += ' '.repeat(wrapWidth - mixin.stringWidth(col));\n                }\n                // align the string within its column.\n                if (row[c].align && row[c].align !== 'left' && this.wrap) {\n                    const fn = align[row[c].align];\n                    ts = fn(ts, wrapWidth);\n                    if (mixin.stringWidth(ts) < wrapWidth) {\n                        ts += ' '.repeat((width || 0) - mixin.stringWidth(ts) - 1);\n                    }\n                }\n                // apply border and padding to string.\n                const padding = row[c].padding || [0, 0, 0, 0];\n                if (padding[left]) {\n                    str += ' '.repeat(padding[left]);\n                }\n                str += addBorder(row[c], ts, '| ');\n                str += ts;\n                str += addBorder(row[c], ts, ' |');\n                if (padding[right]) {\n                    str += ' '.repeat(padding[right]);\n                }\n                // if prior row is span, try to render the\n                // current row on the prior line.\n                if (r === 0 && lines.length > 0) {\n                    str = this.renderInline(str, lines[lines.length - 1]);\n                }\n            });\n            // remove trailing whitespace.\n            lines.push({\n                text: str.replace(/ +$/, ''),\n                span: row.span\n            });\n        });\n        return lines;\n    }\n    // if the full 'source' can render in\n    // the target line, do so.\n    renderInline(source, previousLine) {\n        const match = source.match(/^ */);\n        const leadingWhitespace = match ? match[0].length : 0;\n        const target = previousLine.text;\n        const targetTextWidth = mixin.stringWidth(target.trimRight());\n        if (!previousLine.span) {\n            return source;\n        }\n        // if we're not applying wrapping logic,\n        // just always append to the span.\n        if (!this.wrap) {\n            previousLine.hidden = true;\n            return target + source;\n        }\n        if (leadingWhitespace < targetTextWidth) {\n            return source;\n        }\n        previousLine.hidden = true;\n        return target.trimRight() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimLeft();\n    }\n    rasterize(row) {\n        const rrows = [];\n        const widths = this.columnWidths(row);\n        let wrapped;\n        // word wrap all columns, and create\n        // a data-structure that is easy to rasterize.\n        row.forEach((col, c) => {\n            // leave room for left and right padding.\n            col.width = widths[c];\n            if (this.wrap) {\n                wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\\n');\n            }\n            else {\n                wrapped = col.text.split('\\n');\n            }\n            if (col.border) {\n                wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.');\n                wrapped.push(\"'\" + '-'.repeat(this.negatePadding(col) + 2) + \"'\");\n            }\n            // add top and bottom padding.\n            if (col.padding) {\n                wrapped.unshift(...new Array(col.padding[top] || 0).fill(''));\n                wrapped.push(...new Array(col.padding[bottom] || 0).fill(''));\n            }\n            wrapped.forEach((str, r) => {\n                if (!rrows[r]) {\n                    rrows.push([]);\n                }\n                const rrow = rrows[r];\n                for (let i = 0; i < c; i++) {\n                    if (rrow[i] === undefined) {\n                        rrow.push('');\n                    }\n                }\n                rrow.push(str);\n            });\n        });\n        return rrows;\n    }\n    negatePadding(col) {\n        let wrapWidth = col.width || 0;\n        if (col.padding) {\n            wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0);\n        }\n        if (col.border) {\n            wrapWidth -= 4;\n        }\n        return wrapWidth;\n    }\n    columnWidths(row) {\n        if (!this.wrap) {\n            return row.map(col => {\n                return col.width || mixin.stringWidth(col.text);\n            });\n        }\n        let unset = row.length;\n        let remainingWidth = this.width;\n        // column widths can be set in config.\n        const widths = row.map(col => {\n            if (col.width) {\n                unset--;\n                remainingWidth -= col.width;\n                return col.width;\n            }\n            return undefined;\n        });\n        // any unset widths should be calculated.\n        const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0;\n        return widths.map((w, i) => {\n            if (w === undefined) {\n                return Math.max(unsetWidth, _minWidth(row[i]));\n            }\n            return w;\n        });\n    }\n}\nfunction addBorder(col, ts, style) {\n    if (col.border) {\n        if (/[.']-+[.']/.test(ts)) {\n            return '';\n        }\n        if (ts.trim().length !== 0) {\n            return style;\n        }\n        return '  ';\n    }\n    return '';\n}\n// calculates the minimum width of\n// a column, based on padding preferences.\nfunction _minWidth(col) {\n    const padding = col.padding || [];\n    const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0);\n    if (col.border) {\n        return minWidth + 4;\n    }\n    return minWidth;\n}\nfunction getWindowWidth() {\n    /* istanbul ignore next: depends on terminal */\n    if (typeof process === 'object' && process.stdout && process.stdout.columns) {\n        return process.stdout.columns;\n    }\n    return 80;\n}\nfunction alignRight(str, width) {\n    str = str.trim();\n    const strWidth = mixin.stringWidth(str);\n    if (strWidth < width) {\n        return ' '.repeat(width - strWidth) + str;\n    }\n    return str;\n}\nfunction alignCenter(str, width) {\n    str = str.trim();\n    const strWidth = mixin.stringWidth(str);\n    /* istanbul ignore next */\n    if (strWidth >= width) {\n        return str;\n    }\n    return ' '.repeat((width - strWidth) >> 1) + str;\n}\nlet mixin;\nexport function cliui(opts, _mixin) {\n    mixin = _mixin;\n    return new UI({\n        width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(),\n        wrap: opts === null || opts === void 0 ? void 0 : opts.wrap\n    });\n}\n", "// Minimal replacement for ansi string helpers \"wrap-ansi\" and \"strip-ansi\".\n// to facilitate ESM and Deno modules.\n// TODO: look at porting https://www.npmjs.com/package/wrap-ansi to ESM.\n// The npm application\n// Copyright (c) npm, Inc. and Contributors\n// Licensed on the terms of The Artistic License 2.0\n// See: https://github.com/npm/cli/blob/4c65cd952bc8627811735bea76b9b110cc4fc80e/lib/utils/ansi-trim.js\nconst ansi = new RegExp('\\x1b(?:\\\\[(?:\\\\d+[ABCDEFGJKSTm]|\\\\d+;\\\\d+[Hfm]|' +\n    '\\\\d+;\\\\d+;\\\\d+m|6n|s|u|\\\\?25[lh])|\\\\w)', 'g');\nexport function stripAnsi(str) {\n    return str.replace(ansi, '');\n}\nexport function wrap(str, width) {\n    const [start, end] = str.match(ansi) || ['', ''];\n    str = stripAnsi(str);\n    let wrapped = '';\n    for (let i = 0; i < str.length; i++) {\n        if (i !== 0 && (i % width) === 0) {\n            wrapped += '\\n';\n        }\n        wrapped += str.charAt(i);\n    }\n    if (start && end) {\n        wrapped = `${start}${wrapped}${end}`;\n    }\n    return wrapped;\n}\n", "// Bootstrap cliui with CommonJS dependencies:\nimport { cliui } from './build/lib/index.js'\nimport { wrap, stripAnsi } from './build/lib/string-utils.js'\n\nexport default function ui (opts) {\n  return cliui(opts, {\n    stringWidth: (str) => {\n      return [...str].length\n    },\n    stripAnsi,\n    wrap\n  })\n}\n", "import { dirname, resolve } from 'path';\nimport { readdirSync, statSync } from 'fs';\n\nexport default function (start, callback) {\n\tlet dir = resolve('.', start);\n\tlet tmp, stats = statSync(dir);\n\n\tif (!stats.isDirectory()) {\n\t\tdir = dirname(dir);\n\t}\n\n\twhile (true) {\n\t\ttmp = callback(dir, readdirSync(dir));\n\t\tif (tmp) return resolve(dir, tmp);\n\t\tdir = dirname(tmp = dir);\n\t\tif (tmp === dir) break;\n\t}\n}\n", "/**\n * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js\n * CJS and ESM environments.\n *\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nvar _a, _b, _c;\nimport { format } from 'util';\nimport { normalize, resolve } from 'path';\nimport { camelCase, decamelize, looksLikeNumber } from './string-utils.js';\nimport { YargsParser } from './yargs-parser.js';\nimport { readFileSync } from 'fs';\n// See https://github.com/yargs/yargs-parser#supported-nodejs-versions for our\n// version support policy. The YARGS_MIN_NODE_VERSION is used for testing only.\nconst minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION)\n    ? Number(process.env.YARGS_MIN_NODE_VERSION)\n    : 12;\nconst nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1);\nif (nodeVersion) {\n    const major = Number(nodeVersion.match(/^([^.]+)/)[1]);\n    if (major < minNodeVersion) {\n        throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);\n    }\n}\n// Creates a yargs-parser instance using Node.js standard libraries:\nconst env = process ? process.env : {};\nconst parser = new YargsParser({\n    cwd: process.cwd,\n    env: () => {\n        return env;\n    },\n    format,\n    normalize,\n    resolve,\n    // TODO: figure  out a  way to combine ESM and CJS coverage, such  that\n    // we can exercise all the lines below:\n    require: (path) => {\n        if (typeof require !== 'undefined') {\n            return require(path);\n        }\n        else if (path.match(/\\.json$/)) {\n            // Addresses: https://github.com/yargs/yargs/issues/2040\n            return JSON.parse(readFileSync(path, 'utf8'));\n        }\n        else {\n            throw Error('only .json config files are supported in ESM');\n        }\n    }\n});\nconst yargsParser = function Parser(args, opts) {\n    const result = parser.parse(args.slice(), opts);\n    return result.argv;\n};\nyargsParser.detailed = function (args, opts) {\n    return parser.parse(args.slice(), opts);\n};\nyargsParser.camelCase = camelCase;\nyargsParser.decamelize = decamelize;\nyargsParser.looksLikeNumber = looksLikeNumber;\nexport default yargsParser;\n", "/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nexport function camelCase(str) {\n    // Handle the case where an argument is provided as camel case, e.g., fooBar.\n    // by ensuring that the string isn't already mixed case:\n    const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase();\n    if (!isCamelCase) {\n        str = str.toLowerCase();\n    }\n    if (str.indexOf('-') === -1 && str.indexOf('_') === -1) {\n        return str;\n    }\n    else {\n        let camelcase = '';\n        let nextChrUpper = false;\n        const leadingHyphens = str.match(/^-+/);\n        for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {\n            let chr = str.charAt(i);\n            if (nextChrUpper) {\n                nextChrUpper = false;\n                chr = chr.toUpperCase();\n            }\n            if (i !== 0 && (chr === '-' || chr === '_')) {\n                nextChrUpper = true;\n            }\n            else if (chr !== '-' && chr !== '_') {\n                camelcase += chr;\n            }\n        }\n        return camelcase;\n    }\n}\nexport function decamelize(str, joinString) {\n    const lowercase = str.toLowerCase();\n    joinString = joinString || '-';\n    let notCamelcase = '';\n    for (let i = 0; i < str.length; i++) {\n        const chrLower = lowercase.charAt(i);\n        const chrString = str.charAt(i);\n        if (chrLower !== chrString && i > 0) {\n            notCamelcase += `${joinString}${lowercase.charAt(i)}`;\n        }\n        else {\n            notCamelcase += chrString;\n        }\n    }\n    return notCamelcase;\n}\nexport function looksLikeNumber(x) {\n    if (x === null || x === undefined)\n        return false;\n    // if loaded from config, may already be a number.\n    if (typeof x === 'number')\n        return true;\n    // hexadecimal.\n    if (/^0x[0-9a-f]+$/i.test(x))\n        return true;\n    // don't treat 0123 as a number; as it drops the leading '0'.\n    if (/^0[^.]/.test(x))\n        return false;\n    return /^[-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n", "/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\n// take an un-split argv string and tokenize it.\nexport function tokenizeArgString(argString) {\n    if (Array.isArray(argString)) {\n        return argString.map(e => typeof e !== 'string' ? e + '' : e);\n    }\n    argString = argString.trim();\n    let i = 0;\n    let prevC = null;\n    let c = null;\n    let opening = null;\n    const args = [];\n    for (let ii = 0; ii < argString.length; ii++) {\n        prevC = c;\n        c = argString.charAt(ii);\n        // split on spaces unless we're in quotes.\n        if (c === ' ' && !opening) {\n            if (!(prevC === ' ')) {\n                i++;\n            }\n            continue;\n        }\n        // don't split the string if we're in matching\n        // opening or closing single and double quotes.\n        if (c === opening) {\n            opening = null;\n        }\n        else if ((c === \"'\" || c === '\"') && !opening) {\n            opening = c;\n        }\n        if (!args[i])\n            args[i] = '';\n        args[i] += c;\n    }\n    return args;\n}\n", "/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nexport var DefaultValuesForTypeKey;\n(function (DefaultValuesForTypeKey) {\n    DefaultValuesForTypeKey[\"BOOLEAN\"] = \"boolean\";\n    DefaultValuesForTypeKey[\"STRING\"] = \"string\";\n    DefaultValuesForTypeKey[\"NUMBER\"] = \"number\";\n    DefaultValuesForTypeKey[\"ARRAY\"] = \"array\";\n})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {}));\n", "/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nimport { tokenizeArgString } from './tokenize-arg-string.js';\nimport { DefaultValuesForTypeKey } from './yargs-parser-types.js';\nimport { camelCase, decamelize, looksLikeNumber } from './string-utils.js';\nlet mixin;\nexport class YargsParser {\n    constructor(_mixin) {\n        mixin = _mixin;\n    }\n    parse(argsInput, options) {\n        const opts = Object.assign({\n            alias: undefined,\n            array: undefined,\n            boolean: undefined,\n            config: undefined,\n            configObjects: undefined,\n            configuration: undefined,\n            coerce: undefined,\n            count: undefined,\n            default: undefined,\n            envPrefix: undefined,\n            narg: undefined,\n            normalize: undefined,\n            string: undefined,\n            number: undefined,\n            __: undefined,\n            key: undefined\n        }, options);\n        // allow a string argument to be passed in rather\n        // than an argv array.\n        const args = tokenizeArgString(argsInput);\n        // tokenizeArgString adds extra quotes to args if argsInput is a string\n        // only strip those extra quotes in processValue if argsInput is a string\n        const inputIsString = typeof argsInput === 'string';\n        // aliases might have transitive relationships, normalize this.\n        const aliases = combineAliases(Object.assign(Object.create(null), opts.alias));\n        const configuration = Object.assign({\n            'boolean-negation': true,\n            'camel-case-expansion': true,\n            'combine-arrays': false,\n            'dot-notation': true,\n            'duplicate-arguments-array': true,\n            'flatten-duplicate-arrays': true,\n            'greedy-arrays': true,\n            'halt-at-non-option': false,\n            'nargs-eats-options': false,\n            'negation-prefix': 'no-',\n            'parse-numbers': true,\n            'parse-positional-numbers': true,\n            'populate--': false,\n            'set-placeholder-key': false,\n            'short-option-groups': true,\n            'strip-aliased': false,\n            'strip-dashed': false,\n            'unknown-options-as-args': false\n        }, opts.configuration);\n        const defaults = Object.assign(Object.create(null), opts.default);\n        const configObjects = opts.configObjects || [];\n        const envPrefix = opts.envPrefix;\n        const notFlagsOption = configuration['populate--'];\n        const notFlagsArgv = notFlagsOption ? '--' : '_';\n        const newAliases = Object.create(null);\n        const defaulted = Object.create(null);\n        // allow a i18n handler to be passed in, default to a fake one (util.format).\n        const __ = opts.__ || mixin.format;\n        const flags = {\n            aliases: Object.create(null),\n            arrays: Object.create(null),\n            bools: Object.create(null),\n            strings: Object.create(null),\n            numbers: Object.create(null),\n            counts: Object.create(null),\n            normalize: Object.create(null),\n            configs: Object.create(null),\n            nargs: Object.create(null),\n            coercions: Object.create(null),\n            keys: []\n        };\n        const negative = /^-([0-9]+(\\.[0-9]+)?|\\.[0-9]+)$/;\n        const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)');\n        [].concat(opts.array || []).filter(Boolean).forEach(function (opt) {\n            const key = typeof opt === 'object' ? opt.key : opt;\n            // assign to flags[bools|strings|numbers]\n            const assignment = Object.keys(opt).map(function (key) {\n                const arrayFlagKeys = {\n                    boolean: 'bools',\n                    string: 'strings',\n                    number: 'numbers'\n                };\n                return arrayFlagKeys[key];\n            }).filter(Boolean).pop();\n            // assign key to be coerced\n            if (assignment) {\n                flags[assignment][key] = true;\n            }\n            flags.arrays[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) {\n            flags.bools[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.string || []).filter(Boolean).forEach(function (key) {\n            flags.strings[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.number || []).filter(Boolean).forEach(function (key) {\n            flags.numbers[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.count || []).filter(Boolean).forEach(function (key) {\n            flags.counts[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) {\n            flags.normalize[key] = true;\n            flags.keys.push(key);\n        });\n        if (typeof opts.narg === 'object') {\n            Object.entries(opts.narg).forEach(([key, value]) => {\n                if (typeof value === 'number') {\n                    flags.nargs[key] = value;\n                    flags.keys.push(key);\n                }\n            });\n        }\n        if (typeof opts.coerce === 'object') {\n            Object.entries(opts.coerce).forEach(([key, value]) => {\n                if (typeof value === 'function') {\n                    flags.coercions[key] = value;\n                    flags.keys.push(key);\n                }\n            });\n        }\n        if (typeof opts.config !== 'undefined') {\n            if (Array.isArray(opts.config) || typeof opts.config === 'string') {\n                ;\n                [].concat(opts.config).filter(Boolean).forEach(function (key) {\n                    flags.configs[key] = true;\n                });\n            }\n            else if (typeof opts.config === 'object') {\n                Object.entries(opts.config).forEach(([key, value]) => {\n                    if (typeof value === 'boolean' || typeof value === 'function') {\n                        flags.configs[key] = value;\n                    }\n                });\n            }\n        }\n        // create a lookup table that takes into account all\n        // combinations of aliases: {f: ['foo'], foo: ['f']}\n        extendAliases(opts.key, aliases, opts.default, flags.arrays);\n        // apply default values to all aliases.\n        Object.keys(defaults).forEach(function (key) {\n            (flags.aliases[key] || []).forEach(function (alias) {\n                defaults[alias] = defaults[key];\n            });\n        });\n        let error = null;\n        checkConfiguration();\n        let notFlags = [];\n        const argv = Object.assign(Object.create(null), { _: [] });\n        // TODO(bcoe): for the first pass at removing object prototype  we didn't\n        // remove all prototypes from objects returned by this API, we might want\n        // to gradually move towards doing so.\n        const argvReturn = {};\n        for (let i = 0; i < args.length; i++) {\n            const arg = args[i];\n            const truncatedArg = arg.replace(/^-{3,}/, '---');\n            let broken;\n            let key;\n            let letters;\n            let m;\n            let next;\n            let value;\n            // any unknown option (except for end-of-options, \"--\")\n            if (arg !== '--' && /^-/.test(arg) && isUnknownOptionAsArg(arg)) {\n                pushPositional(arg);\n                // ---, ---=, ----, etc,\n            }\n            else if (truncatedArg.match(/^---+(=|$)/)) {\n                // options without key name are invalid.\n                pushPositional(arg);\n                continue;\n                // -- separated by =\n            }\n            else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) {\n                // Using [\\s\\S] instead of . because js doesn't support the\n                // 'dotall' regex modifier. See:\n                // http://stackoverflow.com/a/1068308/13216\n                m = arg.match(/^--?([^=]+)=([\\s\\S]*)$/);\n                // arrays format = '--f=a b c'\n                if (m !== null && Array.isArray(m) && m.length >= 3) {\n                    if (checkAllAliases(m[1], flags.arrays)) {\n                        i = eatArray(i, m[1], args, m[2]);\n                    }\n                    else if (checkAllAliases(m[1], flags.nargs) !== false) {\n                        // nargs format = '--f=monkey washing cat'\n                        i = eatNargs(i, m[1], args, m[2]);\n                    }\n                    else {\n                        setArg(m[1], m[2], true);\n                    }\n                }\n            }\n            else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {\n                m = arg.match(negatedBoolean);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false);\n                }\n                // -- separated by space.\n            }\n            else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) {\n                m = arg.match(/^--?(.+)/);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    if (checkAllAliases(key, flags.arrays)) {\n                        // array format = '--foo a b c'\n                        i = eatArray(i, key, args);\n                    }\n                    else if (checkAllAliases(key, flags.nargs) !== false) {\n                        // nargs format = '--foo a b c'\n                        // should be truthy even if: flags.nargs[key] === 0\n                        i = eatNargs(i, key, args);\n                    }\n                    else {\n                        next = args[i + 1];\n                        if (next !== undefined && (!next.match(/^-/) ||\n                            next.match(negative)) &&\n                            !checkAllAliases(key, flags.bools) &&\n                            !checkAllAliases(key, flags.counts)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else if (/^(true|false)$/.test(next)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else {\n                            setArg(key, defaultValue(key));\n                        }\n                    }\n                }\n                // dot-notation flag separated by '='.\n            }\n            else if (arg.match(/^-.\\..+=/)) {\n                m = arg.match(/^-([^=]+)=([\\s\\S]*)$/);\n                if (m !== null && Array.isArray(m) && m.length >= 3) {\n                    setArg(m[1], m[2]);\n                }\n                // dot-notation flag separated by space.\n            }\n            else if (arg.match(/^-.\\..+/) && !arg.match(negative)) {\n                next = args[i + 1];\n                m = arg.match(/^-(.\\..+)/);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    if (next !== undefined && !next.match(/^-/) &&\n                        !checkAllAliases(key, flags.bools) &&\n                        !checkAllAliases(key, flags.counts)) {\n                        setArg(key, next);\n                        i++;\n                    }\n                    else {\n                        setArg(key, defaultValue(key));\n                    }\n                }\n            }\n            else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {\n                letters = arg.slice(1, -1).split('');\n                broken = false;\n                for (let j = 0; j < letters.length; j++) {\n                    next = arg.slice(j + 2);\n                    if (letters[j + 1] && letters[j + 1] === '=') {\n                        value = arg.slice(j + 3);\n                        key = letters[j];\n                        if (checkAllAliases(key, flags.arrays)) {\n                            // array format = '-f=a b c'\n                            i = eatArray(i, key, args, value);\n                        }\n                        else if (checkAllAliases(key, flags.nargs) !== false) {\n                            // nargs format = '-f=monkey washing cat'\n                            i = eatNargs(i, key, args, value);\n                        }\n                        else {\n                            setArg(key, value);\n                        }\n                        broken = true;\n                        break;\n                    }\n                    if (next === '-') {\n                        setArg(letters[j], next);\n                        continue;\n                    }\n                    // current letter is an alphabetic character and next value is a number\n                    if (/[A-Za-z]/.test(letters[j]) &&\n                        /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next) &&\n                        checkAllAliases(next, flags.bools) === false) {\n                        setArg(letters[j], next);\n                        broken = true;\n                        break;\n                    }\n                    if (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n                        setArg(letters[j], next);\n                        broken = true;\n                        break;\n                    }\n                    else {\n                        setArg(letters[j], defaultValue(letters[j]));\n                    }\n                }\n                key = arg.slice(-1)[0];\n                if (!broken && key !== '-') {\n                    if (checkAllAliases(key, flags.arrays)) {\n                        // array format = '-f a b c'\n                        i = eatArray(i, key, args);\n                    }\n                    else if (checkAllAliases(key, flags.nargs) !== false) {\n                        // nargs format = '-f a b c'\n                        // should be truthy even if: flags.nargs[key] === 0\n                        i = eatNargs(i, key, args);\n                    }\n                    else {\n                        next = args[i + 1];\n                        if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||\n                            next.match(negative)) &&\n                            !checkAllAliases(key, flags.bools) &&\n                            !checkAllAliases(key, flags.counts)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else if (/^(true|false)$/.test(next)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else {\n                            setArg(key, defaultValue(key));\n                        }\n                    }\n                }\n            }\n            else if (arg.match(/^-[0-9]$/) &&\n                arg.match(negative) &&\n                checkAllAliases(arg.slice(1), flags.bools)) {\n                // single-digit boolean alias, e.g: xargs -0\n                key = arg.slice(1);\n                setArg(key, defaultValue(key));\n            }\n            else if (arg === '--') {\n                notFlags = args.slice(i + 1);\n                break;\n            }\n            else if (configuration['halt-at-non-option']) {\n                notFlags = args.slice(i);\n                break;\n            }\n            else {\n                pushPositional(arg);\n            }\n        }\n        // order of precedence:\n        // 1. command line arg\n        // 2. value from env var\n        // 3. value from config file\n        // 4. value from config objects\n        // 5. configured default value\n        applyEnvVars(argv, true); // special case: check env vars that point to config file\n        applyEnvVars(argv, false);\n        setConfig(argv);\n        setConfigObjects();\n        applyDefaultsAndAliases(argv, flags.aliases, defaults, true);\n        applyCoercions(argv);\n        if (configuration['set-placeholder-key'])\n            setPlaceholderKeys(argv);\n        // for any counts either not in args or without an explicit default, set to 0\n        Object.keys(flags.counts).forEach(function (key) {\n            if (!hasKey(argv, key.split('.')))\n                setArg(key, 0);\n        });\n        // '--' defaults to undefined.\n        if (notFlagsOption && notFlags.length)\n            argv[notFlagsArgv] = [];\n        notFlags.forEach(function (key) {\n            argv[notFlagsArgv].push(key);\n        });\n        if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {\n            Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {\n                delete argv[key];\n            });\n        }\n        if (configuration['strip-aliased']) {\n            ;\n            [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {\n                if (configuration['camel-case-expansion'] && alias.includes('-')) {\n                    delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')];\n                }\n                delete argv[alias];\n            });\n        }\n        // Push argument into positional array, applying numeric coercion:\n        function pushPositional(arg) {\n            const maybeCoercedNumber = maybeCoerceNumber('_', arg);\n            if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') {\n                argv._.push(maybeCoercedNumber);\n            }\n        }\n        // how many arguments should we consume, based\n        // on the nargs option?\n        function eatNargs(i, key, args, argAfterEqualSign) {\n            let ii;\n            let toEat = checkAllAliases(key, flags.nargs);\n            // NaN has a special meaning for the array type, indicating that one or\n            // more values are expected.\n            toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat;\n            if (toEat === 0) {\n                if (!isUndefined(argAfterEqualSign)) {\n                    error = Error(__('Argument unexpected for: %s', key));\n                }\n                setArg(key, defaultValue(key));\n                return i;\n            }\n            let available = isUndefined(argAfterEqualSign) ? 0 : 1;\n            if (configuration['nargs-eats-options']) {\n                // classic behavior, yargs eats positional and dash arguments.\n                if (args.length - (i + 1) + available < toEat) {\n                    error = Error(__('Not enough arguments following: %s', key));\n                }\n                available = toEat;\n            }\n            else {\n                // nargs will not consume flag arguments, e.g., -abc, --foo,\n                // and terminates when one is observed.\n                for (ii = i + 1; ii < args.length; ii++) {\n                    if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii]))\n                        available++;\n                    else\n                        break;\n                }\n                if (available < toEat)\n                    error = Error(__('Not enough arguments following: %s', key));\n            }\n            let consumed = Math.min(available, toEat);\n            if (!isUndefined(argAfterEqualSign) && consumed > 0) {\n                setArg(key, argAfterEqualSign);\n                consumed--;\n            }\n            for (ii = i + 1; ii < (consumed + i + 1); ii++) {\n                setArg(key, args[ii]);\n            }\n            return (i + consumed);\n        }\n        // if an option is an array, eat all non-hyphenated arguments\n        // following it... YUM!\n        // e.g., --foo apple banana cat becomes [\"apple\", \"banana\", \"cat\"]\n        function eatArray(i, key, args, argAfterEqualSign) {\n            let argsToSet = [];\n            let next = argAfterEqualSign || args[i + 1];\n            // If both array and nargs are configured, enforce the nargs count:\n            const nargsCount = checkAllAliases(key, flags.nargs);\n            if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) {\n                argsToSet.push(true);\n            }\n            else if (isUndefined(next) ||\n                (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) {\n                // for keys without value ==> argsToSet remains an empty []\n                // set user default value, if available\n                if (defaults[key] !== undefined) {\n                    const defVal = defaults[key];\n                    argsToSet = Array.isArray(defVal) ? defVal : [defVal];\n                }\n            }\n            else {\n                // value in --option=value is eaten as is\n                if (!isUndefined(argAfterEqualSign)) {\n                    argsToSet.push(processValue(key, argAfterEqualSign, true));\n                }\n                for (let ii = i + 1; ii < args.length; ii++) {\n                    if ((!configuration['greedy-arrays'] && argsToSet.length > 0) ||\n                        (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount))\n                        break;\n                    next = args[ii];\n                    if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))\n                        break;\n                    i = ii;\n                    argsToSet.push(processValue(key, next, inputIsString));\n                }\n            }\n            // If both array and nargs are configured, create an error if less than\n            // nargs positionals were found. NaN has special meaning, indicating\n            // that at least one value is required (more are okay).\n            if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) ||\n                (isNaN(nargsCount) && argsToSet.length === 0))) {\n                error = Error(__('Not enough arguments following: %s', key));\n            }\n            setArg(key, argsToSet);\n            return i;\n        }\n        function setArg(key, val, shouldStripQuotes = inputIsString) {\n            if (/-/.test(key) && configuration['camel-case-expansion']) {\n                const alias = key.split('.').map(function (prop) {\n                    return camelCase(prop);\n                }).join('.');\n                addNewAlias(key, alias);\n            }\n            const value = processValue(key, val, shouldStripQuotes);\n            const splitKey = key.split('.');\n            setKey(argv, splitKey, value);\n            // handle populating aliases of the full key\n            if (flags.aliases[key]) {\n                flags.aliases[key].forEach(function (x) {\n                    const keyProperties = x.split('.');\n                    setKey(argv, keyProperties, value);\n                });\n            }\n            // handle populating aliases of the first element of the dot-notation key\n            if (splitKey.length > 1 && configuration['dot-notation']) {\n                ;\n                (flags.aliases[splitKey[0]] || []).forEach(function (x) {\n                    let keyProperties = x.split('.');\n                    // expand alias with nested objects in key\n                    const a = [].concat(splitKey);\n                    a.shift(); // nuke the old key.\n                    keyProperties = keyProperties.concat(a);\n                    // populate alias only if is not already an alias of the full key\n                    // (already populated above)\n                    if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) {\n                        setKey(argv, keyProperties, value);\n                    }\n                });\n            }\n            // Set normalize getter and setter when key is in 'normalize' but isn't an array\n            if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {\n                const keys = [key].concat(flags.aliases[key] || []);\n                keys.forEach(function (key) {\n                    Object.defineProperty(argvReturn, key, {\n                        enumerable: true,\n                        get() {\n                            return val;\n                        },\n                        set(value) {\n                            val = typeof value === 'string' ? mixin.normalize(value) : value;\n                        }\n                    });\n                });\n            }\n        }\n        function addNewAlias(key, alias) {\n            if (!(flags.aliases[key] && flags.aliases[key].length)) {\n                flags.aliases[key] = [alias];\n                newAliases[alias] = true;\n            }\n            if (!(flags.aliases[alias] && flags.aliases[alias].length)) {\n                addNewAlias(alias, key);\n            }\n        }\n        function processValue(key, val, shouldStripQuotes) {\n            // strings may be quoted, clean this up as we assign values.\n            if (shouldStripQuotes) {\n                val = stripQuotes(val);\n            }\n            // handle parsing boolean arguments --foo=true --bar false.\n            if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {\n                if (typeof val === 'string')\n                    val = val === 'true';\n            }\n            let value = Array.isArray(val)\n                ? val.map(function (v) { return maybeCoerceNumber(key, v); })\n                : maybeCoerceNumber(key, val);\n            // increment a count given as arg (either no value or value parsed as boolean)\n            if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {\n                value = increment();\n            }\n            // Set normalized value when key is in 'normalize' and in 'arrays'\n            if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {\n                if (Array.isArray(val))\n                    value = val.map((val) => { return mixin.normalize(val); });\n                else\n                    value = mixin.normalize(val);\n            }\n            return value;\n        }\n        function maybeCoerceNumber(key, value) {\n            if (!configuration['parse-positional-numbers'] && key === '_')\n                return value;\n            if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {\n                const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`))));\n                if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) {\n                    value = Number(value);\n                }\n            }\n            return value;\n        }\n        // set args from config.json file, this should be\n        // applied last so that defaults can be applied.\n        function setConfig(argv) {\n            const configLookup = Object.create(null);\n            // expand defaults/aliases, in-case any happen to reference\n            // the config.json file.\n            applyDefaultsAndAliases(configLookup, flags.aliases, defaults);\n            Object.keys(flags.configs).forEach(function (configKey) {\n                const configPath = argv[configKey] || configLookup[configKey];\n                if (configPath) {\n                    try {\n                        let config = null;\n                        const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);\n                        const resolveConfig = flags.configs[configKey];\n                        if (typeof resolveConfig === 'function') {\n                            try {\n                                config = resolveConfig(resolvedConfigPath);\n                            }\n                            catch (e) {\n                                config = e;\n                            }\n                            if (config instanceof Error) {\n                                error = config;\n                                return;\n                            }\n                        }\n                        else {\n                            config = mixin.require(resolvedConfigPath);\n                        }\n                        setConfigObject(config);\n                    }\n                    catch (ex) {\n                        // Deno will receive a PermissionDenied error if an attempt is\n                        // made to load config without the --allow-read flag:\n                        if (ex.name === 'PermissionDenied')\n                            error = ex;\n                        else if (argv[configKey])\n                            error = Error(__('Invalid JSON config file: %s', configPath));\n                    }\n                }\n            });\n        }\n        // set args from config object.\n        // it recursively checks nested objects.\n        function setConfigObject(config, prev) {\n            Object.keys(config).forEach(function (key) {\n                const value = config[key];\n                const fullKey = prev ? prev + '.' + key : key;\n                // if the value is an inner object and we have dot-notation\n                // enabled, treat inner objects in config the same as\n                // heavily nested dot notations (foo.bar.apple).\n                if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {\n                    // if the value is an object but not an array, check nested object\n                    setConfigObject(value, fullKey);\n                }\n                else {\n                    // setting arguments via CLI takes precedence over\n                    // values within the config file.\n                    if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) {\n                        setArg(fullKey, value);\n                    }\n                }\n            });\n        }\n        // set all config objects passed in opts\n        function setConfigObjects() {\n            if (typeof configObjects !== 'undefined') {\n                configObjects.forEach(function (configObject) {\n                    setConfigObject(configObject);\n                });\n            }\n        }\n        function applyEnvVars(argv, configOnly) {\n            if (typeof envPrefix === 'undefined')\n                return;\n            const prefix = typeof envPrefix === 'string' ? envPrefix : '';\n            const env = mixin.env();\n            Object.keys(env).forEach(function (envVar) {\n                if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {\n                    // get array of nested keys and convert them to camel case\n                    const keys = envVar.split('__').map(function (key, i) {\n                        if (i === 0) {\n                            key = key.substring(prefix.length);\n                        }\n                        return camelCase(key);\n                    });\n                    if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) {\n                        setArg(keys.join('.'), env[envVar]);\n                    }\n                }\n            });\n        }\n        function applyCoercions(argv) {\n            let coerce;\n            const applied = new Set();\n            Object.keys(argv).forEach(function (key) {\n                if (!applied.has(key)) { // If we haven't already coerced this option via one of its aliases\n                    coerce = checkAllAliases(key, flags.coercions);\n                    if (typeof coerce === 'function') {\n                        try {\n                            const value = maybeCoerceNumber(key, coerce(argv[key]));\n                            ([].concat(flags.aliases[key] || [], key)).forEach(ali => {\n                                applied.add(ali);\n                                argv[ali] = value;\n                            });\n                        }\n                        catch (err) {\n                            error = err;\n                        }\n                    }\n                }\n            });\n        }\n        function setPlaceholderKeys(argv) {\n            flags.keys.forEach((key) => {\n                // don't set placeholder keys for dot notation options 'foo.bar'.\n                if (~key.indexOf('.'))\n                    return;\n                if (typeof argv[key] === 'undefined')\n                    argv[key] = undefined;\n            });\n            return argv;\n        }\n        function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) {\n            Object.keys(defaults).forEach(function (key) {\n                if (!hasKey(obj, key.split('.'))) {\n                    setKey(obj, key.split('.'), defaults[key]);\n                    if (canLog)\n                        defaulted[key] = true;\n                    (aliases[key] || []).forEach(function (x) {\n                        if (hasKey(obj, x.split('.')))\n                            return;\n                        setKey(obj, x.split('.'), defaults[key]);\n                    });\n                }\n            });\n        }\n        function hasKey(obj, keys) {\n            let o = obj;\n            if (!configuration['dot-notation'])\n                keys = [keys.join('.')];\n            keys.slice(0, -1).forEach(function (key) {\n                o = (o[key] || {});\n            });\n            const key = keys[keys.length - 1];\n            if (typeof o !== 'object')\n                return false;\n            else\n                return key in o;\n        }\n        function setKey(obj, keys, value) {\n            let o = obj;\n            if (!configuration['dot-notation'])\n                keys = [keys.join('.')];\n            keys.slice(0, -1).forEach(function (key) {\n                // TODO(bcoe): in the next major version of yargs, switch to\n                // Object.create(null) for dot notation:\n                key = sanitizeKey(key);\n                if (typeof o === 'object' && o[key] === undefined) {\n                    o[key] = {};\n                }\n                if (typeof o[key] !== 'object' || Array.isArray(o[key])) {\n                    // ensure that o[key] is an array, and that the last item is an empty object.\n                    if (Array.isArray(o[key])) {\n                        o[key].push({});\n                    }\n                    else {\n                        o[key] = [o[key], {}];\n                    }\n                    // we want to update the empty object at the end of the o[key] array, so set o to that object\n                    o = o[key][o[key].length - 1];\n                }\n                else {\n                    o = o[key];\n                }\n            });\n            // TODO(bcoe): in the next major version of yargs, switch to\n            // Object.create(null) for dot notation:\n            const key = sanitizeKey(keys[keys.length - 1]);\n            const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays);\n            const isValueArray = Array.isArray(value);\n            let duplicate = configuration['duplicate-arguments-array'];\n            // nargs has higher priority than duplicate\n            if (!duplicate && checkAllAliases(key, flags.nargs)) {\n                duplicate = true;\n                if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {\n                    o[key] = undefined;\n                }\n            }\n            if (value === increment()) {\n                o[key] = increment(o[key]);\n            }\n            else if (Array.isArray(o[key])) {\n                if (duplicate && isTypeArray && isValueArray) {\n                    o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]);\n                }\n                else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {\n                    o[key] = value;\n                }\n                else {\n                    o[key] = o[key].concat([value]);\n                }\n            }\n            else if (o[key] === undefined && isTypeArray) {\n                o[key] = isValueArray ? value : [value];\n            }\n            else if (duplicate && !(o[key] === undefined ||\n                checkAllAliases(key, flags.counts) ||\n                checkAllAliases(key, flags.bools))) {\n                o[key] = [o[key], value];\n            }\n            else {\n                o[key] = value;\n            }\n        }\n        // extend the aliases list with inferred aliases.\n        function extendAliases(...args) {\n            args.forEach(function (obj) {\n                Object.keys(obj || {}).forEach(function (key) {\n                    // short-circuit if we've already added a key\n                    // to the aliases array, for example it might\n                    // exist in both 'opts.default' and 'opts.key'.\n                    if (flags.aliases[key])\n                        return;\n                    flags.aliases[key] = [].concat(aliases[key] || []);\n                    // For \"--option-name\", also set argv.optionName\n                    flags.aliases[key].concat(key).forEach(function (x) {\n                        if (/-/.test(x) && configuration['camel-case-expansion']) {\n                            const c = camelCase(x);\n                            if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n                                flags.aliases[key].push(c);\n                                newAliases[c] = true;\n                            }\n                        }\n                    });\n                    // For \"--optionName\", also set argv['option-name']\n                    flags.aliases[key].concat(key).forEach(function (x) {\n                        if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {\n                            const c = decamelize(x, '-');\n                            if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n                                flags.aliases[key].push(c);\n                                newAliases[c] = true;\n                            }\n                        }\n                    });\n                    flags.aliases[key].forEach(function (x) {\n                        flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {\n                            return x !== y;\n                        }));\n                    });\n                });\n            });\n        }\n        function checkAllAliases(key, flag) {\n            const toCheck = [].concat(flags.aliases[key] || [], key);\n            const keys = Object.keys(flag);\n            const setAlias = toCheck.find(key => keys.includes(key));\n            return setAlias ? flag[setAlias] : false;\n        }\n        function hasAnyFlag(key) {\n            const flagsKeys = Object.keys(flags);\n            const toCheck = [].concat(flagsKeys.map(k => flags[k]));\n            return toCheck.some(function (flag) {\n                return Array.isArray(flag) ? flag.includes(key) : flag[key];\n            });\n        }\n        function hasFlagsMatching(arg, ...patterns) {\n            const toCheck = [].concat(...patterns);\n            return toCheck.some(function (pattern) {\n                const match = arg.match(pattern);\n                return match && hasAnyFlag(match[1]);\n            });\n        }\n        // based on a simplified version of the short flag group parsing logic\n        function hasAllShortFlags(arg) {\n            // if this is a negative number, or doesn't start with a single hyphen, it's not a short flag group\n            if (arg.match(negative) || !arg.match(/^-[^-]+/)) {\n                return false;\n            }\n            let hasAllFlags = true;\n            let next;\n            const letters = arg.slice(1).split('');\n            for (let j = 0; j < letters.length; j++) {\n                next = arg.slice(j + 2);\n                if (!hasAnyFlag(letters[j])) {\n                    hasAllFlags = false;\n                    break;\n                }\n                if ((letters[j + 1] && letters[j + 1] === '=') ||\n                    next === '-' ||\n                    (/[A-Za-z]/.test(letters[j]) && /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) ||\n                    (letters[j + 1] && letters[j + 1].match(/\\W/))) {\n                    break;\n                }\n            }\n            return hasAllFlags;\n        }\n        function isUnknownOptionAsArg(arg) {\n            return configuration['unknown-options-as-args'] && isUnknownOption(arg);\n        }\n        function isUnknownOption(arg) {\n            arg = arg.replace(/^-{3,}/, '--');\n            // ignore negative numbers\n            if (arg.match(negative)) {\n                return false;\n            }\n            // if this is a short option group and all of them are configured, it isn't unknown\n            if (hasAllShortFlags(arg)) {\n                return false;\n            }\n            // e.g. '--count=2'\n            const flagWithEquals = /^-+([^=]+?)=[\\s\\S]*$/;\n            // e.g. '-a' or '--arg'\n            const normalFlag = /^-+([^=]+?)$/;\n            // e.g. '-a-'\n            const flagEndingInHyphen = /^-+([^=]+?)-$/;\n            // e.g. '-abc123'\n            const flagEndingInDigits = /^-+([^=]+?\\d+)$/;\n            // e.g. '-a/usr/local'\n            const flagEndingInNonWordCharacters = /^-+([^=]+?)\\W+.*$/;\n            // check the different types of flag styles, including negatedBoolean, a pattern defined near the start of the parse method\n            return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters);\n        }\n        // make a best effort to pick a default value\n        // for an option based on name and type.\n        function defaultValue(key) {\n            if (!checkAllAliases(key, flags.bools) &&\n                !checkAllAliases(key, flags.counts) &&\n                `${key}` in defaults) {\n                return defaults[key];\n            }\n            else {\n                return defaultForType(guessType(key));\n            }\n        }\n        // return a default value, given the type of a flag.,\n        function defaultForType(type) {\n            const def = {\n                [DefaultValuesForTypeKey.BOOLEAN]: true,\n                [DefaultValuesForTypeKey.STRING]: '',\n                [DefaultValuesForTypeKey.NUMBER]: undefined,\n                [DefaultValuesForTypeKey.ARRAY]: []\n            };\n            return def[type];\n        }\n        // given a flag, enforce a default type.\n        function guessType(key) {\n            let type = DefaultValuesForTypeKey.BOOLEAN;\n            if (checkAllAliases(key, flags.strings))\n                type = DefaultValuesForTypeKey.STRING;\n            else if (checkAllAliases(key, flags.numbers))\n                type = DefaultValuesForTypeKey.NUMBER;\n            else if (checkAllAliases(key, flags.bools))\n                type = DefaultValuesForTypeKey.BOOLEAN;\n            else if (checkAllAliases(key, flags.arrays))\n                type = DefaultValuesForTypeKey.ARRAY;\n            return type;\n        }\n        function isUndefined(num) {\n            return num === undefined;\n        }\n        // check user configuration settings for inconsistencies\n        function checkConfiguration() {\n            // count keys should not be set as array/narg\n            Object.keys(flags.counts).find(key => {\n                if (checkAllAliases(key, flags.arrays)) {\n                    error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key));\n                    return true;\n                }\n                else if (checkAllAliases(key, flags.nargs)) {\n                    error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key));\n                    return true;\n                }\n                return false;\n            });\n        }\n        return {\n            aliases: Object.assign({}, flags.aliases),\n            argv: Object.assign(argvReturn, argv),\n            configuration: configuration,\n            defaulted: Object.assign({}, defaulted),\n            error: error,\n            newAliases: Object.assign({}, newAliases)\n        };\n    }\n}\n// if any aliases reference each other, we should\n// merge them together.\nfunction combineAliases(aliases) {\n    const aliasArrays = [];\n    const combined = Object.create(null);\n    let change = true;\n    // turn alias lookup hash {key: ['alias1', 'alias2']} into\n    // a simple array ['key', 'alias1', 'alias2']\n    Object.keys(aliases).forEach(function (key) {\n        aliasArrays.push([].concat(aliases[key], key));\n    });\n    // combine arrays until zero changes are\n    // made in an iteration.\n    while (change) {\n        change = false;\n        for (let i = 0; i < aliasArrays.length; i++) {\n            for (let ii = i + 1; ii < aliasArrays.length; ii++) {\n                const intersect = aliasArrays[i].filter(function (v) {\n                    return aliasArrays[ii].indexOf(v) !== -1;\n                });\n                if (intersect.length) {\n                    aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);\n                    aliasArrays.splice(ii, 1);\n                    change = true;\n                    break;\n                }\n            }\n        }\n    }\n    // map arrays back to the hash-lookup (de-dupe while\n    // we're at it).\n    aliasArrays.forEach(function (aliasArray) {\n        aliasArray = aliasArray.filter(function (v, i, self) {\n            return self.indexOf(v) === i;\n        });\n        const lastAlias = aliasArray.pop();\n        if (lastAlias !== undefined && typeof lastAlias === 'string') {\n            combined[lastAlias] = aliasArray;\n        }\n    });\n    return combined;\n}\n// this function should only be called when a count is given as an arg\n// it is NOT called to set a default value\n// thus we can start the count at 1 instead of 0\nfunction increment(orig) {\n    return orig !== undefined ? orig + 1 : 1;\n}\n// TODO(bcoe): in the next major version of yargs, switch to\n// Object.create(null) for dot notation:\nfunction sanitizeKey(key) {\n    if (key === '__proto__')\n        return '___proto___';\n    return key;\n}\nfunction stripQuotes(val) {\n    return (typeof val === 'string' &&\n        (val[0] === \"'\" || val[0] === '\"') &&\n        val[val.length - 1] === val[0])\n        ? val.substring(1, val.length - 1)\n        : val;\n}\n", "function getProcessArgvBinIndex() {\n    if (isBundledElectronApp())\n        return 0;\n    return 1;\n}\nfunction isBundledElectronApp() {\n    return isElectronApp() && !process.defaultApp;\n}\nfunction isElectronApp() {\n    return !!process.versions.electron;\n}\nexport function hideBin(argv) {\n    return argv.slice(getProcessArgvBinIndex() + 1);\n}\nexport function getProcessArgvBin() {\n    return process.argv[getProcessArgvBinIndex()];\n}\n", "export class YError extends Error {\n    constructor(msg) {\n        super(msg || 'yargs error');\n        this.name = 'YError';\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, YError);\n        }\n    }\n}\n", "import { readFileSync, statSync, writeFile } from 'fs';\nimport { format } from 'util';\nimport { resolve } from 'path';\nexport default {\n    fs: {\n        readFileSync,\n        writeFile\n    },\n    format,\n    resolve,\n    exists: (file) => {\n        try {\n            return statSync(file).isFile();\n        }\n        catch (err) {\n            return false;\n        }\n    }\n};\n", "let shim;\nclass Y18N {\n    constructor(opts) {\n        // configurable options.\n        opts = opts || {};\n        this.directory = opts.directory || './locales';\n        this.updateFiles = typeof opts.updateFiles === 'boolean' ? opts.updateFiles : true;\n        this.locale = opts.locale || 'en';\n        this.fallbackToLanguage = typeof opts.fallbackToLanguage === 'boolean' ? opts.fallbackToLanguage : true;\n        // internal stuff.\n        this.cache = Object.create(null);\n        this.writeQueue = [];\n    }\n    __(...args) {\n        if (typeof arguments[0] !== 'string') {\n            return this._taggedLiteral(arguments[0], ...arguments);\n        }\n        const str = args.shift();\n        let cb = function () { }; // start with noop.\n        if (typeof args[args.length - 1] === 'function')\n            cb = args.pop();\n        cb = cb || function () { }; // noop.\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        // we've observed a new string, update the language file.\n        if (!this.cache[this.locale][str] && this.updateFiles) {\n            this.cache[this.locale][str] = str;\n            // include the current directory and locale,\n            // since these values could change before the\n            // write is performed.\n            this._enqueueWrite({\n                directory: this.directory,\n                locale: this.locale,\n                cb\n            });\n        }\n        else {\n            cb();\n        }\n        return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args));\n    }\n    __n() {\n        const args = Array.prototype.slice.call(arguments);\n        const singular = args.shift();\n        const plural = args.shift();\n        const quantity = args.shift();\n        let cb = function () { }; // start with noop.\n        if (typeof args[args.length - 1] === 'function')\n            cb = args.pop();\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        let str = quantity === 1 ? singular : plural;\n        if (this.cache[this.locale][singular]) {\n            const entry = this.cache[this.locale][singular];\n            str = entry[quantity === 1 ? 'one' : 'other'];\n        }\n        // we've observed a new string, update the language file.\n        if (!this.cache[this.locale][singular] && this.updateFiles) {\n            this.cache[this.locale][singular] = {\n                one: singular,\n                other: plural\n            };\n            // include the current directory and locale,\n            // since these values could change before the\n            // write is performed.\n            this._enqueueWrite({\n                directory: this.directory,\n                locale: this.locale,\n                cb\n            });\n        }\n        else {\n            cb();\n        }\n        // if a %d placeholder is provided, add quantity\n        // to the arguments expanded by util.format.\n        const values = [str];\n        if (~str.indexOf('%d'))\n            values.push(quantity);\n        return shim.format.apply(shim.format, values.concat(args));\n    }\n    setLocale(locale) {\n        this.locale = locale;\n    }\n    getLocale() {\n        return this.locale;\n    }\n    updateLocale(obj) {\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        for (const key in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                this.cache[this.locale][key] = obj[key];\n            }\n        }\n    }\n    _taggedLiteral(parts, ...args) {\n        let str = '';\n        parts.forEach(function (part, i) {\n            const arg = args[i + 1];\n            str += part;\n            if (typeof arg !== 'undefined') {\n                str += '%s';\n            }\n        });\n        return this.__.apply(this, [str].concat([].slice.call(args, 1)));\n    }\n    _enqueueWrite(work) {\n        this.writeQueue.push(work);\n        if (this.writeQueue.length === 1)\n            this._processWriteQueue();\n    }\n    _processWriteQueue() {\n        const _this = this;\n        const work = this.writeQueue[0];\n        // destructure the enqueued work.\n        const directory = work.directory;\n        const locale = work.locale;\n        const cb = work.cb;\n        const languageFile = this._resolveLocaleFile(directory, locale);\n        const serializedLocale = JSON.stringify(this.cache[locale], null, 2);\n        shim.fs.writeFile(languageFile, serializedLocale, 'utf-8', function (err) {\n            _this.writeQueue.shift();\n            if (_this.writeQueue.length > 0)\n                _this._processWriteQueue();\n            cb(err);\n        });\n    }\n    _readLocaleFile() {\n        let localeLookup = {};\n        const languageFile = this._resolveLocaleFile(this.directory, this.locale);\n        try {\n            // When using a bundler such as webpack, readFileSync may not be defined:\n            if (shim.fs.readFileSync) {\n                localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, 'utf-8'));\n            }\n        }\n        catch (err) {\n            if (err instanceof SyntaxError) {\n                err.message = 'syntax error in ' + languageFile;\n            }\n            if (err.code === 'ENOENT')\n                localeLookup = {};\n            else\n                throw err;\n        }\n        this.cache[this.locale] = localeLookup;\n    }\n    _resolveLocaleFile(directory, locale) {\n        let file = shim.resolve(directory, './', locale + '.json');\n        if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf('_')) {\n            // attempt fallback to language only\n            const languageFile = shim.resolve(directory, './', locale.split('_')[0] + '.json');\n            if (this._fileExistsSync(languageFile))\n                file = languageFile;\n        }\n        return file;\n    }\n    _fileExistsSync(file) {\n        return shim.exists(file);\n    }\n}\nexport function y18n(opts, _shim) {\n    shim = _shim;\n    const y18n = new Y18N(opts);\n    return {\n        __: y18n.__.bind(y18n),\n        __n: y18n.__n.bind(y18n),\n        setLocale: y18n.setLocale.bind(y18n),\n        getLocale: y18n.getLocale.bind(y18n),\n        updateLocale: y18n.updateLocale.bind(y18n),\n        locale: y18n.locale\n    };\n}\n", "import shim from './build/lib/platform-shims/node.js'\nimport { y18n as _y18n } from './build/lib/index.js'\n\nconst y18n = (opts) => {\n  return _y18n(opts, shim)\n}\n\nexport default y18n\n", "export function assertNotStrictEqual(actual, expected, shim, message) {\n    shim.assert.notStrictEqual(actual, expected, message);\n}\nexport function assertSingleKey(actual, shim) {\n    shim.assert.strictEqual(typeof actual, 'string');\n}\nexport function objectKeys(object) {\n    return Object.keys(object);\n}\n", "export function isPromise(maybePromise) {\n    return (!!maybePromise &&\n        !!maybePromise.then &&\n        typeof maybePromise.then === 'function');\n}\n", "export function parseCommand(cmd) {\n    const extraSpacesStrippedCommand = cmd.replace(/\\s{2,}/g, ' ');\n    const splitCommand = extraSpacesStrippedCommand.split(/\\s+(?![^[]*]|[^<]*>)/);\n    const bregex = /\\.*[\\][<>]/g;\n    const firstCommand = splitCommand.shift();\n    if (!firstCommand)\n        throw new Error(`No command found in: ${cmd}`);\n    const parsedCommand = {\n        cmd: firstCommand.replace(bregex, ''),\n        demanded: [],\n        optional: [],\n    };\n    splitCommand.forEach((cmd, i) => {\n        let variadic = false;\n        cmd = cmd.replace(/\\s/g, '');\n        if (/\\.+[\\]>]/.test(cmd) && i === splitCommand.length - 1)\n            variadic = true;\n        if (/^\\[/.test(cmd)) {\n            parsedCommand.optional.push({\n                cmd: cmd.replace(bregex, '').split('|'),\n                variadic,\n            });\n        }\n        else {\n            parsedCommand.demanded.push({\n                cmd: cmd.replace(bregex, '').split('|'),\n                variadic,\n            });\n        }\n    });\n    return parsedCommand;\n}\n", "import { YError } from './yerror.js';\nimport { parseCommand } from './parse-command.js';\nconst positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth'];\nexport function argsert(arg1, arg2, arg3) {\n    function parseArgs() {\n        return typeof arg1 === 'object'\n            ? [{ demanded: [], optional: [] }, arg1, arg2]\n            : [\n                parseCommand(`cmd ${arg1}`),\n                arg2,\n                arg3,\n            ];\n    }\n    try {\n        let position = 0;\n        const [parsed, callerArguments, _length] = parseArgs();\n        const args = [].slice.call(callerArguments);\n        while (args.length && args[args.length - 1] === undefined)\n            args.pop();\n        const length = _length || args.length;\n        if (length < parsed.demanded.length) {\n            throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`);\n        }\n        const totalCommands = parsed.demanded.length + parsed.optional.length;\n        if (length > totalCommands) {\n            throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`);\n        }\n        parsed.demanded.forEach(demanded => {\n            const arg = args.shift();\n            const observedType = guessType(arg);\n            const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*');\n            if (matchingTypes.length === 0)\n                argumentTypeError(observedType, demanded.cmd, position);\n            position += 1;\n        });\n        parsed.optional.forEach(optional => {\n            if (args.length === 0)\n                return;\n            const arg = args.shift();\n            const observedType = guessType(arg);\n            const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*');\n            if (matchingTypes.length === 0)\n                argumentTypeError(observedType, optional.cmd, position);\n            position += 1;\n        });\n    }\n    catch (err) {\n        console.warn(err.stack);\n    }\n}\nfunction guessType(arg) {\n    if (Array.isArray(arg)) {\n        return 'array';\n    }\n    else if (arg === null) {\n        return 'null';\n    }\n    return typeof arg;\n}\nfunction argumentTypeError(observedType, allowedTypes, position) {\n    throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`);\n}\n", "import { argsert } from './argsert.js';\nimport { isPromise } from './utils/is-promise.js';\nexport class GlobalMiddleware {\n    constructor(yargs) {\n        this.globalMiddleware = [];\n        this.frozens = [];\n        this.yargs = yargs;\n    }\n    addMiddleware(callback, applyBeforeValidation, global = true, mutates = false) {\n        argsert(' [boolean] [boolean] [boolean]', [callback, applyBeforeValidation, global], arguments.length);\n        if (Array.isArray(callback)) {\n            for (let i = 0; i < callback.length; i++) {\n                if (typeof callback[i] !== 'function') {\n                    throw Error('middleware must be a function');\n                }\n                const m = callback[i];\n                m.applyBeforeValidation = applyBeforeValidation;\n                m.global = global;\n            }\n            Array.prototype.push.apply(this.globalMiddleware, callback);\n        }\n        else if (typeof callback === 'function') {\n            const m = callback;\n            m.applyBeforeValidation = applyBeforeValidation;\n            m.global = global;\n            m.mutates = mutates;\n            this.globalMiddleware.push(callback);\n        }\n        return this.yargs;\n    }\n    addCoerceMiddleware(callback, option) {\n        const aliases = this.yargs.getAliases();\n        this.globalMiddleware = this.globalMiddleware.filter(m => {\n            const toCheck = [...(aliases[option] || []), option];\n            if (!m.option)\n                return true;\n            else\n                return !toCheck.includes(m.option);\n        });\n        callback.option = option;\n        return this.addMiddleware(callback, true, true, true);\n    }\n    getMiddleware() {\n        return this.globalMiddleware;\n    }\n    freeze() {\n        this.frozens.push([...this.globalMiddleware]);\n    }\n    unfreeze() {\n        const frozen = this.frozens.pop();\n        if (frozen !== undefined)\n            this.globalMiddleware = frozen;\n    }\n    reset() {\n        this.globalMiddleware = this.globalMiddleware.filter(m => m.global);\n    }\n}\nexport function commandMiddlewareFactory(commandMiddleware) {\n    if (!commandMiddleware)\n        return [];\n    return commandMiddleware.map(middleware => {\n        middleware.applyBeforeValidation = false;\n        return middleware;\n    });\n}\nexport function applyMiddleware(argv, yargs, middlewares, beforeValidation) {\n    return middlewares.reduce((acc, middleware) => {\n        if (middleware.applyBeforeValidation !== beforeValidation) {\n            return acc;\n        }\n        if (middleware.mutates) {\n            if (middleware.applied)\n                return acc;\n            middleware.applied = true;\n        }\n        if (isPromise(acc)) {\n            return acc\n                .then(initialObj => Promise.all([initialObj, middleware(initialObj, yargs)]))\n                .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj));\n        }\n        else {\n            const result = middleware(acc, yargs);\n            return isPromise(result)\n                ? result.then(middlewareObj => Object.assign(acc, middlewareObj))\n                : Object.assign(acc, result);\n        }\n    }, argv);\n}\n", "import { isPromise } from './is-promise.js';\nexport function maybeAsyncResult(getResult, resultHandler, errorHandler = (err) => {\n    throw err;\n}) {\n    try {\n        const result = isFunction(getResult) ? getResult() : getResult;\n        return isPromise(result)\n            ? result.then((result) => resultHandler(result))\n            : resultHandler(result);\n    }\n    catch (err) {\n        return errorHandler(err);\n    }\n}\nfunction isFunction(arg) {\n    return typeof arg === 'function';\n}\n", "export default function whichModule(exported) {\n    if (typeof require === 'undefined')\n        return null;\n    for (let i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) {\n        mod = require.cache[files[i]];\n        if (mod.exports === exported)\n            return mod;\n    }\n    return null;\n}\n", "import { assertNotStrictEqual, } from './typings/common-types.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { applyMiddleware, commandMiddlewareFactory, } from './middleware.js';\nimport { parseCommand } from './parse-command.js';\nimport { isYargsInstance, } from './yargs-factory.js';\nimport { maybeAsyncResult } from './utils/maybe-async-result.js';\nimport whichModule from './utils/which-module.js';\nconst DEFAULT_MARKER = /(^\\*)|(^\\$0)/;\nexport class CommandInstance {\n    constructor(usage, validation, globalMiddleware, shim) {\n        this.requireCache = new Set();\n        this.handlers = {};\n        this.aliasMap = {};\n        this.frozens = [];\n        this.shim = shim;\n        this.usage = usage;\n        this.globalMiddleware = globalMiddleware;\n        this.validation = validation;\n    }\n    addDirectory(dir, req, callerFile, opts) {\n        opts = opts || {};\n        if (typeof opts.recurse !== 'boolean')\n            opts.recurse = false;\n        if (!Array.isArray(opts.extensions))\n            opts.extensions = ['js'];\n        const parentVisit = typeof opts.visit === 'function' ? opts.visit : (o) => o;\n        opts.visit = (obj, joined, filename) => {\n            const visited = parentVisit(obj, joined, filename);\n            if (visited) {\n                if (this.requireCache.has(joined))\n                    return visited;\n                else\n                    this.requireCache.add(joined);\n                this.addHandler(visited);\n            }\n            return visited;\n        };\n        this.shim.requireDirectory({ require: req, filename: callerFile }, dir, opts);\n    }\n    addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) {\n        let aliases = [];\n        const middlewares = commandMiddlewareFactory(commandMiddleware);\n        handler = handler || (() => { });\n        if (Array.isArray(cmd)) {\n            if (isCommandAndAliases(cmd)) {\n                [cmd, ...aliases] = cmd;\n            }\n            else {\n                for (const command of cmd) {\n                    this.addHandler(command);\n                }\n            }\n        }\n        else if (isCommandHandlerDefinition(cmd)) {\n            let command = Array.isArray(cmd.command) || typeof cmd.command === 'string'\n                ? cmd.command\n                : this.moduleName(cmd);\n            if (cmd.aliases)\n                command = [].concat(command).concat(cmd.aliases);\n            this.addHandler(command, this.extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated);\n            return;\n        }\n        else if (isCommandBuilderDefinition(builder)) {\n            this.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated);\n            return;\n        }\n        if (typeof cmd === 'string') {\n            const parsedCommand = parseCommand(cmd);\n            aliases = aliases.map(alias => parseCommand(alias).cmd);\n            let isDefault = false;\n            const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => {\n                if (DEFAULT_MARKER.test(c)) {\n                    isDefault = true;\n                    return false;\n                }\n                return true;\n            });\n            if (parsedAliases.length === 0 && isDefault)\n                parsedAliases.push('$0');\n            if (isDefault) {\n                parsedCommand.cmd = parsedAliases[0];\n                aliases = parsedAliases.slice(1);\n                cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd);\n            }\n            aliases.forEach(alias => {\n                this.aliasMap[alias] = parsedCommand.cmd;\n            });\n            if (description !== false) {\n                this.usage.command(cmd, description, isDefault, aliases, deprecated);\n            }\n            this.handlers[parsedCommand.cmd] = {\n                original: cmd,\n                description,\n                handler,\n                builder: builder || {},\n                middlewares,\n                deprecated,\n                demanded: parsedCommand.demanded,\n                optional: parsedCommand.optional,\n            };\n            if (isDefault)\n                this.defaultCommand = this.handlers[parsedCommand.cmd];\n        }\n    }\n    getCommandHandlers() {\n        return this.handlers;\n    }\n    getCommands() {\n        return Object.keys(this.handlers).concat(Object.keys(this.aliasMap));\n    }\n    hasDefaultCommand() {\n        return !!this.defaultCommand;\n    }\n    runCommand(command, yargs, parsed, commandIndex, helpOnly, helpOrVersionSet) {\n        const commandHandler = this.handlers[command] ||\n            this.handlers[this.aliasMap[command]] ||\n            this.defaultCommand;\n        const currentContext = yargs.getInternalMethods().getContext();\n        const parentCommands = currentContext.commands.slice();\n        const isDefaultCommand = !command;\n        if (command) {\n            currentContext.commands.push(command);\n            currentContext.fullCommands.push(commandHandler.original);\n        }\n        const builderResult = this.applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, parsed.aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet);\n        return isPromise(builderResult)\n            ? builderResult.then(result => this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, result.innerArgv, currentContext, helpOnly, result.aliases, yargs))\n            : this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, builderResult.innerArgv, currentContext, helpOnly, builderResult.aliases, yargs);\n    }\n    applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet) {\n        const builder = commandHandler.builder;\n        let innerYargs = yargs;\n        if (isCommandBuilderCallback(builder)) {\n            yargs.getInternalMethods().getUsageInstance().freeze();\n            const builderOutput = builder(yargs.getInternalMethods().reset(aliases), helpOrVersionSet);\n            if (isPromise(builderOutput)) {\n                return builderOutput.then(output => {\n                    innerYargs = isYargsInstance(output) ? output : yargs;\n                    return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly);\n                });\n            }\n        }\n        else if (isCommandBuilderOptionDefinitions(builder)) {\n            yargs.getInternalMethods().getUsageInstance().freeze();\n            innerYargs = yargs.getInternalMethods().reset(aliases);\n            Object.keys(commandHandler.builder).forEach(key => {\n                innerYargs.option(key, builder[key]);\n            });\n        }\n        return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly);\n    }\n    parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly) {\n        if (isDefaultCommand)\n            innerYargs.getInternalMethods().getUsageInstance().unfreeze(true);\n        if (this.shouldUpdateUsage(innerYargs)) {\n            innerYargs\n                .getInternalMethods()\n                .getUsageInstance()\n                .usage(this.usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description);\n        }\n        const innerArgv = innerYargs\n            .getInternalMethods()\n            .runYargsParserAndExecuteCommands(null, undefined, true, commandIndex, helpOnly);\n        return isPromise(innerArgv)\n            ? innerArgv.then(argv => ({\n                aliases: innerYargs.parsed.aliases,\n                innerArgv: argv,\n            }))\n            : {\n                aliases: innerYargs.parsed.aliases,\n                innerArgv: innerArgv,\n            };\n    }\n    shouldUpdateUsage(yargs) {\n        return (!yargs.getInternalMethods().getUsageInstance().getUsageDisabled() &&\n            yargs.getInternalMethods().getUsageInstance().getUsage().length === 0);\n    }\n    usageFromParentCommandsCommandHandler(parentCommands, commandHandler) {\n        const c = DEFAULT_MARKER.test(commandHandler.original)\n            ? commandHandler.original.replace(DEFAULT_MARKER, '').trim()\n            : commandHandler.original;\n        const pc = parentCommands.filter(c => {\n            return !DEFAULT_MARKER.test(c);\n        });\n        pc.push(c);\n        return `$0 ${pc.join(' ')}`;\n    }\n    handleValidationAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, aliases, yargs, middlewares, positionalMap) {\n        if (!yargs.getInternalMethods().getHasOutput()) {\n            const validation = yargs\n                .getInternalMethods()\n                .runValidation(aliases, positionalMap, yargs.parsed.error, isDefaultCommand);\n            innerArgv = maybeAsyncResult(innerArgv, result => {\n                validation(result);\n                return result;\n            });\n        }\n        if (commandHandler.handler && !yargs.getInternalMethods().getHasOutput()) {\n            yargs.getInternalMethods().setHasOutput();\n            const populateDoubleDash = !!yargs.getOptions().configuration['populate--'];\n            yargs\n                .getInternalMethods()\n                .postProcess(innerArgv, populateDoubleDash, false, false);\n            innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false);\n            innerArgv = maybeAsyncResult(innerArgv, result => {\n                const handlerResult = commandHandler.handler(result);\n                return isPromise(handlerResult)\n                    ? handlerResult.then(() => result)\n                    : result;\n            });\n            if (!isDefaultCommand) {\n                yargs.getInternalMethods().getUsageInstance().cacheHelpMessage();\n            }\n            if (isPromise(innerArgv) &&\n                !yargs.getInternalMethods().hasParseCallback()) {\n                innerArgv.catch(error => {\n                    try {\n                        yargs.getInternalMethods().getUsageInstance().fail(null, error);\n                    }\n                    catch (_err) {\n                    }\n                });\n            }\n        }\n        if (!isDefaultCommand) {\n            currentContext.commands.pop();\n            currentContext.fullCommands.pop();\n        }\n        return innerArgv;\n    }\n    applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) {\n        let positionalMap = {};\n        if (helpOnly)\n            return innerArgv;\n        if (!yargs.getInternalMethods().getHasOutput()) {\n            positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs);\n        }\n        const middlewares = this.globalMiddleware\n            .getMiddleware()\n            .slice(0)\n            .concat(commandHandler.middlewares);\n        const maybePromiseArgv = applyMiddleware(innerArgv, yargs, middlewares, true);\n        return isPromise(maybePromiseArgv)\n            ? maybePromiseArgv.then(resolvedInnerArgv => this.handleValidationAndGetResult(isDefaultCommand, commandHandler, resolvedInnerArgv, currentContext, aliases, yargs, middlewares, positionalMap))\n            : this.handleValidationAndGetResult(isDefaultCommand, commandHandler, maybePromiseArgv, currentContext, aliases, yargs, middlewares, positionalMap);\n    }\n    populatePositionals(commandHandler, argv, context, yargs) {\n        argv._ = argv._.slice(context.commands.length);\n        const demanded = commandHandler.demanded.slice(0);\n        const optional = commandHandler.optional.slice(0);\n        const positionalMap = {};\n        this.validation.positionalCount(demanded.length, argv._.length);\n        while (demanded.length) {\n            const demand = demanded.shift();\n            this.populatePositional(demand, argv, positionalMap);\n        }\n        while (optional.length) {\n            const maybe = optional.shift();\n            this.populatePositional(maybe, argv, positionalMap);\n        }\n        argv._ = context.commands.concat(argv._.map(a => '' + a));\n        this.postProcessPositionals(argv, positionalMap, this.cmdToParseOptions(commandHandler.original), yargs);\n        return positionalMap;\n    }\n    populatePositional(positional, argv, positionalMap) {\n        const cmd = positional.cmd[0];\n        if (positional.variadic) {\n            positionalMap[cmd] = argv._.splice(0).map(String);\n        }\n        else {\n            if (argv._.length)\n                positionalMap[cmd] = [String(argv._.shift())];\n        }\n    }\n    cmdToParseOptions(cmdString) {\n        const parseOptions = {\n            array: [],\n            default: {},\n            alias: {},\n            demand: {},\n        };\n        const parsed = parseCommand(cmdString);\n        parsed.demanded.forEach(d => {\n            const [cmd, ...aliases] = d.cmd;\n            if (d.variadic) {\n                parseOptions.array.push(cmd);\n                parseOptions.default[cmd] = [];\n            }\n            parseOptions.alias[cmd] = aliases;\n            parseOptions.demand[cmd] = true;\n        });\n        parsed.optional.forEach(o => {\n            const [cmd, ...aliases] = o.cmd;\n            if (o.variadic) {\n                parseOptions.array.push(cmd);\n                parseOptions.default[cmd] = [];\n            }\n            parseOptions.alias[cmd] = aliases;\n        });\n        return parseOptions;\n    }\n    postProcessPositionals(argv, positionalMap, parseOptions, yargs) {\n        const options = Object.assign({}, yargs.getOptions());\n        options.default = Object.assign(parseOptions.default, options.default);\n        for (const key of Object.keys(parseOptions.alias)) {\n            options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]);\n        }\n        options.array = options.array.concat(parseOptions.array);\n        options.config = {};\n        const unparsed = [];\n        Object.keys(positionalMap).forEach(key => {\n            positionalMap[key].map(value => {\n                if (options.configuration['unknown-options-as-args'])\n                    options.key[key] = true;\n                unparsed.push(`--${key}`);\n                unparsed.push(value);\n            });\n        });\n        if (!unparsed.length)\n            return;\n        const config = Object.assign({}, options.configuration, {\n            'populate--': false,\n        });\n        const parsed = this.shim.Parser.detailed(unparsed, Object.assign({}, options, {\n            configuration: config,\n        }));\n        if (parsed.error) {\n            yargs\n                .getInternalMethods()\n                .getUsageInstance()\n                .fail(parsed.error.message, parsed.error);\n        }\n        else {\n            const positionalKeys = Object.keys(positionalMap);\n            Object.keys(positionalMap).forEach(key => {\n                positionalKeys.push(...parsed.aliases[key]);\n            });\n            Object.keys(parsed.argv).forEach(key => {\n                if (positionalKeys.includes(key)) {\n                    if (!positionalMap[key])\n                        positionalMap[key] = parsed.argv[key];\n                    if (!this.isInConfigs(yargs, key) &&\n                        !this.isDefaulted(yargs, key) &&\n                        Object.prototype.hasOwnProperty.call(argv, key) &&\n                        Object.prototype.hasOwnProperty.call(parsed.argv, key) &&\n                        (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) {\n                        argv[key] = [].concat(argv[key], parsed.argv[key]);\n                    }\n                    else {\n                        argv[key] = parsed.argv[key];\n                    }\n                }\n            });\n        }\n    }\n    isDefaulted(yargs, key) {\n        const { default: defaults } = yargs.getOptions();\n        return (Object.prototype.hasOwnProperty.call(defaults, key) ||\n            Object.prototype.hasOwnProperty.call(defaults, this.shim.Parser.camelCase(key)));\n    }\n    isInConfigs(yargs, key) {\n        const { configObjects } = yargs.getOptions();\n        return (configObjects.some(c => Object.prototype.hasOwnProperty.call(c, key)) ||\n            configObjects.some(c => Object.prototype.hasOwnProperty.call(c, this.shim.Parser.camelCase(key))));\n    }\n    runDefaultBuilderOn(yargs) {\n        if (!this.defaultCommand)\n            return;\n        if (this.shouldUpdateUsage(yargs)) {\n            const commandString = DEFAULT_MARKER.test(this.defaultCommand.original)\n                ? this.defaultCommand.original\n                : this.defaultCommand.original.replace(/^[^[\\]<>]*/, '$0 ');\n            yargs\n                .getInternalMethods()\n                .getUsageInstance()\n                .usage(commandString, this.defaultCommand.description);\n        }\n        const builder = this.defaultCommand.builder;\n        if (isCommandBuilderCallback(builder)) {\n            return builder(yargs, true);\n        }\n        else if (!isCommandBuilderDefinition(builder)) {\n            Object.keys(builder).forEach(key => {\n                yargs.option(key, builder[key]);\n            });\n        }\n        return undefined;\n    }\n    moduleName(obj) {\n        const mod = whichModule(obj);\n        if (!mod)\n            throw new Error(`No command name given for module: ${this.shim.inspect(obj)}`);\n        return this.commandFromFilename(mod.filename);\n    }\n    commandFromFilename(filename) {\n        return this.shim.path.basename(filename, this.shim.path.extname(filename));\n    }\n    extractDesc({ describe, description, desc }) {\n        for (const test of [describe, description, desc]) {\n            if (typeof test === 'string' || test === false)\n                return test;\n            assertNotStrictEqual(test, true, this.shim);\n        }\n        return false;\n    }\n    freeze() {\n        this.frozens.push({\n            handlers: this.handlers,\n            aliasMap: this.aliasMap,\n            defaultCommand: this.defaultCommand,\n        });\n    }\n    unfreeze() {\n        const frozen = this.frozens.pop();\n        assertNotStrictEqual(frozen, undefined, this.shim);\n        ({\n            handlers: this.handlers,\n            aliasMap: this.aliasMap,\n            defaultCommand: this.defaultCommand,\n        } = frozen);\n    }\n    reset() {\n        this.handlers = {};\n        this.aliasMap = {};\n        this.defaultCommand = undefined;\n        this.requireCache = new Set();\n        return this;\n    }\n}\nexport function command(usage, validation, globalMiddleware, shim) {\n    return new CommandInstance(usage, validation, globalMiddleware, shim);\n}\nexport function isCommandBuilderDefinition(builder) {\n    return (typeof builder === 'object' &&\n        !!builder.builder &&\n        typeof builder.handler === 'function');\n}\nfunction isCommandAndAliases(cmd) {\n    return cmd.every(c => typeof c === 'string');\n}\nexport function isCommandBuilderCallback(builder) {\n    return typeof builder === 'function';\n}\nfunction isCommandBuilderOptionDefinitions(builder) {\n    return typeof builder === 'object';\n}\nexport function isCommandHandlerDefinition(cmd) {\n    return typeof cmd === 'object' && !Array.isArray(cmd);\n}\n", "import { objectKeys } from '../typings/common-types.js';\nexport function objFilter(original = {}, filter = () => true) {\n    const obj = {};\n    objectKeys(original).forEach(key => {\n        if (filter(key, original[key])) {\n            obj[key] = original[key];\n        }\n    });\n    return obj;\n}\n", "export default function setBlocking(blocking) {\n    if (typeof process === 'undefined')\n        return;\n    [process.stdout, process.stderr].forEach(_stream => {\n        const stream = _stream;\n        if (stream._handle &&\n            stream.isTTY &&\n            typeof stream._handle.setBlocking === 'function') {\n            stream._handle.setBlocking(blocking);\n        }\n    });\n}\n", "import { objFilter } from './utils/obj-filter.js';\nimport { YError } from './yerror.js';\nimport setBlocking from './utils/set-blocking.js';\nfunction isBoolean(fail) {\n    return typeof fail === 'boolean';\n}\nexport function usage(yargs, shim) {\n    const __ = shim.y18n.__;\n    const self = {};\n    const fails = [];\n    self.failFn = function failFn(f) {\n        fails.push(f);\n    };\n    let failMessage = null;\n    let globalFailMessage = null;\n    let showHelpOnFail = true;\n    self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) {\n        const [enabled, message] = typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2];\n        if (yargs.getInternalMethods().isGlobalContext()) {\n            globalFailMessage = message;\n        }\n        failMessage = message;\n        showHelpOnFail = enabled;\n        return self;\n    };\n    let failureOutput = false;\n    self.fail = function fail(msg, err) {\n        const logger = yargs.getInternalMethods().getLoggerInstance();\n        if (fails.length) {\n            for (let i = fails.length - 1; i >= 0; --i) {\n                const fail = fails[i];\n                if (isBoolean(fail)) {\n                    if (err)\n                        throw err;\n                    else if (msg)\n                        throw Error(msg);\n                }\n                else {\n                    fail(msg, err, self);\n                }\n            }\n        }\n        else {\n            if (yargs.getExitProcess())\n                setBlocking(true);\n            if (!failureOutput) {\n                failureOutput = true;\n                if (showHelpOnFail) {\n                    yargs.showHelp('error');\n                    logger.error();\n                }\n                if (msg || err)\n                    logger.error(msg || err);\n                const globalOrCommandFailMessage = failMessage || globalFailMessage;\n                if (globalOrCommandFailMessage) {\n                    if (msg || err)\n                        logger.error('');\n                    logger.error(globalOrCommandFailMessage);\n                }\n            }\n            err = err || new YError(msg);\n            if (yargs.getExitProcess()) {\n                return yargs.exit(1);\n            }\n            else if (yargs.getInternalMethods().hasParseCallback()) {\n                return yargs.exit(1, err);\n            }\n            else {\n                throw err;\n            }\n        }\n    };\n    let usages = [];\n    let usageDisabled = false;\n    self.usage = (msg, description) => {\n        if (msg === null) {\n            usageDisabled = true;\n            usages = [];\n            return self;\n        }\n        usageDisabled = false;\n        usages.push([msg, description || '']);\n        return self;\n    };\n    self.getUsage = () => {\n        return usages;\n    };\n    self.getUsageDisabled = () => {\n        return usageDisabled;\n    };\n    self.getPositionalGroupName = () => {\n        return __('Positionals:');\n    };\n    let examples = [];\n    self.example = (cmd, description) => {\n        examples.push([cmd, description || '']);\n    };\n    let commands = [];\n    self.command = function command(cmd, description, isDefault, aliases, deprecated = false) {\n        if (isDefault) {\n            commands = commands.map(cmdArray => {\n                cmdArray[2] = false;\n                return cmdArray;\n            });\n        }\n        commands.push([cmd, description || '', isDefault, aliases, deprecated]);\n    };\n    self.getCommands = () => commands;\n    let descriptions = {};\n    self.describe = function describe(keyOrKeys, desc) {\n        if (Array.isArray(keyOrKeys)) {\n            keyOrKeys.forEach(k => {\n                self.describe(k, desc);\n            });\n        }\n        else if (typeof keyOrKeys === 'object') {\n            Object.keys(keyOrKeys).forEach(k => {\n                self.describe(k, keyOrKeys[k]);\n            });\n        }\n        else {\n            descriptions[keyOrKeys] = desc;\n        }\n    };\n    self.getDescriptions = () => descriptions;\n    let epilogs = [];\n    self.epilog = msg => {\n        epilogs.push(msg);\n    };\n    let wrapSet = false;\n    let wrap;\n    self.wrap = cols => {\n        wrapSet = true;\n        wrap = cols;\n    };\n    self.getWrap = () => {\n        if (shim.getEnv('YARGS_DISABLE_WRAP')) {\n            return null;\n        }\n        if (!wrapSet) {\n            wrap = windowWidth();\n            wrapSet = true;\n        }\n        return wrap;\n    };\n    const deferY18nLookupPrefix = '__yargsString__:';\n    self.deferY18nLookup = str => deferY18nLookupPrefix + str;\n    self.help = function help() {\n        if (cachedHelpMessage)\n            return cachedHelpMessage;\n        normalizeAliases();\n        const base$0 = yargs.customScriptName\n            ? yargs.$0\n            : shim.path.basename(yargs.$0);\n        const demandedOptions = yargs.getDemandedOptions();\n        const demandedCommands = yargs.getDemandedCommands();\n        const deprecatedOptions = yargs.getDeprecatedOptions();\n        const groups = yargs.getGroups();\n        const options = yargs.getOptions();\n        let keys = [];\n        keys = keys.concat(Object.keys(descriptions));\n        keys = keys.concat(Object.keys(demandedOptions));\n        keys = keys.concat(Object.keys(demandedCommands));\n        keys = keys.concat(Object.keys(options.default));\n        keys = keys.filter(filterHiddenOptions);\n        keys = Object.keys(keys.reduce((acc, key) => {\n            if (key !== '_')\n                acc[key] = true;\n            return acc;\n        }, {}));\n        const theWrap = self.getWrap();\n        const ui = shim.cliui({\n            width: theWrap,\n            wrap: !!theWrap,\n        });\n        if (!usageDisabled) {\n            if (usages.length) {\n                usages.forEach(usage => {\n                    ui.div({ text: `${usage[0].replace(/\\$0/g, base$0)}` });\n                    if (usage[1]) {\n                        ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] });\n                    }\n                });\n                ui.div();\n            }\n            else if (commands.length) {\n                let u = null;\n                if (demandedCommands._) {\n                    u = `${base$0} <${__('command')}>\\n`;\n                }\n                else {\n                    u = `${base$0} [${__('command')}]\\n`;\n                }\n                ui.div(`${u}`);\n            }\n        }\n        if (commands.length > 1 || (commands.length === 1 && !commands[0][2])) {\n            ui.div(__('Commands:'));\n            const context = yargs.getInternalMethods().getContext();\n            const parentCommands = context.commands.length\n                ? `${context.commands.join(' ')} `\n                : '';\n            if (yargs.getInternalMethods().getParserConfiguration()['sort-commands'] ===\n                true) {\n                commands = commands.sort((a, b) => a[0].localeCompare(b[0]));\n            }\n            const prefix = base$0 ? `${base$0} ` : '';\n            commands.forEach(command => {\n                const commandString = `${prefix}${parentCommands}${command[0].replace(/^\\$0 ?/, '')}`;\n                ui.span({\n                    text: commandString,\n                    padding: [0, 2, 0, 2],\n                    width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4,\n                }, { text: command[1] });\n                const hints = [];\n                if (command[2])\n                    hints.push(`[${__('default')}]`);\n                if (command[3] && command[3].length) {\n                    hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`);\n                }\n                if (command[4]) {\n                    if (typeof command[4] === 'string') {\n                        hints.push(`[${__('deprecated: %s', command[4])}]`);\n                    }\n                    else {\n                        hints.push(`[${__('deprecated')}]`);\n                    }\n                }\n                if (hints.length) {\n                    ui.div({\n                        text: hints.join(' '),\n                        padding: [0, 0, 0, 2],\n                        align: 'right',\n                    });\n                }\n                else {\n                    ui.div();\n                }\n            });\n            ui.div();\n        }\n        const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []);\n        keys = keys.filter(key => !yargs.parsed.newAliases[key] &&\n            aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1));\n        const defaultGroup = __('Options:');\n        if (!groups[defaultGroup])\n            groups[defaultGroup] = [];\n        addUngroupedKeys(keys, options.alias, groups, defaultGroup);\n        const isLongSwitch = (sw) => /^--/.test(getText(sw));\n        const displayedGroups = Object.keys(groups)\n            .filter(groupName => groups[groupName].length > 0)\n            .map(groupName => {\n            const normalizedKeys = groups[groupName]\n                .filter(filterHiddenOptions)\n                .map(key => {\n                if (aliasKeys.includes(key))\n                    return key;\n                for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) {\n                    if ((options.alias[aliasKey] || []).includes(key))\n                        return aliasKey;\n                }\n                return key;\n            });\n            return { groupName, normalizedKeys };\n        })\n            .filter(({ normalizedKeys }) => normalizedKeys.length > 0)\n            .map(({ groupName, normalizedKeys }) => {\n            const switches = normalizedKeys.reduce((acc, key) => {\n                acc[key] = [key]\n                    .concat(options.alias[key] || [])\n                    .map(sw => {\n                    if (groupName === self.getPositionalGroupName())\n                        return sw;\n                    else {\n                        return ((/^[0-9]$/.test(sw)\n                            ? options.boolean.includes(key)\n                                ? '-'\n                                : '--'\n                            : sw.length > 1\n                                ? '--'\n                                : '-') + sw);\n                    }\n                })\n                    .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2)\n                    ? 0\n                    : isLongSwitch(sw1)\n                        ? 1\n                        : -1)\n                    .join(', ');\n                return acc;\n            }, {});\n            return { groupName, normalizedKeys, switches };\n        });\n        const shortSwitchesUsed = displayedGroups\n            .filter(({ groupName }) => groupName !== self.getPositionalGroupName())\n            .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key])));\n        if (shortSwitchesUsed) {\n            displayedGroups\n                .filter(({ groupName }) => groupName !== self.getPositionalGroupName())\n                .forEach(({ normalizedKeys, switches }) => {\n                normalizedKeys.forEach(key => {\n                    if (isLongSwitch(switches[key])) {\n                        switches[key] = addIndentation(switches[key], '-x, '.length);\n                    }\n                });\n            });\n        }\n        displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => {\n            ui.div(groupName);\n            normalizedKeys.forEach(key => {\n                const kswitch = switches[key];\n                let desc = descriptions[key] || '';\n                let type = null;\n                if (desc.includes(deferY18nLookupPrefix))\n                    desc = __(desc.substring(deferY18nLookupPrefix.length));\n                if (options.boolean.includes(key))\n                    type = `[${__('boolean')}]`;\n                if (options.count.includes(key))\n                    type = `[${__('count')}]`;\n                if (options.string.includes(key))\n                    type = `[${__('string')}]`;\n                if (options.normalize.includes(key))\n                    type = `[${__('string')}]`;\n                if (options.array.includes(key))\n                    type = `[${__('array')}]`;\n                if (options.number.includes(key))\n                    type = `[${__('number')}]`;\n                const deprecatedExtra = (deprecated) => typeof deprecated === 'string'\n                    ? `[${__('deprecated: %s', deprecated)}]`\n                    : `[${__('deprecated')}]`;\n                const extra = [\n                    key in deprecatedOptions\n                        ? deprecatedExtra(deprecatedOptions[key])\n                        : null,\n                    type,\n                    key in demandedOptions ? `[${__('required')}]` : null,\n                    options.choices && options.choices[key]\n                        ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]`\n                        : null,\n                    defaultString(options.default[key], options.defaultDescription[key]),\n                ]\n                    .filter(Boolean)\n                    .join(' ');\n                ui.span({\n                    text: getText(kswitch),\n                    padding: [0, 2, 0, 2 + getIndentation(kswitch)],\n                    width: maxWidth(switches, theWrap) + 4,\n                }, desc);\n                const shouldHideOptionExtras = yargs.getInternalMethods().getUsageConfiguration()['hide-types'] ===\n                    true;\n                if (extra && !shouldHideOptionExtras)\n                    ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' });\n                else\n                    ui.div();\n            });\n            ui.div();\n        });\n        if (examples.length) {\n            ui.div(__('Examples:'));\n            examples.forEach(example => {\n                example[0] = example[0].replace(/\\$0/g, base$0);\n            });\n            examples.forEach(example => {\n                if (example[1] === '') {\n                    ui.div({\n                        text: example[0],\n                        padding: [0, 2, 0, 2],\n                    });\n                }\n                else {\n                    ui.div({\n                        text: example[0],\n                        padding: [0, 2, 0, 2],\n                        width: maxWidth(examples, theWrap) + 4,\n                    }, {\n                        text: example[1],\n                    });\n                }\n            });\n            ui.div();\n        }\n        if (epilogs.length > 0) {\n            const e = epilogs\n                .map(epilog => epilog.replace(/\\$0/g, base$0))\n                .join('\\n');\n            ui.div(`${e}\\n`);\n        }\n        return ui.toString().replace(/\\s*$/, '');\n    };\n    function maxWidth(table, theWrap, modifier) {\n        let width = 0;\n        if (!Array.isArray(table)) {\n            table = Object.values(table).map(v => [v]);\n        }\n        table.forEach(v => {\n            width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width);\n        });\n        if (theWrap)\n            width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10));\n        return width;\n    }\n    function normalizeAliases() {\n        const demandedOptions = yargs.getDemandedOptions();\n        const options = yargs.getOptions();\n        (Object.keys(options.alias) || []).forEach(key => {\n            options.alias[key].forEach(alias => {\n                if (descriptions[alias])\n                    self.describe(key, descriptions[alias]);\n                if (alias in demandedOptions)\n                    yargs.demandOption(key, demandedOptions[alias]);\n                if (options.boolean.includes(alias))\n                    yargs.boolean(key);\n                if (options.count.includes(alias))\n                    yargs.count(key);\n                if (options.string.includes(alias))\n                    yargs.string(key);\n                if (options.normalize.includes(alias))\n                    yargs.normalize(key);\n                if (options.array.includes(alias))\n                    yargs.array(key);\n                if (options.number.includes(alias))\n                    yargs.number(key);\n            });\n        });\n    }\n    let cachedHelpMessage;\n    self.cacheHelpMessage = function () {\n        cachedHelpMessage = this.help();\n    };\n    self.clearCachedHelpMessage = function () {\n        cachedHelpMessage = undefined;\n    };\n    self.hasCachedHelpMessage = function () {\n        return !!cachedHelpMessage;\n    };\n    function addUngroupedKeys(keys, aliases, groups, defaultGroup) {\n        let groupedKeys = [];\n        let toCheck = null;\n        Object.keys(groups).forEach(group => {\n            groupedKeys = groupedKeys.concat(groups[group]);\n        });\n        keys.forEach(key => {\n            toCheck = [key].concat(aliases[key]);\n            if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) {\n                groups[defaultGroup].push(key);\n            }\n        });\n        return groupedKeys;\n    }\n    function filterHiddenOptions(key) {\n        return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 ||\n            yargs.parsed.argv[yargs.getOptions().showHiddenOpt]);\n    }\n    self.showHelp = (level) => {\n        const logger = yargs.getInternalMethods().getLoggerInstance();\n        if (!level)\n            level = 'error';\n        const emit = typeof level === 'function' ? level : logger[level];\n        emit(self.help());\n    };\n    self.functionDescription = fn => {\n        const description = fn.name\n            ? shim.Parser.decamelize(fn.name, '-')\n            : __('generated-value');\n        return ['(', description, ')'].join('');\n    };\n    self.stringifiedValues = function stringifiedValues(values, separator) {\n        let string = '';\n        const sep = separator || ', ';\n        const array = [].concat(values);\n        if (!values || !array.length)\n            return string;\n        array.forEach(value => {\n            if (string.length)\n                string += sep;\n            string += JSON.stringify(value);\n        });\n        return string;\n    };\n    function defaultString(value, defaultDescription) {\n        let string = `[${__('default:')} `;\n        if (value === undefined && !defaultDescription)\n            return null;\n        if (defaultDescription) {\n            string += defaultDescription;\n        }\n        else {\n            switch (typeof value) {\n                case 'string':\n                    string += `\"${value}\"`;\n                    break;\n                case 'object':\n                    string += JSON.stringify(value);\n                    break;\n                default:\n                    string += value;\n            }\n        }\n        return `${string}]`;\n    }\n    function windowWidth() {\n        const maxWidth = 80;\n        if (shim.process.stdColumns) {\n            return Math.min(maxWidth, shim.process.stdColumns);\n        }\n        else {\n            return maxWidth;\n        }\n    }\n    let version = null;\n    self.version = ver => {\n        version = ver;\n    };\n    self.showVersion = level => {\n        const logger = yargs.getInternalMethods().getLoggerInstance();\n        if (!level)\n            level = 'error';\n        const emit = typeof level === 'function' ? level : logger[level];\n        emit(version);\n    };\n    self.reset = function reset(localLookup) {\n        failMessage = null;\n        failureOutput = false;\n        usages = [];\n        usageDisabled = false;\n        epilogs = [];\n        examples = [];\n        commands = [];\n        descriptions = objFilter(descriptions, k => !localLookup[k]);\n        return self;\n    };\n    const frozens = [];\n    self.freeze = function freeze() {\n        frozens.push({\n            failMessage,\n            failureOutput,\n            usages,\n            usageDisabled,\n            epilogs,\n            examples,\n            commands,\n            descriptions,\n        });\n    };\n    self.unfreeze = function unfreeze(defaultCommand = false) {\n        const frozen = frozens.pop();\n        if (!frozen)\n            return;\n        if (defaultCommand) {\n            descriptions = { ...frozen.descriptions, ...descriptions };\n            commands = [...frozen.commands, ...commands];\n            usages = [...frozen.usages, ...usages];\n            examples = [...frozen.examples, ...examples];\n            epilogs = [...frozen.epilogs, ...epilogs];\n        }\n        else {\n            ({\n                failMessage,\n                failureOutput,\n                usages,\n                usageDisabled,\n                epilogs,\n                examples,\n                commands,\n                descriptions,\n            } = frozen);\n        }\n    };\n    return self;\n}\nfunction isIndentedText(text) {\n    return typeof text === 'object';\n}\nfunction addIndentation(text, indent) {\n    return isIndentedText(text)\n        ? { text: text.text, indentation: text.indentation + indent }\n        : { text, indentation: indent };\n}\nfunction getIndentation(text) {\n    return isIndentedText(text) ? text.indentation : 0;\n}\nfunction getText(text) {\n    return isIndentedText(text) ? text.text : text;\n}\n", "export const completionShTemplate = `###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc\n#    or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n    local cur_word args type_list\n\n    cur_word=\"\\${COMP_WORDS[COMP_CWORD]}\"\n    args=(\"\\${COMP_WORDS[@]}\")\n\n    # ask yargs to generate completions.\n    type_list=$({{app_path}} --get-yargs-completions \"\\${args[@]}\")\n\n    COMPREPLY=( $(compgen -W \"\\${type_list}\" -- \\${cur_word}) )\n\n    # if no match was found, fall back to filename completion\n    if [ \\${#COMPREPLY[@]} -eq 0 ]; then\n      COMPREPLY=()\n    fi\n\n    return 0\n}\ncomplete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n`;\nexport const completionZshTemplate = `#compdef {{app_name}}\n###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc\n#    or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n  local reply\n  local si=$IFS\n  IFS=$'\\n' reply=($(COMP_CWORD=\"$((CURRENT-1))\" COMP_LINE=\"$BUFFER\" COMP_POINT=\"$CURSOR\" {{app_path}} --get-yargs-completions \"\\${words[@]}\"))\n  IFS=$si\n  _describe 'values' reply\n}\ncompdef _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n`;\n", "import { isCommandBuilderCallback } from './command.js';\nimport { assertNotStrictEqual } from './typings/common-types.js';\nimport * as templates from './completion-templates.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { parseCommand } from './parse-command.js';\nexport class Completion {\n    constructor(yargs, usage, command, shim) {\n        var _a, _b, _c;\n        this.yargs = yargs;\n        this.usage = usage;\n        this.command = command;\n        this.shim = shim;\n        this.completionKey = 'get-yargs-completions';\n        this.aliases = null;\n        this.customCompletionFunction = null;\n        this.indexAfterLastReset = 0;\n        this.zshShell =\n            (_c = (((_a = this.shim.getEnv('SHELL')) === null || _a === void 0 ? void 0 : _a.includes('zsh')) ||\n                ((_b = this.shim.getEnv('ZSH_NAME')) === null || _b === void 0 ? void 0 : _b.includes('zsh')))) !== null && _c !== void 0 ? _c : false;\n    }\n    defaultCompletion(args, argv, current, done) {\n        const handlers = this.command.getCommandHandlers();\n        for (let i = 0, ii = args.length; i < ii; ++i) {\n            if (handlers[args[i]] && handlers[args[i]].builder) {\n                const builder = handlers[args[i]].builder;\n                if (isCommandBuilderCallback(builder)) {\n                    this.indexAfterLastReset = i + 1;\n                    const y = this.yargs.getInternalMethods().reset();\n                    builder(y, true);\n                    return y.argv;\n                }\n            }\n        }\n        const completions = [];\n        this.commandCompletions(completions, args, current);\n        this.optionCompletions(completions, args, argv, current);\n        this.choicesFromOptionsCompletions(completions, args, argv, current);\n        this.choicesFromPositionalsCompletions(completions, args, argv, current);\n        done(null, completions);\n    }\n    commandCompletions(completions, args, current) {\n        const parentCommands = this.yargs\n            .getInternalMethods()\n            .getContext().commands;\n        if (!current.match(/^-/) &&\n            parentCommands[parentCommands.length - 1] !== current &&\n            !this.previousArgHasChoices(args)) {\n            this.usage.getCommands().forEach(usageCommand => {\n                const commandName = parseCommand(usageCommand[0]).cmd;\n                if (args.indexOf(commandName) === -1) {\n                    if (!this.zshShell) {\n                        completions.push(commandName);\n                    }\n                    else {\n                        const desc = usageCommand[1] || '';\n                        completions.push(commandName.replace(/:/g, '\\\\:') + ':' + desc);\n                    }\n                }\n            });\n        }\n    }\n    optionCompletions(completions, args, argv, current) {\n        if ((current.match(/^-/) || (current === '' && completions.length === 0)) &&\n            !this.previousArgHasChoices(args)) {\n            const options = this.yargs.getOptions();\n            const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || [];\n            Object.keys(options.key).forEach(key => {\n                const negable = !!options.configuration['boolean-negation'] &&\n                    options.boolean.includes(key);\n                const isPositionalKey = positionalKeys.includes(key);\n                if (!isPositionalKey &&\n                    !options.hiddenOptions.includes(key) &&\n                    !this.argsContainKey(args, key, negable)) {\n                    this.completeOptionKey(key, completions, current, negable && !!options.default[key]);\n                }\n            });\n        }\n    }\n    choicesFromOptionsCompletions(completions, args, argv, current) {\n        if (this.previousArgHasChoices(args)) {\n            const choices = this.getPreviousArgChoices(args);\n            if (choices && choices.length > 0) {\n                completions.push(...choices.map(c => c.replace(/:/g, '\\\\:')));\n            }\n        }\n    }\n    choicesFromPositionalsCompletions(completions, args, argv, current) {\n        if (current === '' &&\n            completions.length > 0 &&\n            this.previousArgHasChoices(args)) {\n            return;\n        }\n        const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || [];\n        const offset = Math.max(this.indexAfterLastReset, this.yargs.getInternalMethods().getContext().commands.length +\n            1);\n        const positionalKey = positionalKeys[argv._.length - offset - 1];\n        if (!positionalKey) {\n            return;\n        }\n        const choices = this.yargs.getOptions().choices[positionalKey] || [];\n        for (const choice of choices) {\n            if (choice.startsWith(current)) {\n                completions.push(choice.replace(/:/g, '\\\\:'));\n            }\n        }\n    }\n    getPreviousArgChoices(args) {\n        if (args.length < 1)\n            return;\n        let previousArg = args[args.length - 1];\n        let filter = '';\n        if (!previousArg.startsWith('-') && args.length > 1) {\n            filter = previousArg;\n            previousArg = args[args.length - 2];\n        }\n        if (!previousArg.startsWith('-'))\n            return;\n        const previousArgKey = previousArg.replace(/^-+/, '');\n        const options = this.yargs.getOptions();\n        const possibleAliases = [\n            previousArgKey,\n            ...(this.yargs.getAliases()[previousArgKey] || []),\n        ];\n        let choices;\n        for (const possibleAlias of possibleAliases) {\n            if (Object.prototype.hasOwnProperty.call(options.key, possibleAlias) &&\n                Array.isArray(options.choices[possibleAlias])) {\n                choices = options.choices[possibleAlias];\n                break;\n            }\n        }\n        if (choices) {\n            return choices.filter(choice => !filter || choice.startsWith(filter));\n        }\n    }\n    previousArgHasChoices(args) {\n        const choices = this.getPreviousArgChoices(args);\n        return choices !== undefined && choices.length > 0;\n    }\n    argsContainKey(args, key, negable) {\n        const argsContains = (s) => args.indexOf((/^[^0-9]$/.test(s) ? '-' : '--') + s) !== -1;\n        if (argsContains(key))\n            return true;\n        if (negable && argsContains(`no-${key}`))\n            return true;\n        if (this.aliases) {\n            for (const alias of this.aliases[key]) {\n                if (argsContains(alias))\n                    return true;\n            }\n        }\n        return false;\n    }\n    completeOptionKey(key, completions, current, negable) {\n        var _a, _b, _c, _d;\n        let keyWithDesc = key;\n        if (this.zshShell) {\n            const descs = this.usage.getDescriptions();\n            const aliasKey = (_b = (_a = this === null || this === void 0 ? void 0 : this.aliases) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.find(alias => {\n                const desc = descs[alias];\n                return typeof desc === 'string' && desc.length > 0;\n            });\n            const descFromAlias = aliasKey ? descs[aliasKey] : undefined;\n            const desc = (_d = (_c = descs[key]) !== null && _c !== void 0 ? _c : descFromAlias) !== null && _d !== void 0 ? _d : '';\n            keyWithDesc = `${key.replace(/:/g, '\\\\:')}:${desc\n                .replace('__yargsString__:', '')\n                .replace(/(\\r\\n|\\n|\\r)/gm, ' ')}`;\n        }\n        const startsByTwoDashes = (s) => /^--/.test(s);\n        const isShortOption = (s) => /^[^0-9]$/.test(s);\n        const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--';\n        completions.push(dashes + keyWithDesc);\n        if (negable) {\n            completions.push(dashes + 'no-' + keyWithDesc);\n        }\n    }\n    customCompletion(args, argv, current, done) {\n        assertNotStrictEqual(this.customCompletionFunction, null, this.shim);\n        if (isSyncCompletionFunction(this.customCompletionFunction)) {\n            const result = this.customCompletionFunction(current, argv);\n            if (isPromise(result)) {\n                return result\n                    .then(list => {\n                    this.shim.process.nextTick(() => {\n                        done(null, list);\n                    });\n                })\n                    .catch(err => {\n                    this.shim.process.nextTick(() => {\n                        done(err, undefined);\n                    });\n                });\n            }\n            return done(null, result);\n        }\n        else if (isFallbackCompletionFunction(this.customCompletionFunction)) {\n            return this.customCompletionFunction(current, argv, (onCompleted = done) => this.defaultCompletion(args, argv, current, onCompleted), completions => {\n                done(null, completions);\n            });\n        }\n        else {\n            return this.customCompletionFunction(current, argv, completions => {\n                done(null, completions);\n            });\n        }\n    }\n    getCompletion(args, done) {\n        const current = args.length ? args[args.length - 1] : '';\n        const argv = this.yargs.parse(args, true);\n        const completionFunction = this.customCompletionFunction\n            ? (argv) => this.customCompletion(args, argv, current, done)\n            : (argv) => this.defaultCompletion(args, argv, current, done);\n        return isPromise(argv)\n            ? argv.then(completionFunction)\n            : completionFunction(argv);\n    }\n    generateCompletionScript($0, cmd) {\n        let script = this.zshShell\n            ? templates.completionZshTemplate\n            : templates.completionShTemplate;\n        const name = this.shim.path.basename($0);\n        if ($0.match(/\\.js$/))\n            $0 = `./${$0}`;\n        script = script.replace(/{{app_name}}/g, name);\n        script = script.replace(/{{completion_command}}/g, cmd);\n        return script.replace(/{{app_path}}/g, $0);\n    }\n    registerFunction(fn) {\n        this.customCompletionFunction = fn;\n    }\n    setParsed(parsed) {\n        this.aliases = parsed.aliases;\n    }\n}\nexport function completion(yargs, usage, command, shim) {\n    return new Completion(yargs, usage, command, shim);\n}\nfunction isSyncCompletionFunction(completionFunction) {\n    return completionFunction.length < 3;\n}\nfunction isFallbackCompletionFunction(completionFunction) {\n    return completionFunction.length > 3;\n}\n", "export function levenshtein(a, b) {\n    if (a.length === 0)\n        return b.length;\n    if (b.length === 0)\n        return a.length;\n    const matrix = [];\n    let i;\n    for (i = 0; i <= b.length; i++) {\n        matrix[i] = [i];\n    }\n    let j;\n    for (j = 0; j <= a.length; j++) {\n        matrix[0][j] = j;\n    }\n    for (i = 1; i <= b.length; i++) {\n        for (j = 1; j <= a.length; j++) {\n            if (b.charAt(i - 1) === a.charAt(j - 1)) {\n                matrix[i][j] = matrix[i - 1][j - 1];\n            }\n            else {\n                if (i > 1 &&\n                    j > 1 &&\n                    b.charAt(i - 2) === a.charAt(j - 1) &&\n                    b.charAt(i - 1) === a.charAt(j - 2)) {\n                    matrix[i][j] = matrix[i - 2][j - 2] + 1;\n                }\n                else {\n                    matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1));\n                }\n            }\n        }\n    }\n    return matrix[b.length][a.length];\n}\n", "import { argsert } from './argsert.js';\nimport { assertNotStrictEqual, } from './typings/common-types.js';\nimport { levenshtein as distance } from './utils/levenshtein.js';\nimport { objFilter } from './utils/obj-filter.js';\nconst specialKeys = ['$0', '--', '_'];\nexport function validation(yargs, usage, shim) {\n    const __ = shim.y18n.__;\n    const __n = shim.y18n.__n;\n    const self = {};\n    self.nonOptionCount = function nonOptionCount(argv) {\n        const demandedCommands = yargs.getDemandedCommands();\n        const positionalCount = argv._.length + (argv['--'] ? argv['--'].length : 0);\n        const _s = positionalCount - yargs.getInternalMethods().getContext().commands.length;\n        if (demandedCommands._ &&\n            (_s < demandedCommands._.min || _s > demandedCommands._.max)) {\n            if (_s < demandedCommands._.min) {\n                if (demandedCommands._.minMsg !== undefined) {\n                    usage.fail(demandedCommands._.minMsg\n                        ? demandedCommands._.minMsg\n                            .replace(/\\$0/g, _s.toString())\n                            .replace(/\\$1/, demandedCommands._.min.toString())\n                        : null);\n                }\n                else {\n                    usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', _s, _s.toString(), demandedCommands._.min.toString()));\n                }\n            }\n            else if (_s > demandedCommands._.max) {\n                if (demandedCommands._.maxMsg !== undefined) {\n                    usage.fail(demandedCommands._.maxMsg\n                        ? demandedCommands._.maxMsg\n                            .replace(/\\$0/g, _s.toString())\n                            .replace(/\\$1/, demandedCommands._.max.toString())\n                        : null);\n                }\n                else {\n                    usage.fail(__n('Too many non-option arguments: got %s, maximum of %s', 'Too many non-option arguments: got %s, maximum of %s', _s, _s.toString(), demandedCommands._.max.toString()));\n                }\n            }\n        }\n    };\n    self.positionalCount = function positionalCount(required, observed) {\n        if (observed < required) {\n            usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', observed, observed + '', required + ''));\n        }\n    };\n    self.requiredArguments = function requiredArguments(argv, demandedOptions) {\n        let missing = null;\n        for (const key of Object.keys(demandedOptions)) {\n            if (!Object.prototype.hasOwnProperty.call(argv, key) ||\n                typeof argv[key] === 'undefined') {\n                missing = missing || {};\n                missing[key] = demandedOptions[key];\n            }\n        }\n        if (missing) {\n            const customMsgs = [];\n            for (const key of Object.keys(missing)) {\n                const msg = missing[key];\n                if (msg && customMsgs.indexOf(msg) < 0) {\n                    customMsgs.push(msg);\n                }\n            }\n            const customMsg = customMsgs.length ? `\\n${customMsgs.join('\\n')}` : '';\n            usage.fail(__n('Missing required argument: %s', 'Missing required arguments: %s', Object.keys(missing).length, Object.keys(missing).join(', ') + customMsg));\n        }\n    };\n    self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) {\n        var _a;\n        const commandKeys = yargs\n            .getInternalMethods()\n            .getCommandInstance()\n            .getCommands();\n        const unknown = [];\n        const currentContext = yargs.getInternalMethods().getContext();\n        Object.keys(argv).forEach(key => {\n            if (!specialKeys.includes(key) &&\n                !Object.prototype.hasOwnProperty.call(positionalMap, key) &&\n                !Object.prototype.hasOwnProperty.call(yargs.getInternalMethods().getParseContext(), key) &&\n                !self.isValidAndSomeAliasIsNotNew(key, aliases)) {\n                unknown.push(key);\n            }\n        });\n        if (checkPositionals &&\n            (currentContext.commands.length > 0 ||\n                commandKeys.length > 0 ||\n                isDefaultCommand)) {\n            argv._.slice(currentContext.commands.length).forEach(key => {\n                if (!commandKeys.includes('' + key)) {\n                    unknown.push('' + key);\n                }\n            });\n        }\n        if (checkPositionals) {\n            const demandedCommands = yargs.getDemandedCommands();\n            const maxNonOptDemanded = ((_a = demandedCommands._) === null || _a === void 0 ? void 0 : _a.max) || 0;\n            const expected = currentContext.commands.length + maxNonOptDemanded;\n            if (expected < argv._.length) {\n                argv._.slice(expected).forEach(key => {\n                    key = String(key);\n                    if (!currentContext.commands.includes(key) &&\n                        !unknown.includes(key)) {\n                        unknown.push(key);\n                    }\n                });\n            }\n        }\n        if (unknown.length) {\n            usage.fail(__n('Unknown argument: %s', 'Unknown arguments: %s', unknown.length, unknown.map(s => (s.trim() ? s : `\"${s}\"`)).join(', ')));\n        }\n    };\n    self.unknownCommands = function unknownCommands(argv) {\n        const commandKeys = yargs\n            .getInternalMethods()\n            .getCommandInstance()\n            .getCommands();\n        const unknown = [];\n        const currentContext = yargs.getInternalMethods().getContext();\n        if (currentContext.commands.length > 0 || commandKeys.length > 0) {\n            argv._.slice(currentContext.commands.length).forEach(key => {\n                if (!commandKeys.includes('' + key)) {\n                    unknown.push('' + key);\n                }\n            });\n        }\n        if (unknown.length > 0) {\n            usage.fail(__n('Unknown command: %s', 'Unknown commands: %s', unknown.length, unknown.join(', ')));\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) {\n        if (!Object.prototype.hasOwnProperty.call(aliases, key)) {\n            return false;\n        }\n        const newAliases = yargs.parsed.newAliases;\n        return [key, ...aliases[key]].some(a => !Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]);\n    };\n    self.limitedChoices = function limitedChoices(argv) {\n        const options = yargs.getOptions();\n        const invalid = {};\n        if (!Object.keys(options.choices).length)\n            return;\n        Object.keys(argv).forEach(key => {\n            if (specialKeys.indexOf(key) === -1 &&\n                Object.prototype.hasOwnProperty.call(options.choices, key)) {\n                [].concat(argv[key]).forEach(value => {\n                    if (options.choices[key].indexOf(value) === -1 &&\n                        value !== undefined) {\n                        invalid[key] = (invalid[key] || []).concat(value);\n                    }\n                });\n            }\n        });\n        const invalidKeys = Object.keys(invalid);\n        if (!invalidKeys.length)\n            return;\n        let msg = __('Invalid values:');\n        invalidKeys.forEach(key => {\n            msg += `\\n  ${__('Argument: %s, Given: %s, Choices: %s', key, usage.stringifiedValues(invalid[key]), usage.stringifiedValues(options.choices[key]))}`;\n        });\n        usage.fail(msg);\n    };\n    let implied = {};\n    self.implies = function implies(key, value) {\n        argsert(' [array|number|string]', [key, value], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                self.implies(k, key[k]);\n            });\n        }\n        else {\n            yargs.global(key);\n            if (!implied[key]) {\n                implied[key] = [];\n            }\n            if (Array.isArray(value)) {\n                value.forEach(i => self.implies(key, i));\n            }\n            else {\n                assertNotStrictEqual(value, undefined, shim);\n                implied[key].push(value);\n            }\n        }\n    };\n    self.getImplied = function getImplied() {\n        return implied;\n    };\n    function keyExists(argv, val) {\n        const num = Number(val);\n        val = isNaN(num) ? val : num;\n        if (typeof val === 'number') {\n            val = argv._.length >= val;\n        }\n        else if (val.match(/^--no-.+/)) {\n            val = val.match(/^--no-(.+)/)[1];\n            val = !Object.prototype.hasOwnProperty.call(argv, val);\n        }\n        else {\n            val = Object.prototype.hasOwnProperty.call(argv, val);\n        }\n        return val;\n    }\n    self.implications = function implications(argv) {\n        const implyFail = [];\n        Object.keys(implied).forEach(key => {\n            const origKey = key;\n            (implied[key] || []).forEach(value => {\n                let key = origKey;\n                const origValue = value;\n                key = keyExists(argv, key);\n                value = keyExists(argv, value);\n                if (key && !value) {\n                    implyFail.push(` ${origKey} -> ${origValue}`);\n                }\n            });\n        });\n        if (implyFail.length) {\n            let msg = `${__('Implications failed:')}\\n`;\n            implyFail.forEach(value => {\n                msg += value;\n            });\n            usage.fail(msg);\n        }\n    };\n    let conflicting = {};\n    self.conflicts = function conflicts(key, value) {\n        argsert(' [array|string]', [key, value], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                self.conflicts(k, key[k]);\n            });\n        }\n        else {\n            yargs.global(key);\n            if (!conflicting[key]) {\n                conflicting[key] = [];\n            }\n            if (Array.isArray(value)) {\n                value.forEach(i => self.conflicts(key, i));\n            }\n            else {\n                conflicting[key].push(value);\n            }\n        }\n    };\n    self.getConflicting = () => conflicting;\n    self.conflicting = function conflictingFn(argv) {\n        Object.keys(argv).forEach(key => {\n            if (conflicting[key]) {\n                conflicting[key].forEach(value => {\n                    if (value && argv[key] !== undefined && argv[value] !== undefined) {\n                        usage.fail(__('Arguments %s and %s are mutually exclusive', key, value));\n                    }\n                });\n            }\n        });\n        if (yargs.getInternalMethods().getParserConfiguration()['strip-dashed']) {\n            Object.keys(conflicting).forEach(key => {\n                conflicting[key].forEach(value => {\n                    if (value &&\n                        argv[shim.Parser.camelCase(key)] !== undefined &&\n                        argv[shim.Parser.camelCase(value)] !== undefined) {\n                        usage.fail(__('Arguments %s and %s are mutually exclusive', key, value));\n                    }\n                });\n            });\n        }\n    };\n    self.recommendCommands = function recommendCommands(cmd, potentialCommands) {\n        const threshold = 3;\n        potentialCommands = potentialCommands.sort((a, b) => b.length - a.length);\n        let recommended = null;\n        let bestDistance = Infinity;\n        for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) {\n            const d = distance(cmd, candidate);\n            if (d <= threshold && d < bestDistance) {\n                bestDistance = d;\n                recommended = candidate;\n            }\n        }\n        if (recommended)\n            usage.fail(__('Did you mean %s?', recommended));\n    };\n    self.reset = function reset(localLookup) {\n        implied = objFilter(implied, k => !localLookup[k]);\n        conflicting = objFilter(conflicting, k => !localLookup[k]);\n        return self;\n    };\n    const frozens = [];\n    self.freeze = function freeze() {\n        frozens.push({\n            implied,\n            conflicting,\n        });\n    };\n    self.unfreeze = function unfreeze() {\n        const frozen = frozens.pop();\n        assertNotStrictEqual(frozen, undefined, shim);\n        ({ implied, conflicting } = frozen);\n    };\n    return self;\n}\n", "import { YError } from '../yerror.js';\nlet previouslyVisitedConfigs = [];\nlet shim;\nexport function applyExtends(config, cwd, mergeExtends, _shim) {\n    shim = _shim;\n    let defaultConfig = {};\n    if (Object.prototype.hasOwnProperty.call(config, 'extends')) {\n        if (typeof config.extends !== 'string')\n            return defaultConfig;\n        const isPath = /\\.json|\\..*rc$/.test(config.extends);\n        let pathToDefault = null;\n        if (!isPath) {\n            try {\n                pathToDefault = require.resolve(config.extends);\n            }\n            catch (_err) {\n                return config;\n            }\n        }\n        else {\n            pathToDefault = getPathToDefaultConfig(cwd, config.extends);\n        }\n        checkForCircularExtends(pathToDefault);\n        previouslyVisitedConfigs.push(pathToDefault);\n        defaultConfig = isPath\n            ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8'))\n            : require(config.extends);\n        delete config.extends;\n        defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim);\n    }\n    previouslyVisitedConfigs = [];\n    return mergeExtends\n        ? mergeDeep(defaultConfig, config)\n        : Object.assign({}, defaultConfig, config);\n}\nfunction checkForCircularExtends(cfgPath) {\n    if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) {\n        throw new YError(`Circular extended configurations: '${cfgPath}'.`);\n    }\n}\nfunction getPathToDefaultConfig(cwd, pathToExtend) {\n    return shim.path.resolve(cwd, pathToExtend);\n}\nfunction mergeDeep(config1, config2) {\n    const target = {};\n    function isObject(obj) {\n        return obj && typeof obj === 'object' && !Array.isArray(obj);\n    }\n    Object.assign(target, config1);\n    for (const key of Object.keys(config2)) {\n        if (isObject(config2[key]) && isObject(target[key])) {\n            target[key] = mergeDeep(config1[key], config2[key]);\n        }\n        else {\n            target[key] = config2[key];\n        }\n    }\n    return target;\n}\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _YargsInstance_command, _YargsInstance_cwd, _YargsInstance_context, _YargsInstance_completion, _YargsInstance_completionCommand, _YargsInstance_defaultShowHiddenOpt, _YargsInstance_exitError, _YargsInstance_detectLocale, _YargsInstance_emittedWarnings, _YargsInstance_exitProcess, _YargsInstance_frozens, _YargsInstance_globalMiddleware, _YargsInstance_groups, _YargsInstance_hasOutput, _YargsInstance_helpOpt, _YargsInstance_isGlobalContext, _YargsInstance_logger, _YargsInstance_output, _YargsInstance_options, _YargsInstance_parentRequire, _YargsInstance_parserConfig, _YargsInstance_parseFn, _YargsInstance_parseContext, _YargsInstance_pkgs, _YargsInstance_preservedGroups, _YargsInstance_processArgs, _YargsInstance_recommendCommands, _YargsInstance_shim, _YargsInstance_strict, _YargsInstance_strictCommands, _YargsInstance_strictOptions, _YargsInstance_usage, _YargsInstance_usageConfig, _YargsInstance_versionOpt, _YargsInstance_validation;\nimport { command as Command, } from './command.js';\nimport { assertNotStrictEqual, assertSingleKey, objectKeys, } from './typings/common-types.js';\nimport { YError } from './yerror.js';\nimport { usage as Usage } from './usage.js';\nimport { argsert } from './argsert.js';\nimport { completion as Completion, } from './completion.js';\nimport { validation as Validation, } from './validation.js';\nimport { objFilter } from './utils/obj-filter.js';\nimport { applyExtends } from './utils/apply-extends.js';\nimport { applyMiddleware, GlobalMiddleware, } from './middleware.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { maybeAsyncResult } from './utils/maybe-async-result.js';\nimport setBlocking from './utils/set-blocking.js';\nexport function YargsFactory(_shim) {\n    return (processArgs = [], cwd = _shim.process.cwd(), parentRequire) => {\n        const yargs = new YargsInstance(processArgs, cwd, parentRequire, _shim);\n        Object.defineProperty(yargs, 'argv', {\n            get: () => {\n                return yargs.parse();\n            },\n            enumerable: true,\n        });\n        yargs.help();\n        yargs.version();\n        return yargs;\n    };\n}\nconst kCopyDoubleDash = Symbol('copyDoubleDash');\nconst kCreateLogger = Symbol('copyDoubleDash');\nconst kDeleteFromParserHintObject = Symbol('deleteFromParserHintObject');\nconst kEmitWarning = Symbol('emitWarning');\nconst kFreeze = Symbol('freeze');\nconst kGetDollarZero = Symbol('getDollarZero');\nconst kGetParserConfiguration = Symbol('getParserConfiguration');\nconst kGetUsageConfiguration = Symbol('getUsageConfiguration');\nconst kGuessLocale = Symbol('guessLocale');\nconst kGuessVersion = Symbol('guessVersion');\nconst kParsePositionalNumbers = Symbol('parsePositionalNumbers');\nconst kPkgUp = Symbol('pkgUp');\nconst kPopulateParserHintArray = Symbol('populateParserHintArray');\nconst kPopulateParserHintSingleValueDictionary = Symbol('populateParserHintSingleValueDictionary');\nconst kPopulateParserHintArrayDictionary = Symbol('populateParserHintArrayDictionary');\nconst kPopulateParserHintDictionary = Symbol('populateParserHintDictionary');\nconst kSanitizeKey = Symbol('sanitizeKey');\nconst kSetKey = Symbol('setKey');\nconst kUnfreeze = Symbol('unfreeze');\nconst kValidateAsync = Symbol('validateAsync');\nconst kGetCommandInstance = Symbol('getCommandInstance');\nconst kGetContext = Symbol('getContext');\nconst kGetHasOutput = Symbol('getHasOutput');\nconst kGetLoggerInstance = Symbol('getLoggerInstance');\nconst kGetParseContext = Symbol('getParseContext');\nconst kGetUsageInstance = Symbol('getUsageInstance');\nconst kGetValidationInstance = Symbol('getValidationInstance');\nconst kHasParseCallback = Symbol('hasParseCallback');\nconst kIsGlobalContext = Symbol('isGlobalContext');\nconst kPostProcess = Symbol('postProcess');\nconst kRebase = Symbol('rebase');\nconst kReset = Symbol('reset');\nconst kRunYargsParserAndExecuteCommands = Symbol('runYargsParserAndExecuteCommands');\nconst kRunValidation = Symbol('runValidation');\nconst kSetHasOutput = Symbol('setHasOutput');\nconst kTrackManuallySetKeys = Symbol('kTrackManuallySetKeys');\nexport class YargsInstance {\n    constructor(processArgs = [], cwd, parentRequire, shim) {\n        this.customScriptName = false;\n        this.parsed = false;\n        _YargsInstance_command.set(this, void 0);\n        _YargsInstance_cwd.set(this, void 0);\n        _YargsInstance_context.set(this, { commands: [], fullCommands: [] });\n        _YargsInstance_completion.set(this, null);\n        _YargsInstance_completionCommand.set(this, null);\n        _YargsInstance_defaultShowHiddenOpt.set(this, 'show-hidden');\n        _YargsInstance_exitError.set(this, null);\n        _YargsInstance_detectLocale.set(this, true);\n        _YargsInstance_emittedWarnings.set(this, {});\n        _YargsInstance_exitProcess.set(this, true);\n        _YargsInstance_frozens.set(this, []);\n        _YargsInstance_globalMiddleware.set(this, void 0);\n        _YargsInstance_groups.set(this, {});\n        _YargsInstance_hasOutput.set(this, false);\n        _YargsInstance_helpOpt.set(this, null);\n        _YargsInstance_isGlobalContext.set(this, true);\n        _YargsInstance_logger.set(this, void 0);\n        _YargsInstance_output.set(this, '');\n        _YargsInstance_options.set(this, void 0);\n        _YargsInstance_parentRequire.set(this, void 0);\n        _YargsInstance_parserConfig.set(this, {});\n        _YargsInstance_parseFn.set(this, null);\n        _YargsInstance_parseContext.set(this, null);\n        _YargsInstance_pkgs.set(this, {});\n        _YargsInstance_preservedGroups.set(this, {});\n        _YargsInstance_processArgs.set(this, void 0);\n        _YargsInstance_recommendCommands.set(this, false);\n        _YargsInstance_shim.set(this, void 0);\n        _YargsInstance_strict.set(this, false);\n        _YargsInstance_strictCommands.set(this, false);\n        _YargsInstance_strictOptions.set(this, false);\n        _YargsInstance_usage.set(this, void 0);\n        _YargsInstance_usageConfig.set(this, {});\n        _YargsInstance_versionOpt.set(this, null);\n        _YargsInstance_validation.set(this, void 0);\n        __classPrivateFieldSet(this, _YargsInstance_shim, shim, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_processArgs, processArgs, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_cwd, cwd, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_parentRequire, parentRequire, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_globalMiddleware, new GlobalMiddleware(this), \"f\");\n        this.$0 = this[kGetDollarZero]();\n        this[kReset]();\n        __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, \"f\"), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, \"f\"), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, \"f\"), \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").showHiddenOpt = __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_logger, this[kCreateLogger](), \"f\");\n    }\n    addHelpOpt(opt, msg) {\n        const defaultHelpOpt = 'help';\n        argsert('[string|boolean] [string]', [opt, msg], arguments.length);\n        if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")) {\n            this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"));\n            __classPrivateFieldSet(this, _YargsInstance_helpOpt, null, \"f\");\n        }\n        if (opt === false && msg === undefined)\n            return this;\n        __classPrivateFieldSet(this, _YargsInstance_helpOpt, typeof opt === 'string' ? opt : defaultHelpOpt, \"f\");\n        this.boolean(__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"));\n        this.describe(__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"), msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show help'));\n        return this;\n    }\n    help(opt, msg) {\n        return this.addHelpOpt(opt, msg);\n    }\n    addShowHiddenOpt(opt, msg) {\n        argsert('[string|boolean] [string]', [opt, msg], arguments.length);\n        if (opt === false && msg === undefined)\n            return this;\n        const showHiddenOpt = typeof opt === 'string' ? opt : __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, \"f\");\n        this.boolean(showHiddenOpt);\n        this.describe(showHiddenOpt, msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show hidden options'));\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").showHiddenOpt = showHiddenOpt;\n        return this;\n    }\n    showHidden(opt, msg) {\n        return this.addShowHiddenOpt(opt, msg);\n    }\n    alias(key, value) {\n        argsert(' [string|array]', [key, value], arguments.length);\n        this[kPopulateParserHintArrayDictionary](this.alias.bind(this), 'alias', key, value);\n        return this;\n    }\n    array(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('array', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    boolean(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('boolean', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    check(f, global) {\n        argsert(' [boolean]', [f, global], arguments.length);\n        this.middleware((argv, _yargs) => {\n            return maybeAsyncResult(() => {\n                return f(argv, _yargs.getOptions());\n            }, (result) => {\n                if (!result) {\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.__('Argument check failed: %s', f.toString()));\n                }\n                else if (typeof result === 'string' || result instanceof Error) {\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(result.toString(), result);\n                }\n                return argv;\n            }, (err) => {\n                __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(err.message ? err.message : err.toString(), err);\n                return argv;\n            });\n        }, false, global);\n        return this;\n    }\n    choices(key, value) {\n        argsert(' [string|array]', [key, value], arguments.length);\n        this[kPopulateParserHintArrayDictionary](this.choices.bind(this), 'choices', key, value);\n        return this;\n    }\n    coerce(keys, value) {\n        argsert(' [function]', [keys, value], arguments.length);\n        if (Array.isArray(keys)) {\n            if (!value) {\n                throw new YError('coerce callback must be provided');\n            }\n            for (const key of keys) {\n                this.coerce(key, value);\n            }\n            return this;\n        }\n        else if (typeof keys === 'object') {\n            for (const key of Object.keys(keys)) {\n                this.coerce(key, keys[key]);\n            }\n            return this;\n        }\n        if (!value) {\n            throw new YError('coerce callback must be provided');\n        }\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[keys] = true;\n        __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").addCoerceMiddleware((argv, yargs) => {\n            let aliases;\n            const shouldCoerce = Object.prototype.hasOwnProperty.call(argv, keys);\n            if (!shouldCoerce) {\n                return argv;\n            }\n            return maybeAsyncResult(() => {\n                aliases = yargs.getAliases();\n                return value(argv[keys]);\n            }, (result) => {\n                argv[keys] = result;\n                const stripAliased = yargs\n                    .getInternalMethods()\n                    .getParserConfiguration()['strip-aliased'];\n                if (aliases[keys] && stripAliased !== true) {\n                    for (const alias of aliases[keys]) {\n                        argv[alias] = result;\n                    }\n                }\n                return argv;\n            }, (err) => {\n                throw new YError(err.message);\n            });\n        }, keys);\n        return this;\n    }\n    conflicts(key1, key2) {\n        argsert(' [string|array]', [key1, key2], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").conflicts(key1, key2);\n        return this;\n    }\n    config(key = 'config', msg, parseFn) {\n        argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length);\n        if (typeof key === 'object' && !Array.isArray(key)) {\n            key = applyExtends(key, __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || []).concat(key);\n            return this;\n        }\n        if (typeof msg === 'function') {\n            parseFn = msg;\n            msg = undefined;\n        }\n        this.describe(key, msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Path to JSON config file'));\n        (Array.isArray(key) ? key : [key]).forEach(k => {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").config[k] = parseFn || true;\n        });\n        return this;\n    }\n    completion(cmd, desc, fn) {\n        argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length);\n        if (typeof desc === 'function') {\n            fn = desc;\n            desc = undefined;\n        }\n        __classPrivateFieldSet(this, _YargsInstance_completionCommand, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") || 'completion', \"f\");\n        if (!desc && desc !== false) {\n            desc = 'generate completion script';\n        }\n        this.command(__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\"), desc);\n        if (fn)\n            __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").registerFunction(fn);\n        return this;\n    }\n    command(cmd, description, builder, handler, middlewares, deprecated) {\n        argsert(' [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_command, \"f\").addHandler(cmd, description, builder, handler, middlewares, deprecated);\n        return this;\n    }\n    commands(cmd, description, builder, handler, middlewares, deprecated) {\n        return this.command(cmd, description, builder, handler, middlewares, deprecated);\n    }\n    commandDir(dir, opts) {\n        argsert(' [object]', [dir, opts], arguments.length);\n        const req = __classPrivateFieldGet(this, _YargsInstance_parentRequire, \"f\") || __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").require;\n        __classPrivateFieldGet(this, _YargsInstance_command, \"f\").addDirectory(dir, req, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getCallerFile(), opts);\n        return this;\n    }\n    count(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('count', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    default(key, value, defaultDescription) {\n        argsert(' [*] [string]', [key, value, defaultDescription], arguments.length);\n        if (defaultDescription) {\n            assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] = defaultDescription;\n        }\n        if (typeof value === 'function') {\n            assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            if (!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key])\n                __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] =\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").functionDescription(value);\n            value = value.call();\n        }\n        this[kPopulateParserHintSingleValueDictionary](this.default.bind(this), 'default', key, value);\n        return this;\n    }\n    defaults(key, value, defaultDescription) {\n        return this.default(key, value, defaultDescription);\n    }\n    demandCommand(min = 1, max, minMsg, maxMsg) {\n        argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length);\n        if (typeof max !== 'number') {\n            minMsg = max;\n            max = Infinity;\n        }\n        this.global('_', false);\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedCommands._ = {\n            min,\n            max,\n            minMsg,\n            maxMsg,\n        };\n        return this;\n    }\n    demand(keys, max, msg) {\n        if (Array.isArray(max)) {\n            max.forEach(key => {\n                assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n                this.demandOption(key, msg);\n            });\n            max = Infinity;\n        }\n        else if (typeof max !== 'number') {\n            msg = max;\n            max = Infinity;\n        }\n        if (typeof keys === 'number') {\n            assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            this.demandCommand(keys, max, msg, msg);\n        }\n        else if (Array.isArray(keys)) {\n            keys.forEach(key => {\n                assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n                this.demandOption(key, msg);\n            });\n        }\n        else {\n            if (typeof msg === 'string') {\n                this.demandOption(keys, msg);\n            }\n            else if (msg === true || typeof msg === 'undefined') {\n                this.demandOption(keys);\n            }\n        }\n        return this;\n    }\n    demandOption(keys, msg) {\n        argsert(' [string]', [keys, msg], arguments.length);\n        this[kPopulateParserHintSingleValueDictionary](this.demandOption.bind(this), 'demandedOptions', keys, msg);\n        return this;\n    }\n    deprecateOption(option, message) {\n        argsert(' [string|boolean]', [option, message], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").deprecatedOptions[option] = message;\n        return this;\n    }\n    describe(keys, description) {\n        argsert(' [string]', [keys, description], arguments.length);\n        this[kSetKey](keys, true);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").describe(keys, description);\n        return this;\n    }\n    detectLocale(detect) {\n        argsert('', [detect], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_detectLocale, detect, \"f\");\n        return this;\n    }\n    env(prefix) {\n        argsert('[string|boolean]', [prefix], arguments.length);\n        if (prefix === false)\n            delete __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix;\n        else\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix = prefix || '';\n        return this;\n    }\n    epilogue(msg) {\n        argsert('', [msg], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").epilog(msg);\n        return this;\n    }\n    epilog(msg) {\n        return this.epilogue(msg);\n    }\n    example(cmd, description) {\n        argsert(' [string]', [cmd, description], arguments.length);\n        if (Array.isArray(cmd)) {\n            cmd.forEach(exampleParams => this.example(...exampleParams));\n        }\n        else {\n            __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").example(cmd, description);\n        }\n        return this;\n    }\n    exit(code, err) {\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_exitError, err, \"f\");\n        if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.exit(code);\n    }\n    exitProcess(enabled = true) {\n        argsert('[boolean]', [enabled], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_exitProcess, enabled, \"f\");\n        return this;\n    }\n    fail(f) {\n        argsert('', [f], arguments.length);\n        if (typeof f === 'boolean' && f !== false) {\n            throw new YError(\"Invalid first argument. Expected function or boolean 'false'\");\n        }\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").failFn(f);\n        return this;\n    }\n    getAliases() {\n        return this.parsed ? this.parsed.aliases : {};\n    }\n    async getCompletion(args, done) {\n        argsert(' [function]', [args, done], arguments.length);\n        if (!done) {\n            return new Promise((resolve, reject) => {\n                __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(args, (err, completions) => {\n                    if (err)\n                        reject(err);\n                    else\n                        resolve(completions);\n                });\n            });\n        }\n        else {\n            return __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(args, done);\n        }\n    }\n    getDemandedOptions() {\n        argsert([], 0);\n        return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedOptions;\n    }\n    getDemandedCommands() {\n        argsert([], 0);\n        return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedCommands;\n    }\n    getDeprecatedOptions() {\n        argsert([], 0);\n        return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").deprecatedOptions;\n    }\n    getDetectLocale() {\n        return __classPrivateFieldGet(this, _YargsInstance_detectLocale, \"f\");\n    }\n    getExitProcess() {\n        return __classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\");\n    }\n    getGroups() {\n        return Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_groups, \"f\"), __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\"));\n    }\n    getHelp() {\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n        if (!__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").hasCachedHelpMessage()) {\n            if (!this.parsed) {\n                const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\"), undefined, undefined, 0, true);\n                if (isPromise(parse)) {\n                    return parse.then(() => {\n                        return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help();\n                    });\n                }\n            }\n            const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runDefaultBuilderOn(this);\n            if (isPromise(builderResponse)) {\n                return builderResponse.then(() => {\n                    return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help();\n                });\n            }\n        }\n        return Promise.resolve(__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help());\n    }\n    getOptions() {\n        return __classPrivateFieldGet(this, _YargsInstance_options, \"f\");\n    }\n    getStrict() {\n        return __classPrivateFieldGet(this, _YargsInstance_strict, \"f\");\n    }\n    getStrictCommands() {\n        return __classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\");\n    }\n    getStrictOptions() {\n        return __classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\");\n    }\n    global(globals, global) {\n        argsert(' [boolean]', [globals, global], arguments.length);\n        globals = [].concat(globals);\n        if (global !== false) {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.filter(l => globals.indexOf(l) === -1);\n        }\n        else {\n            globals.forEach(g => {\n                if (!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.includes(g))\n                    __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.push(g);\n            });\n        }\n        return this;\n    }\n    group(opts, groupName) {\n        argsert(' ', [opts, groupName], arguments.length);\n        const existing = __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName] || __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName];\n        if (__classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName]) {\n            delete __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName];\n        }\n        const seen = {};\n        __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName] = (existing || []).concat(opts).filter(key => {\n            if (seen[key])\n                return false;\n            return (seen[key] = true);\n        });\n        return this;\n    }\n    hide(key) {\n        argsert('', [key], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").hiddenOptions.push(key);\n        return this;\n    }\n    implies(key, value) {\n        argsert(' [number|string|array]', [key, value], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").implies(key, value);\n        return this;\n    }\n    locale(locale) {\n        argsert('[string]', [locale], arguments.length);\n        if (locale === undefined) {\n            this[kGuessLocale]();\n            return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.getLocale();\n        }\n        __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.setLocale(locale);\n        return this;\n    }\n    middleware(callback, applyBeforeValidation, global) {\n        return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").addMiddleware(callback, !!applyBeforeValidation, global);\n    }\n    nargs(key, value) {\n        argsert(' [number]', [key, value], arguments.length);\n        this[kPopulateParserHintSingleValueDictionary](this.nargs.bind(this), 'narg', key, value);\n        return this;\n    }\n    normalize(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('normalize', keys);\n        return this;\n    }\n    number(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('number', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    option(key, opt) {\n        argsert(' [object]', [key, opt], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                this.options(k, key[k]);\n            });\n        }\n        else {\n            if (typeof opt !== 'object') {\n                opt = {};\n            }\n            this[kTrackManuallySetKeys](key);\n            if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\") && (key === 'version' || (opt === null || opt === void 0 ? void 0 : opt.alias) === 'version')) {\n                this[kEmitWarning]([\n                    '\"version\" is a reserved word.',\n                    'Please do one of the following:',\n                    '- Disable version with `yargs.version(false)` if using \"version\" as an option',\n                    '- Use the built-in `yargs.version` method instead (if applicable)',\n                    '- Use a different option key',\n                    'https://yargs.js.org/docs/#api-reference-version',\n                ].join('\\n'), undefined, 'versionWarning');\n            }\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[key] = true;\n            if (opt.alias)\n                this.alias(key, opt.alias);\n            const deprecate = opt.deprecate || opt.deprecated;\n            if (deprecate) {\n                this.deprecateOption(key, deprecate);\n            }\n            const demand = opt.demand || opt.required || opt.require;\n            if (demand) {\n                this.demand(key, demand);\n            }\n            if (opt.demandOption) {\n                this.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined);\n            }\n            if (opt.conflicts) {\n                this.conflicts(key, opt.conflicts);\n            }\n            if ('default' in opt) {\n                this.default(key, opt.default);\n            }\n            if (opt.implies !== undefined) {\n                this.implies(key, opt.implies);\n            }\n            if (opt.nargs !== undefined) {\n                this.nargs(key, opt.nargs);\n            }\n            if (opt.config) {\n                this.config(key, opt.configParser);\n            }\n            if (opt.normalize) {\n                this.normalize(key);\n            }\n            if (opt.choices) {\n                this.choices(key, opt.choices);\n            }\n            if (opt.coerce) {\n                this.coerce(key, opt.coerce);\n            }\n            if (opt.group) {\n                this.group(key, opt.group);\n            }\n            if (opt.boolean || opt.type === 'boolean') {\n                this.boolean(key);\n                if (opt.alias)\n                    this.boolean(opt.alias);\n            }\n            if (opt.array || opt.type === 'array') {\n                this.array(key);\n                if (opt.alias)\n                    this.array(opt.alias);\n            }\n            if (opt.number || opt.type === 'number') {\n                this.number(key);\n                if (opt.alias)\n                    this.number(opt.alias);\n            }\n            if (opt.string || opt.type === 'string') {\n                this.string(key);\n                if (opt.alias)\n                    this.string(opt.alias);\n            }\n            if (opt.count || opt.type === 'count') {\n                this.count(key);\n            }\n            if (typeof opt.global === 'boolean') {\n                this.global(key, opt.global);\n            }\n            if (opt.defaultDescription) {\n                __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] = opt.defaultDescription;\n            }\n            if (opt.skipValidation) {\n                this.skipValidation(key);\n            }\n            const desc = opt.describe || opt.description || opt.desc;\n            const descriptions = __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getDescriptions();\n            if (!Object.prototype.hasOwnProperty.call(descriptions, key) ||\n                typeof desc === 'string') {\n                this.describe(key, desc);\n            }\n            if (opt.hidden) {\n                this.hide(key);\n            }\n            if (opt.requiresArg) {\n                this.requiresArg(key);\n            }\n        }\n        return this;\n    }\n    options(key, opt) {\n        return this.option(key, opt);\n    }\n    parse(args, shortCircuit, _parseFn) {\n        argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length);\n        this[kFreeze]();\n        if (typeof args === 'undefined') {\n            args = __classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\");\n        }\n        if (typeof shortCircuit === 'object') {\n            __classPrivateFieldSet(this, _YargsInstance_parseContext, shortCircuit, \"f\");\n            shortCircuit = _parseFn;\n        }\n        if (typeof shortCircuit === 'function') {\n            __classPrivateFieldSet(this, _YargsInstance_parseFn, shortCircuit, \"f\");\n            shortCircuit = false;\n        }\n        if (!shortCircuit)\n            __classPrivateFieldSet(this, _YargsInstance_processArgs, args, \"f\");\n        if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n            __classPrivateFieldSet(this, _YargsInstance_exitProcess, false, \"f\");\n        const parsed = this[kRunYargsParserAndExecuteCommands](args, !!shortCircuit);\n        const tmpParsed = this.parsed;\n        __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").setParsed(this.parsed);\n        if (isPromise(parsed)) {\n            return parsed\n                .then(argv => {\n                if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n                    __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"), argv, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n                return argv;\n            })\n                .catch(err => {\n                if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\")) {\n                    __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\")(err, this.parsed.argv, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n                }\n                throw err;\n            })\n                .finally(() => {\n                this[kUnfreeze]();\n                this.parsed = tmpParsed;\n            });\n        }\n        else {\n            if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n                __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"), parsed, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n            this[kUnfreeze]();\n            this.parsed = tmpParsed;\n        }\n        return parsed;\n    }\n    parseAsync(args, shortCircuit, _parseFn) {\n        const maybePromise = this.parse(args, shortCircuit, _parseFn);\n        return !isPromise(maybePromise)\n            ? Promise.resolve(maybePromise)\n            : maybePromise;\n    }\n    parseSync(args, shortCircuit, _parseFn) {\n        const maybePromise = this.parse(args, shortCircuit, _parseFn);\n        if (isPromise(maybePromise)) {\n            throw new YError('.parseSync() must not be used with asynchronous builders, handlers, or middleware');\n        }\n        return maybePromise;\n    }\n    parserConfiguration(config) {\n        argsert('', [config], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_parserConfig, config, \"f\");\n        return this;\n    }\n    pkgConf(key, rootPath) {\n        argsert(' [string]', [key, rootPath], arguments.length);\n        let conf = null;\n        const obj = this[kPkgUp](rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"));\n        if (obj[key] && typeof obj[key] === 'object') {\n            conf = applyExtends(obj[key], rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || []).concat(conf);\n        }\n        return this;\n    }\n    positional(key, opts) {\n        argsert(' ', [key, opts], arguments.length);\n        const supportedOpts = [\n            'default',\n            'defaultDescription',\n            'implies',\n            'normalize',\n            'choices',\n            'conflicts',\n            'coerce',\n            'type',\n            'describe',\n            'desc',\n            'description',\n            'alias',\n        ];\n        opts = objFilter(opts, (k, v) => {\n            if (k === 'type' && !['string', 'number', 'boolean'].includes(v))\n                return false;\n            return supportedOpts.includes(k);\n        });\n        const fullCommand = __classPrivateFieldGet(this, _YargsInstance_context, \"f\").fullCommands[__classPrivateFieldGet(this, _YargsInstance_context, \"f\").fullCommands.length - 1];\n        const parseOptions = fullCommand\n            ? __classPrivateFieldGet(this, _YargsInstance_command, \"f\").cmdToParseOptions(fullCommand)\n            : {\n                array: [],\n                alias: {},\n                default: {},\n                demand: {},\n            };\n        objectKeys(parseOptions).forEach(pk => {\n            const parseOption = parseOptions[pk];\n            if (Array.isArray(parseOption)) {\n                if (parseOption.indexOf(key) !== -1)\n                    opts[pk] = true;\n            }\n            else {\n                if (parseOption[key] && !(pk in opts))\n                    opts[pk] = parseOption[key];\n            }\n        });\n        this.group(key, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getPositionalGroupName());\n        return this.option(key, opts);\n    }\n    recommendCommands(recommend = true) {\n        argsert('[boolean]', [recommend], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_recommendCommands, recommend, \"f\");\n        return this;\n    }\n    required(keys, max, msg) {\n        return this.demand(keys, max, msg);\n    }\n    require(keys, max, msg) {\n        return this.demand(keys, max, msg);\n    }\n    requiresArg(keys) {\n        argsert(' [number]', [keys], arguments.length);\n        if (typeof keys === 'string' && __classPrivateFieldGet(this, _YargsInstance_options, \"f\").narg[keys]) {\n            return this;\n        }\n        else {\n            this[kPopulateParserHintSingleValueDictionary](this.requiresArg.bind(this), 'narg', keys, NaN);\n        }\n        return this;\n    }\n    showCompletionScript($0, cmd) {\n        argsert('[string] [string]', [$0, cmd], arguments.length);\n        $0 = $0 || this.$0;\n        __classPrivateFieldGet(this, _YargsInstance_logger, \"f\").log(__classPrivateFieldGet(this, _YargsInstance_completion, \"f\").generateCompletionScript($0, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") || 'completion'));\n        return this;\n    }\n    showHelp(level) {\n        argsert('[string|function]', [level], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n        if (!__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").hasCachedHelpMessage()) {\n            if (!this.parsed) {\n                const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\"), undefined, undefined, 0, true);\n                if (isPromise(parse)) {\n                    parse.then(() => {\n                        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n                    });\n                    return this;\n                }\n            }\n            const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runDefaultBuilderOn(this);\n            if (isPromise(builderResponse)) {\n                builderResponse.then(() => {\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n                });\n                return this;\n            }\n        }\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n        return this;\n    }\n    scriptName(scriptName) {\n        this.customScriptName = true;\n        this.$0 = scriptName;\n        return this;\n    }\n    showHelpOnFail(enabled, message) {\n        argsert('[boolean|string] [string]', [enabled, message], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelpOnFail(enabled, message);\n        return this;\n    }\n    showVersion(level) {\n        argsert('[string|function]', [level], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showVersion(level);\n        return this;\n    }\n    skipValidation(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('skipValidation', keys);\n        return this;\n    }\n    strict(enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_strict, enabled !== false, \"f\");\n        return this;\n    }\n    strictCommands(enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_strictCommands, enabled !== false, \"f\");\n        return this;\n    }\n    strictOptions(enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_strictOptions, enabled !== false, \"f\");\n        return this;\n    }\n    string(keys) {\n        argsert('', [keys], arguments.length);\n        this[kPopulateParserHintArray]('string', keys);\n        this[kTrackManuallySetKeys](keys);\n        return this;\n    }\n    terminalWidth() {\n        argsert([], 0);\n        return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.stdColumns;\n    }\n    updateLocale(obj) {\n        return this.updateStrings(obj);\n    }\n    updateStrings(obj) {\n        argsert('', [obj], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.updateLocale(obj);\n        return this;\n    }\n    usage(msg, description, builder, handler) {\n        argsert(' [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length);\n        if (description !== undefined) {\n            assertNotStrictEqual(msg, null, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            if ((msg || '').match(/^\\$0( |$)/)) {\n                return this.command(msg, description, builder, handler);\n            }\n            else {\n                throw new YError('.usage() description must start with $0 if being used as alias for .command()');\n            }\n        }\n        else {\n            __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").usage(msg);\n            return this;\n        }\n    }\n    usageConfiguration(config) {\n        argsert('', [config], arguments.length);\n        __classPrivateFieldSet(this, _YargsInstance_usageConfig, config, \"f\");\n        return this;\n    }\n    version(opt, msg, ver) {\n        const defaultVersionOpt = 'version';\n        argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length);\n        if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\")) {\n            this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"));\n            __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").version(undefined);\n            __classPrivateFieldSet(this, _YargsInstance_versionOpt, null, \"f\");\n        }\n        if (arguments.length === 0) {\n            ver = this[kGuessVersion]();\n            opt = defaultVersionOpt;\n        }\n        else if (arguments.length === 1) {\n            if (opt === false) {\n                return this;\n            }\n            ver = opt;\n            opt = defaultVersionOpt;\n        }\n        else if (arguments.length === 2) {\n            ver = msg;\n            msg = undefined;\n        }\n        __classPrivateFieldSet(this, _YargsInstance_versionOpt, typeof opt === 'string' ? opt : defaultVersionOpt, \"f\");\n        msg = msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show version number');\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").version(ver || undefined);\n        this.boolean(__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"));\n        this.describe(__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"), msg);\n        return this;\n    }\n    wrap(cols) {\n        argsert('', [cols], arguments.length);\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").wrap(cols);\n        return this;\n    }\n    [(_YargsInstance_command = new WeakMap(), _YargsInstance_cwd = new WeakMap(), _YargsInstance_context = new WeakMap(), _YargsInstance_completion = new WeakMap(), _YargsInstance_completionCommand = new WeakMap(), _YargsInstance_defaultShowHiddenOpt = new WeakMap(), _YargsInstance_exitError = new WeakMap(), _YargsInstance_detectLocale = new WeakMap(), _YargsInstance_emittedWarnings = new WeakMap(), _YargsInstance_exitProcess = new WeakMap(), _YargsInstance_frozens = new WeakMap(), _YargsInstance_globalMiddleware = new WeakMap(), _YargsInstance_groups = new WeakMap(), _YargsInstance_hasOutput = new WeakMap(), _YargsInstance_helpOpt = new WeakMap(), _YargsInstance_isGlobalContext = new WeakMap(), _YargsInstance_logger = new WeakMap(), _YargsInstance_output = new WeakMap(), _YargsInstance_options = new WeakMap(), _YargsInstance_parentRequire = new WeakMap(), _YargsInstance_parserConfig = new WeakMap(), _YargsInstance_parseFn = new WeakMap(), _YargsInstance_parseContext = new WeakMap(), _YargsInstance_pkgs = new WeakMap(), _YargsInstance_preservedGroups = new WeakMap(), _YargsInstance_processArgs = new WeakMap(), _YargsInstance_recommendCommands = new WeakMap(), _YargsInstance_shim = new WeakMap(), _YargsInstance_strict = new WeakMap(), _YargsInstance_strictCommands = new WeakMap(), _YargsInstance_strictOptions = new WeakMap(), _YargsInstance_usage = new WeakMap(), _YargsInstance_usageConfig = new WeakMap(), _YargsInstance_versionOpt = new WeakMap(), _YargsInstance_validation = new WeakMap(), kCopyDoubleDash)](argv) {\n        if (!argv._ || !argv['--'])\n            return argv;\n        argv._.push.apply(argv._, argv['--']);\n        try {\n            delete argv['--'];\n        }\n        catch (_err) { }\n        return argv;\n    }\n    [kCreateLogger]() {\n        return {\n            log: (...args) => {\n                if (!this[kHasParseCallback]())\n                    console.log(...args);\n                __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n                if (__classPrivateFieldGet(this, _YargsInstance_output, \"f\").length)\n                    __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + '\\n', \"f\");\n                __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + args.join(' '), \"f\");\n            },\n            error: (...args) => {\n                if (!this[kHasParseCallback]())\n                    console.error(...args);\n                __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n                if (__classPrivateFieldGet(this, _YargsInstance_output, \"f\").length)\n                    __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + '\\n', \"f\");\n                __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + args.join(' '), \"f\");\n            },\n        };\n    }\n    [kDeleteFromParserHintObject](optionKey) {\n        objectKeys(__classPrivateFieldGet(this, _YargsInstance_options, \"f\")).forEach((hintKey) => {\n            if (((key) => key === 'configObjects')(hintKey))\n                return;\n            const hint = __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[hintKey];\n            if (Array.isArray(hint)) {\n                if (hint.includes(optionKey))\n                    hint.splice(hint.indexOf(optionKey), 1);\n            }\n            else if (typeof hint === 'object') {\n                delete hint[optionKey];\n            }\n        });\n        delete __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getDescriptions()[optionKey];\n    }\n    [kEmitWarning](warning, type, deduplicationId) {\n        if (!__classPrivateFieldGet(this, _YargsInstance_emittedWarnings, \"f\")[deduplicationId]) {\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.emitWarning(warning, type);\n            __classPrivateFieldGet(this, _YargsInstance_emittedWarnings, \"f\")[deduplicationId] = true;\n        }\n    }\n    [kFreeze]() {\n        __classPrivateFieldGet(this, _YargsInstance_frozens, \"f\").push({\n            options: __classPrivateFieldGet(this, _YargsInstance_options, \"f\"),\n            configObjects: __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects.slice(0),\n            exitProcess: __classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"),\n            groups: __classPrivateFieldGet(this, _YargsInstance_groups, \"f\"),\n            strict: __classPrivateFieldGet(this, _YargsInstance_strict, \"f\"),\n            strictCommands: __classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\"),\n            strictOptions: __classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\"),\n            completionCommand: __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\"),\n            output: __classPrivateFieldGet(this, _YargsInstance_output, \"f\"),\n            exitError: __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"),\n            hasOutput: __classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\"),\n            parsed: this.parsed,\n            parseFn: __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"),\n            parseContext: __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\"),\n        });\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").freeze();\n        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").freeze();\n        __classPrivateFieldGet(this, _YargsInstance_command, \"f\").freeze();\n        __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").freeze();\n    }\n    [kGetDollarZero]() {\n        let $0 = '';\n        let default$0;\n        if (/\\b(node|iojs|electron)(\\.exe)?$/.test(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv()[0])) {\n            default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv().slice(1, 2);\n        }\n        else {\n            default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv().slice(0, 1);\n        }\n        $0 = default$0\n            .map(x => {\n            const b = this[kRebase](__classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), x);\n            return x.match(/^(\\/|([a-zA-Z]:)?\\\\)/) && b.length < x.length ? b : x;\n        })\n            .join(' ')\n            .trim();\n        if (__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('_') &&\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getProcessArgvBin() === __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('_')) {\n            $0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")\n                .getEnv('_')\n                .replace(`${__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.dirname(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.execPath())}/`, '');\n        }\n        return $0;\n    }\n    [kGetParserConfiguration]() {\n        return __classPrivateFieldGet(this, _YargsInstance_parserConfig, \"f\");\n    }\n    [kGetUsageConfiguration]() {\n        return __classPrivateFieldGet(this, _YargsInstance_usageConfig, \"f\");\n    }\n    [kGuessLocale]() {\n        if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, \"f\"))\n            return;\n        const locale = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LC_ALL') ||\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LC_MESSAGES') ||\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LANG') ||\n            __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LANGUAGE') ||\n            'en_US';\n        this.locale(locale.replace(/[.:].*/, ''));\n    }\n    [kGuessVersion]() {\n        const obj = this[kPkgUp]();\n        return obj.version || 'unknown';\n    }\n    [kParsePositionalNumbers](argv) {\n        const args = argv['--'] ? argv['--'] : argv._;\n        for (let i = 0, arg; (arg = args[i]) !== undefined; i++) {\n            if (__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").Parser.looksLikeNumber(arg) &&\n                Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) {\n                args[i] = Number(arg);\n            }\n        }\n        return argv;\n    }\n    [kPkgUp](rootPath) {\n        const npath = rootPath || '*';\n        if (__classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath])\n            return __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath];\n        let obj = {};\n        try {\n            let startDir = rootPath || __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").mainFilename;\n            if (!rootPath && __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.extname(startDir)) {\n                startDir = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.dirname(startDir);\n            }\n            const pkgJsonPath = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").findUp(startDir, (dir, names) => {\n                if (names.includes('package.json')) {\n                    return 'package.json';\n                }\n                else {\n                    return undefined;\n                }\n            });\n            assertNotStrictEqual(pkgJsonPath, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n            obj = JSON.parse(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").readFileSync(pkgJsonPath, 'utf8'));\n        }\n        catch (_noop) { }\n        __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath] = obj || {};\n        return __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath];\n    }\n    [kPopulateParserHintArray](type, keys) {\n        keys = [].concat(keys);\n        keys.forEach(key => {\n            key = this[kSanitizeKey](key);\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type].push(key);\n        });\n    }\n    [kPopulateParserHintSingleValueDictionary](builder, type, key, value) {\n        this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] = value;\n        });\n    }\n    [kPopulateParserHintArrayDictionary](builder, type, key, value) {\n        this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] || []).concat(value);\n        });\n    }\n    [kPopulateParserHintDictionary](builder, type, key, value, singleKeyHandler) {\n        if (Array.isArray(key)) {\n            key.forEach(k => {\n                builder(k, value);\n            });\n        }\n        else if (((key) => typeof key === 'object')(key)) {\n            for (const k of objectKeys(key)) {\n                builder(k, key[k]);\n            }\n        }\n        else {\n            singleKeyHandler(type, this[kSanitizeKey](key), value);\n        }\n    }\n    [kSanitizeKey](key) {\n        if (key === '__proto__')\n            return '___proto___';\n        return key;\n    }\n    [kSetKey](key, set) {\n        this[kPopulateParserHintSingleValueDictionary](this[kSetKey].bind(this), 'key', key, set);\n        return this;\n    }\n    [kUnfreeze]() {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n        const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, \"f\").pop();\n        assertNotStrictEqual(frozen, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n        let configObjects;\n        (_a = this, _b = this, _c = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, {\n            options: ({ set value(_o) { __classPrivateFieldSet(_a, _YargsInstance_options, _o, \"f\"); } }).value,\n            configObjects,\n            exitProcess: ({ set value(_o) { __classPrivateFieldSet(_b, _YargsInstance_exitProcess, _o, \"f\"); } }).value,\n            groups: ({ set value(_o) { __classPrivateFieldSet(_c, _YargsInstance_groups, _o, \"f\"); } }).value,\n            output: ({ set value(_o) { __classPrivateFieldSet(_d, _YargsInstance_output, _o, \"f\"); } }).value,\n            exitError: ({ set value(_o) { __classPrivateFieldSet(_e, _YargsInstance_exitError, _o, \"f\"); } }).value,\n            hasOutput: ({ set value(_o) { __classPrivateFieldSet(_f, _YargsInstance_hasOutput, _o, \"f\"); } }).value,\n            parsed: this.parsed,\n            strict: ({ set value(_o) { __classPrivateFieldSet(_g, _YargsInstance_strict, _o, \"f\"); } }).value,\n            strictCommands: ({ set value(_o) { __classPrivateFieldSet(_h, _YargsInstance_strictCommands, _o, \"f\"); } }).value,\n            strictOptions: ({ set value(_o) { __classPrivateFieldSet(_j, _YargsInstance_strictOptions, _o, \"f\"); } }).value,\n            completionCommand: ({ set value(_o) { __classPrivateFieldSet(_k, _YargsInstance_completionCommand, _o, \"f\"); } }).value,\n            parseFn: ({ set value(_o) { __classPrivateFieldSet(_l, _YargsInstance_parseFn, _o, \"f\"); } }).value,\n            parseContext: ({ set value(_o) { __classPrivateFieldSet(_m, _YargsInstance_parseContext, _o, \"f\"); } }).value,\n        } = frozen);\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = configObjects;\n        __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").unfreeze();\n        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unfreeze();\n        __classPrivateFieldGet(this, _YargsInstance_command, \"f\").unfreeze();\n        __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").unfreeze();\n    }\n    [kValidateAsync](validation, argv) {\n        return maybeAsyncResult(argv, result => {\n            validation(result);\n            return result;\n        });\n    }\n    getInternalMethods() {\n        return {\n            getCommandInstance: this[kGetCommandInstance].bind(this),\n            getContext: this[kGetContext].bind(this),\n            getHasOutput: this[kGetHasOutput].bind(this),\n            getLoggerInstance: this[kGetLoggerInstance].bind(this),\n            getParseContext: this[kGetParseContext].bind(this),\n            getParserConfiguration: this[kGetParserConfiguration].bind(this),\n            getUsageConfiguration: this[kGetUsageConfiguration].bind(this),\n            getUsageInstance: this[kGetUsageInstance].bind(this),\n            getValidationInstance: this[kGetValidationInstance].bind(this),\n            hasParseCallback: this[kHasParseCallback].bind(this),\n            isGlobalContext: this[kIsGlobalContext].bind(this),\n            postProcess: this[kPostProcess].bind(this),\n            reset: this[kReset].bind(this),\n            runValidation: this[kRunValidation].bind(this),\n            runYargsParserAndExecuteCommands: this[kRunYargsParserAndExecuteCommands].bind(this),\n            setHasOutput: this[kSetHasOutput].bind(this),\n        };\n    }\n    [kGetCommandInstance]() {\n        return __classPrivateFieldGet(this, _YargsInstance_command, \"f\");\n    }\n    [kGetContext]() {\n        return __classPrivateFieldGet(this, _YargsInstance_context, \"f\");\n    }\n    [kGetHasOutput]() {\n        return __classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\");\n    }\n    [kGetLoggerInstance]() {\n        return __classPrivateFieldGet(this, _YargsInstance_logger, \"f\");\n    }\n    [kGetParseContext]() {\n        return __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\") || {};\n    }\n    [kGetUsageInstance]() {\n        return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\");\n    }\n    [kGetValidationInstance]() {\n        return __classPrivateFieldGet(this, _YargsInstance_validation, \"f\");\n    }\n    [kHasParseCallback]() {\n        return !!__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\");\n    }\n    [kIsGlobalContext]() {\n        return __classPrivateFieldGet(this, _YargsInstance_isGlobalContext, \"f\");\n    }\n    [kPostProcess](argv, populateDoubleDash, calledFromCommand, runGlobalMiddleware) {\n        if (calledFromCommand)\n            return argv;\n        if (isPromise(argv))\n            return argv;\n        if (!populateDoubleDash) {\n            argv = this[kCopyDoubleDash](argv);\n        }\n        const parsePositionalNumbers = this[kGetParserConfiguration]()['parse-positional-numbers'] ||\n            this[kGetParserConfiguration]()['parse-positional-numbers'] === undefined;\n        if (parsePositionalNumbers) {\n            argv = this[kParsePositionalNumbers](argv);\n        }\n        if (runGlobalMiddleware) {\n            argv = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), false);\n        }\n        return argv;\n    }\n    [kReset](aliases = {}) {\n        __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, \"f\") || {}, \"f\");\n        const tmpOptions = {};\n        tmpOptions.local = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local || [];\n        tmpOptions.configObjects = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || [];\n        const localLookup = {};\n        tmpOptions.local.forEach(l => {\n            localLookup[l] = true;\n            (aliases[l] || []).forEach(a => {\n                localLookup[a] = true;\n            });\n        });\n        Object.assign(__classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\"), Object.keys(__classPrivateFieldGet(this, _YargsInstance_groups, \"f\")).reduce((acc, groupName) => {\n            const keys = __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName].filter(key => !(key in localLookup));\n            if (keys.length > 0) {\n                acc[groupName] = keys;\n            }\n            return acc;\n        }, {}));\n        __classPrivateFieldSet(this, _YargsInstance_groups, {}, \"f\");\n        const arrayOptions = [\n            'array',\n            'boolean',\n            'string',\n            'skipValidation',\n            'count',\n            'normalize',\n            'number',\n            'hiddenOptions',\n        ];\n        const objectOptions = [\n            'narg',\n            'key',\n            'alias',\n            'default',\n            'defaultDescription',\n            'config',\n            'choices',\n            'demandedOptions',\n            'demandedCommands',\n            'deprecatedOptions',\n        ];\n        arrayOptions.forEach(k => {\n            tmpOptions[k] = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[k] || []).filter((k) => !localLookup[k]);\n        });\n        objectOptions.forEach((k) => {\n            tmpOptions[k] = objFilter(__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[k], k => !localLookup[k]);\n        });\n        tmpOptions.envPrefix = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix;\n        __classPrivateFieldSet(this, _YargsInstance_options, tmpOptions, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\")\n            ? __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").reset(localLookup)\n            : Usage(this, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, \"f\")\n            ? __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").reset(localLookup)\n            : Validation(this, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, \"f\")\n            ? __classPrivateFieldGet(this, _YargsInstance_command, \"f\").reset()\n            : Command(__classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_validation, \"f\"), __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n        if (!__classPrivateFieldGet(this, _YargsInstance_completion, \"f\"))\n            __classPrivateFieldSet(this, _YargsInstance_completion, Completion(this, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_command, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").reset();\n        __classPrivateFieldSet(this, _YargsInstance_completionCommand, null, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_output, '', \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_exitError, null, \"f\");\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, false, \"f\");\n        this.parsed = false;\n        return this;\n    }\n    [kRebase](base, dir) {\n        return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.relative(base, dir);\n    }\n    [kRunYargsParserAndExecuteCommands](args, shortCircuit, calledFromCommand, commandIndex = 0, helpOnly = false) {\n        let skipValidation = !!calledFromCommand || helpOnly;\n        args = args || __classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\");\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").__ = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.__;\n        __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration = this[kGetParserConfiguration]();\n        const populateDoubleDash = !!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration['populate--'];\n        const config = Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration, {\n            'populate--': true,\n        });\n        const parsed = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").Parser.detailed(args, Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, \"f\"), {\n            configuration: { 'parse-positional-numbers': false, ...config },\n        }));\n        const argv = Object.assign(parsed.argv, __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\"));\n        let argvPromise = undefined;\n        const aliases = parsed.aliases;\n        let helpOptSet = false;\n        let versionOptSet = false;\n        Object.keys(argv).forEach(key => {\n            if (key === __classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\") && argv[key]) {\n                helpOptSet = true;\n            }\n            else if (key === __classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\") && argv[key]) {\n                versionOptSet = true;\n            }\n        });\n        argv.$0 = this.$0;\n        this.parsed = parsed;\n        if (commandIndex === 0) {\n            __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").clearCachedHelpMessage();\n        }\n        try {\n            this[kGuessLocale]();\n            if (shortCircuit) {\n                return this[kPostProcess](argv, populateDoubleDash, !!calledFromCommand, false);\n            }\n            if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")) {\n                const helpCmds = [__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")]\n                    .concat(aliases[__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")] || [])\n                    .filter(k => k.length > 1);\n                if (helpCmds.includes('' + argv._[argv._.length - 1])) {\n                    argv._.pop();\n                    helpOptSet = true;\n                }\n            }\n            __classPrivateFieldSet(this, _YargsInstance_isGlobalContext, false, \"f\");\n            const handlerKeys = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").getCommands();\n            const requestCompletions = __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").completionKey in argv;\n            const skipRecommendation = helpOptSet || requestCompletions || helpOnly;\n            if (argv._.length) {\n                if (handlerKeys.length) {\n                    let firstUnknownCommand;\n                    for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) {\n                        cmd = String(argv._[i]);\n                        if (handlerKeys.includes(cmd) && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) {\n                            const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runCommand(cmd, this, parsed, i + 1, helpOnly, helpOptSet || versionOptSet || helpOnly);\n                            return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false);\n                        }\n                        else if (!firstUnknownCommand &&\n                            cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) {\n                            firstUnknownCommand = cmd;\n                            break;\n                        }\n                    }\n                    if (!__classPrivateFieldGet(this, _YargsInstance_command, \"f\").hasDefaultCommand() &&\n                        __classPrivateFieldGet(this, _YargsInstance_recommendCommands, \"f\") &&\n                        firstUnknownCommand &&\n                        !skipRecommendation) {\n                        __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").recommendCommands(firstUnknownCommand, handlerKeys);\n                    }\n                }\n                if (__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") &&\n                    argv._.includes(__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) &&\n                    !requestCompletions) {\n                    if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n                        setBlocking(true);\n                    this.showCompletionScript();\n                    this.exit(0);\n                }\n            }\n            if (__classPrivateFieldGet(this, _YargsInstance_command, \"f\").hasDefaultCommand() && !skipRecommendation) {\n                const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runCommand(null, this, parsed, 0, helpOnly, helpOptSet || versionOptSet || helpOnly);\n                return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false);\n            }\n            if (requestCompletions) {\n                if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n                    setBlocking(true);\n                args = [].concat(args);\n                const completionArgs = args.slice(args.indexOf(`--${__classPrivateFieldGet(this, _YargsInstance_completion, \"f\").completionKey}`) + 1);\n                __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(completionArgs, (err, completions) => {\n                    if (err)\n                        throw new YError(err.message);\n                    (completions || []).forEach(completion => {\n                        __classPrivateFieldGet(this, _YargsInstance_logger, \"f\").log(completion);\n                    });\n                    this.exit(0);\n                });\n                return this[kPostProcess](argv, !populateDoubleDash, !!calledFromCommand, false);\n            }\n            if (!__classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\")) {\n                if (helpOptSet) {\n                    if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n                        setBlocking(true);\n                    skipValidation = true;\n                    this.showHelp('log');\n                    this.exit(0);\n                }\n                else if (versionOptSet) {\n                    if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n                        setBlocking(true);\n                    skipValidation = true;\n                    __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showVersion('log');\n                    this.exit(0);\n                }\n            }\n            if (!skipValidation && __classPrivateFieldGet(this, _YargsInstance_options, \"f\").skipValidation.length > 0) {\n                skipValidation = Object.keys(argv).some(key => __classPrivateFieldGet(this, _YargsInstance_options, \"f\").skipValidation.indexOf(key) >= 0 && argv[key] === true);\n            }\n            if (!skipValidation) {\n                if (parsed.error)\n                    throw new YError(parsed.error.message);\n                if (!requestCompletions) {\n                    const validation = this[kRunValidation](aliases, {}, parsed.error);\n                    if (!calledFromCommand) {\n                        argvPromise = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), true);\n                    }\n                    argvPromise = this[kValidateAsync](validation, argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv);\n                    if (isPromise(argvPromise) && !calledFromCommand) {\n                        argvPromise = argvPromise.then(() => {\n                            return applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), false);\n                        });\n                    }\n                }\n            }\n        }\n        catch (err) {\n            if (err instanceof YError)\n                __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(err.message, err);\n            else\n                throw err;\n        }\n        return this[kPostProcess](argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv, populateDoubleDash, !!calledFromCommand, true);\n    }\n    [kRunValidation](aliases, positionalMap, parseErrors, isDefaultCommand) {\n        const demandedOptions = { ...this.getDemandedOptions() };\n        return (argv) => {\n            if (parseErrors)\n                throw new YError(parseErrors.message);\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").nonOptionCount(argv);\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").requiredArguments(argv, demandedOptions);\n            let failedStrictCommands = false;\n            if (__classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\")) {\n                failedStrictCommands = __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownCommands(argv);\n            }\n            if (__classPrivateFieldGet(this, _YargsInstance_strict, \"f\") && !failedStrictCommands) {\n                __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownArguments(argv, aliases, positionalMap, !!isDefaultCommand);\n            }\n            else if (__classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\")) {\n                __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownArguments(argv, aliases, {}, false, false);\n            }\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").limitedChoices(argv);\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").implications(argv);\n            __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").conflicting(argv);\n        };\n    }\n    [kSetHasOutput]() {\n        __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n    }\n    [kTrackManuallySetKeys](keys) {\n        if (typeof keys === 'string') {\n            __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[keys] = true;\n        }\n        else {\n            for (const k of keys) {\n                __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[k] = true;\n            }\n        }\n    }\n}\nexport function isYargsInstance(y) {\n    return !!y && typeof y.getInternalMethods === 'function';\n}\n", "'use strict';\n\n// Bootstraps yargs for ESM:\nimport esmPlatformShim from './lib/platform-shims/esm.mjs';\nimport {YargsFactory} from './build/lib/yargs-factory.js';\n\nconst Yargs = YargsFactory(esmPlatformShim);\nexport default Yargs;\n", "import yargs, {Arguments, Argv} from 'yargs';\n\n// A function to be called when the command completes.\ntype CompletedFn = (err: Error | null) => Promise | void;\n\n/** List of functions to be called upon command completion. */\nconst completedFunctions: CompletedFn[] = [];\n\n/** Register a function to be called when the command completes. */\nexport function registerCompletedFunction(fn: CompletedFn) {\n  completedFunctions.push(fn);\n}\n\n/**\n * Run the yargs process, as configured by the supplied function, calling a set of completion\n * functions after the command completes.\n */\nexport async function runParserWithCompletedFunctions(applyConfiguration: (argv: Argv) => Argv) {\n  let err: Error | null = null;\n  try {\n    await applyConfiguration(yargs(process.argv.slice(2)))\n      .exitProcess(false)\n      .parse();\n  } catch (e) {\n    err = e as Error;\n    if ([undefined, 0].includes(process.exitCode)) {\n      process.exitCode = 1;\n    }\n  } finally {\n    for (const completedFunc of completedFunctions) {\n      await completedFunc(err);\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {info} from 'console';\nimport {Argv} from 'yargs';\nimport {assertValidCaretakerConfig, assertValidGithubConfig, getConfig} from '../utils/config.js';\nimport {CheckModule} from './check/cli.js';\nimport {HandoffModule} from './handoff/cli.js';\n\n/** Build the parser for the caretaker commands. */\nexport function buildCaretakerParser(argv: Argv) {\n  return argv.middleware(caretakerCommandCanRun, false).command(CheckModule).command(HandoffModule);\n}\n\nfunction caretakerCommandCanRun() {\n  try {\n    getConfig([assertValidCaretakerConfig, assertValidGithubConfig]);\n  } catch {\n    info('The `caretaker` command is not enabled in this repository.');\n    info(`   To enable it, provide a caretaker config in the repository's .ng-dev/ directory`);\n    process.exit(1);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Log} from '../logging.js';\n\nimport {Argv} from 'yargs';\nimport {AuthenticatedGitClient} from './authenticated-git-client.js';\nimport {GITHUB_TOKEN_GENERATE_URL} from './github-urls.js';\n\n/** Sets up the `github-token` command option for the given Yargs instance. */\nexport function addGithubTokenOption(argv: Argv) {\n  return (\n    argv\n      // 'github-token' is casted to 'githubToken' to properly set up typings to reflect the key in\n      // the Argv object being camelCase rather than kebab case due to the `camel-case-expansion`\n      // config: https://github.com/yargs/yargs-parser#camel-case-expansion\n      .option('github-token' as 'githubToken', {\n        type: 'string',\n        default: '',\n        defaultDescription: '',\n        description: 'Github token. If not set, token is retrieved from the environment variables.',\n        // We use the coerce function as a way of allowing the user to provide the value, otherwise\n        // looking for it in the environment.\n        coerce: configureGitClientWithTokenOrFromEnvironment,\n      })\n  );\n}\n\n/**\n * If the github token is able to be determined, either by being provided as a parameter or being\n * present in the environment, it is used to set the configuration for the AuthenticatedGitClient.\n * Otherwise, an error is thrown.\n *\n * We explicitly return void for this function to allow this function to be used as a `coerce`\n * function for yargs. This allows for the option, `github-token` to be available for users without\n * including it in the generated types for the `Argv` object on a command, helping us to enforce\n * that the token should only be accessed from the AuthenticatedGitClient itself.\n */\nexport function configureGitClientWithTokenOrFromEnvironment(token: string | undefined): void {\n  const githubToken = token || (process.env.GITHUB_TOKEN ?? process.env.TOKEN);\n  if (!githubToken) {\n    Log.error('No Github token set. Please set the `GITHUB_TOKEN` environment variable.');\n    Log.error('Alternatively, pass the `--github-token` command line flag.');\n    Log.warn(`You can generate a token here: ${GITHUB_TOKEN_GENERATE_URL}`);\n    throw Error('Unable to determine the Github token.');\n  }\n\n  AuthenticatedGitClient.configure(githubToken);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGithubClient} from './github.js';\nimport {RestEndpointMethodTypes} from '@octokit/rest';\n\n// TODO: sort out implementing caching if we decide to use this somewhere else\nasync function isGooglerOrgMember(\n  client: AuthenticatedGithubClient,\n  username: string,\n): Promise {\n  try {\n    const response = await client.orgs.checkMembershipForUser({org: 'googlers', username});\n    if ((response.status as number) === 204) {\n      return true;\n    }\n  } catch {}\n  return false;\n}\n\n/** Shared base object for a derived Check or Status result. */\ninterface CheckOrStatusResult {\n  type: string;\n  name: string;\n  result: string;\n  url: string;\n}\n\n/** A derived Check result */\ninterface CheckResult extends CheckOrStatusResult {\n  type: 'check';\n  check: RestEndpointMethodTypes['checks']['listForRef']['response']['data']['check_runs'][number];\n}\n\n/** A derived Status result */\ninterface StatusResult extends CheckOrStatusResult {\n  type: 'status';\n  description: string;\n  status: RestEndpointMethodTypes['repos']['getCombinedStatusForRef']['response']['data']['statuses'][number];\n}\n\n/** The overall results of a combined Checks and Statuses check. */\nexport interface CombinedChecksAndStatusesResult {\n  result: 'pending' | 'passing' | 'failing' | null;\n  results: (CheckResult | StatusResult)[];\n}\n\n/**\n * Retrieve a combined listing of the results for a refs statuses and checks.\n */\nasync function getCombinedChecksAndStatusesForRef(\n  github: AuthenticatedGithubClient,\n  params: RestEndpointMethodTypes['checks']['listForRef']['parameters'] &\n    RestEndpointMethodTypes['repos']['getCombinedStatusForRef']['parameters'],\n): Promise {\n  const {data: checkResults} = await github.checks.listForRef(params);\n  const {data: statusResults} = await github.repos.getCombinedStatusForRef(params);\n\n  const results = [\n    ...checkResults.check_runs.map(\n      (result): CheckResult => ({\n        type: 'check',\n        name: result.name,\n        result: result.status === 'completed' ? result.conclusion! : result.status,\n        url: result.details_url ?? '',\n        check: result,\n      }),\n    ),\n    ...statusResults.statuses.map(\n      (result): StatusResult => ({\n        type: 'status',\n        name: result.context,\n        result: result.state,\n        description: result.description ?? '',\n        url: result.target_url ?? '',\n        status: result,\n      }),\n    ),\n  ];\n\n  // TODO: Refactor away from a reducer.\n  return {\n    result: results.reduce(\n      (currentResult, {result}) => {\n        if (currentResult === 'pending' || ['queued', 'in_progress', 'pending'].includes(result)) {\n          return 'pending';\n        }\n\n        if (\n          currentResult === 'failing' ||\n          ['failure', 'error', 'timed_out', 'cancelled'].includes(result)\n        ) {\n          return 'failing';\n        }\n\n        return 'passing';\n      },\n      null as 'pending' | 'failing' | 'passing' | null,\n    ),\n    results,\n  };\n}\n\nexport default {\n  getCombinedChecksAndStatusesForRef,\n  isGooglerOrgMember,\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GithubConfig, CaretakerConfig} from '../../utils/config.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\n\n/** The BaseModule to extend modules for caretaker checks from. */\nexport abstract class BaseModule {\n  /** The data for the module. */\n  readonly data = this.retrieveData();\n\n  constructor(\n    protected git: AuthenticatedGitClient,\n    protected config: {caretaker: CaretakerConfig; github: GithubConfig},\n  ) {}\n\n  /** Asynchronously retrieve data for the module. */\n  protected abstract retrieveData(): Promise;\n\n  /** Print the information discovered for the module to the terminal. */\n  abstract printToTerminal(): Promise;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  ActiveReleaseTrains,\n  getNextBranchName,\n  ReleaseRepoWithApi,\n  ReleaseTrain,\n} from '../../release/versioning/index.js';\nimport githubMacros from '../../utils/git/github-macros.js';\n\nimport {bold, green, Log, red, yellow} from '../../utils/logging.js';\nimport {BaseModule} from './base.js';\n\n/** The result of checking a branch on CI. */\ntype CiBranchStatus = 'pending' | 'passing' | 'failing' | null;\n\n/** A list of results for checking CI branches. */\ntype CiData = {\n  active: boolean;\n  name: string;\n  label: string;\n  status: CiBranchStatus;\n}[];\n\nexport class CiModule extends BaseModule {\n  override async retrieveData() {\n    const nextBranchName = getNextBranchName(this.config.github);\n    const repo: ReleaseRepoWithApi = {\n      api: this.git.github,\n      ...this.git.remoteConfig,\n      nextBranchName,\n    };\n    const {latest, next, releaseCandidate, exceptionalMinor} =\n      await ActiveReleaseTrains.fetch(repo);\n    const ciResultPromises = Object.entries({releaseCandidate, exceptionalMinor, latest, next}).map(\n      async ([trainName, train]: [string, ReleaseTrain | null]) => {\n        if (train === null) {\n          return {\n            active: false,\n            name: trainName,\n            label: '',\n            status: null,\n          };\n        }\n\n        const status = (\n          await githubMacros.getCombinedChecksAndStatusesForRef(this.git.github, {\n            ...this.git.remoteParams,\n            ref: train.branchName,\n          })\n        ).result;\n\n        return {\n          active: true,\n          name: train.branchName,\n          label: `${trainName} (${train.branchName})`,\n          status,\n        };\n      },\n    );\n\n    return await Promise.all(ciResultPromises);\n  }\n\n  override async printToTerminal() {\n    const data = await this.data;\n    const minLabelLength = Math.max(...data.map((result) => result.label.length));\n    Log.info.group(bold(`CI`));\n    data.forEach((result) => {\n      if (result.active === false) {\n        Log.debug(`No active release train for ${result.name}`);\n        return;\n      }\n      const label = result.label.padEnd(minLabelLength);\n      if (result.status === null) {\n        Log.info(`${result.name} branch was not found on CI`);\n      } else if (result.status === 'passing') {\n        Log.info(`${label} ${green('✔')}`);\n      } else if (result.status === 'pending') {\n        Log.info(`${label} ${yellow('⏺')}`);\n      } else {\n        Log.info(`${label} ${red('✘')}`);\n      }\n    });\n    Log.info.groupEnd();\n    Log.info();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport path from 'path';\nimport {Log} from './logging.js';\nimport {CaretakerConfig, GithubConfig} from './config.js';\nimport {SyncFileMatchFn, getGoogleSyncConfig} from './g3-sync-config.js';\nimport {AuthenticatedGitClient} from './git/authenticated-git-client.js';\n\n/** Information expressing the difference between the main and g3 branches */\nexport interface G3StatsData {\n  insertions: number;\n  deletions: number;\n  files: number;\n  separateFiles: number;\n  commits: number;\n}\n\nexport class G3Stats {\n  static async retrieveDiffStats(\n    git: AuthenticatedGitClient,\n    config: {caretaker: CaretakerConfig; github: GithubConfig},\n  ): Promise {\n    const syncMatchFns = await this.getG3SyncFileMatchFns(git, config);\n    const latestSha = this.getLatestShas(git);\n\n    if (\n      syncMatchFns === null ||\n      syncMatchFns.ngMatchFn === null ||\n      syncMatchFns.separateMatchFn === null ||\n      latestSha === null\n    ) {\n      return;\n    }\n\n    return this.getDiffStats(git, latestSha.g3, latestSha.main, syncMatchFns);\n  }\n\n  /**\n   * Get git diff stats between main and g3, for all files and filtered to only g3 affecting\n   * files.\n   */\n  static getDiffStats(\n    git: AuthenticatedGitClient,\n    g3Ref: string,\n    mainRef: string,\n    syncMatchFns: {ngMatchFn: SyncFileMatchFn; separateMatchFn: SyncFileMatchFn},\n  ): G3StatsData {\n    /** The diff stats to be returned. */\n    const stats = {\n      insertions: 0,\n      deletions: 0,\n      files: 0,\n      separateFiles: 0,\n      commits: 0,\n    };\n\n    // Determine the number of commits between main and g3 refs. */\n    stats.commits = parseInt(git.run(['rev-list', '--count', `${g3Ref}..${mainRef}`]).stdout, 10);\n\n    // Get the numstat information between main and g3\n    const numStatDiff = git\n      .run(['diff', `${g3Ref}...${mainRef}`, '--numstat'])\n      .stdout // Remove the extra space after git's output.\n      .trim();\n\n    // If there is no diff, we can return early.\n    if (numStatDiff === '') {\n      return stats;\n    }\n\n    // Split each line of git output into array\n    numStatDiff\n      .split('\\n')\n      // Split each line from the git output into components parts: insertions,\n      // deletions and file name respectively\n      .map((line) => line.trim().split('\\t'))\n      // Parse number value from the insertions and deletions values\n      // Example raw line input:\n      //   10\\t5\\tsrc/file/name.ts\n      .map((line) => [Number(line[0]), Number(line[1]), line[2]] as [number, number, string])\n      // Add each line's value to the diff stats, and conditionally to the g3\n      // stats as well if the file name is included in the files synced to g3.\n      .forEach(([insertions, deletions, fileName]) => {\n        if (syncMatchFns.ngMatchFn(fileName)) {\n          stats.insertions += insertions;\n          stats.deletions += deletions;\n          stats.files += 1;\n        } else if (syncMatchFns.separateMatchFn(fileName)) {\n          stats.insertions += insertions;\n          stats.deletions += deletions;\n          stats.separateFiles += 1;\n        }\n      });\n\n    return stats;\n  }\n\n  /** Fetch and retrieve the latest sha for a specific branch. */\n  static getShaForBranchLatest(git: AuthenticatedGitClient, branch: string) {\n    // With the --exit-code flag, if no match is found an exit code of 2 is returned by the command.\n    if (git.runGraceful(['ls-remote', '--exit-code', git.getRepoGitUrl(), branch]).status === 2) {\n      Log.debug(`No '${branch}' branch exists on upstream, skipping.`);\n      return null;\n    }\n\n    // Retrieve the latest ref for the branch and return its sha.\n    git.runGraceful(['fetch', '-q', git.getRepoGitUrl(), branch]);\n    return git.runGraceful(['rev-parse', 'FETCH_HEAD']).stdout.trim();\n  }\n\n  static async getG3SyncFileMatchFns(\n    git: AuthenticatedGitClient,\n    configs: {caretaker: CaretakerConfig; github: GithubConfig},\n  ): Promise {\n    debugger;\n    if (configs.caretaker.g3SyncConfigPath === undefined) {\n      Log.debug('No Google Sync configuration specified.');\n      return null;\n    }\n\n    const configPath = path.join(git.baseDir, configs.caretaker.g3SyncConfigPath);\n    const {ngMatchFn, separateMatchFn, config} = await getGoogleSyncConfig(configPath);\n    if (config.syncedFilePatterns.length === 0) {\n      Log.warn('Google Sync configuration does not specify any files being synced.');\n    }\n    return {ngMatchFn, separateMatchFn};\n  }\n\n  static getLatestShas(git: AuthenticatedGitClient) {\n    /** The latest sha for the g3 branch. */\n    const g3 = this.getShaForBranchLatest(git, 'g3');\n    /** The latest sha for the main branch. */\n    const main = this.getShaForBranchLatest(git, git.mainBranchName);\n\n    if (g3 === null || main === null) {\n      Log.debug(`Either the g3 or ${git.mainBranchName} was unable to be retrieved`);\n      return null;\n    }\n\n    return {g3, main};\n  }\n}\n", "import expand from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  nobrace?: boolean\n  nocomment?: boolean\n  nonegate?: boolean\n  debug?: boolean\n  noglobstar?: boolean\n  noext?: boolean\n  nonull?: boolean\n  windowsPathsNoEscape?: boolean\n  allowWindowsEscape?: boolean\n  partial?: boolean\n  dot?: boolean\n  nocase?: boolean\n  nocaseMagicOnly?: boolean\n  magicalBraces?: boolean\n  matchBase?: boolean\n  flipNegate?: boolean\n  preserveMultipleSlashes?: boolean\n  optimizationLevel?: number\n  platform?: Platform\n  windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n      process.platform\n    : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {}\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n      orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined\n        ? options.windowsNoMagicRoot\n        : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn all ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n      const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // dont' need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n          ? starDotExtTestDot\n          : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n          ? qmarksTestDot\n          : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n      ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n            ? GLOBSTAR\n            : p._src\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        return pp.filter(p => p !== GLOBSTAR).join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n  pattern: any\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n  '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n  '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n  '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n  '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n  '[:cntrl:]': ['\\\\p{Cc}', true],\n  '[:digit:]': ['\\\\p{Nd}', true],\n  '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n  '[:lower:]': ['\\\\p{Ll}', true],\n  '[:print:]': ['\\\\p{C}', true],\n  '[:punct:]': ['\\\\p{P}', true],\n  '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n  '[:upper:]': ['\\\\p{Lu}', true],\n  '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n  '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length\n      ? '(' + sranges + '|' + snegs + ')'\n      : ranges.length\n      ? sranges\n      : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  return windowsPathsNoEscape\n    ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n    : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n", "// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {}\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null\n        ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n        : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty = this.isStart() && this.isEnd()\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string'\n              ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n              : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot\n        ? ''\n        : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!'\n          ? // !() must match something,but !(x) can match ''\n            '))' +\n            (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n            star +\n            ')'\n          : this.type === '@'\n          ? ')'\n          : this.type === '?'\n          ? ')?'\n          : this.type === '+' && bodyDotAllowed\n          ? ')'\n          : this.type === '*' && bodyDotAllowed\n          ? `)?`\n          : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '*') {\n        if (noEmpty && glob === '*') re += starNoEmpty\n        else re += star\n        hasMagic = true\n        continue\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  return windowsPathsNoEscape\n    ? s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Minimatch} from 'minimatch';\nimport fs from 'fs';\nimport * as jsonc from '../../tools/esm-interop/jsonc-parser.js';\n\n/** Configuration describing how files are synced into Google. */\nexport interface GoogleSyncConfig {\n  /**\n   * Patterns matching files which are synced into Google. Patterns\n   * should be relative to the project directory.\n   */\n  syncedFilePatterns: string[];\n  /**\n   * Patterns matching files which are never synced into Google. Patterns\n   * should be relative to the project directory.\n   */\n  alwaysExternalFilePatterns: string[];\n  /**\n   * Patterns matching files which need to be synced separately.\n   * Patterns should be relative to the project directory.\n   */\n  separateFilePatterns: string[];\n}\n\n/** Describes a function for testing if a file is synced. */\nexport type SyncFileMatchFn = (projectRelativePath: string) => boolean;\n\n/** Error class used when the Google Sync configuration is invalid. */\nexport class InvalidGoogleSyncConfigError extends Error {}\n\n/** Transforms the given sync configuration into a file match function. */\nexport function transformConfigIntoMatcher(config: GoogleSyncConfig): {\n  ngSyncMatchFn: SyncFileMatchFn;\n  separateSyncMatchFn: SyncFileMatchFn;\n} {\n  const syncedFilePatterns = config.syncedFilePatterns.map((p) => new Minimatch(p));\n  const alwaysExternalFilePatterns = config.alwaysExternalFilePatterns.map((p) => new Minimatch(p));\n  const separateFilePatterns = config.separateFilePatterns.map((p) => new Minimatch(p));\n\n  // match everything that needs to be synced except external and separate sync files\n  const ngSyncMatchFn = (projectRelativePath: string) =>\n    syncedFilePatterns.some((p) => p.match(projectRelativePath)) &&\n    alwaysExternalFilePatterns.every((p) => !p.match(projectRelativePath)) &&\n    separateFilePatterns.every((p) => !p.match(projectRelativePath));\n\n  // match only files that need to be synced separately\n  const separateSyncMatchFn = (projectRelativePath: string) =>\n    separateFilePatterns.some((p) => p.match(projectRelativePath)) &&\n    alwaysExternalFilePatterns.every((p) => !p.match(projectRelativePath));\n\n  return {ngSyncMatchFn, separateSyncMatchFn};\n}\n\n/**\n * Reads the configuration file from the given path.\n *\n * @throws {InvalidGoogleSyncConfigError} If the configuration is invalid.\n */\nexport async function getGoogleSyncConfig(absolutePath: string): Promise<{\n  ngMatchFn: SyncFileMatchFn;\n  separateMatchFn: SyncFileMatchFn;\n  config: GoogleSyncConfig;\n}> {\n  const content = await fs.promises.readFile(absolutePath, 'utf8');\n  const errors: jsonc.ParseError[] = [];\n  const config = jsonc.parse(content, errors) as GoogleSyncConfig;\n  if (errors.length !== 0) {\n    throw new InvalidGoogleSyncConfigError(\n      `Google Sync Configuration is invalid: ` +\n        errors.map((e) => jsonc.printParseErrorCode(e.error)).join('\\n'),\n    );\n  }\n  const matchFns = transformConfigIntoMatcher(config);\n  return {\n    config,\n    ngMatchFn: matchFns.ngSyncMatchFn,\n    separateMatchFn: matchFns.separateSyncMatchFn,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {bold, green, Log} from '../../utils/logging.js';\nimport {G3StatsData, G3Stats} from '../../utils/g3.js';\n\nimport {BaseModule} from './base.js';\n\nexport class G3Module extends BaseModule {\n  override async retrieveData() {\n    return await G3Stats.retrieveDiffStats(this.git, this.config);\n  }\n\n  override async printToTerminal() {\n    const stats = await this.data;\n    if (!stats) {\n      return;\n    }\n    Log.info.group(bold('g3 branch check'));\n    if (stats.files === 0 && stats.separateFiles === 0) {\n      Log.info(`${stats.commits} commits between g3 and ${this.git.mainBranchName}`);\n      Log.info(` ${green('✔')} No sync is needed at this time`);\n    } else if (stats.separateFiles > 0) {\n      Log.info(\n        `${stats.separateFiles} primitives files changed, ${stats.files} Angular files changed, ` +\n          `${stats.insertions} insertions(+), ${stats.deletions} deletions(-) from ` +\n          `${stats.commits} commits will be included in the next sync\\n` +\n          `Note: Shared primivites code has been merged. Only more Shared Primitives code can be ` +\n          `merged until the next sync is landed`,\n      );\n    } else {\n      Log.info(\n        `${stats.files} files changed, ${stats.insertions} insertions(+), ${stats.deletions} ` +\n          `deletions(-) from ${stats.commits} commits will be included in the next sync`,\n      );\n    }\n    Log.info.groupEnd();\n    Log.info();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {alias, onUnion, params, types} from 'typed-graphqlify';\n\nimport {bold, Log} from '../../utils/logging.js';\nimport {CaretakerConfig} from '../../utils/config.js';\nimport {BaseModule} from './base.js';\n\n/** A list of generated results for a github query. */\ntype GithubQueryResults = {\n  queryName: string;\n  count: number;\n  queryUrl: string;\n  matchedUrls: string[];\n}[];\n\n/** The fragment for a result from Github's api for a Github query. */\nconst GithubQueryResultFragment = {\n  issueCount: types.number,\n  nodes: [\n    {\n      ...onUnion({\n        PullRequest: {\n          url: types.string,\n        },\n        Issue: {\n          url: types.string,\n        },\n      }),\n    },\n  ],\n};\n\n/** An object containing results of multiple queries.  */\ntype GithubQueryResult = {\n  [key: string]: typeof GithubQueryResultFragment;\n};\n\n/**\n * Cap the returned issues in the queries to an arbitrary 20. At that point, caretaker has a lot\n * of work to do and showing more than that isn't really useful.\n */\nconst MAX_RETURNED_ISSUES = 20;\n\nexport class GithubQueriesModule extends BaseModule {\n  override async retrieveData() {\n    // Non-null assertion is used here as the check for undefined immediately follows to confirm the\n    // assertion.  Typescript's type filtering does not seem to work as needed to understand\n    // whether githubQueries is undefined or not.\n    let queries = this.config.caretaker?.githubQueries!;\n    if (queries === undefined || queries.length === 0) {\n      Log.debug('No github queries defined in the configuration, skipping');\n      return;\n    }\n\n    /** The results of the generated github query. */\n    const queryResult = await this.git.github.graphql(this.buildGraphqlQuery(queries));\n    const results = Object.values(queryResult);\n\n    const {owner, name: repo} = this.git.remoteConfig;\n\n    return results.map((result, i) => {\n      const query = queries[i];\n      const queryURLParam = encodeURIComponent(query.query);\n\n      return {\n        queryName: query.name,\n        count: result.issueCount,\n        queryUrl: `https://github.com/${owner}/${repo}/issues?q=${queryURLParam}`,\n        matchedUrls: result.nodes.map((node) => node.url),\n      };\n    });\n  }\n\n  /** Build a Graphql query statement for the provided queries. */\n  private buildGraphqlQuery(queries: NonNullable) {\n    /** The query object for graphql. */\n    const graphqlQuery: GithubQueryResult = {};\n    const {owner, name: repo} = this.git.remoteConfig;\n    /** The Github search filter for the configured repository. */\n    const repoFilter = `repo:${owner}/${repo}`;\n\n    queries.forEach(({name, query}) => {\n      /** The name of the query, with spaces removed to match Graphql requirements. */\n      const queryKey = alias(name.replace(/ /g, ''), 'search');\n      graphqlQuery[queryKey] = params(\n        {\n          type: 'ISSUE',\n          first: MAX_RETURNED_ISSUES,\n          query: `\"${repoFilter} ${query.replace(/\\\"/g, '\\\\\"')}\"`,\n        },\n        {...GithubQueryResultFragment},\n      );\n    });\n\n    return graphqlQuery;\n  }\n\n  override async printToTerminal() {\n    const queryResults = await this.data;\n    if (!queryResults) {\n      return;\n    }\n    Log.info.group(bold('Github Tasks'));\n    const minQueryNameLength = Math.max(...queryResults.map((result) => result.queryName.length));\n    for (const queryResult of queryResults) {\n      Log.info(`${queryResult.queryName.padEnd(minQueryNameLength)}  ${queryResult.count}`);\n\n      if (queryResult.count > 0) {\n        Log.info.group(queryResult.queryUrl);\n        queryResult.matchedUrls.forEach((url) => Log.info(`- ${url}`));\n        if (queryResult.count > MAX_RETURNED_ISSUES) {\n          Log.info(`... ${queryResult.count - MAX_RETURNED_ISSUES} additional matches`);\n        }\n        Log.info.groupEnd();\n      }\n    }\n    Log.info.groupEnd();\n    Log.info();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {bold, green, Log, red} from '../../utils/logging.js';\nimport {BaseModule} from './base.js';\n\ninterface ServiceConfig {\n  name: string;\n  url: string;\n  prettyUrl: string;\n}\n\n/**\n * Status HTTP responses which are commonly used by services like GitHub.\n * See for example: https://www.githubstatus.com/api.\n */\ninterface StatusHttpResponse {\n  page: {\n    updated_at: string;\n  };\n  status: {\n    description: string;\n    indicator: 'none' | 'minor' | 'major' | 'critical';\n  };\n}\n\n/** The results of checking the status of a service */\ninterface StatusCheckResult {\n  name: string;\n  status: 'passing' | 'failing';\n  description: string;\n  lastUpdated: Date;\n  statusUrl: string;\n}\n\n/** List of services Angular relies on. */\nexport const services: ServiceConfig[] = [\n  {\n    prettyUrl: 'https://status.saucelabs.com',\n    url: 'https://status.saucelabs.com/api/v2/status.json',\n    name: 'Saucelabs',\n  },\n  {\n    prettyUrl: 'https://status.npmjs.org/',\n    url: 'https://status.npmjs.org/api/v2/status.json',\n    name: 'Npm',\n  },\n  {\n    prettyUrl: 'https://www.githubstatus.com',\n    url: 'https://www.githubstatus.com/api/v2/status.json',\n    name: 'Github',\n  },\n];\n\nexport class ServicesModule extends BaseModule {\n  override async retrieveData() {\n    return Promise.all(services.map((service) => this.getStatusFromStandardApi(service)));\n  }\n\n  override async printToTerminal() {\n    const statuses = await this.data;\n    const serviceNameMinLength = Math.max(...statuses.map((service) => service.name.length));\n    Log.info.group(bold('Service Statuses'));\n    for (const status of statuses) {\n      const name = status.name.padEnd(serviceNameMinLength);\n      if (status.status === 'passing') {\n        Log.info(`${name} ${green('✔')}`);\n      } else {\n        Log.info.group(`${name} ${red('✘')} (Updated: ${status.lastUpdated.toLocaleString()})`);\n        Log.info(`  Details: ${status.description}`);\n        Log.info(`  Status URL: ${status.statusUrl}`);\n        Log.info.groupEnd();\n      }\n    }\n    Log.info.groupEnd();\n    Log.info();\n  }\n\n  /** Retrieve the status information for a service which uses a standard API response. */\n  async getStatusFromStandardApi(service: ServiceConfig): Promise {\n    try {\n      const result = (await fetch(service.url).then((r) => r.json())) as StatusHttpResponse;\n      const status = result.status.indicator === 'none' ? 'passing' : 'failing';\n      return {\n        name: service.name,\n        statusUrl: service.prettyUrl,\n        status,\n        description: result.status.description,\n        lastUpdated: new Date(result.page.updated_at),\n      };\n    } catch {\n      return {\n        name: service.name,\n        statusUrl: service.prettyUrl,\n        status: 'failing',\n        description: `Unable to retrieve status from ${service.name}`,\n        lastUpdated: new Date(),\n      };\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {assertValidGithubConfig, getConfig} from '../../utils/config.js';\nimport {assertValidCaretakerConfig} from '../../utils/config.js';\n\nimport {CiModule} from './ci.js';\nimport {G3Module} from './g3.js';\nimport {GithubQueriesModule} from './github.js';\nimport {ServicesModule} from './services.js';\n\n/** List of modules checked for the caretaker check command. */\nconst moduleList = [GithubQueriesModule, ServicesModule, CiModule, G3Module];\n\n/** Check the status of services which Angular caretakers need to monitor. */\nexport async function checkServiceStatuses() {\n  /** The configuration for the caretaker commands. */\n  const config = await getConfig();\n  assertValidCaretakerConfig(config);\n  assertValidGithubConfig(config);\n\n  /** An authenticated git client instance. */\n  const git = await AuthenticatedGitClient.get();\n\n  /** List of instances of Caretaker Check modules */\n  const caretakerCheckModules = moduleList.map((module) => new module(git, config));\n\n  // Module's `data` is casted as Promise because the data types of the `module`'s `data`\n  // promises do not match typings, however our usage here is only to determine when the promise\n  // resolves.\n  await Promise.all(caretakerCheckModules.map((module) => module.data as Promise));\n\n  for (const module of caretakerCheckModules) {\n    await module.printToTerminal();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, CommandModule} from 'yargs';\n\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n\nimport {checkServiceStatuses} from './check.js';\n\nexport interface CaretakerCheckOptions {}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return addGithubTokenOption(argv);\n}\n\n/** Handles the command. */\nasync function handler() {\n  await checkServiceStatuses();\n}\n\n/** yargs command module for checking status information for the repository  */\nexport const CheckModule: CommandModule<{}, CaretakerCheckOptions> = {\n  handler,\n  builder,\n  command: 'check',\n  describe: 'Check the status of information the caretaker manages for the repository',\n};\n", "export const isUpKey = (key) => \n// The up key\nkey.name === 'up' ||\n    // Vim keybinding\n    key.name === 'k' ||\n    // Emacs keybinding\n    (key.ctrl && key.name === 'p');\nexport const isDownKey = (key) => \n// The down key\nkey.name === 'down' ||\n    // Vim keybinding\n    key.name === 'j' ||\n    // Emacs keybinding\n    (key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isNumberKey = (key) => '123456789'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\n", "export class AbortPromptError extends Error {\n    name = 'AbortPromptError';\n    message = 'Prompt was aborted';\n    constructor(options) {\n        super();\n        this.cause = options?.cause;\n    }\n}\nexport class CancelPromptError extends Error {\n    name = 'CancelPromptError';\n    message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n    name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n    name = 'HookError';\n}\nexport class ValidationError extends Error {\n    name = 'ValidationError';\n}\n", "import { AsyncResource } from 'node:async_hooks';\nimport { useState } from './use-state.js';\nimport { useEffect } from './use-effect.js';\nimport { makeTheme } from './make-theme.js';\nexport function usePrefix({ status = 'idle', theme, }) {\n    const [showLoader, setShowLoader] = useState(false);\n    const [tick, setTick] = useState(0);\n    const { prefix, spinner } = makeTheme(theme);\n    useEffect(() => {\n        if (status === 'loading') {\n            let tickInterval;\n            let inc = -1;\n            // Delay displaying spinner by 300ms, to avoid flickering\n            const delayTimeout = setTimeout(AsyncResource.bind(() => {\n                setShowLoader(true);\n                tickInterval = setInterval(AsyncResource.bind(() => {\n                    inc = inc + 1;\n                    setTick(inc % spinner.frames.length);\n                }), spinner.interval);\n            }), 300);\n            return () => {\n                clearTimeout(delayTimeout);\n                clearInterval(tickInterval);\n            };\n        }\n        else {\n            setShowLoader(false);\n        }\n    }, [status]);\n    if (showLoader) {\n        return spinner.frames[tick];\n    }\n    // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n    const iconName = status === 'loading' ? 'idle' : status;\n    return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n", "/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from './errors.js';\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n    const store = {\n        rl,\n        hooks: [],\n        hooksCleanup: [],\n        hooksEffect: [],\n        index: 0,\n        handleChange() { },\n    };\n    return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n    const store = createStore(rl);\n    return hookStorage.run(store, () => {\n        function cycle(render) {\n            store.handleChange = () => {\n                store.index = 0;\n                render();\n            };\n            store.handleChange();\n        }\n        return cb(cycle);\n    });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n    const store = hookStorage.getStore();\n    if (!store) {\n        throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n    }\n    return store;\n}\nexport function readline() {\n    return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n    const wrapped = (...args) => {\n        const store = getStore();\n        let shouldUpdate = false;\n        const oldHandleChange = store.handleChange;\n        store.handleChange = () => {\n            shouldUpdate = true;\n        };\n        const returnValue = fn(...args);\n        if (shouldUpdate) {\n            oldHandleChange();\n        }\n        store.handleChange = oldHandleChange;\n        return returnValue;\n    };\n    return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n    const store = getStore();\n    const { index } = store;\n    const pointer = {\n        get() {\n            return store.hooks[index];\n        },\n        set(value) {\n            store.hooks[index] = value;\n        },\n        initialized: index in store.hooks,\n    };\n    const returnValue = cb(pointer);\n    store.index++;\n    return returnValue;\n}\nexport function handleChange() {\n    getStore().handleChange();\n}\nexport const effectScheduler = {\n    queue(cb) {\n        const store = getStore();\n        const { index } = store;\n        store.hooksEffect.push(() => {\n            store.hooksCleanup[index]?.();\n            const cleanFn = cb(readline());\n            if (cleanFn != null && typeof cleanFn !== 'function') {\n                throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n            }\n            store.hooksCleanup[index] = cleanFn;\n        });\n    },\n    run() {\n        const store = getStore();\n        withUpdates(() => {\n            store.hooksEffect.forEach((effect) => {\n                effect();\n            });\n            // Warning: Clean the hooks before exiting the `withUpdates` block.\n            // Failure to do so means an updates would hit the same effects again.\n            store.hooksEffect.length = 0;\n        })();\n    },\n    clearAll() {\n        const store = getStore();\n        store.hooksCleanup.forEach((cleanFn) => {\n            cleanFn?.();\n        });\n        store.hooksEffect.length = 0;\n        store.hooksCleanup.length = 0;\n    },\n};\n", "import { withPointer, handleChange } from './hook-engine.js';\nexport function useState(defaultValue) {\n    return withPointer((pointer) => {\n        const setFn = (newValue) => {\n            // Noop if the value is still the same.\n            if (pointer.get() !== newValue) {\n                pointer.set(newValue);\n                // Trigger re-render\n                handleChange();\n            }\n        };\n        if (pointer.initialized) {\n            return [pointer.get(), setFn];\n        }\n        const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n        pointer.set(value);\n        return [value, setFn];\n    });\n}\n", "import { withPointer, effectScheduler } from './hook-engine.js';\nexport function useEffect(cb, depArray) {\n    withPointer((pointer) => {\n        const oldDeps = pointer.get();\n        const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n        if (hasChanged) {\n            effectScheduler.queue(cb);\n        }\n        pointer.set(depArray);\n    });\n}\n", "import colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n    prefix: {\n        idle: colors.blue('?'),\n        // TODO: use figure\n        done: colors.green(figures.tick),\n    },\n    spinner: {\n        interval: 80,\n        frames: ['\u280B', '\u2819', '\u2839', '\u2838', '\u283C', '\u2834', '\u2826', '\u2827', '\u2807', '\u280F'].map((frame) => colors.yellow(frame)),\n    },\n    style: {\n        answer: colors.cyan,\n        message: colors.bold,\n        error: (text) => colors.red(`> ${text}`),\n        defaultAnswer: (text) => colors.dim(`(${text})`),\n        help: colors.dim,\n        highlight: colors.cyan,\n        key: (text) => colors.cyan(colors.bold(`<${text}>`)),\n    },\n};\n", "// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n    if (process.platform !== 'win32') {\n        return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n    }\n    return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n        Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n        process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n        process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n        process.env['TERM_PROGRAM'] === 'vscode' ||\n        process.env['TERM'] === 'xterm-256color' ||\n        process.env['TERM'] === 'alacritty' ||\n        process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n    circleQuestionMark: '(?)',\n    questionMarkPrefix: '(?)',\n    square: '\u2588',\n    squareDarkShade: '\u2593',\n    squareMediumShade: '\u2592',\n    squareLightShade: '\u2591',\n    squareTop: '\u2580',\n    squareBottom: '\u2584',\n    squareLeft: '\u258C',\n    squareRight: '\u2590',\n    squareCenter: '\u25A0',\n    bullet: '\u25CF',\n    dot: '\u2024',\n    ellipsis: '\u2026',\n    pointerSmall: '\u203A',\n    triangleUp: '\u25B2',\n    triangleUpSmall: '\u25B4',\n    triangleDown: '\u25BC',\n    triangleDownSmall: '\u25BE',\n    triangleLeftSmall: '\u25C2',\n    triangleRightSmall: '\u25B8',\n    home: '\u2302',\n    heart: '\u2665',\n    musicNote: '\u266A',\n    musicNoteBeamed: '\u266B',\n    arrowUp: '\u2191',\n    arrowDown: '\u2193',\n    arrowLeft: '\u2190',\n    arrowRight: '\u2192',\n    arrowLeftRight: '\u2194',\n    arrowUpDown: '\u2195',\n    almostEqual: '\u2248',\n    notEqual: '\u2260',\n    lessOrEqual: '\u2264',\n    greaterOrEqual: '\u2265',\n    identical: '\u2261',\n    infinity: '\u221E',\n    subscriptZero: '\u2080',\n    subscriptOne: '\u2081',\n    subscriptTwo: '\u2082',\n    subscriptThree: '\u2083',\n    subscriptFour: '\u2084',\n    subscriptFive: '\u2085',\n    subscriptSix: '\u2086',\n    subscriptSeven: '\u2087',\n    subscriptEight: '\u2088',\n    subscriptNine: '\u2089',\n    oneHalf: '\u00BD',\n    oneThird: '\u2153',\n    oneQuarter: '\u00BC',\n    oneFifth: '\u2155',\n    oneSixth: '\u2159',\n    oneEighth: '\u215B',\n    twoThirds: '\u2154',\n    twoFifths: '\u2156',\n    threeQuarters: '\u00BE',\n    threeFifths: '\u2157',\n    threeEighths: '\u215C',\n    fourFifths: '\u2158',\n    fiveSixths: '\u215A',\n    fiveEighths: '\u215D',\n    sevenEighths: '\u215E',\n    line: '\u2500',\n    lineBold: '\u2501',\n    lineDouble: '\u2550',\n    lineDashed0: '\u2504',\n    lineDashed1: '\u2505',\n    lineDashed2: '\u2508',\n    lineDashed3: '\u2509',\n    lineDashed4: '\u254C',\n    lineDashed5: '\u254D',\n    lineDashed6: '\u2574',\n    lineDashed7: '\u2576',\n    lineDashed8: '\u2578',\n    lineDashed9: '\u257A',\n    lineDashed10: '\u257C',\n    lineDashed11: '\u257E',\n    lineDashed12: '\u2212',\n    lineDashed13: '\u2013',\n    lineDashed14: '\u2010',\n    lineDashed15: '\u2043',\n    lineVertical: '\u2502',\n    lineVerticalBold: '\u2503',\n    lineVerticalDouble: '\u2551',\n    lineVerticalDashed0: '\u2506',\n    lineVerticalDashed1: '\u2507',\n    lineVerticalDashed2: '\u250A',\n    lineVerticalDashed3: '\u250B',\n    lineVerticalDashed4: '\u254E',\n    lineVerticalDashed5: '\u254F',\n    lineVerticalDashed6: '\u2575',\n    lineVerticalDashed7: '\u2577',\n    lineVerticalDashed8: '\u2579',\n    lineVerticalDashed9: '\u257B',\n    lineVerticalDashed10: '\u257D',\n    lineVerticalDashed11: '\u257F',\n    lineDownLeft: '\u2510',\n    lineDownLeftArc: '\u256E',\n    lineDownBoldLeftBold: '\u2513',\n    lineDownBoldLeft: '\u2512',\n    lineDownLeftBold: '\u2511',\n    lineDownDoubleLeftDouble: '\u2557',\n    lineDownDoubleLeft: '\u2556',\n    lineDownLeftDouble: '\u2555',\n    lineDownRight: '\u250C',\n    lineDownRightArc: '\u256D',\n    lineDownBoldRightBold: '\u250F',\n    lineDownBoldRight: '\u250E',\n    lineDownRightBold: '\u250D',\n    lineDownDoubleRightDouble: '\u2554',\n    lineDownDoubleRight: '\u2553',\n    lineDownRightDouble: '\u2552',\n    lineUpLeft: '\u2518',\n    lineUpLeftArc: '\u256F',\n    lineUpBoldLeftBold: '\u251B',\n    lineUpBoldLeft: '\u251A',\n    lineUpLeftBold: '\u2519',\n    lineUpDoubleLeftDouble: '\u255D',\n    lineUpDoubleLeft: '\u255C',\n    lineUpLeftDouble: '\u255B',\n    lineUpRight: '\u2514',\n    lineUpRightArc: '\u2570',\n    lineUpBoldRightBold: '\u2517',\n    lineUpBoldRight: '\u2516',\n    lineUpRightBold: '\u2515',\n    lineUpDoubleRightDouble: '\u255A',\n    lineUpDoubleRight: '\u2559',\n    lineUpRightDouble: '\u2558',\n    lineUpDownLeft: '\u2524',\n    lineUpBoldDownBoldLeftBold: '\u252B',\n    lineUpBoldDownBoldLeft: '\u2528',\n    lineUpDownLeftBold: '\u2525',\n    lineUpBoldDownLeftBold: '\u2529',\n    lineUpDownBoldLeftBold: '\u252A',\n    lineUpDownBoldLeft: '\u2527',\n    lineUpBoldDownLeft: '\u2526',\n    lineUpDoubleDownDoubleLeftDouble: '\u2563',\n    lineUpDoubleDownDoubleLeft: '\u2562',\n    lineUpDownLeftDouble: '\u2561',\n    lineUpDownRight: '\u251C',\n    lineUpBoldDownBoldRightBold: '\u2523',\n    lineUpBoldDownBoldRight: '\u2520',\n    lineUpDownRightBold: '\u251D',\n    lineUpBoldDownRightBold: '\u2521',\n    lineUpDownBoldRightBold: '\u2522',\n    lineUpDownBoldRight: '\u251F',\n    lineUpBoldDownRight: '\u251E',\n    lineUpDoubleDownDoubleRightDouble: '\u2560',\n    lineUpDoubleDownDoubleRight: '\u255F',\n    lineUpDownRightDouble: '\u255E',\n    lineDownLeftRight: '\u252C',\n    lineDownBoldLeftBoldRightBold: '\u2533',\n    lineDownLeftBoldRightBold: '\u252F',\n    lineDownBoldLeftRight: '\u2530',\n    lineDownBoldLeftBoldRight: '\u2531',\n    lineDownBoldLeftRightBold: '\u2532',\n    lineDownLeftRightBold: '\u252E',\n    lineDownLeftBoldRight: '\u252D',\n    lineDownDoubleLeftDoubleRightDouble: '\u2566',\n    lineDownDoubleLeftRight: '\u2565',\n    lineDownLeftDoubleRightDouble: '\u2564',\n    lineUpLeftRight: '\u2534',\n    lineUpBoldLeftBoldRightBold: '\u253B',\n    lineUpLeftBoldRightBold: '\u2537',\n    lineUpBoldLeftRight: '\u2538',\n    lineUpBoldLeftBoldRight: '\u2539',\n    lineUpBoldLeftRightBold: '\u253A',\n    lineUpLeftRightBold: '\u2536',\n    lineUpLeftBoldRight: '\u2535',\n    lineUpDoubleLeftDoubleRightDouble: '\u2569',\n    lineUpDoubleLeftRight: '\u2568',\n    lineUpLeftDoubleRightDouble: '\u2567',\n    lineUpDownLeftRight: '\u253C',\n    lineUpBoldDownBoldLeftBoldRightBold: '\u254B',\n    lineUpDownBoldLeftBoldRightBold: '\u2548',\n    lineUpBoldDownLeftBoldRightBold: '\u2547',\n    lineUpBoldDownBoldLeftRightBold: '\u254A',\n    lineUpBoldDownBoldLeftBoldRight: '\u2549',\n    lineUpBoldDownLeftRight: '\u2540',\n    lineUpDownBoldLeftRight: '\u2541',\n    lineUpDownLeftBoldRight: '\u253D',\n    lineUpDownLeftRightBold: '\u253E',\n    lineUpBoldDownBoldLeftRight: '\u2542',\n    lineUpDownLeftBoldRightBold: '\u253F',\n    lineUpBoldDownLeftBoldRight: '\u2543',\n    lineUpBoldDownLeftRightBold: '\u2544',\n    lineUpDownBoldLeftBoldRight: '\u2545',\n    lineUpDownBoldLeftRightBold: '\u2546',\n    lineUpDoubleDownDoubleLeftDoubleRightDouble: '\u256C',\n    lineUpDoubleDownDoubleLeftRight: '\u256B',\n    lineUpDownLeftDoubleRightDouble: '\u256A',\n    lineCross: '\u2573',\n    lineBackslash: '\u2572',\n    lineSlash: '\u2571',\n};\nconst specialMainSymbols = {\n    tick: '\u2714',\n    info: '\u2139',\n    warning: '\u26A0',\n    cross: '\u2718',\n    squareSmall: '\u25FB',\n    squareSmallFilled: '\u25FC',\n    circle: '\u25EF',\n    circleFilled: '\u25C9',\n    circleDotted: '\u25CC',\n    circleDouble: '\u25CE',\n    circleCircle: '\u24DE',\n    circleCross: '\u24E7',\n    circlePipe: '\u24BE',\n    radioOn: '\u25C9',\n    radioOff: '\u25EF',\n    checkboxOn: '\u2612',\n    checkboxOff: '\u2610',\n    checkboxCircleOn: '\u24E7',\n    checkboxCircleOff: '\u24BE',\n    pointer: '\u276F',\n    triangleUpOutline: '\u25B3',\n    triangleLeft: '\u25C0',\n    triangleRight: '\u25B6',\n    lozenge: '\u25C6',\n    lozengeOutline: '\u25C7',\n    hamburger: '\u2630',\n    smiley: '\u32E1',\n    mustache: '\u0DF4',\n    star: '\u2605',\n    play: '\u25B6',\n    nodejs: '\u2B22',\n    oneSeventh: '\u2150',\n    oneNinth: '\u2151',\n    oneTenth: '\u2152',\n};\nconst specialFallbackSymbols = {\n    tick: '\u221A',\n    info: 'i',\n    warning: '\u203C',\n    cross: '\u00D7',\n    squareSmall: '\u25A1',\n    squareSmallFilled: '\u25A0',\n    circle: '( )',\n    circleFilled: '(*)',\n    circleDotted: '( )',\n    circleDouble: '( )',\n    circleCircle: '(\u25CB)',\n    circleCross: '(\u00D7)',\n    circlePipe: '(\u2502)',\n    radioOn: '(*)',\n    radioOff: '( )',\n    checkboxOn: '[\u00D7]',\n    checkboxOff: '[ ]',\n    checkboxCircleOn: '(\u00D7)',\n    checkboxCircleOff: '( )',\n    pointer: '>',\n    triangleUpOutline: '\u2206',\n    triangleLeft: '\u25C4',\n    triangleRight: '\u25BA',\n    lozenge: '\u2666',\n    lozengeOutline: '\u25CA',\n    hamburger: '\u2261',\n    smiley: '\u263A',\n    mustache: '\u250C\u2500\u2510',\n    star: '\u2736',\n    play: '\u25BA',\n    nodejs: '\u2666',\n    oneSeventh: '1/7',\n    oneNinth: '1/9',\n    oneTenth: '1/10',\n};\nexport const mainSymbols = { ...common, ...specialMainSymbols };\nexport const fallbackSymbols = {\n    ...common,\n    ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain ? mainSymbols : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n    if (useFallback) {\n        for (const [key, mainSymbol] of replacements) {\n            const fallbackSymbol = fallbackSymbols[key];\n            if (!fallbackSymbol) {\n                throw new Error(`Unable to find fallback for ${key}`);\n            }\n            string = string.replaceAll(mainSymbol, fallbackSymbol);\n        }\n    }\n    return string;\n};\n", "import { defaultTheme } from './theme.js';\nfunction isPlainObject(value) {\n    if (typeof value !== 'object' || value === null)\n        return false;\n    let proto = value;\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n    const output = {};\n    for (const obj of objects) {\n        for (const [key, value] of Object.entries(obj)) {\n            const prevValue = output[key];\n            output[key] =\n                isPlainObject(prevValue) && isPlainObject(value)\n                    ? deepMerge(prevValue, value)\n                    : value;\n        }\n    }\n    return output;\n}\nexport function makeTheme(...themes) {\n    const themesToMerge = [\n        defaultTheme,\n        ...themes.filter((theme) => theme != null),\n    ];\n    return deepMerge(...themesToMerge);\n}\n", "import { withPointer } from './hook-engine.js';\nexport function useMemo(fn, dependencies) {\n    return withPointer((pointer) => {\n        const prev = pointer.get();\n        if (!prev ||\n            prev.dependencies.length !== dependencies.length ||\n            prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n            const value = fn();\n            pointer.set({ value, dependencies });\n            return value;\n        }\n        return prev.value;\n    });\n}\n", "import { useState } from './use-state.js';\nexport function useRef(val) {\n    return useState({ current: val })[0];\n}\n", "import { useRef } from './use-ref.js';\nimport { useEffect } from './use-effect.js';\nimport { withUpdates } from './hook-engine.js';\nexport function useKeypress(userHandler) {\n    const signal = useRef(userHandler);\n    signal.current = userHandler;\n    useEffect((rl) => {\n        let ignore = false;\n        const handler = withUpdates((_input, event) => {\n            if (ignore)\n                return;\n            void signal.current(event, rl);\n        });\n        rl.input.on('keypress', handler);\n        return () => {\n            ignore = true;\n            rl.input.removeListener('keypress', handler);\n        };\n    }, []);\n}\n", "import cliWidth from 'cli-width';\nimport wrapAnsi from 'wrap-ansi';\nimport { readline } from './hook-engine.js';\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n    return content\n        .split('\\n')\n        .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n        .split('\\n')\n        .map((str) => str.trimEnd()))\n        .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n    return cliWidth({ defaultWidth: 80, output: readline().output });\n}\n", "import { breakLines } from '../utils.js';\nfunction split(content, width) {\n    return breakLines(content, width).split('\\n');\n}\n/**\n * Rotates an array of items by an integer number of positions.\n * @param {number} count The number of positions to rotate by\n * @param {T[]} items The items to rotate\n */\nfunction rotate(count, items) {\n    const max = items.length;\n    const offset = ((count % max) + max) % max;\n    return [...items.slice(offset), ...items.slice(0, offset)];\n}\n/**\n * Renders a page of items as lines that fit within the given width ensuring\n * that the number of lines is not greater than the page size, and the active\n * item renders at the provided position, while prioritizing that as many lines\n * of the active item get rendered as possible.\n */\nexport function lines({ items, width, renderItem, active, position: requested, pageSize, }) {\n    const layouts = items.map((item, index) => ({\n        item,\n        index,\n        isActive: index === active,\n    }));\n    const layoutsInPage = rotate(active - requested, layouts).slice(0, pageSize);\n    const renderItemAt = (index) => layoutsInPage[index] == null ? [] : split(renderItem(layoutsInPage[index]), width);\n    // Create a blank array of lines for the page\n    const pageBuffer = Array.from({ length: pageSize });\n    // Render the active item to decide the position\n    const activeItem = renderItemAt(requested).slice(0, pageSize);\n    const position = requested + activeItem.length <= pageSize ? requested : pageSize - activeItem.length;\n    // Add the lines of the active item into the page\n    pageBuffer.splice(position, activeItem.length, ...activeItem);\n    // Fill the page under the active item\n    let bufferPointer = position + activeItem.length;\n    let layoutPointer = requested + 1;\n    while (bufferPointer < pageSize && layoutPointer < layoutsInPage.length) {\n        for (const line of renderItemAt(layoutPointer)) {\n            pageBuffer[bufferPointer++] = line;\n            if (bufferPointer >= pageSize)\n                break;\n        }\n        layoutPointer++;\n    }\n    // Fill the page over the active item\n    bufferPointer = position - 1;\n    layoutPointer = requested - 1;\n    while (bufferPointer >= 0 && layoutPointer >= 0) {\n        for (const line of renderItemAt(layoutPointer).reverse()) {\n            pageBuffer[bufferPointer--] = line;\n            if (bufferPointer < 0)\n                break;\n        }\n        layoutPointer--;\n    }\n    return pageBuffer.filter((line) => typeof line === 'string');\n}\n", "/**\n * Creates the next position for the active item considering a finite list of\n * items to be rendered on a page.\n */\nexport function finite({ active, pageSize, total, }) {\n    const middle = Math.floor(pageSize / 2);\n    if (total <= pageSize || active < middle)\n        return active;\n    if (active >= total - middle)\n        return active + pageSize - total;\n    return middle;\n}\n/**\n * Creates the next position for the active item considering an infinitely\n * looping list of items to be rendered on the page.\n */\nexport function infinite({ active, lastActive, total, pageSize, pointer, }) {\n    if (total <= pageSize)\n        return active;\n    // Move the position only when the user moves down, and when the\n    // navigation fits within a single page\n    if (lastActive < active && active - lastActive < pageSize) {\n        // Limit it to the middle of the list\n        return Math.min(Math.floor(pageSize / 2), pointer + active - lastActive);\n    }\n    return pointer;\n}\n", "import { useRef } from '../use-ref.js';\nimport { readlineWidth } from '../utils.js';\nimport { lines } from './lines.js';\nimport { finite, infinite } from './position.js';\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n    const state = useRef({ position: 0, lastActive: 0 });\n    const position = loop\n        ? infinite({\n            active,\n            lastActive: state.current.lastActive,\n            total: items.length,\n            pageSize,\n            pointer: state.current.position,\n        })\n        : finite({\n            active,\n            total: items.length,\n            pageSize,\n        });\n    state.current.position = position;\n    state.current.lastActive = active;\n    return lines({\n        items,\n        width: readlineWidth(),\n        renderItem,\n        active,\n        position,\n        pageSize,\n    }).join('\\n');\n}\n", "import * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from './screen-manager.js';\nimport { PromisePolyfill } from './promise-polyfill.js';\nimport { withHooks, effectScheduler } from './hook-engine.js';\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from './errors.js';\nfunction getCallSites() {\n    const _prepareStackTrace = Error.prepareStackTrace;\n    try {\n        let result = [];\n        Error.prepareStackTrace = (_, callSites) => {\n            const callSitesWithoutCurrent = callSites.slice(1);\n            result = callSitesWithoutCurrent;\n            return callSitesWithoutCurrent;\n        };\n        // eslint-disable-next-line @typescript-eslint/no-unused-expressions, unicorn/error-message\n        new Error().stack;\n        return result;\n    }\n    finally {\n        Error.prepareStackTrace = _prepareStackTrace;\n    }\n}\nexport function createPrompt(view) {\n    const callSites = getCallSites();\n    const callerFilename = callSites[1]?.getFileName?.();\n    const prompt = (config, context = {}) => {\n        // Default `input` to stdin\n        const { input = process.stdin, signal } = context;\n        const cleanups = new Set();\n        // Add mute capabilities to the output\n        const output = new MuteStream();\n        output.pipe(context.output ?? process.stdout);\n        const rl = readline.createInterface({\n            terminal: true,\n            input,\n            output,\n        });\n        const screen = new ScreenManager(rl);\n        const { promise, resolve, reject } = PromisePolyfill.withResolver();\n        const cancel = () => reject(new CancelPromptError());\n        if (signal) {\n            const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n            if (signal.aborted) {\n                abort();\n                return Object.assign(promise, { cancel });\n            }\n            signal.addEventListener('abort', abort);\n            cleanups.add(() => signal.removeEventListener('abort', abort));\n        }\n        cleanups.add(onSignalExit((code, signal) => {\n            reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n        }));\n        // Re-renders only happen when the state change; but the readline cursor could change position\n        // and that also requires a re-render (and a manual one because we mute the streams).\n        // We set the listener after the initial workLoop to avoid a double render if render triggered\n        // by a state change sets the cursor to the right position.\n        const checkCursorPos = () => screen.checkCursorPos();\n        rl.input.on('keypress', checkCursorPos);\n        cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n        return withHooks(rl, (cycle) => {\n            // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n            // triggers after the process is done (which happens after timeouts are done triggering.)\n            // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n            const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n            rl.on('close', hooksCleanup);\n            cleanups.add(() => rl.removeListener('close', hooksCleanup));\n            cycle(() => {\n                try {\n                    const nextView = view(config, (value) => {\n                        setImmediate(() => resolve(value));\n                    });\n                    // Typescript won't allow this, but not all users rely on typescript.\n                    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n                    if (nextView === undefined) {\n                        throw new Error(`Prompt functions must return a string.\\n    at ${callerFilename}`);\n                    }\n                    const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n                    screen.render(content, bottomContent);\n                    effectScheduler.run();\n                }\n                catch (error) {\n                    reject(error);\n                }\n            });\n            return Object.assign(promise\n                .then((answer) => {\n                effectScheduler.clearAll();\n                return answer;\n            }, (error) => {\n                effectScheduler.clearAll();\n                throw error;\n            })\n                // Wait for the promise to settle, then cleanup.\n                .finally(() => {\n                cleanups.forEach((cleanup) => cleanup());\n                screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n                output.end();\n            })\n                // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n                .then(() => promise), { cancel });\n        });\n    };\n    return prompt;\n}\n", "/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems.  Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL.  It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n  signals.push(\n    'SIGALRM',\n    'SIGABRT',\n    'SIGVTALRM',\n    'SIGXCPU',\n    'SIGXFSZ',\n    'SIGUSR2',\n    'SIGTRAP',\n    'SIGSYS',\n    'SIGQUIT',\n    'SIGIOT'\n    // should detect profiler and enable/disable accordingly.\n    // see #21\n    // 'SIGPROF'\n  )\n}\n\nif (process.platform === 'linux') {\n  signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n", "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n  reallyExit: (code?: number | undefined | null) => any\n  emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n  !!process &&\n  typeof process === 'object' &&\n  typeof process.removeListener === 'function' &&\n  typeof process.emit === 'function' &&\n  typeof process.reallyExit === 'function' &&\n  typeof process.listeners === 'function' &&\n  typeof process.kill === 'function' &&\n  typeof process.pid === 'number' &&\n  typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n  code: number | null | undefined,\n  signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n  emitted: Emitted = {\n    afterExit: false,\n    exit: false,\n  }\n\n  listeners: Listeners = {\n    afterExit: [],\n    exit: [],\n  }\n\n  count: number = 0\n  id: number = Math.random()\n\n  constructor() {\n    if (global[kExitEmitter]) {\n      return global[kExitEmitter]\n    }\n    ObjectDefineProperty(global, kExitEmitter, {\n      value: this,\n      writable: false,\n      enumerable: false,\n      configurable: false,\n    })\n  }\n\n  on(ev: ExitEvent, fn: Handler) {\n    this.listeners[ev].push(fn)\n  }\n\n  removeListener(ev: ExitEvent, fn: Handler) {\n    const list = this.listeners[ev]\n    const i = list.indexOf(fn)\n    /* c8 ignore start */\n    if (i === -1) {\n      return\n    }\n    /* c8 ignore stop */\n    if (i === 0 && list.length === 1) {\n      list.length = 0\n    } else {\n      list.splice(i, 1)\n    }\n  }\n\n  emit(\n    ev: ExitEvent,\n    code: number | null | undefined,\n    signal: NodeJS.Signals | null\n  ): boolean {\n    if (this.emitted[ev]) {\n      return false\n    }\n    this.emitted[ev] = true\n    let ret: boolean = false\n    for (const fn of this.listeners[ev]) {\n      ret = fn(code, signal) === true || ret\n    }\n    if (ev === 'exit') {\n      ret = this.emit('afterExit', code, signal) || ret\n    }\n    return ret\n  }\n}\n\nabstract class SignalExitBase {\n  abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n  abstract load(): void\n  abstract unload(): void\n}\n\nconst signalExitWrap = (handler: T) => {\n  return {\n    onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n      return handler.onExit(cb, opts)\n    },\n    load() {\n      return handler.load()\n    },\n    unload() {\n      return handler.unload()\n    },\n  }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n  onExit() {\n    return () => {}\n  }\n  load() {}\n  unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n  // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n  // so use a supported signal instead\n  /* c8 ignore start */\n  #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n  /* c8 ignore stop */\n  #emitter = new Emitter()\n  #process: ProcessRE\n  #originalProcessEmit: ProcessRE['emit']\n  #originalProcessReallyExit: ProcessRE['reallyExit']\n\n  #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n  #loaded: boolean = false\n\n  constructor(process: ProcessRE) {\n    super()\n    this.#process = process\n    // { : , ... }\n    this.#sigListeners = {}\n    for (const sig of signals) {\n      this.#sigListeners[sig] = () => {\n        // If there are no other listeners, an exit is coming!\n        // Simplest way: remove us and then re-send the signal.\n        // We know that this will kill the process, so we can\n        // safely emit now.\n        const listeners = this.#process.listeners(sig)\n        let { count } = this.#emitter\n        // This is a workaround for the fact that signal-exit v3 and signal\n        // exit v4 are not aware of each other, and each will attempt to let\n        // the other handle it, so neither of them do. To correct this, we\n        // detect if we're the only handler *except* for previous versions\n        // of signal-exit, and increment by the count of listeners it has\n        // created.\n        /* c8 ignore start */\n        const p = process as unknown as {\n          __signal_exit_emitter__?: { count: number }\n        }\n        if (\n          typeof p.__signal_exit_emitter__ === 'object' &&\n          typeof p.__signal_exit_emitter__.count === 'number'\n        ) {\n          count += p.__signal_exit_emitter__.count\n        }\n        /* c8 ignore stop */\n        if (listeners.length === count) {\n          this.unload()\n          const ret = this.#emitter.emit('exit', null, sig)\n          /* c8 ignore start */\n          const s = sig === 'SIGHUP' ? this.#hupSig : sig\n          if (!ret) process.kill(process.pid, s)\n          /* c8 ignore stop */\n        }\n      }\n    }\n\n    this.#originalProcessReallyExit = process.reallyExit\n    this.#originalProcessEmit = process.emit\n  }\n\n  onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n    /* c8 ignore start */\n    if (!processOk(this.#process)) {\n      return () => {}\n    }\n    /* c8 ignore stop */\n\n    if (this.#loaded === false) {\n      this.load()\n    }\n\n    const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n    this.#emitter.on(ev, cb)\n    return () => {\n      this.#emitter.removeListener(ev, cb)\n      if (\n        this.#emitter.listeners['exit'].length === 0 &&\n        this.#emitter.listeners['afterExit'].length === 0\n      ) {\n        this.unload()\n      }\n    }\n  }\n\n  load() {\n    if (this.#loaded) {\n      return\n    }\n    this.#loaded = true\n\n    // This is the number of onSignalExit's that are in play.\n    // It's important so that we can count the correct number of\n    // listeners on signals, and don't wait for the other one to\n    // handle it instead of us.\n    this.#emitter.count += 1\n\n    for (const sig of signals) {\n      try {\n        const fn = this.#sigListeners[sig]\n        if (fn) this.#process.on(sig, fn)\n      } catch (_) {}\n    }\n\n    this.#process.emit = (ev: string, ...a: any[]) => {\n      return this.#processEmit(ev, ...a)\n    }\n    this.#process.reallyExit = (code?: number | null | undefined) => {\n      return this.#processReallyExit(code)\n    }\n  }\n\n  unload() {\n    if (!this.#loaded) {\n      return\n    }\n    this.#loaded = false\n\n    signals.forEach(sig => {\n      const listener = this.#sigListeners[sig]\n      /* c8 ignore start */\n      if (!listener) {\n        throw new Error('Listener not defined for signal: ' + sig)\n      }\n      /* c8 ignore stop */\n      try {\n        this.#process.removeListener(sig, listener)\n        /* c8 ignore start */\n      } catch (_) {}\n      /* c8 ignore stop */\n    })\n    this.#process.emit = this.#originalProcessEmit\n    this.#process.reallyExit = this.#originalProcessReallyExit\n    this.#emitter.count -= 1\n  }\n\n  #processReallyExit(code?: number | null | undefined) {\n    /* c8 ignore start */\n    if (!processOk(this.#process)) {\n      return 0\n    }\n    this.#process.exitCode = code || 0\n    /* c8 ignore stop */\n\n    this.#emitter.emit('exit', this.#process.exitCode, null)\n    return this.#originalProcessReallyExit.call(\n      this.#process,\n      this.#process.exitCode\n    )\n  }\n\n  #processEmit(ev: string, ...args: any[]): any {\n    const og = this.#originalProcessEmit\n    if (ev === 'exit' && processOk(this.#process)) {\n      if (typeof args[0] === 'number') {\n        this.#process.exitCode = args[0]\n        /* c8 ignore start */\n      }\n      /* c8 ignore start */\n      const ret = og.call(this.#process, ev, ...args)\n      /* c8 ignore start */\n      this.#emitter.emit('exit', this.#process.exitCode, null)\n      /* c8 ignore stop */\n      return ret\n    } else {\n      return og.call(this.#process, ev, ...args)\n    }\n  }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n  /**\n   * Called when the process is exiting, whether via signal, explicit\n   * exit, or running out of stuff to do.\n   *\n   * If the global process object is not suitable for instrumentation,\n   * then this will be a no-op.\n   *\n   * Returns a function that may be used to unload signal-exit.\n   */\n  onExit,\n\n  /**\n   * Load the listeners.  Likely you never need to call this, unless\n   * doing a rather deep integration with signal-exit functionality.\n   * Mostly exposed for the benefit of testing.\n   *\n   * @internal\n   */\n  load,\n\n  /**\n   * Unload the listeners.  Likely you never need to call this, unless\n   * doing a rather deep integration with signal-exit functionality.\n   * Mostly exposed for the benefit of testing.\n   *\n   * @internal\n   */\n  unload,\n} = signalExitWrap(\n  processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n", "import stripAnsi from 'strip-ansi';\nimport ansiEscapes from 'ansi-escapes';\nimport { breakLines, readlineWidth } from './utils.js';\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nfunction cursorDown(n) {\n    return n > 0 ? ansiEscapes.cursorDown(n) : '';\n}\nexport default class ScreenManager {\n    rl;\n    // These variables are keeping information to allow correct prompt re-rendering\n    height = 0;\n    extraLinesUnderPrompt = 0;\n    cursorPos;\n    constructor(rl) {\n        this.rl = rl;\n        this.rl = rl;\n        this.cursorPos = rl.getCursorPos();\n    }\n    write(content) {\n        this.rl.output.unmute();\n        this.rl.output.write(content);\n        this.rl.output.mute();\n    }\n    render(content, bottomContent = '') {\n        // Write message to screen and setPrompt to control backspace\n        const promptLine = lastLine(content);\n        const rawPromptLine = stripAnsi(promptLine);\n        // Remove the rl.line from our prompt. We can't rely on the content of\n        // rl.line (mainly because of the password prompt), so just rely on it's\n        // length.\n        let prompt = rawPromptLine;\n        if (this.rl.line.length > 0) {\n            prompt = prompt.slice(0, -this.rl.line.length);\n        }\n        this.rl.setPrompt(prompt);\n        // SetPrompt will change cursor position, now we can get correct value\n        this.cursorPos = this.rl.getCursorPos();\n        const width = readlineWidth();\n        content = breakLines(content, width);\n        bottomContent = breakLines(bottomContent, width);\n        // Manually insert an extra line if we're at the end of the line.\n        // This prevent the cursor from appearing at the beginning of the\n        // current line.\n        if (rawPromptLine.length % width === 0) {\n            content += '\\n';\n        }\n        let output = content + (bottomContent ? '\\n' + bottomContent : '');\n        /**\n         * Re-adjust the cursor at the correct position.\n         */\n        // We need to consider parts of the prompt under the cursor as part of the bottom\n        // content in order to correctly cleanup and re-render.\n        const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n        const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n        // Return cursor to the input position (on top of the bottomContent)\n        if (bottomContentHeight > 0)\n            output += ansiEscapes.cursorUp(bottomContentHeight);\n        // Return cursor to the initial left offset.\n        output += ansiEscapes.cursorTo(this.cursorPos.cols);\n        /**\n         * Render and store state for future re-rendering\n         */\n        this.write(cursorDown(this.extraLinesUnderPrompt) +\n            ansiEscapes.eraseLines(this.height) +\n            output);\n        this.extraLinesUnderPrompt = bottomContentHeight;\n        this.height = height(output);\n    }\n    checkCursorPos() {\n        const cursorPos = this.rl.getCursorPos();\n        if (cursorPos.cols !== this.cursorPos.cols) {\n            this.write(ansiEscapes.cursorTo(cursorPos.cols));\n            this.cursorPos = cursorPos;\n        }\n    }\n    done({ clearContent }) {\n        this.rl.setPrompt('');\n        let output = cursorDown(this.extraLinesUnderPrompt);\n        output += clearContent ? ansiEscapes.eraseLines(this.height) : '\\n';\n        output += ansiEscapes.cursorShow;\n        this.write(output);\n        this.rl.close();\n    }\n}\n", "// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n    // Available starting from Node 22\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n    static withResolver() {\n        let resolve;\n        let reject;\n        const promise = new Promise((res, rej) => {\n            resolve = res;\n            reject = rej;\n        });\n        return { promise, resolve: resolve, reject: reject };\n    }\n}\n", "import colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n    separator = colors.dim(Array.from({ length: 15 }).join(figures.line));\n    type = 'separator';\n    constructor(separator) {\n        if (separator) {\n            this.separator = separator;\n        }\n    }\n    static isSeparator(choice) {\n        return Boolean(choice &&\n            typeof choice === 'object' &&\n            'type' in choice &&\n            choice.type === 'separator');\n    }\n}\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, makeTheme, isUpKey, isDownKey, isSpaceKey, isNumberKey, isEnterKey, ValidationError, Separator, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nimport ansiEscapes from 'ansi-escapes';\nconst checkboxTheme = {\n    icon: {\n        checked: colors.green(figures.circleFilled),\n        unchecked: figures.circle,\n        cursor: figures.pointer,\n    },\n    style: {\n        disabledChoice: (text) => colors.dim(`- ${text}`),\n        renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(', '),\n        description: (text) => colors.cyan(text),\n    },\n    helpMode: 'auto',\n};\nfunction isSelectable(item) {\n    return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isChecked(item) {\n    return isSelectable(item) && Boolean(item.checked);\n}\nfunction toggle(item) {\n    return isSelectable(item) ? { ...item, checked: !item.checked } : item;\n}\nfunction check(checked) {\n    return function (item) {\n        return isSelectable(item) ? { ...item, checked } : item;\n    };\n}\nfunction normalizeChoices(choices) {\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice))\n            return choice;\n        if (typeof choice === 'string') {\n            return {\n                value: choice,\n                name: choice,\n                short: choice,\n                disabled: false,\n                checked: false,\n            };\n        }\n        const name = choice.name ?? String(choice.value);\n        return {\n            value: choice.value,\n            name,\n            short: choice.short ?? name,\n            description: choice.description,\n            disabled: choice.disabled ?? false,\n            checked: choice.checked ?? false,\n        };\n    });\n}\nexport default createPrompt((config, done) => {\n    const { instructions, pageSize = 7, loop = true, required, validate = () => true, } = config;\n    const theme = makeTheme(checkboxTheme, config.theme);\n    const firstRender = useRef(true);\n    const [status, setStatus] = useState('idle');\n    const prefix = usePrefix({ status, theme });\n    const [items, setItems] = useState(normalizeChoices(config.choices));\n    const bounds = useMemo(() => {\n        const first = items.findIndex(isSelectable);\n        const last = items.findLastIndex(isSelectable);\n        if (first === -1) {\n            throw new ValidationError('[checkbox prompt] No selectable choices. All choices are disabled.');\n        }\n        return { first, last };\n    }, [items]);\n    const [active, setActive] = useState(bounds.first);\n    const [showHelpTip, setShowHelpTip] = useState(true);\n    const [errorMsg, setError] = useState();\n    useKeypress(async (key) => {\n        if (isEnterKey(key)) {\n            const selection = items.filter(isChecked);\n            const isValid = await validate([...selection]);\n            if (required && !items.some(isChecked)) {\n                setError('At least one choice must be selected');\n            }\n            else if (isValid === true) {\n                setStatus('done');\n                done(selection.map((choice) => choice.value));\n            }\n            else {\n                setError(isValid || 'You must select a valid value');\n            }\n        }\n        else if (isUpKey(key) || isDownKey(key)) {\n            if (loop ||\n                (isUpKey(key) && active !== bounds.first) ||\n                (isDownKey(key) && active !== bounds.last)) {\n                const offset = isUpKey(key) ? -1 : 1;\n                let next = active;\n                do {\n                    next = (next + offset + items.length) % items.length;\n                } while (!isSelectable(items[next]));\n                setActive(next);\n            }\n        }\n        else if (isSpaceKey(key)) {\n            setError(undefined);\n            setShowHelpTip(false);\n            setItems(items.map((choice, i) => (i === active ? toggle(choice) : choice)));\n        }\n        else if (key.name === 'a') {\n            const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked);\n            setItems(items.map(check(selectAll)));\n        }\n        else if (key.name === 'i') {\n            setItems(items.map(toggle));\n        }\n        else if (isNumberKey(key)) {\n            // Adjust index to start at 1\n            const position = Number(key.name) - 1;\n            const item = items[position];\n            if (item != null && isSelectable(item)) {\n                setActive(position);\n                setItems(items.map((choice, i) => (i === position ? toggle(choice) : choice)));\n            }\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let description;\n    const page = usePagination({\n        items,\n        active,\n        renderItem({ item, isActive }) {\n            if (Separator.isSeparator(item)) {\n                return ` ${item.separator}`;\n            }\n            if (item.disabled) {\n                const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n                return theme.style.disabledChoice(`${item.name} ${disabledLabel}`);\n            }\n            if (isActive) {\n                description = item.description;\n            }\n            const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked;\n            const color = isActive ? theme.style.highlight : (x) => x;\n            const cursor = isActive ? theme.icon.cursor : ' ';\n            return color(`${cursor}${checkbox} ${item.name}`);\n        },\n        pageSize,\n        loop,\n    });\n    if (status === 'done') {\n        const selection = items.filter(isChecked);\n        const answer = theme.style.answer(theme.style.renderSelectedChoices(selection, items));\n        return `${prefix} ${message} ${answer}`;\n    }\n    let helpTipTop = '';\n    let helpTipBottom = '';\n    if (theme.helpMode === 'always' ||\n        (theme.helpMode === 'auto' &&\n            showHelpTip &&\n            (instructions === undefined || instructions))) {\n        if (typeof instructions === 'string') {\n            helpTipTop = instructions;\n        }\n        else {\n            const keys = [\n                `${theme.style.key('space')} to select`,\n                `${theme.style.key('a')} to toggle all`,\n                `${theme.style.key('i')} to invert selection`,\n                `and ${theme.style.key('enter')} to proceed`,\n            ];\n            helpTipTop = ` (Press ${keys.join(', ')})`;\n        }\n        if (items.length > pageSize &&\n            (theme.helpMode === 'always' ||\n                // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n                (theme.helpMode === 'auto' && firstRender.current))) {\n            helpTipBottom = `\\n${theme.style.help('(Use arrow keys to reveal more choices)')}`;\n            firstRender.current = false;\n        }\n    }\n    const choiceDescription = description\n        ? `\\n${theme.style.description(description)}`\n        : ``;\n    let error = '';\n    if (errorMsg) {\n        error = `\\n${theme.style.error(errorMsg)}`;\n    }\n    return `${prefix} ${message}${helpTipTop}\\n${page}${helpTipBottom}${choiceDescription}${error}${ansiEscapes.cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n", "import { AsyncResource } from 'node:async_hooks';\nimport { editAsync } from 'external-editor';\nimport { createPrompt, useEffect, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core';\nconst editorTheme = {\n    validationFailureMode: 'keep',\n};\nexport default createPrompt((config, done) => {\n    const { waitForUseInput = true, file: { postfix = config.postfix ?? '.txt', ...fileProps } = {}, validate = () => true, } = config;\n    const theme = makeTheme(editorTheme, config.theme);\n    const [status, setStatus] = useState('idle');\n    const [value = '', setValue] = useState(config.default);\n    const [errorMsg, setError] = useState();\n    const prefix = usePrefix({ status, theme });\n    function startEditor(rl) {\n        rl.pause();\n        // Note: The bind call isn't strictly required. But we need it for our mocks to work as expected.\n        const editCallback = AsyncResource.bind(async (error, answer) => {\n            rl.resume();\n            if (error) {\n                setError(error.toString());\n            }\n            else {\n                setStatus('loading');\n                const isValid = await validate(answer);\n                if (isValid === true) {\n                    setError(undefined);\n                    setStatus('done');\n                    done(answer);\n                }\n                else {\n                    if (theme.validationFailureMode === 'clear') {\n                        setValue(config.default);\n                    }\n                    else {\n                        setValue(answer);\n                    }\n                    setError(isValid || 'You must provide a valid value');\n                    setStatus('idle');\n                }\n            }\n        });\n        editAsync(value, (error, answer) => void editCallback(error, answer), {\n            postfix,\n            ...fileProps,\n        });\n    }\n    useEffect((rl) => {\n        if (!waitForUseInput) {\n            startEditor(rl);\n        }\n    }, []);\n    useKeypress((key, rl) => {\n        // Ignore keypress while our prompt is doing other processing.\n        if (status !== 'idle') {\n            return;\n        }\n        if (isEnterKey(key)) {\n            startEditor(rl);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let helpTip = '';\n    if (status === 'loading') {\n        helpTip = theme.style.help('Received');\n    }\n    else if (status === 'idle') {\n        const enterKey = theme.style.key('enter');\n        helpTip = theme.style.help(`Press ${enterKey} to launch your preferred editor.`);\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [[prefix, message, helpTip].filter(Boolean).join(' '), error];\n});\n", "import { createPrompt, useState, useKeypress, isEnterKey, usePrefix, makeTheme, } from '@inquirer/core';\nfunction getBooleanValue(value, defaultValue) {\n    let answer = defaultValue !== false;\n    if (/^(y|yes)/i.test(value))\n        answer = true;\n    else if (/^(n|no)/i.test(value))\n        answer = false;\n    return answer;\n}\nfunction boolToString(value) {\n    return value ? 'Yes' : 'No';\n}\nexport default createPrompt((config, done) => {\n    const { transformer = boolToString } = config;\n    const [status, setStatus] = useState('idle');\n    const [value, setValue] = useState('');\n    const theme = makeTheme(config.theme);\n    const prefix = usePrefix({ status, theme });\n    useKeypress((key, rl) => {\n        if (isEnterKey(key)) {\n            const answer = getBooleanValue(value, config.default);\n            setValue(transformer(answer));\n            setStatus('done');\n            done(answer);\n        }\n        else if (key.name === 'tab') {\n            const answer = boolToString(!getBooleanValue(value, config.default));\n            rl.clearLine(0); // Remove the tab character.\n            rl.write(answer);\n            setValue(answer);\n        }\n        else {\n            setValue(rl.line);\n        }\n    });\n    let formattedValue = value;\n    let defaultValue = '';\n    if (status === 'done') {\n        formattedValue = theme.style.answer(value);\n    }\n    else {\n        defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`;\n    }\n    const message = theme.style.message(config.message, status);\n    return `${prefix} ${message}${defaultValue} ${formattedValue}`;\n});\n", "import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, isBackspaceKey, makeTheme, } from '@inquirer/core';\nconst inputTheme = {\n    validationFailureMode: 'keep',\n};\nexport default createPrompt((config, done) => {\n    const { required, validate = () => true } = config;\n    const theme = makeTheme(inputTheme, config.theme);\n    const [status, setStatus] = useState('idle');\n    const [defaultValue = '', setDefaultValue] = useState(config.default);\n    const [errorMsg, setError] = useState();\n    const [value, setValue] = useState('');\n    const prefix = usePrefix({ status, theme });\n    useKeypress(async (key, rl) => {\n        // Ignore keypress while our prompt is doing other processing.\n        if (status !== 'idle') {\n            return;\n        }\n        if (isEnterKey(key)) {\n            const answer = value || defaultValue;\n            setStatus('loading');\n            const isValid = required && !answer ? 'You must provide a value' : await validate(answer);\n            if (isValid === true) {\n                setValue(answer);\n                setStatus('done');\n                done(answer);\n            }\n            else {\n                if (theme.validationFailureMode === 'clear') {\n                    setValue('');\n                }\n                else {\n                    // Reset the readline line value to the previous value. On line event, the value\n                    // get cleared, forcing the user to re-enter the value instead of fixing it.\n                    rl.write(value);\n                }\n                setError(isValid || 'You must provide a valid value');\n                setStatus('idle');\n            }\n        }\n        else if (isBackspaceKey(key) && !value) {\n            setDefaultValue(undefined);\n        }\n        else if (key.name === 'tab' && !value) {\n            setDefaultValue(undefined);\n            rl.clearLine(0); // Remove the tab character.\n            rl.write(defaultValue);\n            setValue(defaultValue);\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let formattedValue = value;\n    if (typeof config.transformer === 'function') {\n        formattedValue = config.transformer(value, { isFinal: status === 'done' });\n    }\n    else if (status === 'done') {\n        formattedValue = theme.style.answer(value);\n    }\n    let defaultStr;\n    if (defaultValue && status !== 'done' && !value) {\n        defaultStr = theme.style.defaultAnswer(defaultValue);\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [\n        [prefix, message, defaultStr, formattedValue]\n            .filter((v) => v !== undefined)\n            .join(' '),\n        error,\n    ];\n});\n", "import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, isBackspaceKey, makeTheme, } from '@inquirer/core';\nfunction isStepOf(value, step, min) {\n    const valuePow = value * Math.pow(10, 6);\n    const stepPow = step * Math.pow(10, 6);\n    const minPow = min * Math.pow(10, 6);\n    return (valuePow - (Number.isFinite(min) ? minPow : 0)) % stepPow === 0;\n}\nfunction validateNumber(value, { min, max, step, }) {\n    if (value == null || Number.isNaN(value)) {\n        return false;\n    }\n    else if (value < min || value > max) {\n        return `Value must be between ${min} and ${max}`;\n    }\n    else if (step !== 'any' && !isStepOf(value, step, min)) {\n        return `Value must be a multiple of ${step}${Number.isFinite(min) ? ` starting from ${min}` : ''}`;\n    }\n    return true;\n}\nexport default createPrompt((config, done) => {\n    const { validate = () => true, min = -Infinity, max = Infinity, step = 1, required = false, } = config;\n    const theme = makeTheme(config.theme);\n    const [status, setStatus] = useState('idle');\n    const [value, setValue] = useState(''); // store the input value as string and convert to number on \"Enter\"\n    // Ignore default if not valid.\n    const validDefault = validateNumber(config.default, { min, max, step }) === true\n        ? config.default?.toString()\n        : undefined;\n    const [defaultValue = '', setDefaultValue] = useState(validDefault);\n    const [errorMsg, setError] = useState();\n    const prefix = usePrefix({ status, theme });\n    useKeypress(async (key, rl) => {\n        // Ignore keypress while our prompt is doing other processing.\n        if (status !== 'idle') {\n            return;\n        }\n        if (isEnterKey(key)) {\n            const input = value || defaultValue;\n            const answer = input === '' ? undefined : Number(input);\n            setStatus('loading');\n            let isValid = true;\n            if (required || answer != null) {\n                isValid = validateNumber(answer, { min, max, step });\n            }\n            if (isValid === true) {\n                isValid = await validate(answer);\n            }\n            if (isValid === true) {\n                setValue(String(answer ?? ''));\n                setStatus('done');\n                done(answer);\n            }\n            else {\n                // Reset the readline line value to the previous value. On line event, the value\n                // get cleared, forcing the user to re-enter the value instead of fixing it.\n                rl.write(value);\n                setError(isValid || 'You must provide a valid numeric value');\n                setStatus('idle');\n            }\n        }\n        else if (isBackspaceKey(key) && !value) {\n            setDefaultValue(undefined);\n        }\n        else if (key.name === 'tab' && !value) {\n            setDefaultValue(undefined);\n            rl.clearLine(0); // Remove the tab character.\n            rl.write(defaultValue);\n            setValue(defaultValue);\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let formattedValue = value;\n    if (status === 'done') {\n        formattedValue = theme.style.answer(value);\n    }\n    let defaultStr;\n    if (defaultValue && status !== 'done' && !value) {\n        defaultStr = theme.style.defaultAnswer(defaultValue);\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [\n        [prefix, message, defaultStr, formattedValue]\n            .filter((v) => v !== undefined)\n            .join(' '),\n        error,\n    ];\n});\n", "import { createPrompt, useMemo, useState, useKeypress, usePrefix, isEnterKey, makeTheme, Separator, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nfunction normalizeChoices(choices) {\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice)) {\n            return choice;\n        }\n        const name = 'name' in choice ? choice.name : String(choice.value);\n        const value = 'value' in choice ? choice.value : name;\n        return {\n            value: value,\n            name,\n            key: choice.key.toLowerCase(),\n        };\n    });\n}\nconst helpChoice = {\n    key: 'h',\n    name: 'Help, list all options',\n    value: undefined,\n};\nexport default createPrompt((config, done) => {\n    const { default: defaultKey = 'h' } = config;\n    const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n    const [status, setStatus] = useState('idle');\n    const [value, setValue] = useState('');\n    const [expanded, setExpanded] = useState(config.expanded ?? false);\n    const [errorMsg, setError] = useState();\n    const theme = makeTheme(config.theme);\n    const prefix = usePrefix({ theme, status });\n    useKeypress((event, rl) => {\n        if (isEnterKey(event)) {\n            const answer = (value || defaultKey).toLowerCase();\n            if (answer === 'h' && !expanded) {\n                setExpanded(true);\n            }\n            else {\n                const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === answer);\n                if (selectedChoice) {\n                    setStatus('done');\n                    // Set the value as we might've selected the default one.\n                    setValue(answer);\n                    done(selectedChoice.value);\n                }\n                else if (value === '') {\n                    setError('Please input a value');\n                }\n                else {\n                    setError(`\"${colors.red(value)}\" isn't an available option`);\n                }\n            }\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    if (status === 'done') {\n        // If the prompt is done, it's safe to assume there is a selected value.\n        const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase());\n        return `${prefix} ${message} ${theme.style.answer(selectedChoice.name)}`;\n    }\n    const allChoices = expanded ? choices : [...choices, helpChoice];\n    // Collapsed display style\n    let longChoices = '';\n    let shortChoices = allChoices\n        .map((choice) => {\n        if (Separator.isSeparator(choice))\n            return '';\n        if (choice.key === defaultKey) {\n            return choice.key.toUpperCase();\n        }\n        return choice.key;\n    })\n        .join('');\n    shortChoices = ` ${theme.style.defaultAnswer(shortChoices)}`;\n    // Expanded display style\n    if (expanded) {\n        shortChoices = '';\n        longChoices = allChoices\n            .map((choice) => {\n            if (Separator.isSeparator(choice)) {\n                return ` ${choice.separator}`;\n            }\n            const line = `  ${choice.key}) ${choice.name}`;\n            if (choice.key === value.toLowerCase()) {\n                return theme.style.highlight(line);\n            }\n            return line;\n        })\n            .join('\\n');\n    }\n    let helpTip = '';\n    const currentOption = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase());\n    if (currentOption) {\n        helpTip = `${colors.cyan('>>')} ${currentOption.name}`;\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [\n        `${prefix} ${message}${shortChoices} ${value}`,\n        [longChoices, helpTip, error].filter(Boolean).join('\\n'),\n    ];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useMemo, useState, useKeypress, usePrefix, isEnterKey, Separator, makeTheme, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nconst numberRegex = /\\d+/;\nfunction isSelectableChoice(choice) {\n    return choice != null && !Separator.isSeparator(choice);\n}\nfunction normalizeChoices(choices) {\n    let index = 0;\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice))\n            return choice;\n        index += 1;\n        if (typeof choice === 'string') {\n            return {\n                value: choice,\n                name: choice,\n                short: choice,\n                key: String(index),\n            };\n        }\n        const name = choice.name ?? String(choice.value);\n        return {\n            value: choice.value,\n            name,\n            short: choice.short ?? name,\n            key: choice.key ?? String(index),\n        };\n    });\n}\nexport default createPrompt((config, done) => {\n    const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n    const [status, setStatus] = useState('idle');\n    const [value, setValue] = useState('');\n    const [errorMsg, setError] = useState();\n    const theme = makeTheme(config.theme);\n    const prefix = usePrefix({ status, theme });\n    useKeypress((key, rl) => {\n        if (isEnterKey(key)) {\n            let selectedChoice;\n            if (numberRegex.test(value)) {\n                const answer = Number.parseInt(value, 10) - 1;\n                selectedChoice = choices.filter(isSelectableChoice)[answer];\n            }\n            else {\n                selectedChoice = choices.find((choice) => isSelectableChoice(choice) && choice.key === value);\n            }\n            if (isSelectableChoice(selectedChoice)) {\n                setValue(selectedChoice.short);\n                setStatus('done');\n                done(selectedChoice.value);\n            }\n            else if (value === '') {\n                setError('Please input a value');\n            }\n            else {\n                setError(`\"${colors.red(value)}\" isn't an available option`);\n            }\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    if (status === 'done') {\n        return `${prefix} ${message} ${theme.style.answer(value)}`;\n    }\n    const choicesStr = choices\n        .map((choice) => {\n        if (Separator.isSeparator(choice)) {\n            return ` ${choice.separator}`;\n        }\n        const line = `  ${choice.key}) ${choice.name}`;\n        if (choice.key === value.toLowerCase()) {\n            return theme.style.highlight(line);\n        }\n        return line;\n    })\n        .join('\\n');\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [\n        `${prefix} ${message} ${value}`,\n        [choicesStr, error].filter(Boolean).join('\\n'),\n    ];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core';\nimport ansiEscapes from 'ansi-escapes';\nexport default createPrompt((config, done) => {\n    const { validate = () => true } = config;\n    const theme = makeTheme(config.theme);\n    const [status, setStatus] = useState('idle');\n    const [errorMsg, setError] = useState();\n    const [value, setValue] = useState('');\n    const prefix = usePrefix({ status, theme });\n    useKeypress(async (key, rl) => {\n        // Ignore keypress while our prompt is doing other processing.\n        if (status !== 'idle') {\n            return;\n        }\n        if (isEnterKey(key)) {\n            const answer = value;\n            setStatus('loading');\n            const isValid = await validate(answer);\n            if (isValid === true) {\n                setValue(answer);\n                setStatus('done');\n                done(answer);\n            }\n            else {\n                // Reset the readline line value to the previous value. On line event, the value\n                // get cleared, forcing the user to re-enter the value instead of fixing it.\n                rl.write(value);\n                setError(isValid || 'You must provide a valid value');\n                setStatus('idle');\n            }\n        }\n        else {\n            setValue(rl.line);\n            setError(undefined);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    let formattedValue = '';\n    let helpTip;\n    if (config.mask) {\n        const maskChar = typeof config.mask === 'string' ? config.mask : '*';\n        formattedValue = maskChar.repeat(value.length);\n    }\n    else if (status !== 'done') {\n        helpTip = `${theme.style.help('[input is masked]')}${ansiEscapes.cursorHide}`;\n    }\n    if (status === 'done') {\n        formattedValue = theme.style.answer(formattedValue);\n    }\n    let error = '';\n    if (errorMsg) {\n        error = theme.style.error(errorMsg);\n    }\n    return [[prefix, message, config.mask ? formattedValue : helpTip].join(' '), error];\n});\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useEffect, useMemo, isEnterKey, Separator, makeTheme, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nconst searchTheme = {\n    icon: { cursor: figures.pointer },\n    style: {\n        disabled: (text) => colors.dim(`- ${text}`),\n        searchTerm: (text) => colors.cyan(text),\n        description: (text) => colors.cyan(text),\n    },\n    helpMode: 'auto',\n};\nfunction isSelectable(item) {\n    return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice))\n            return choice;\n        if (typeof choice === 'string') {\n            return {\n                value: choice,\n                name: choice,\n                short: choice,\n                disabled: false,\n            };\n        }\n        const name = choice.name ?? String(choice.value);\n        return {\n            value: choice.value,\n            name,\n            description: choice.description,\n            short: choice.short ?? name,\n            disabled: choice.disabled ?? false,\n        };\n    });\n}\nexport default createPrompt((config, done) => {\n    const { pageSize = 7, validate = () => true } = config;\n    const theme = makeTheme(searchTheme, config.theme);\n    const firstRender = useRef(true);\n    const [status, setStatus] = useState('loading');\n    const [searchTerm, setSearchTerm] = useState('');\n    const [searchResults, setSearchResults] = useState([]);\n    const [searchError, setSearchError] = useState();\n    const prefix = usePrefix({ status, theme });\n    const bounds = useMemo(() => {\n        const first = searchResults.findIndex(isSelectable);\n        const last = searchResults.findLastIndex(isSelectable);\n        return { first, last };\n    }, [searchResults]);\n    const [active = bounds.first, setActive] = useState();\n    useEffect(() => {\n        const controller = new AbortController();\n        setStatus('loading');\n        setSearchError(undefined);\n        const fetchResults = async () => {\n            try {\n                const results = await config.source(searchTerm || undefined, {\n                    signal: controller.signal,\n                });\n                if (!controller.signal.aborted) {\n                    // Reset the pointer\n                    setActive(undefined);\n                    setSearchError(undefined);\n                    setSearchResults(normalizeChoices(results));\n                    setStatus('idle');\n                }\n            }\n            catch (error) {\n                if (!controller.signal.aborted && error instanceof Error) {\n                    setSearchError(error.message);\n                }\n            }\n        };\n        void fetchResults();\n        return () => {\n            controller.abort();\n        };\n    }, [searchTerm]);\n    // Safe to assume the cursor position never points to a Separator.\n    const selectedChoice = searchResults[active];\n    useKeypress(async (key, rl) => {\n        if (isEnterKey(key)) {\n            if (selectedChoice) {\n                setStatus('loading');\n                const isValid = await validate(selectedChoice.value);\n                setStatus('idle');\n                if (isValid === true) {\n                    setStatus('done');\n                    done(selectedChoice.value);\n                }\n                else if (selectedChoice.name === searchTerm) {\n                    setSearchError(isValid || 'You must provide a valid value');\n                }\n                else {\n                    // Reset line with new search term\n                    rl.write(selectedChoice.name);\n                    setSearchTerm(selectedChoice.name);\n                }\n            }\n            else {\n                // Reset the readline line value to the previous value. On line event, the value\n                // get cleared, forcing the user to re-enter the value instead of fixing it.\n                rl.write(searchTerm);\n            }\n        }\n        else if (key.name === 'tab' && selectedChoice) {\n            rl.clearLine(0); // Remove the tab character.\n            rl.write(selectedChoice.name);\n            setSearchTerm(selectedChoice.name);\n        }\n        else if (status !== 'loading' && (key.name === 'up' || key.name === 'down')) {\n            rl.clearLine(0);\n            if ((key.name === 'up' && active !== bounds.first) ||\n                (key.name === 'down' && active !== bounds.last)) {\n                const offset = key.name === 'up' ? -1 : 1;\n                let next = active;\n                do {\n                    next = (next + offset + searchResults.length) % searchResults.length;\n                } while (!isSelectable(searchResults[next]));\n                setActive(next);\n            }\n        }\n        else {\n            setSearchTerm(rl.line);\n        }\n    });\n    const message = theme.style.message(config.message, status);\n    if (active > 0) {\n        firstRender.current = false;\n    }\n    let helpTip = '';\n    if (searchResults.length > 1 &&\n        (theme.helpMode === 'always' || (theme.helpMode === 'auto' && firstRender.current))) {\n        helpTip =\n            searchResults.length > pageSize\n                ? `\\n${theme.style.help('(Use arrow keys to reveal more choices)')}`\n                : `\\n${theme.style.help('(Use arrow keys)')}`;\n    }\n    // TODO: What to do if no results are found? Should we display a message?\n    const page = usePagination({\n        items: searchResults,\n        active,\n        renderItem({ item, isActive }) {\n            if (Separator.isSeparator(item)) {\n                return ` ${item.separator}`;\n            }\n            if (item.disabled) {\n                const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n                return theme.style.disabled(`${item.name} ${disabledLabel}`);\n            }\n            const color = isActive ? theme.style.highlight : (x) => x;\n            const cursor = isActive ? theme.icon.cursor : ` `;\n            return color(`${cursor} ${item.name}`);\n        },\n        pageSize,\n        loop: false,\n    });\n    let error;\n    if (searchError) {\n        error = theme.style.error(searchError);\n    }\n    else if (searchResults.length === 0 && searchTerm !== '' && status === 'idle') {\n        error = theme.style.error('No results found');\n    }\n    let searchStr;\n    if (status === 'done' && selectedChoice) {\n        const answer = selectedChoice.short;\n        return `${prefix} ${message} ${theme.style.answer(answer)}`;\n    }\n    else {\n        searchStr = theme.style.searchTerm(searchTerm);\n    }\n    const choiceDescription = selectedChoice?.description\n        ? `\\n${theme.style.description(selectedChoice.description)}`\n        : ``;\n    return [\n        [prefix, message, searchStr].filter(Boolean).join(' '),\n        `${error ?? page}${helpTip}${choiceDescription}`,\n    ];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nimport ansiEscapes from 'ansi-escapes';\nconst selectTheme = {\n    icon: { cursor: figures.pointer },\n    style: {\n        disabled: (text) => colors.dim(`- ${text}`),\n        description: (text) => colors.cyan(text),\n    },\n    helpMode: 'auto',\n};\nfunction isSelectable(item) {\n    return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n    return choices.map((choice) => {\n        if (Separator.isSeparator(choice))\n            return choice;\n        if (typeof choice === 'string') {\n            return {\n                value: choice,\n                name: choice,\n                short: choice,\n                disabled: false,\n            };\n        }\n        const name = choice.name ?? String(choice.value);\n        return {\n            value: choice.value,\n            name,\n            description: choice.description,\n            short: choice.short ?? name,\n            disabled: choice.disabled ?? false,\n        };\n    });\n}\nexport default createPrompt((config, done) => {\n    const { loop = true, pageSize = 7 } = config;\n    const firstRender = useRef(true);\n    const theme = makeTheme(selectTheme, config.theme);\n    const [status, setStatus] = useState('idle');\n    const prefix = usePrefix({ status, theme });\n    const searchTimeoutRef = useRef();\n    const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n    const bounds = useMemo(() => {\n        const first = items.findIndex(isSelectable);\n        const last = items.findLastIndex(isSelectable);\n        if (first === -1) {\n            throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n        }\n        return { first, last };\n    }, [items]);\n    const defaultItemIndex = useMemo(() => {\n        if (!('default' in config))\n            return -1;\n        return items.findIndex((item) => isSelectable(item) && item.value === config.default);\n    }, [config.default, items]);\n    const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);\n    // Safe to assume the cursor position always point to a Choice.\n    const selectedChoice = items[active];\n    useKeypress((key, rl) => {\n        clearTimeout(searchTimeoutRef.current);\n        if (isEnterKey(key)) {\n            setStatus('done');\n            done(selectedChoice.value);\n        }\n        else if (isUpKey(key) || isDownKey(key)) {\n            rl.clearLine(0);\n            if (loop ||\n                (isUpKey(key) && active !== bounds.first) ||\n                (isDownKey(key) && active !== bounds.last)) {\n                const offset = isUpKey(key) ? -1 : 1;\n                let next = active;\n                do {\n                    next = (next + offset + items.length) % items.length;\n                } while (!isSelectable(items[next]));\n                setActive(next);\n            }\n        }\n        else if (isNumberKey(key)) {\n            rl.clearLine(0);\n            const position = Number(key.name) - 1;\n            const item = items[position];\n            if (item != null && isSelectable(item)) {\n                setActive(position);\n            }\n        }\n        else if (isBackspaceKey(key)) {\n            rl.clearLine(0);\n        }\n        else {\n            // Default to search\n            const searchTerm = rl.line.toLowerCase();\n            const matchIndex = items.findIndex((item) => {\n                if (Separator.isSeparator(item) || !isSelectable(item))\n                    return false;\n                return item.name.toLowerCase().startsWith(searchTerm);\n            });\n            if (matchIndex !== -1) {\n                setActive(matchIndex);\n            }\n            searchTimeoutRef.current = setTimeout(() => {\n                rl.clearLine(0);\n            }, 700);\n        }\n    });\n    useEffect(() => () => {\n        clearTimeout(searchTimeoutRef.current);\n    }, []);\n    const message = theme.style.message(config.message, status);\n    let helpTipTop = '';\n    let helpTipBottom = '';\n    if (theme.helpMode === 'always' ||\n        (theme.helpMode === 'auto' && firstRender.current)) {\n        firstRender.current = false;\n        if (items.length > pageSize) {\n            helpTipBottom = `\\n${theme.style.help('(Use arrow keys to reveal more choices)')}`;\n        }\n        else {\n            helpTipTop = theme.style.help('(Use arrow keys)');\n        }\n    }\n    const page = usePagination({\n        items,\n        active,\n        renderItem({ item, isActive }) {\n            if (Separator.isSeparator(item)) {\n                return ` ${item.separator}`;\n            }\n            if (item.disabled) {\n                const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n                return theme.style.disabled(`${item.name} ${disabledLabel}`);\n            }\n            const color = isActive ? theme.style.highlight : (x) => x;\n            const cursor = isActive ? theme.icon.cursor : ` `;\n            return color(`${cursor} ${item.name}`);\n        },\n        pageSize,\n        loop,\n    });\n    if (status === 'done') {\n        return `${prefix} ${message} ${theme.style.answer(selectedChoice.short)}`;\n    }\n    const choiceDescription = selectedChoice.description\n        ? `\\n${theme.style.description(selectedChoice.description)}`\n        : ``;\n    return `${[prefix, message, helpTipTop].filter(Boolean).join(' ')}\\n${page}${helpTipBottom}${choiceDescription}${ansiEscapes.cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {confirm, input, checkbox, select, editor} from '@inquirer/prompts';\n\n/**\n * A set of prompts from inquirer to be used throughout our tooling.  We access them via static metonds on this\n * class to allow easier mocking management in test environments.\n */\nexport class Prompt {\n  static confirm: typeof confirm = (\n    // These are extractions of the PromptConfig from the inquirer types.\n    _config: Parameters[0],\n    _context: Parameters[1],\n  ) => {\n    /** Config to use when creating a confirm prompt, changes the default to `false` instead of `true`. */\n    const config = {\n      default: false,\n      ..._config,\n    };\n    return confirm(config, _context);\n  };\n  static input: typeof input = input;\n  static checkbox: typeof checkbox = checkbox;\n  static select: typeof select = select;\n  static editor: typeof editor = editor;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Prompt} from '../../utils/prompt.js';\nimport {getConfig, assertValidCaretakerConfig} from '../../utils/config.js';\n\nimport {green, Log} from '../../utils/logging.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\n\n/** Update the Github caretaker group, using a prompt to obtain the new caretaker group members.  */\nexport async function updateCaretakerTeamViaPrompt() {\n  /** Caretaker specific configuration. */\n  const config = await getConfig([assertValidCaretakerConfig]);\n  const {caretakerGroup} = config.caretaker;\n\n  if (caretakerGroup === undefined) {\n    throw Error('`caretakerGroup` is not defined in the `caretaker` config');\n  }\n\n  /** The list of current members in the group. */\n  const current = new Set(await getGroupMembers(caretakerGroup));\n  /** The list of members able to be added to the group as defined by a separate roster group. */\n  const roster = (await getGroupMembers(`${caretakerGroup}-roster`)).map((member) => ({\n    value: member,\n    checked: current.has(member),\n  }));\n\n  /** The list of users selected to be members of the caretaker group. */\n  const selected = await Prompt.checkbox({\n    choices: roster,\n    message: 'Select 2 caretakers for the upcoming rotation:',\n    validate: (value) => {\n      if (value.length !== 2) {\n        return 'Please select exactly 2 caretakers for the upcoming rotation.';\n      }\n      return true;\n    },\n  });\n\n  /** Whether the user positively confirmed the selected made. */\n  const confirmation = await Prompt.confirm({\n    default: true,\n    message: 'Are you sure?',\n  });\n\n  if (confirmation === false) {\n    Log.warn('  ⚠  Skipping caretaker group update.');\n    return;\n  }\n\n  if (JSON.stringify(selected) === JSON.stringify(current)) {\n    Log.info(green('  ✔  Caretaker group already up to date.'));\n    return;\n  }\n\n  try {\n    await setCaretakerGroup(caretakerGroup, selected);\n  } catch {\n    Log.error('  ✘  Failed to update caretaker group.');\n    return;\n  }\n  Log.info(green('  ✔  Successfully updated caretaker group'));\n}\n\n/** Retrieve the current list of members for the provided group. */\nasync function getGroupMembers(group: string) {\n  /** The authenticated GitClient instance. */\n  const git = await AuthenticatedGitClient.get();\n\n  return (\n    await git.github.teams.listMembersInOrg({\n      org: git.remoteConfig.owner,\n      team_slug: group,\n    })\n  ).data\n    .filter((_) => !!_)\n    .map((member) => member!.login);\n}\n\nasync function setCaretakerGroup(group: string, members: string[]) {\n  /** The authenticated GitClient instance. */\n  const git = await AuthenticatedGitClient.get();\n  /** The full name of the group /. */\n  const fullSlug = `${git.remoteConfig.owner}/${group}`;\n  /** The list of current members of the group. */\n  const current = await getGroupMembers(group);\n  /** The list of users to be removed from the group. */\n  const removed = current.filter((login) => !members.includes(login));\n  /** Add a user to the group. */\n  const add = async (username: string) => {\n    Log.debug(`Adding ${username} to ${fullSlug}.`);\n    await git.github.teams.addOrUpdateMembershipForUserInOrg({\n      org: git.remoteConfig.owner,\n      team_slug: group,\n      username,\n      role: 'maintainer',\n    });\n  };\n  /** Remove a user from the group. */\n  const remove = async (username: string) => {\n    Log.debug(`Removing ${username} from ${fullSlug}.`);\n    await git.github.teams.removeMembershipForUserInOrg({\n      org: git.remoteConfig.owner,\n      team_slug: group,\n      username,\n    });\n  };\n\n  Log.debug.group(`Caretaker Group: ${fullSlug}`);\n  Log.debug(`Current Membership: ${current.join(', ')}`);\n  Log.debug(`New Membership:     ${members.join(', ')}`);\n  Log.debug(`Removed:            ${removed.join(', ')}`);\n  Log.debug.groupEnd();\n\n  // Add members before removing to prevent the account performing the action from removing their\n  // permissions to change the group membership early.\n  await Promise.all(members.map(add));\n  await Promise.all(removed.map(remove));\n\n  Log.debug(green(`Successfully updated ${fullSlug}`));\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, CommandModule} from 'yargs';\n\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n\nimport {updateCaretakerTeamViaPrompt} from './update-github-team.js';\n\nexport interface CaretakerHandoffOptions {}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return addGithubTokenOption(argv);\n}\n\n/** Handles the command. */\nasync function handler() {\n  await updateCaretakerTeamViaPrompt();\n}\n\n/** yargs command module for assisting in handing off caretaker.  */\nexport const HandoffModule: CommandModule<{}, CaretakerHandoffOptions> = {\n  handler,\n  builder,\n  command: 'handoff',\n  describe: 'Run a handoff assistant to aide in moving to the next caretaker',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {writeFileSync} from 'fs';\n\nimport {Log} from '../../utils/logging.js';\n\nimport {loadCommitMessageDraft} from './commit-message-draft.js';\nimport {CommitMsgSource} from './commit-message-source.js';\n\n/**\n * Restore the commit message draft to the git to be used as the default commit message.\n *\n * The source provided may be one of the sources described in\n *   https://git-scm.com/docs/githooks#_prepare_commit_msg\n */\nexport function restoreCommitMessage(filePath: string, source?: CommitMsgSource) {\n  if (!!source) {\n    if (source === 'message') {\n      Log.debug('A commit message was already provided via the command with a -m or -F flag');\n    }\n    if (source === 'template') {\n      Log.debug('A commit message was already provided via the -t flag or config.template setting');\n    }\n    if (source === 'squash') {\n      Log.debug('A commit message was already provided as a merge action or via .git/MERGE_MSG');\n    }\n    if (source === 'commit') {\n      Log.debug(\n        'A commit message was already provided through a revision specified via --fixup, -c,',\n      );\n      Log.debug('-C or --amend flag');\n    }\n    process.exit(0);\n  }\n  /** A draft of a commit message. */\n  const commitMessage = loadCommitMessageDraft(filePath);\n\n  // If the commit message draft has content, restore it into the provided filepath.\n  if (commitMessage) {\n    writeFileSync(filePath, commitMessage);\n  }\n  // Exit the process\n  process.exit(0);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {existsSync, readFileSync, unlinkSync, writeFileSync} from 'fs';\n\n/** Load the commit message draft from the file system if it exists. */\nexport function loadCommitMessageDraft(basePath: string) {\n  const commitMessageDraftPath = `${basePath}.ngDevSave`;\n  if (existsSync(commitMessageDraftPath)) {\n    return readFileSync(commitMessageDraftPath).toString();\n  }\n  return '';\n}\n\n/** Remove the commit message draft from the file system. */\nexport function deleteCommitMessageDraft(basePath: string) {\n  const commitMessageDraftPath = `${basePath}.ngDevSave`;\n  if (existsSync(commitMessageDraftPath)) {\n    unlinkSync(commitMessageDraftPath);\n  }\n}\n\n/** Save the commit message draft to the file system for later retrieval. */\nexport function saveCommitMessageDraft(basePath: string, commitMessage: string) {\n  writeFileSync(`${basePath}.ngDevSave`, commitMessage);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {CommitMsgSource} from './commit-message-source.js';\n\nimport {restoreCommitMessage} from './restore-commit-message.js';\n\nexport interface RestoreCommitMessageOptions {\n  file?: string;\n  source?: string;\n  fileEnvVariable?: string;\n}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return argv\n    .option('file-env-variable' as 'fileEnvVariable', {\n      type: 'string',\n      description:\n        'The key for the environment variable which holds the arguments for the\\n' +\n        'prepare-commit-msg hook as described here:\\n' +\n        'https://git-scm.com/docs/githooks#_prepare_commit_msg',\n    })\n    .positional('file', {type: 'string'})\n    .positional('source', {type: 'string'});\n}\n\n/** Handles the command. */\nasync function handler({fileEnvVariable, file, source}: Arguments) {\n  // File and source are provided as command line parameters\n  if (file !== undefined) {\n    restoreCommitMessage(file, source as CommitMsgSource);\n    return;\n  }\n\n  // File and source are provided as values held in an environment variable.\n  if (fileEnvVariable !== undefined) {\n    const [fileFromEnv, sourceFromEnv] = (process.env[fileEnvVariable!] || '').split(' ');\n    if (!fileFromEnv) {\n      throw new Error(`Provided environment variable \"${fileEnvVariable}\" was not found.`);\n    }\n    restoreCommitMessage(fileFromEnv, sourceFromEnv as CommitMsgSource);\n    return;\n  }\n\n  throw new Error(\n    'No file path and commit message source provide. Provide values via positional command ' +\n      'arguments, or via the --file-env-variable flag',\n  );\n}\n\n/** yargs command module describing the command. */\nexport const RestoreCommitMessageModule: CommandModule<{}, RestoreCommitMessageOptions> = {\n  handler,\n  builder,\n  command: 'restore-commit-message-draft [file] [source]',\n  // Description: Restore a commit message draft if one has been saved from a failed commit attempt.\n  // No describe is defiend to hide the command from the --help.\n  describe: false,\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {readFileSync} from 'fs';\nimport {resolve} from 'path';\n\nimport {green, Log, yellow} from '../../utils/logging.js';\nimport {GitClient} from '../../utils/git/git-client.js';\n\nimport {\n  deleteCommitMessageDraft,\n  saveCommitMessageDraft,\n} from '../restore-commit-message/commit-message-draft.js';\nimport {printValidationErrors, validateCommitMessage} from '../validate.js';\n\n/** Validate commit message at the provided file path. */\nexport async function validateFile(filePath: string, isErrorMode: boolean) {\n  const git = await GitClient.get();\n  const commitMessage = readFileSync(resolve(git.baseDir, filePath), 'utf8');\n  const {valid, errors} = await validateCommitMessage(commitMessage);\n  if (valid) {\n    Log.info(`${green('✔')}  Valid commit message`);\n    deleteCommitMessageDraft(filePath);\n    process.exitCode = 0;\n    return;\n  }\n\n  /** Function used to print to the console log. */\n  let printFn = isErrorMode ? Log.error : Log.log;\n\n  printFn(isErrorMode ? '✘ Invalid commit message.' : yellow('! Invalid commit message.'));\n  printValidationErrors(errors, printFn);\n  if (isErrorMode) {\n    printFn('Aborting commit attempt due to invalid commit message.');\n    printFn('Commit message aborted as failure rather than warning due to local configuration.');\n  } else {\n    printFn(yellow('Before this commit can be merged into the upstream repository, it must be'));\n    printFn(yellow('amended to follow commit message guidelines.'));\n  }\n\n  // On all invalid commit messages, the commit message should be saved as a draft to be\n  // restored on the next commit attempt.\n  saveCommitMessageDraft(filePath, commitMessage);\n  // Set the correct exit code based on if invalid commit message is an error.\n  process.exitCode = isErrorMode ? 1 : 0;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Commit as ParsedCommit, Options, sync as parse} from 'conventional-commits-parser';\n\n/** A parsed commit, containing the information needed to validate the commit. */\nexport interface Commit {\n  /** The full raw text of the commit. */\n  fullText: string;\n  /** The header line of the commit, will be used in the changelog entries. */\n  header: string;\n  /** The full body of the commit, not including the footer. */\n  body: string;\n  /** The footer of the commit, containing issue references and note sections. */\n  footer: string;\n  /** A list of the references to other issues made throughout the commit message. */\n  references: ParsedCommit.Reference[];\n  /** The type of the commit message. */\n  type: string;\n  /** The scope of the commit message. */\n  scope: string;\n  /** The subject of the commit message. */\n  subject: string;\n  /** A list of breaking change notes in the commit message. */\n  breakingChanges: ParsedCommit.Note[];\n  /** A list of deprecation notes in the commit message. */\n  deprecations: ParsedCommit.Note[];\n  /** Whether the commit is a fixup commit. */\n  isFixup: boolean;\n  /** Whether the commit is a squash commit. */\n  isSquash: boolean;\n  /** Whether the commit is a revert commit. */\n  isRevert: boolean;\n}\n\n/** A parsed commit which originated from a Git Log entry */\nexport interface CommitFromGitLog extends Commit {\n  author: string;\n  hash: string;\n  shortHash: string;\n}\n\n/**\n * A list of tuples expressing the fields to extract from each commit log entry. The tuple contains\n * two values, the first is the key for the property and the second is the template shortcut for the\n * git log command.\n */\nconst commitFields = {\n  hash: '%H',\n  shortHash: '%h',\n  author: '%aN',\n};\n/** The additional fields to be included in commit log entries for parsing. */\nexport type CommitFields = typeof commitFields;\n/** The commit fields described as git log format entries for parsing. */\nexport const commitFieldsAsFormat = (fields: CommitFields) => {\n  return Object.entries(fields)\n    .map(([key, value]) => `%n-${key}-%n${value}`)\n    .join('');\n};\n/**\n * The git log format template to create git log entries for parsing.\n *\n * The conventional commits parser expects to parse the standard git log raw body (%B) into its\n * component parts. Additionally it will parse additional fields with keys defined by\n * `-{key name}-` separated by new lines.\n * */\nexport const gitLogFormatForParsing = `%B${commitFieldsAsFormat(commitFields)}`;\n/** Markers used to denote the start of a note section in a commit. */\nenum NoteSections {\n  BREAKING_CHANGE = 'BREAKING CHANGE',\n  DEPRECATED = 'DEPRECATED',\n}\n/** Regex determining if a commit is a fixup. */\nconst FIXUP_PREFIX_RE = /^fixup! /i;\n/** Regex determining if a commit is a squash. */\nconst SQUASH_PREFIX_RE = /^squash! /i;\n/** Regex determining if a commit is a revert. */\nconst REVERT_PREFIX_RE = /^revert:? /i;\n/**\n * Regex pattern for parsing the header line of a commit.\n *\n * Several groups are being matched to be used in the parsed commit object, being mapped to the\n * `headerCorrespondence` object.\n *\n * The pattern can be broken down into component parts:\n * - `(\\w+)` - a capturing group discovering the type of the commit.\n * - `(?:\\(([^)]+)\\))?` - an optional capturing group to capture the scope of the commit.\n * - `(.*)` - a capturing group discovering the subject of the commit.\n */\nconst headerPattern = /^(\\w+)(?:\\(([^)]+)\\))?: (.*)$/;\n/**\n * The property names used for the values extracted from the header via the\n * `headerPattern` regex.\n */\nconst headerCorrespondence = ['type', 'scope', 'subject'];\n/**\n * Configuration options for the commit parser.\n *\n * NOTE: An extended type from `Options` must be used because the current\n * @types/conventional-commits-parser version does not include the `notesPattern` field.\n */\nconst parseOptions: Options & {notesPattern: (keywords: string) => RegExp} = {\n  commentChar: '#',\n  headerPattern,\n  headerCorrespondence,\n  noteKeywords: [NoteSections.BREAKING_CHANGE, NoteSections.DEPRECATED],\n  notesPattern: (keywords: string) => new RegExp(`^\\\\s*(${keywords}): ?(.*)`),\n};\n\n/** Parse a commit message into its composite parts. */\nexport const parseCommitMessage: (fullText: string) => Commit = parseInternal;\n\n/** Parse a commit message from a git log entry into its composite parts. */\nexport const parseCommitFromGitLog: (fullText: Buffer) => CommitFromGitLog = parseInternal;\n\n/** Parse a full commit message into its composite parts. */\nfunction parseInternal(fullText: string): Commit;\nfunction parseInternal(fullText: Buffer): CommitFromGitLog;\nfunction parseInternal(fullText: string | Buffer): CommitFromGitLog | Commit {\n  // Ensure the fullText symbol is a `string`, even if a Buffer was provided.\n  fullText = fullText.toString();\n  /** The commit message text with the fixup and squash markers stripped out. */\n  const strippedCommitMsg = fullText\n    .replace(FIXUP_PREFIX_RE, '')\n    .replace(SQUASH_PREFIX_RE, '')\n    .replace(REVERT_PREFIX_RE, '');\n  /** The initially parsed commit. */\n  const commit = parse(strippedCommitMsg, parseOptions);\n  /** A list of breaking change notes from the commit. */\n  const breakingChanges: ParsedCommit.Note[] = [];\n  /** A list of deprecation notes from the commit. */\n  const deprecations: ParsedCommit.Note[] = [];\n\n  // Extract the commit message notes by marked types into their respective lists.\n  commit.notes.forEach((note: ParsedCommit.Note) => {\n    if (note.title === NoteSections.BREAKING_CHANGE) {\n      breakingChanges.push(note);\n    } else if (note.title === NoteSections.DEPRECATED) {\n      deprecations.push(note);\n    }\n  });\n\n  return {\n    fullText,\n    breakingChanges,\n    deprecations,\n    body: commit.body || '',\n    footer: commit.footer || '',\n    header: commit.header || '',\n    references: commit.references,\n    scope: commit.scope || '',\n    subject: commit.subject || '',\n    type: commit.type || '',\n    isFixup: FIXUP_PREFIX_RE.test(fullText),\n    isSquash: SQUASH_PREFIX_RE.test(fullText),\n    isRevert: REVERT_PREFIX_RE.test(fullText),\n    author: commit.author || undefined,\n    hash: commit.hash || undefined,\n    shortHash: commit.shortHash || undefined,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {getConfig} from '../utils/config.js';\nimport {Log} from '../utils/logging.js';\n\nimport {assertValidCommitMessageConfig, COMMIT_TYPES, ScopeRequirement} from './config.js';\nimport {Commit, parseCommitMessage} from './parse.js';\n\n/** Options for commit message validation. */\nexport interface ValidateCommitMessageOptions {\n  disallowSquash?: boolean;\n  nonFixupCommitHeaders?: string[];\n}\n\n/** The result of a commit message validation check. */\nexport interface ValidateCommitMessageResult {\n  valid: boolean;\n  errors: string[];\n  commit: Commit;\n}\n\n/** Regex matching a URL for an entire commit body line. */\nconst COMMIT_BODY_URL_LINE_RE = /^https?:\\/\\/.*$/;\n\n/**\n * Regular expression matching potential misuse of the `BREAKING CHANGE:` marker in a\n * commit message. Commit messages containing one of the following snippets will fail:\n *\n *   - `BREAKING CHANGE ` | Here we assume the colon is missing by accident.\n *   - `BREAKING-CHANGE: ` | The wrong keyword is used here.\n *   - `BREAKING CHANGES: ` | The wrong keyword is used here.\n *   - `BREAKING-CHANGES: ` | The wrong keyword is used here.\n */\nconst INCORRECT_BREAKING_CHANGE_BODY_RE =\n  /^(BREAKING CHANGE[^:]|BREAKING-CHANGE|BREAKING[ -]CHANGES)/m;\n\n/**\n * Regular expression matching potential misuse of the `DEPRECATED:` marker in a commit\n * message. Commit messages containing one of the following snippets will fail:\n *\n *   - `DEPRECATED ` | Here we assume the colon is missing by accident.\n *   - `DEPRECATIONS: ` | The wrong keyword is used here.\n *   - `DEPRECATION: ` | The wrong keyword is used here.\n *   - `DEPRECATE: ` | The wrong keyword is used here.\n *   - `DEPRECATES: ` | The wrong keyword is used here.\n */\nconst INCORRECT_DEPRECATION_BODY_RE = /^(DEPRECATED[^:]|DEPRECATIONS?|DEPRECATE:|DEPRECATES)/m;\n\n/** Validate a commit message against using the local repo's config. */\nexport async function validateCommitMessage(\n  commitMsg: string | Commit,\n  options: ValidateCommitMessageOptions = {},\n): Promise {\n  const _config = await getConfig();\n  assertValidCommitMessageConfig(_config);\n  const config = _config.commitMessage;\n  const commit = typeof commitMsg === 'string' ? parseCommitMessage(commitMsg) : commitMsg;\n  const errors: string[] = [];\n\n  /** Perform the validation checks against the parsed commit. */\n  function validateCommitAndCollectErrors() {\n    ////////////////////////////////////\n    // Checking revert, squash, fixup //\n    ////////////////////////////////////\n\n    // All revert commits are considered valid.\n    if (commit.isRevert) {\n      return true;\n    }\n\n    // All squashes are considered valid, as the commit will be squashed into another in\n    // the git history anyway, unless the options provided to not allow squash commits.\n    if (commit.isSquash) {\n      if (options.disallowSquash) {\n        errors.push('The commit must be manually squashed into the target commit');\n        return false;\n      }\n      return true;\n    }\n\n    // Fixups commits are considered valid, unless nonFixupCommitHeaders are provided to check\n    // against. If `nonFixupCommitHeaders` is not empty, we check whether there is a corresponding\n    // non-fixup commit (i.e. a commit whose header is identical to this commit's header after\n    // stripping the `fixup! ` prefix), otherwise we assume this verification will happen in another\n    // check.\n    if (commit.isFixup) {\n      if (config.disallowFixup) {\n        errors.push(\n          'The commit must be manually fixed-up into the target commit as fixup commits are disallowed',\n        );\n\n        return false;\n      }\n\n      if (options.nonFixupCommitHeaders && !options.nonFixupCommitHeaders.includes(commit.header)) {\n        errors.push(\n          'Unable to find match for fixup commit among prior commits: ' +\n            (options.nonFixupCommitHeaders.map((x) => `\\n      ${x}`).join('') || '-'),\n        );\n        return false;\n      }\n\n      return true;\n    }\n\n    ////////////////////////////\n    // Checking commit header //\n    ////////////////////////////\n    if (commit.header.length > config.maxLineLength) {\n      errors.push(`The commit message header is longer than ${config.maxLineLength} characters`);\n      return false;\n    }\n\n    if (!commit.type) {\n      errors.push(`The commit message header does not match the expected format.`);\n      return false;\n    }\n\n    if (COMMIT_TYPES[commit.type] === undefined) {\n      errors.push(\n        `'${commit.type}' is not an allowed type.\\n => TYPES: ${Object.keys(COMMIT_TYPES).join(\n          ', ',\n        )}`,\n      );\n      return false;\n    }\n\n    /** The scope requirement level for the provided type of the commit message. */\n    const scopeRequirementForType = COMMIT_TYPES[commit.type].scope;\n\n    if (scopeRequirementForType === ScopeRequirement.Forbidden && commit.scope) {\n      errors.push(\n        `Scopes are forbidden for commits with type '${commit.type}', but a scope of '${commit.scope}' was provided.`,\n      );\n      return false;\n    }\n\n    if (scopeRequirementForType === ScopeRequirement.Required && !commit.scope) {\n      errors.push(\n        `Scopes are required for commits with type '${commit.type}', but no scope was provided.`,\n      );\n      return false;\n    }\n\n    if (commit.scope && !config.scopes.includes(commit.scope)) {\n      errors.push(\n        `'${commit.scope}' is not an allowed scope.\\n => SCOPES: ${config.scopes.join(', ')}`,\n      );\n      return false;\n    }\n\n    // Commits with the type of `release` do not require a commit body.\n    if (commit.type === 'release') {\n      return true;\n    }\n\n    //////////////////////////\n    // Checking commit body //\n    //////////////////////////\n\n    // Due to an issue in which conventional-commits-parser considers all parts of a commit after\n    // a `#` reference to be the footer, we check the length of all of the commit content after the\n    // header. In the future, we expect to be able to check only the body once the parser properly\n    // handles this case.\n    const allNonHeaderContent = `${commit.body.trim()}\\n${commit.footer.trim()}`;\n\n    if (\n      !config.minBodyLengthTypeExcludes?.includes(commit.type) &&\n      allNonHeaderContent.length < config.minBodyLength\n    ) {\n      errors.push(\n        `The commit message body does not meet the minimum length of ${config.minBodyLength} characters`,\n      );\n      return false;\n    }\n\n    const bodyByLine = commit.body.split('\\n');\n    const lineExceedsMaxLength = bodyByLine.some((line: string) => {\n      // Check if any line exceeds the max line length limit. The limit is ignored for\n      // lines that just contain an URL (as these usually cannot be wrapped or shortened).\n      return line.length > config.maxLineLength && !COMMIT_BODY_URL_LINE_RE.test(line);\n    });\n\n    if (lineExceedsMaxLength) {\n      errors.push(\n        `The commit message body contains lines greater than ${config.maxLineLength} characters.`,\n      );\n      return false;\n    }\n\n    // Breaking change\n    // Check if the commit message contains a valid break change description.\n    // https://github.com/angular/angular/blob/88fbc066775ab1a2f6a8c75f933375b46d8fa9a4/CONTRIBUTING.md#commit-message-footer\n    if (INCORRECT_BREAKING_CHANGE_BODY_RE.test(commit.fullText)) {\n      errors.push(`The commit message body contains an invalid breaking change note.`);\n      return false;\n    }\n\n    if (INCORRECT_DEPRECATION_BODY_RE.test(commit.fullText)) {\n      errors.push(`The commit message body contains an invalid deprecation note.`);\n      return false;\n    }\n\n    return true;\n  }\n\n  return {valid: validateCommitAndCollectErrors(), errors, commit};\n}\n\n/** Print the error messages from the commit message validation to the console. */\nexport function printValidationErrors(errors: string[], print = Log.error) {\n  print.group(`Error${errors.length === 1 ? '' : 's'}:`);\n  errors.forEach((line) => print(line));\n  print.groupEnd();\n  print();\n  print('The expected format for a commit is: ');\n  print('(): ');\n  print();\n  print('');\n  print();\n  print(`BREAKING CHANGE: `);\n  print();\n  print(``);\n  print();\n  print();\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {getUserConfig} from '../../utils/config.js';\n\nimport {validateFile} from './validate-file.js';\n\nexport interface ValidateFileOptions {\n  file?: string;\n  fileEnvVariable?: string;\n  error: boolean | null;\n}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return argv\n    .option('file', {\n      type: 'string',\n      conflicts: ['file-env-variable'],\n      description: 'The path of the commit message file.',\n    })\n    .option('file-env-variable' as 'fileEnvVariable', {\n      type: 'string',\n      conflicts: ['file'],\n      description: 'The key of the environment variable for the path of the commit message file.',\n      coerce: (arg: string | undefined) => {\n        if (arg === undefined) {\n          return arg;\n        }\n        const file = process.env[arg];\n        if (!file) {\n          throw new Error(`Provided environment variable \"${arg}\" was not found.`);\n        }\n        return file;\n      },\n    })\n    .option('error', {\n      type: 'boolean',\n      description:\n        'Whether invalid commit messages should be treated as failures rather than a warning',\n      default: null,\n      defaultDescription: '`True` on CI or can be enabled through ng-dev user-config.',\n    });\n}\n\n/** Handles the command. */\nasync function handler({error, file, fileEnvVariable}: Arguments) {\n  const isErrorMode = error === null ? await getIsErrorModeDefault() : error;\n  const filePath = file || fileEnvVariable || '.git/COMMIT_EDITMSG';\n\n  await validateFile(filePath, isErrorMode);\n}\n\nasync function getIsErrorModeDefault(): Promise {\n  return !!process.env['CI'] || !!(await getUserConfig()).commitMessage?.errorOnInvalidMessage;\n}\n\n/** yargs command module describing the command. */\nexport const ValidateFileModule: CommandModule<{}, ValidateFileOptions> = {\n  handler,\n  builder,\n  command: 'pre-commit-validate',\n  describe: 'Validate the most recent commit message',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport gitCommits from 'git-raw-commits';\n\nimport {CommitFromGitLog, gitLogFormatForParsing, parseCommitFromGitLog} from './parse.js';\n\n/**\n * Find all commits within the given range and return an object describing those.\n */\nexport function getCommitsInRange(from: string, to: string = 'HEAD'): Promise {\n  return new Promise((resolve, reject) => {\n    /** List of parsed commit objects. */\n    const commits: CommitFromGitLog[] = [];\n    /** Stream of raw git commit strings in the range provided. */\n    const commitStream = gitCommits({from, to, format: gitLogFormatForParsing});\n\n    // Accumulate the parsed commits for each commit from the Readable stream into an array, then\n    // resolve the promise with the array when the Readable stream ends.\n    commitStream.on('data', (commit: Buffer) => commits.push(parseCommitFromGitLog(commit)));\n    commitStream.on('error', (err: Error) => reject(err));\n    commitStream.on('end', () => resolve(commits));\n  });\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {green, Log} from '../../utils/logging.js';\nimport {Commit} from '../parse.js';\nimport {getCommitsInRange} from '../utils.js';\nimport {\n  printValidationErrors,\n  validateCommitMessage,\n  ValidateCommitMessageOptions,\n} from '../validate.js';\n\n// Whether the provided commit is a fixup commit.\nconst isNonFixup = (commit: Commit) => !commit.isFixup;\n\n// Extracts commit header (first line of commit message).\nconst extractCommitHeader = (commit: Commit) => commit.header;\n\n/** Validate all commits in a provided git commit range. */\nexport async function validateCommitRange(from: string, to: string): Promise {\n  /** A list of tuples of the commit header string and a list of error messages for the commit. */\n  const errors: [commitHeader: string, errors: string[]][] = [];\n\n  /** A list of parsed commit messages from the range. */\n  const commits = await getCommitsInRange(from, to);\n  Log.info(`Examining ${commits.length} commit(s) in the provided range: ${from}..${to}`);\n\n  /**\n   * Whether all commits in the range are valid, commits are allowed to be fixup commits for other\n   * commits in the provided commit range.\n   */\n  let allCommitsInRangeValid = true;\n\n  for (let i = 0; i < commits.length; i++) {\n    const commit = commits[i];\n    const options: ValidateCommitMessageOptions = {\n      disallowSquash: true,\n      nonFixupCommitHeaders: isNonFixup(commit)\n        ? undefined\n        : commits\n            .slice(i + 1)\n            .filter(isNonFixup)\n            .map(extractCommitHeader),\n    };\n\n    const {valid, errors: localErrors} = await validateCommitMessage(commit, options);\n    if (localErrors.length) {\n      errors.push([commit.header, localErrors]);\n    }\n\n    allCommitsInRangeValid = allCommitsInRangeValid && valid;\n  }\n\n  if (allCommitsInRangeValid) {\n    Log.info(green('✔  All commit messages in range valid.'));\n  } else {\n    Log.error('✘  Invalid commit message');\n    errors.forEach(([header, validationErrors]) => {\n      Log.error.group(header);\n      printValidationErrors(validationErrors);\n      Log.error.groupEnd();\n    });\n    // Exit with a non-zero exit code if invalid commit messages have\n    // been discovered.\n    process.exit(1);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {Log} from '../../utils/logging.js';\n\nimport {validateCommitRange} from './validate-range.js';\n\nexport interface ValidateRangeOptions {\n  startingRef: string;\n  endingRef: string;\n}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return argv\n    .positional('startingRef', {\n      description: 'The first ref in the range to select',\n      type: 'string',\n      demandOption: true,\n    })\n    .positional('endingRef', {\n      description: 'The last ref in the range to select',\n      type: 'string',\n      default: 'HEAD',\n    });\n}\n\n/** Handles the command. */\nasync function handler({startingRef, endingRef}: Arguments) {\n  // If on CI, and no pull request number is provided, assume the branch\n  // being run on is an upstream branch.\n  if (process.env['CI'] && process.env['CI_PULL_REQUEST'] === 'false') {\n    Log.info(`Since valid commit messages are enforced by PR linting on CI, we do not`);\n    Log.info(`need to validate commit messages on CI runs on upstream branches.`);\n    Log.info();\n    Log.info(`Skipping check of provided commit range`);\n    return;\n  }\n  await validateCommitRange(startingRef, endingRef);\n}\n\n/** yargs command module describing the command. */\nexport const ValidateRangeModule: CommandModule<{}, ValidateRangeOptions> = {\n  handler,\n  builder,\n  command: 'validate-range  [ending-ref]',\n  describe: 'Validate a range of commit messages',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\n\nimport {RestoreCommitMessageModule} from './restore-commit-message/cli.js';\nimport {ValidateFileModule} from './validate-file/cli.js';\nimport {ValidateRangeModule} from './validate-range/cli.js';\n\n/** Build the parser for the commit-message commands. */\nexport function buildCommitMessageParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .command(RestoreCommitMessageModule)\n    .command(ValidateFileModule)\n    .command(ValidateRangeModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Bar} from 'cli-progress';\nimport multimatch from 'multimatch';\nimport {cpus} from 'os';\n\nimport {ChildProcess, SpawnResult} from '../utils/child-process.js';\nimport {Log} from '../utils/logging.js';\n\nimport {Formatter, FormatterAction, getActiveFormatters} from './formatters/index.js';\n\n// Some environments, like CircleCI which use Docker report a number of CPUs by the host and not the count of available.\n// This causes the task to be killed when formatting a large number of files due lack of resources.\n// https://github.com/nodejs/node/issues/28762\nconst AVAILABLE_THREADS = Math.max(Math.min(cpus().length, 8) - 1, 1);\n\n/** Interface describing a failure occurred during formatting of a file. */\nexport interface FormatFailure {\n  /** Path to the file that failed. */\n  filePath: string;\n  /** Error message reported by the formatter. */\n  message: string;\n}\n\n/**\n * Run the provided commands in parallel for each provided file.\n *\n * Running the formatter is split across (number of available cpu threads - 1) processess.\n * The task is done in multiple processess to speed up the overall time of the task, as running\n * across entire repositories takes a large amount of time.\n * As a data point for illustration, using 8 process rather than 1 cut the execution\n * time from 276 seconds to 39 seconds for the same 2700 files.\n *\n * A promise is returned, completed when the command has completed running for each file.\n * The promise resolves with a list of failures, or `false` if no formatters have matched.\n */\nexport function runFormatterInParallel(allFiles: string[], action: FormatterAction) {\n  return new Promise(async (resolve) => {\n    const formatters = await getActiveFormatters();\n    const failures: FormatFailure[] = [];\n    const pendingCommands: {formatter: Formatter; file: string}[] = [];\n\n    for (const formatter of formatters) {\n      pendingCommands.push(\n        ...multimatch\n          .call(undefined, allFiles, formatter.getFileMatcher(), {dot: true})\n          .map((file) => ({formatter, file})),\n      );\n    }\n\n    // If no commands are generated, resolve the promise as `false` as no files\n    // were run against the any formatters.\n    if (pendingCommands.length === 0) {\n      return resolve(false);\n    }\n\n    switch (action) {\n      case 'format':\n        Log.info(`Formatting ${pendingCommands.length} file(s)`);\n        break;\n      case 'check':\n        Log.info(`Checking format of ${pendingCommands.length} file(s)`);\n        break;\n      default:\n        throw Error(`Invalid format action \"${action}\": allowed actions are \"format\" and \"check\"`);\n    }\n\n    // The progress bar instance to use for progress tracking.\n    const progressBar = new Bar({\n      format: `[{bar}] ETA: {eta}s | {value}/{total} files`,\n      clearOnComplete: true,\n    });\n    // A local copy of the files to run the command on.\n    // An array to represent the current usage state of each of the threads for parallelization.\n    const threads = new Array(AVAILABLE_THREADS).fill(false);\n\n    // Recursively run the command on the next available file from the list using the provided\n    // thread.\n    function runCommandInThread(thread: number) {\n      const nextCommand = pendingCommands.pop();\n      // If no file was pulled from the array, return as there are no more files to run against.\n      if (nextCommand === undefined) {\n        threads[thread] = false;\n        return;\n      }\n\n      // Get the file and formatter for the next command.\n      const {file, formatter} = nextCommand;\n\n      const [spawnCmd, ...spawnArgs] = [...formatter.commandFor(action).split(' '), file];\n\n      ChildProcess.spawn(spawnCmd, spawnArgs, {\n        suppressErrorOnFailingExitCode: true,\n        mode: 'silent',\n      }).then(({stdout, stderr, status}: SpawnResult) => {\n        // Run the provided callback function.\n        const failed = formatter.callbackFor(action)(file, status, stdout, stderr);\n        if (failed) {\n          failures.push({filePath: file, message: stderr});\n        }\n        // Note in the progress bar another file being completed.\n        progressBar.increment(1);\n        // If more files exist in the list, run again to work on the next file,\n        // using the same slot.\n        if (pendingCommands.length) {\n          return runCommandInThread(thread);\n        }\n        // If not more files are available, mark the thread as unused.\n        threads[thread] = false;\n        // If all of the threads are false, as they are unused, mark the progress bar\n        // completed and resolve the promise.\n        if (threads.every((active) => !active)) {\n          progressBar.stop();\n          resolve(failures);\n        }\n      });\n      // Mark the thread as in use as the command execution has been started.\n      threads[thread] = true;\n    }\n\n    // Start the progress bar\n    progressBar.start(pendingCommands.length, 0);\n    // Start running the command on files from the least in each available thread.\n    threads.forEach((_, idx) => runCommandInThread(idx));\n  });\n}\n", "import expand from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  nobrace?: boolean\n  nocomment?: boolean\n  nonegate?: boolean\n  debug?: boolean\n  noglobstar?: boolean\n  noext?: boolean\n  nonull?: boolean\n  windowsPathsNoEscape?: boolean\n  allowWindowsEscape?: boolean\n  partial?: boolean\n  dot?: boolean\n  nocase?: boolean\n  nocaseMagicOnly?: boolean\n  magicalBraces?: boolean\n  matchBase?: boolean\n  flipNegate?: boolean\n  preserveMultipleSlashes?: boolean\n  optimizationLevel?: number\n  platform?: Platform\n  windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n      process.platform\n    : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {}\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick = {}\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n      orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined\n        ? options.windowsNoMagicRoot\n        : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn all ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n      const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // dont' need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n          ? starDotExtTestDot\n          : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n          ? qmarksTestDot\n          : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n      ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n            ? GLOBSTAR\n            : p._src\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        return pp.filter(p => p !== GLOBSTAR).join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n  pattern: any\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n  '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n  '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n  '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n  '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n  '[:cntrl:]': ['\\\\p{Cc}', true],\n  '[:digit:]': ['\\\\p{Nd}', true],\n  '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n  '[:lower:]': ['\\\\p{Ll}', true],\n  '[:print:]': ['\\\\p{C}', true],\n  '[:punct:]': ['\\\\p{P}', true],\n  '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n  '[:upper:]': ['\\\\p{Lu}', true],\n  '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n  '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length\n      ? '(' + sranges + '|' + snegs + ')'\n      : ranges.length\n      ? sranges\n      : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  return windowsPathsNoEscape\n    ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n    : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n", "// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {}\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null\n        ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n        : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty = this.isStart() && this.isEnd()\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string'\n              ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n              : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot\n        ? ''\n        : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!'\n          ? // !() must match something,but !(x) can match ''\n            '))' +\n            (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n            star +\n            ')'\n          : this.type === '@'\n          ? ')'\n          : this.type === '?'\n          ? ')?'\n          : this.type === '+' && bodyDotAllowed\n          ? ')'\n          : this.type === '*' && bodyDotAllowed\n          ? `)?`\n          : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '*') {\n        if (noEmpty && glob === '*') re += starNoEmpty\n        else re += star\n        hasMagic = true\n        continue\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick = {}\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  return windowsPathsNoEscape\n    ? s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "const arrayUnion = (...arguments_) => [...new Set(arguments_.flat())];\n\nexport default arrayUnion;\n", "export default function arrayDiffer(array, ...values) {\n\tconst rest = new Set([...values].flat());\n\treturn array.filter(element => !rest.has(element));\n}\n", "import {minimatch} from 'minimatch';\nimport arrayUnion from 'array-union';\nimport arrayDiffer from 'array-differ';\n\nexport default function multimatch(list, patterns, options = {}) {\n\tlist = [list].flat();\n\tpatterns = [patterns].flat();\n\n\tif (list.length === 0 || patterns.length === 0) {\n\t\treturn [];\n\t}\n\n\tlet result = [];\n\tfor (const item of list) {\n\t\tfor (let pattern of patterns) {\n\t\t\tlet process = arrayUnion;\n\n\t\t\tif (pattern[0] === '!') {\n\t\t\t\tpattern = pattern.slice(1);\n\t\t\t\tprocess = arrayDiffer;\n\t\t\t}\n\n\t\t\tresult = process(result, minimatch.match([item], pattern, options));\n\t\t}\n\t}\n\n\treturn result;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {join} from 'path';\n\nimport {Log} from '../../utils/logging.js';\n\nimport {Formatter} from './base-formatter.js';\n\n/**\n * Formatter for running buildifier against bazel related files.\n */\nexport class Buildifier extends Formatter {\n  override name = 'buildifier';\n\n  override binaryFilePath = join(this.git.baseDir, 'node_modules/.bin/buildifier');\n\n  override defaultFileMatcher = ['**/*.bzl', '**/BUILD.bazel', '**/WORKSPACE', '**/BUILD'];\n\n  override actions = {\n    check: {\n      commandFlags: `${BAZEL_WARNING_FLAG} --lint=warn --mode=check --format=json`,\n      callback: (_: string, code: number | NodeJS.Signals, stdout: string) => {\n        // For cases where `stdout` is empty, we instead use an empty object to still allow parsing.\n        stdout = stdout || '{}';\n        return code !== 0 || !(JSON.parse(stdout) as {success: boolean}).success;\n      },\n    },\n    format: {\n      commandFlags: `${BAZEL_WARNING_FLAG} --lint=fix --mode=fix`,\n      callback: (file: string, code: number | NodeJS.Signals, _: string, stderr: string) => {\n        if (code !== 0) {\n          Log.error(`Error running buildifier on: ${file}`);\n          Log.error(stderr);\n          Log.error();\n          return true;\n        }\n        return false;\n      },\n    },\n  };\n}\n\n// The warning flag for buildifier copied from angular/angular's usage.\nconst BAZEL_WARNING_FLAG =\n  `--warnings=attr-cfg,attr-license,attr-non-empty,attr-output-default,` +\n  `attr-single-file,ctx-args,depset-iteration,depset-union,dict-concatenation,` +\n  `duplicated-name,filetype,git-repository,http-archive,integer-division,load,` +\n  `native-build,native-package,output-group,package-name,package-on-top,positional-args,` +\n  `redefined-variable,repository-name,string-iteration,unused-variable`;\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {FormatConfig} from '../config.js';\n\n// A callback to determine if the formatter run found a failure in formatting.\nexport type CallbackFunc = (\n  file: string,\n  code: number | NodeJS.Signals,\n  stdout: string,\n  stderr: string,\n) => boolean;\n\n// The actions a formatter can take.\nexport type FormatterAction = 'check' | 'format';\n\n// The metadata needed for running one of the `FormatterAction`s on a file.\ninterface FormatterActionMetadata {\n  commandFlags: string;\n  callback: CallbackFunc;\n}\n\n/**\n * The base class for formatters to run against provided files.\n */\nexport abstract class Formatter {\n  /**\n   * The name of the formatter, this is used for identification in logging and for enabling and\n   * configuring the formatter in the config.\n   */\n  abstract name: string;\n\n  /** The full path file location of the formatter binary. */\n  abstract binaryFilePath: string;\n\n  /** Metadata for each `FormatterAction` available to the formatter. */\n  abstract actions: {\n    // An action performing a check of format without making any changes.\n    check: FormatterActionMetadata;\n    // An action to format files in place.\n    format: FormatterActionMetadata;\n  };\n\n  /** The default matchers for the formatter for filtering files to be formatted. */\n  abstract defaultFileMatcher: string[];\n\n  constructor(\n    protected git: GitClient,\n    protected config: FormatConfig,\n  ) {}\n\n  /**\n   * Retrieve the command to execute the provided action, including both the binary\n   * and command line flags.\n   */\n  commandFor(action: FormatterAction) {\n    switch (action) {\n      case 'check':\n        return `${this.binaryFilePath} ${this.actions.check.commandFlags}`;\n      case 'format':\n        return `${this.binaryFilePath} ${this.actions.format.commandFlags}`;\n      default:\n        throw Error('Unknown action type');\n    }\n  }\n\n  /**\n   * Retrieve the callback for the provided action to determine if an action\n   * failed in formatting.\n   */\n  callbackFor(action: FormatterAction) {\n    switch (action) {\n      case 'check':\n        return this.actions.check.callback;\n      case 'format':\n        return this.actions.format.callback;\n      default:\n        throw Error('Unknown action type');\n    }\n  }\n\n  /** Whether the formatter is enabled in the provided config. */\n  isEnabled() {\n    return !!this.config[this.name];\n  }\n\n  /** Retrieve the active file matcher for the formatter. */\n  getFileMatcher() {\n    return this.getFileMatcherFromConfig() || this.defaultFileMatcher;\n  }\n\n  /**\n   * Retrieves the file matcher from the config provided to the constructor if provided.\n   */\n  private getFileMatcherFromConfig(): string[] | undefined {\n    const formatterConfig = this.config[this.name];\n    if (typeof formatterConfig === 'boolean') {\n      return undefined;\n    }\n    return formatterConfig.matchers;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {join} from 'path';\n\nimport {ChildProcess} from '../../utils/child-process.js';\nimport {Log} from '../../utils/logging.js';\n\nimport {Formatter} from './base-formatter.js';\n\n/**\n * Formatter for running prettier against Typescript and Javascript files.\n */\nexport class Prettier extends Formatter {\n  override name = 'prettier';\n\n  override binaryFilePath = join(this.git.baseDir, 'node_modules/.bin/prettier');\n\n  override defaultFileMatcher = [\n    '**/*.{js,cjs,mjs}',\n    '**/*.{ts,cts,mts}',\n    '**/*.json',\n    '**/*.{yml,yaml}',\n  ];\n\n  /**\n   * The configuration path of the prettier config, obtained during construction to prevent needing\n   * to discover it repeatedly for each execution.\n   */\n  private configPath = this.config['prettier']\n    ? ChildProcess.spawnSync(this.binaryFilePath, [\n        '--find-config-path',\n        join(process.cwd(), 'dummy.js'),\n      ]).stdout.trim()\n    : '';\n\n  override actions = {\n    check: {\n      commandFlags: `--config ${this.configPath} --check`,\n      callback: (_: string, code: number | NodeJS.Signals, stdout: string) => {\n        return code !== 0;\n      },\n    },\n    format: {\n      commandFlags: `--config ${this.configPath} --write`,\n      callback: (file: string, code: number | NodeJS.Signals, _: string, stderr: string) => {\n        if (code !== 0) {\n          Log.error(`Error running prettier on: ${file}`);\n          Log.error(stderr);\n          Log.error();\n          return true;\n        }\n        return false;\n      },\n    },\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {getConfig} from '../../utils/config.js';\nimport {assertValidFormatConfig} from '../config.js';\n\nimport {Buildifier} from './buildifier.js';\nimport {Prettier} from './prettier.js';\n\n/**\n * Get all defined formatters which are active based on the current loaded config.\n */\nexport async function getActiveFormatters() {\n  const config = await getConfig();\n  assertValidFormatConfig(config);\n  const gitClient = await GitClient.get();\n\n  return [new Prettier(gitClient, config.format), new Buildifier(gitClient, config.format)].filter(\n    (formatter) => formatter.isEnabled(),\n  );\n}\n\n// Rexport symbols used for types elsewhere.\nexport {Formatter, type FormatterAction} from './base-formatter.js';\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {green, Log} from '../utils/logging.js';\nimport {Prompt} from '../utils/prompt.js';\n\nimport {runFormatterInParallel} from './run-commands-parallel.js';\n\n/**\n * Format provided files in place.\n *\n * @returns a status code indicating whether the formatting run was successful.\n */\nexport async function formatFiles(files: string[]): Promise<1 | 0> {\n  // Whether any files failed to format.\n  let failures = await runFormatterInParallel(files, 'format');\n\n  if (failures === false) {\n    Log.info('No files matched for formatting.');\n    return 0;\n  }\n\n  // The process should exit as a failure if any of the files failed to format.\n  if (failures.length !== 0) {\n    Log.error(`The following files could not be formatted:`);\n    failures.forEach(({filePath, message}) => {\n      Log.info(`  • ${filePath}: ${message}`);\n    });\n    Log.error(`Formatting failed, see errors above for more information.`);\n    return 1;\n  }\n  Log.info(green(`✔  Formatting complete.`));\n  return 0;\n}\n\n/**\n * Check provided files for formatting correctness.\n *\n * @returns a status code indicating whether the format check run was successful.\n */\nexport async function checkFiles(files: string[]) {\n  // Files which are currently not formatted correctly.\n  const failures = await runFormatterInParallel(files, 'check');\n\n  if (failures === false) {\n    Log.info('No files matched for formatting check.');\n    return 0;\n  }\n\n  if (failures.length) {\n    // Provide output expressing which files are failing formatting.\n    Log.warn.group('\\nThe following files are out of format:');\n    for (const {filePath} of failures) {\n      Log.warn(`  • ${filePath}`);\n    }\n    Log.warn.groupEnd();\n    Log.warn();\n\n    // If the command is run in a non-CI environment, prompt to format the files immediately.\n    let runFormatter = false;\n    if (!process.env['CI']) {\n      runFormatter = await Prompt.confirm({message: 'Format the files now?', default: true});\n    }\n\n    if (runFormatter) {\n      // Format the failing files as requested.\n      return (await formatFiles(failures.map((f) => f.filePath))) || 0;\n    } else {\n      // Inform user how to format files in the future.\n      Log.info();\n      Log.info(`To format the failing file run the following command:`);\n      Log.info(`  yarn ng-dev format files ${failures.map((f) => f.filePath).join(' ')}`);\n      return 1;\n    }\n  } else {\n    Log.info(green('✔  All files correctly formatted.'));\n    return 0;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {GitClient} from '../utils/git/git-client.js';\nimport {checkFiles, formatFiles} from './format.js';\n\n/** Command line options. */\nexport interface Options {\n  check: boolean;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv.option('check', {\n    type: 'boolean',\n    default: process.env['CI'] ? true : false,\n    description: 'Run the formatter to check formatting rather than updating code format',\n  });\n}\n\n/** Yargs command handler for the command. */\nasync function handler({check}: Arguments) {\n  const git = await GitClient.get();\n  const executionCmd = check ? checkFiles : formatFiles;\n  const allFiles = git.allFiles();\n  process.exitCode = await executionCmd(allFiles);\n}\n\n/** CLI command module. */\nexport const AllFilesModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'all',\n  describe: 'Run the formatter on all files in the repository',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {GitClient} from '../utils/git/git-client.js';\nimport {checkFiles, formatFiles} from './format.js';\n\n/** Command line options. */\nexport interface Options {\n  shaOrRef?: string;\n  check: boolean;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv\n    .option('check', {\n      type: 'boolean',\n      default: process.env['CI'] ? true : false,\n      description: 'Run the formatter to check formatting rather than updating code format',\n    })\n    .positional('shaOrRef', {type: 'string'});\n}\n\n/** Yargs command handler for the command. */\nasync function handler({shaOrRef, check}: Arguments) {\n  const git = await GitClient.get();\n  const sha = shaOrRef || git.mainBranchName;\n  const executionCmd = check ? checkFiles : formatFiles;\n  const allChangedFilesSince = git.allChangesFilesSince(sha);\n  process.exitCode = await executionCmd(allChangedFilesSince);\n}\n\n/** CLI command module. */\nexport const ChangedModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'changed [shaOrRef]',\n  describe: 'Run the formatter on files changed since the provided sha/ref',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {checkFiles, formatFiles} from './format.js';\nimport glob from 'fast-glob';\n\n/** Command line options. */\nexport interface Options {\n  files: string[];\n  check: boolean;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv\n    .option('check', {\n      type: 'boolean',\n      default: process.env['CI'] ? true : false,\n      description: 'Run the formatter to check formatting rather than updating code format',\n    })\n    .positional('files', {array: true, type: 'string', demandOption: true});\n}\n\n/** Yargs command handler for the command. */\nasync function handler({files, check}: Arguments) {\n  const expandedFiles = glob.sync(\n    files.map((file) => file.replace(/\\/...$/, '/**/*')),\n    {onlyFiles: true},\n  );\n  const executionCmd = check ? checkFiles : formatFiles;\n  process.exitCode = await executionCmd(expandedFiles);\n}\n\n/** CLI command module. */\nexport const FilesModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'files ',\n  describe: 'Run the formatter on provided files',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {GitClient} from '../utils/git/git-client.js';\nimport {checkFiles, formatFiles} from './format.js';\n\n/** Command line options. */\nexport interface Options {\n  check: boolean;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv.option('check', {\n    type: 'boolean',\n    default: process.env['CI'] ? true : false,\n    description: 'Run the formatter to check formatting rather than updating code format',\n  });\n}\n\n/** Yargs command handler for the command. */\nasync function handler({check}: Arguments) {\n  const git = await GitClient.get();\n  const executionCmd = check ? checkFiles : formatFiles;\n  const allStagedFiles = git.allStagedFiles();\n  process.exitCode = await executionCmd(allStagedFiles);\n  if (!check && process.exitCode === 0) {\n    git.runGraceful(['add', ...allStagedFiles]);\n  }\n}\n\n/** CLI command module. */\nexport const StagedModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'staged',\n  describe: 'Run the formatter on all staged files',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\nimport {registerCompletedFunction} from '../utils/yargs.js';\nimport {AllFilesModule} from './all.js';\nimport {ChangedModule} from './changed.js';\nimport {FilesModule} from './files.js';\nimport {StagedModule} from './staged.js';\n\n/** Build the parser for the format commands. */\nexport function buildFormatParser(localYargs: Argv) {\n  return localYargs\n    .command(AllFilesModule)\n    .command(StagedModule)\n    .command(ChangedModule)\n    .command(FilesModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {lstatSync} from 'fs';\nimport {resolve} from 'path';\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {BuildWorker} from '../../release/build/index.js';\nimport {ChildProcess} from '../../utils/child-process.js';\nimport {Log, green} from '../../utils/logging.js';\nimport {getConfig} from '../../utils/config.js';\nimport {assertValidReleaseConfig} from '../../release/config/index.js';\n\n/** Command line options. */\nexport interface BuildAndLinkOptions {\n  projectRoot: string;\n}\n\n/** Yargs command builder for the command. */\nfunction builder(argv: Argv): Argv {\n  return argv.positional('projectRoot', {\n    type: 'string',\n    normalize: true,\n    coerce: (path: string) => resolve(path),\n    demandOption: true,\n  });\n}\n\n/** Yargs command handler for the command. */\nasync function handler({projectRoot}: Arguments) {\n  try {\n    if (!lstatSync(projectRoot).isDirectory()) {\n      Log.error(`  ✘   The 'projectRoot' must be a directory: ${projectRoot}`);\n      process.exit(1);\n    }\n  } catch {\n    Log.error(`  ✘   Could not find the 'projectRoot' provided: ${projectRoot}`);\n    process.exit(1);\n  }\n\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n\n  const builtPackages = await BuildWorker.invokeBuild();\n\n  if (builtPackages === null) {\n    Log.error(`  ✘   Could not build release output. Please check output above.`);\n    process.exit(1);\n  }\n  Log.info(green(` ✓  Built release output.`));\n\n  for (const {outputPath, name} of builtPackages) {\n    await ChildProcess.spawn('yarn', ['link', '--cwd', outputPath]);\n    await ChildProcess.spawn('yarn', ['link', '--cwd', projectRoot, name]);\n  }\n\n  Log.info(green(` ✓  Linked release packages in provided project.`));\n}\n\n/** CLI command module. */\nexport const BuildAndLinkCommandModule: CommandModule<{}, BuildAndLinkOptions> = {\n  builder,\n  handler,\n  command: 'build-and-link ',\n  describe:\n    'Builds the release output, registers the outputs as linked, and links via yarn to the provided project',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {dirname, join} from 'path';\nimport {fileURLToPath} from 'url';\nimport {fork} from 'child_process';\nimport {BuiltPackage} from '../config/index.js';\n\nexport abstract class BuildWorker {\n  /**\n   * Builds the release output without polluting the process stdout. Build scripts commonly\n   * print messages to stderr or stdout. This is fine in most cases, but sometimes other tooling\n   * reserves stdout for data transfer (e.g. when `ng release build --json` is invoked). To not\n   * pollute the stdout in such cases, we launch a child process for building the release packages\n   * and redirect all stdout output to the stderr channel (which can be read in the terminal).\n   */\n  static async invokeBuild(): Promise {\n    return new Promise((resolve) => {\n      const buildProcess = fork(getBuildWorkerScriptPath(), {\n        // The stdio option is set to redirect any \"stdout\" output directly to the \"stderr\" file\n        // descriptor. An additional \"ipc\" file descriptor is created to support communication with\n        // the build process. https://nodejs.org/api/child_process.html#child_process_options_stdio.\n        stdio: ['inherit', 2, 2, 'ipc'],\n      });\n      let builtPackages: BuiltPackage[] | null = null;\n\n      // The child process will pass the `buildPackages()` output through the\n      // IPC channel. We keep track of it so that we can use it as resolve value.\n      buildProcess.on(\n        'message',\n        (buildResponse: BuiltPackage[]) => (builtPackages = buildResponse),\n      );\n\n      // On child process exit, resolve the promise with the received output.\n      buildProcess.on('exit', () => resolve(builtPackages));\n    });\n  }\n}\n\n/** Gets the absolute file path to the build worker script. */\nfunction getBuildWorkerScriptPath(): string {\n  // This file is getting bundled and ends up in `/bundles/`. We also\n  // bundle the build worker script as another entry-point and can reference\n  // it relatively as the path is preserved inside `bundles/`.\n  // *Note*: Relying on package resolution is problematic within ESM and with `local-dev.sh`\n  const bundlesDir = dirname(fileURLToPath(import.meta.url));\n  return join(bundlesDir, './release/build/build-worker.mjs');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {readdirSync, unlinkSync} from 'fs';\nimport {join} from 'path';\nimport {Argv, CommandModule} from 'yargs';\nimport {ChildProcess} from '../../utils/child-process.js';\n\nimport {Log} from '../../utils/logging.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\nimport {getYarnPathFromNpmGlobalBinaries} from '../../utils/resolve-yarn-bin.js';\nimport {getRepositoryGitUrl} from '../../utils/git/github-urls.js';\n\nasync function builder(argv: Argv) {\n  return addGithubTokenOption(argv);\n}\n\n/** Environment object enabling the usage of yarn-path to determine the new version. */\nconst useYarnPathEnv = {\n  ...process.env,\n  YARN_IGNORE_PATH: '0',\n};\n\n/** Environment object to prevent running husky workflow. */\nconst skipHuskyEnv = {\n  ...process.env,\n  HUSKY: '0',\n};\n\nasync function handler() {\n  /**\n   * Process command that refers to the global Yarn installation.\n   *\n   * Note that we intend to use the global Yarn command here as this allows us to let Yarn\n   * respect the `.yarnrc` file, allowing us to check if the update has completed properly.\n   * Just using `yarn` does not necessarily resolve to the global Yarn version as Yarn-initiated\n   * sub-processes will have a modified `process.env.PATH` that directly points to the Yarn\n   * version that spawned the sub-process.\n   */\n  const yarnGlobalBin = (await getYarnPathFromNpmGlobalBinaries()) ?? 'yarn';\n  /** Instance of the local git client. */\n  const git = await AuthenticatedGitClient.get();\n  /** The main branch name of the repository. */\n  const mainBranchName = git.mainBranchName;\n  /** The original branch or ref before the command was invoked. */\n  const originalBranchOrRef = git.getCurrentBranchOrRevision();\n\n  if (git.hasUncommittedChanges()) {\n    Log.error('Found changes in the local repository. Make sure there are no uncommitted files.');\n    process.exitCode = 1;\n    return;\n  }\n\n  /** A spinner instance. */\n  const spinner = new Spinner('');\n  try {\n    spinner.update(`Fetching the latest primary branch from upstream: \"${mainBranchName}\"`);\n    git.run(['fetch', '-q', git.getRepoGitUrl(), mainBranchName]);\n    git.checkout('FETCH_HEAD', false);\n\n    spinner.update('Removing previous yarn version.');\n    const yarnReleasesDir = join(git.baseDir, '.yarn/releases');\n    readdirSync(yarnReleasesDir).forEach((file) => unlinkSync(join(yarnReleasesDir, file)));\n\n    spinner.update('Updating yarn version.');\n    ChildProcess.spawnSync(yarnGlobalBin, ['policies', 'set-version', 'latest']);\n\n    spinner.update('Confirming the version of yarn was updated.');\n\n    const newYarnVersion = ChildProcess.spawnSync(yarnGlobalBin, ['-v'], {\n      env: useYarnPathEnv,\n    }).stdout.trim();\n\n    if (git.run(['status', '--porcelain']).stdout.length === 0) {\n      spinner.complete();\n      Log.error('Yarn already up to date');\n      process.exitCode = 0;\n      return;\n    }\n    /** The title for the PR. */\n    const title = `build: update to yarn v${newYarnVersion}`;\n    /** The body for the PR. */\n    const body = `Update to the latest version of yarn, ${newYarnVersion}.`;\n    /** The commit message for the change. */\n    const commitMessage = `${title}\\n\\n${body}`;\n    /** The name of the branch to use on remote. */\n    const branchName = `yarn-update-v${newYarnVersion}`;\n    /** The fork of the user */\n    const userFork = await git.getForkOfAuthenticatedUser();\n    /** The name of the owner for remote branch on Github. */\n    const {owner: localOwner} = userFork;\n\n    spinner.update('Staging yarn vendoring files and creating commit');\n    git.run(['add', '.yarn/releases/**', '.yarnrc']);\n    git.run(['commit', '-q', '--no-verify', '-m', commitMessage], {env: skipHuskyEnv});\n\n    spinner.update('Pushing commit changes to github.');\n    git.run([\n      'push',\n      '-q',\n      getRepositoryGitUrl(userFork, git.githubToken),\n      '--force-with-lease',\n      `HEAD:refs/heads/${branchName}`,\n    ]);\n\n    spinner.update('Creating a PR for the changes.');\n    const {number} = (\n      await git.github.pulls.create({\n        ...git.remoteParams,\n        title,\n        body,\n        base: mainBranchName,\n        head: `${localOwner}:${branchName}`,\n      })\n    ).data;\n\n    spinner.complete();\n    Log.info(`Created PR #${number} to update to yarn v${newYarnVersion}`);\n  } catch (e) {\n    spinner.complete();\n    Log.error('Aborted yarn update do to errors:');\n    Log.error(e);\n    process.exitCode = 1;\n    git.checkout(originalBranchOrRef, true);\n  } finally {\n    git.checkout(originalBranchOrRef, true);\n  }\n}\n\n/** CLI command module. */\nexport const UpdateYarnCommandModule: CommandModule = {\n  builder,\n  handler,\n  command: 'update-yarn',\n  describe: 'Automatically update the vendored yarn version in the repository and create a PR',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {cursorTo, clearLine} from 'readline';\nimport {green, red} from './logging.js';\n\n/** Whether execution is in a CI environment. */\nconst IS_CI = process.env['CI'];\n/** ANSI escape code to hide cursor in terminal. */\nconst hideCursor = '\\x1b[?25l';\n/** ANSI escape code to show cursor in terminal. */\nconst showCursor = '\\x1b[?25h';\n\nexport class Spinner {\n  /** Whether the spinner is marked as completed. */\n  private completed = false;\n  /** The id of the interval being used to trigger frame printing. */\n  private intervalId = setInterval(() => this.printFrame(), IS_CI ? 2500 : 125);\n  /** The characters to iterate through to create the appearance of spinning in the spinner. */\n  private spinnerCharacters = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n  /** The index of the spinner character used in the frame. */\n  private currentSpinnerCharacterIndex = 0;\n  /** The current text of the spinner. */\n  private _text: string = '';\n  private set text(text: string | undefined) {\n    this._text = text || this._text;\n    this.printFrame(this.getNextSpinnerCharacter(), text);\n  }\n  private get text(): string {\n    return this._text;\n  }\n\n  constructor();\n  constructor(text: string);\n  constructor(text?: string) {\n    this.hideCursor();\n    this.text = text;\n  }\n\n  /** Updates the spinner text with the provided text. */\n  update(text: string) {\n    this.text = text;\n  }\n\n  /** Completes the spinner marking it as successful with a `✓`. */\n  success(text: string): void {\n    this._complete(green('✓'), text);\n  }\n\n  /** Completes the spinner marking it as failing with an `✘`. */\n  failure(text: string): void {\n    this._complete(red('✘'), text);\n  }\n\n  /** Completes the spinner. */\n  complete() {\n    this._complete('', this.text);\n  }\n\n  /**\n   * Internal implementation for completing the spinner, marking it as completed, and printing the\n   * final frame.\n   */\n  private _complete(prefix: string, text: string) {\n    if (this.completed) {\n      return;\n    }\n    clearInterval(this.intervalId);\n    this.printFrame(prefix, text);\n    process.stdout.write('\\n');\n    this.showCursor();\n    this.completed = true;\n  }\n\n  /** Get the next spinner character. */\n  private getNextSpinnerCharacter() {\n    this.currentSpinnerCharacterIndex =\n      (this.currentSpinnerCharacterIndex + 1) % this.spinnerCharacters.length;\n    return this.spinnerCharacters[this.currentSpinnerCharacterIndex];\n  }\n\n  /**\n   * Print the next frame either in CI mode or local terminal mode based on whether the script is run in a\n   * CI environment.\n   */\n  private printFrame(prefix = this.getNextSpinnerCharacter(), text?: string): void {\n    if (IS_CI) {\n      this.printNextCIFrame(text);\n    } else {\n      this.printNextLocalFrame(prefix, text);\n    }\n  }\n\n  /** Print the current text for the spinner to the terminal.  */\n  private printNextLocalFrame(prefix: string, text?: string) {\n    cursorTo(process.stdout, 0);\n    process.stdout.write(` ${prefix} ${text || this.text}`);\n    // Clear to the right of the cursor location in case the new frame is shorter than the previous.\n    clearLine(process.stdout, 1);\n  }\n\n  /** Print the next expected piece for the spinner to stdout for CI usage.  */\n  private printNextCIFrame(text?: string) {\n    if (text) {\n      process.stdout.write(`\\n${text}.`);\n      return;\n    }\n    process.stdout.write('.');\n  }\n\n  /** Hide the cursor in the terminal, only executed in local environments. */\n  private hideCursor() {\n    if (!IS_CI) {\n      process.stdout.write(hideCursor);\n    }\n  }\n\n  /** Resume showing the cursor in the terminal, only executed in local environments. */\n  private showCursor() {\n    if (!IS_CI) {\n      process.stdout.write(showCursor);\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {join} from 'path';\nimport {determineRepoBaseDirFromCwd} from './repo-directory.js';\n\nlet BAZEL_BIN: undefined | string = undefined;\n\nexport function getBazelBin() {\n  if (BAZEL_BIN === undefined) {\n    BAZEL_BIN = process.env.BAZEL || join(determineRepoBaseDirFromCwd(), 'node_modules/.bin/bazel');\n  }\n\n  return BAZEL_BIN;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChildProcess} from '../../utils/child-process.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {getBazelBin} from '../../utils/bazel-bin.js';\nimport {green, Log} from '../../utils/logging.js';\n\nexport async function updateGeneratedFileTargets(): Promise {\n  const spinner = new Spinner('Querying for all generated file targets');\n\n  // Query for all of the generated file targets\n  const result = await ChildProcess.spawn(\n    getBazelBin(),\n    [\n      'query',\n      `\"kind(nodejs_binary, //...) intersect attr(name, '.update$', //...)\"`,\n      '--output',\n      'label',\n    ],\n    {mode: 'silent'},\n  );\n\n  if (result.status !== 0) {\n    spinner.complete();\n    throw Error(`Unexpected error: ${result.stderr}`);\n  }\n\n  const targets = result.stdout.trim().split(/\\r?\\n/);\n\n  Log.debug.group('Discovered Targets');\n  targets.forEach((target) => Log.debug(target));\n  Log.debug.groupEnd();\n\n  spinner.update(`Found ${targets.length} generated file targets to update`);\n\n  // Build all of the generated file targets in parallel.\n  await ChildProcess.spawn(getBazelBin(), ['build', targets.join(' ')], {mode: 'silent'});\n\n  // Individually run the generated file update targets.\n  for (let idx = 0; idx < targets.length; idx++) {\n    const target = targets[idx];\n    spinner.update(`${idx + 1} of ${targets.length} updates completed`);\n    const updateResult = await ChildProcess.spawn(getBazelBin(), ['run', target], {mode: 'silent'});\n    if (updateResult.status !== 0) {\n      spinner.complete();\n      throw Error(`Unexpected error while updating: ${target}.`);\n    }\n  }\n\n  spinner.complete();\n  Log.info(` ${green('✔')}  Updated all generated files (${targets.length} targets)`);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, CommandModule} from 'yargs';\nimport {updateGeneratedFileTargets} from './update-generated-files.js';\n\nasync function builder(argv: Argv) {\n  return argv;\n}\nasync function handler() {\n  await updateGeneratedFileTargets();\n}\n\n/** CLI command module. */\nexport const GeneratedFilesModule: CommandModule = {\n  builder,\n  handler,\n  command: 'update-generated-files',\n  describe: 'Automatically discover all bazel generated file targets and update them.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\n\nimport {BuildAndLinkCommandModule} from './build-and-link/cli.js';\nimport {UpdateYarnCommandModule} from './update-yarn/cli.js';\nimport {GeneratedFilesModule} from './generated-files/cli.js';\n\n/** Build the parser for the misc commands. */\nexport function buildMiscParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .command(BuildAndLinkCommandModule)\n    .command(UpdateYarnCommandModule)\n    .command(GeneratedFilesModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {readFileSync} from 'fs';\nimport {resolve} from 'path';\nimport {parse as parseYaml} from 'yaml';\n\nimport {Log, green} from '../utils/logging.js';\nimport {GitClient} from '../utils/git/git-client.js';\n\nexport async function verify() {\n  const git = await GitClient.get();\n  /** Full path to NgBot config file */\n  const NGBOT_CONFIG_YAML_PATH = resolve(git.baseDir, '.github/angular-robot.yml');\n\n  /** The NgBot config file */\n  const ngBotYaml = readFileSync(NGBOT_CONFIG_YAML_PATH, 'utf8');\n\n  try {\n    // Try parsing the config file to verify that the syntax is correct.\n    parseYaml(ngBotYaml);\n    Log.info(green('✔  Valid NgBot YAML config'));\n  } catch (e) {\n    Log.error(`! Invalid NgBot YAML config`);\n    Log.error(e);\n    process.exitCode = 1;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\nimport {verify} from './verify.js';\n\n/** Build the parser for the NgBot commands. */\nexport function buildNgbotParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .command('verify', 'Verify the NgBot config', {}, () => verify());\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseConfig} from '../../../release/config/index.js';\nimport {\n  computeLtsEndDateOfMajor,\n  fetchProjectNpmPackageInfo,\n  getLtsNpmDistTagOfMajor,\n  getVersionInfoForBranch,\n  ReleaseRepoWithApi,\n} from '../../../release/versioning/index.js';\n\nimport {Log, red, yellow} from '../../../utils/logging.js';\nimport {InvalidTargetBranchError} from './target-label.js';\nimport {defaultLocale} from '../../../utils/locale.js';\nimport {Prompt} from '../../../utils/prompt.js';\n\n/**\n * Asserts that the given branch corresponds to an active LTS version-branch that can receive\n * backport fixes. Throws an error if LTS expired or an invalid branch is selected.\n *\n * @param repo Repository containing the given branch. Used for Github API queries.\n * @param releaseConfig Configuration for releases. Used to query NPM about past publishes.\n * @param branchName Branch that is checked to be an active LTS version-branch.\n * */\nexport async function assertActiveLtsBranch(\n  repo: ReleaseRepoWithApi,\n  releaseConfig: ReleaseConfig,\n  branchName: string,\n) {\n  const {version} = await getVersionInfoForBranch(repo, branchName);\n  const {'dist-tags': distTags, time} = await fetchProjectNpmPackageInfo(releaseConfig);\n\n  // LTS versions should be tagged in NPM in the following format: `v{major}-lts`.\n  const ltsNpmTag = getLtsNpmDistTagOfMajor(version.major);\n  const ltsVersion = semver.parse(distTags[ltsNpmTag]);\n\n  // Ensure that there is an LTS version tagged for the given version-branch major. e.g.\n  // if the version branch is `9.2.x` then we want to make sure that there is an LTS\n  // version tagged in NPM for `v9`, following the `v{major}-lts` tag convention.\n  if (ltsVersion === null) {\n    throw new InvalidTargetBranchError(`No LTS version tagged for v${version.major} in NPM.`);\n  }\n\n  // Ensure that the correct branch is used for the LTS version. We do not want to merge\n  // changes to older minor version branches that do not reflect the current LTS version.\n  if (branchName !== `${ltsVersion.major}.${ltsVersion.minor}.x`) {\n    throw new InvalidTargetBranchError(\n      `Not using last-minor branch for v${version.major} LTS version. PR ` +\n        `should be updated to target: ${ltsVersion.major}.${ltsVersion.minor}.x`,\n    );\n  }\n\n  const today = new Date();\n  const majorReleaseDate = new Date(time[`${version.major}.0.0`]);\n  const ltsEndDate = computeLtsEndDateOfMajor(majorReleaseDate);\n\n  // Check if LTS has already expired for the targeted major version. If so, we do not\n  // allow the merge as per our LTS guarantees. Can be forcibly overridden if desired.\n  // See: https://angular.io/guide/releases#support-policy-and-schedule.\n  if (today > ltsEndDate) {\n    const ltsEndDateText = ltsEndDate.toLocaleDateString(defaultLocale);\n    Log.warn(red(`Long-term support ended for v${version.major} on ${ltsEndDateText}.`));\n    Log.warn(\n      yellow(\n        `Merging of pull requests for this major is generally not ` +\n          `desired, but can be forcibly ignored.`,\n      ),\n    );\n    if (await Prompt.confirm({message: 'Do you want to forcibly proceed with merging?'})) {\n      return;\n    }\n    throw new InvalidTargetBranchError(\n      `Long-term supported ended for v${version.major} on ${ltsEndDateText}. ` +\n        `Pull request cannot be merged into the ${branchName} branch.`,\n    );\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Default locale used in the tool for string comparisons and locale-specific output. */\nexport const defaultLocale = 'en-US';\n\n/**\n * Compares a given string to another one, returning a number indicating\n * whether `a` should be positioned before `b` or the other way around.\n */\nexport function compareString(a: string, b: string): number {\n  return a.localeCompare(b, defaultLocale);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertValidReleaseConfig, ReleaseConfig} from '../../../release/config/index.js';\nimport {\n  ActiveReleaseTrains,\n  getNextBranchName,\n  isVersionBranch,\n  ReleaseRepoWithApi,\n} from '../../../release/versioning/index.js';\nimport {\n  assertValidGithubConfig,\n  ConfigValidationError,\n  GithubConfig,\n  NgDevConfig,\n} from '../../../utils/config.js';\nimport {\n  InvalidTargetBranchError,\n  InvalidTargetLabelError,\n  TargetLabelConfig,\n} from './target-label.js';\n\nimport {assertActiveLtsBranch} from './lts-branch.js';\nimport {GithubClient} from '../../../utils/git/github.js';\nimport {Log} from '../../../utils/logging.js';\nimport {assertValidPullRequestConfig, PullRequestConfig} from '../../config/index.js';\nimport {targetLabels} from '../labels/target.js';\n\n/**\n * Gets a list of target labels and their configs. The merge tooling will\n * respect match to the appropriate label config and leverage it for determining\n * into which branches a pull request should merge into.\n *\n * The target label configs are implemented according to the design document which\n * specifies versioning, branching and releasing for the Angular organization:\n * https://docs.google.com/document/d/197kVillDwx-RZtSVOBtPb4BBIAw0E9RT3q3v6DZkykU\n *\n * @param api Instance of a Github client. Used to query for the release train branches.\n * @param config Configuration for the Github remote and release packages. Used to fetch\n *   NPM version data when LTS version branches are validated.\n */\nexport async function getTargetLabelConfigsForActiveReleaseTrains(\n  {latest, releaseCandidate, next, exceptionalMinor}: ActiveReleaseTrains,\n  api: GithubClient,\n  config: NgDevConfig<{\n    github: GithubConfig;\n    pullRequest: PullRequestConfig;\n    release?: ReleaseConfig;\n  }>,\n): Promise {\n  assertValidGithubConfig(config);\n  assertValidPullRequestConfig(config);\n\n  const nextBranchName = getNextBranchName(config.github);\n  const repo: ReleaseRepoWithApi = {\n    owner: config.github.owner,\n    name: config.github.name,\n    nextBranchName,\n    api,\n  };\n\n  const labelConfigs: TargetLabelConfig[] = [\n    {\n      label: targetLabels.TARGET_MAJOR,\n      branches: () => {\n        // If `next` is currently not designated to be a major version, we do not\n        // allow merging of PRs with `target: major`.\n        if (!next.isMajor) {\n          throw new InvalidTargetLabelError(\n            `Unable to merge pull request. The \"${nextBranchName}\" branch will be released as ` +\n              'a minor version.',\n          );\n        }\n        return [nextBranchName];\n      },\n    },\n    {\n      label: targetLabels.TARGET_MINOR,\n      branches: (githubTargetBranch) => {\n        // If there is an exceptional minor in-progress, and a PR specifically sets\n        // its destination to it, along with `target: minor`, then we merge into it.\n        // This allows for an exceptional minor train to receive e.g. features.\n        // See: http://go/angular-exceptional-minor\n        if (githubTargetBranch === exceptionalMinor?.branchName) {\n          return [exceptionalMinor.branchName];\n        }\n\n        return [nextBranchName];\n      },\n    },\n    {\n      label: targetLabels.TARGET_PATCH,\n      branches: (githubTargetBranch) => {\n        // If a PR is targeting the latest active version-branch through the Github UI,\n        // and is also labeled with `target: patch`, then we merge it directly into the\n        // branch without doing any cherry-picking. This is useful if a PR could not be\n        // applied cleanly, and a separate PR for the patch branch has been created.\n        if (githubTargetBranch === latest.branchName) {\n          return [latest.branchName];\n        }\n        // Otherwise, patch changes are always merged into the next and patch branch.\n        const branches = [nextBranchName, latest.branchName];\n        // Additionally, if there is a release-candidate/feature-freeze release-train\n        // currently active, also merge the PR into that version-branch.\n        if (releaseCandidate !== null) {\n          branches.push(releaseCandidate.branchName);\n        }\n        // If there is an exceptional minor, patch changes should always go into it.\n        // It would be a potential loss of fixes/patches if suddenly the exceptional\n        // minor becomes the new patch- but misses some commits.\n        // More details here: http://go/angular-exceptional-minor.\n        if (exceptionalMinor !== null) {\n          branches.push(exceptionalMinor.branchName);\n        }\n        return branches;\n      },\n    },\n    {\n      label: targetLabels.TARGET_RC,\n      branches: (githubTargetBranch) => {\n        // The `target: rc` label cannot be applied if there is no active feature-freeze\n        // or release-candidate release train.\n        if (releaseCandidate === null) {\n          throw new InvalidTargetLabelError(\n            `No active feature-freeze/release-candidate branch. ` +\n              `Unable to merge pull request using \"target: rc\" label.`,\n          );\n        }\n        // If the PR is targeting the active release-candidate/feature-freeze version branch\n        // directly through the Github UI and has the `target: rc` label applied, merge it\n        // only into the release candidate branch. This is useful if a PR did not apply cleanly\n        // into the release-candidate/feature-freeze branch, and a separate PR has been created.\n        if (githubTargetBranch === releaseCandidate.branchName) {\n          return [releaseCandidate.branchName];\n        }\n        // Otherwise, merge into the next and active release-candidate/feature-freeze branch.\n        return [nextBranchName, releaseCandidate.branchName];\n      },\n    },\n    {\n      label: targetLabels.TARGET_FEATURE,\n      branches: (githubTargetBranch) => {\n        if (isVersionBranch(githubTargetBranch) || githubTargetBranch === nextBranchName) {\n          throw new InvalidTargetBranchError(\n            '\"target: feature\" pull requests cannot target a releasable branch',\n          );\n        }\n        return [githubTargetBranch];\n      },\n    },\n  ];\n\n  // LTS branches can only be determined if the release configuration is defined, and must be added\n  // after asserting the configuration contains a release config.\n  try {\n    assertValidReleaseConfig(config);\n    labelConfigs.push({\n      // LTS changes are rare enough that we won't worry about cherry-picking changes into all\n      // active LTS branches for PRs created against any other branch. Instead, PR authors need\n      // to manually create separate PRs for desired LTS branches. Additionally, active LT branches\n      // commonly diverge quickly. This makes cherry-picking not an option for LTS changes.\n      label: targetLabels.TARGET_LTS,\n      branches: async (githubTargetBranch) => {\n        if (!isVersionBranch(githubTargetBranch)) {\n          throw new InvalidTargetBranchError(\n            `PR cannot be merged as it does not target a long-term support ` +\n              `branch: \"${githubTargetBranch}\"`,\n          );\n        }\n        if (githubTargetBranch === latest.branchName) {\n          throw new InvalidTargetBranchError(\n            `PR cannot be merged with \"target: lts\" into patch branch. ` +\n              `Consider changing the label to \"target: patch\" if this is intentional.`,\n          );\n        }\n        if (releaseCandidate !== null && githubTargetBranch === releaseCandidate.branchName) {\n          throw new InvalidTargetBranchError(\n            `PR cannot be merged with \"target: lts\" into feature-freeze/release-candidate ` +\n              `branch. Consider changing the label to \"target: rc\" if this is intentional.`,\n          );\n        }\n        // Assert that the selected branch is an active LTS branch.\n        assertValidReleaseConfig(config);\n        await assertActiveLtsBranch(repo, config.release, githubTargetBranch);\n        return [githubTargetBranch];\n      },\n    });\n  } catch (err) {\n    if (err instanceof ConfigValidationError) {\n      Log.debug('LTS target label not included in target labels as no valid release');\n      Log.debug('configuration was found to allow the LTS branches to be determined.');\n    } else {\n      throw err;\n    }\n  }\n\n  return labelConfigs;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestConfig} from '../../config/index.js';\nimport {getTargetLabelConfigsForActiveReleaseTrains} from './labels.js';\nimport {GithubConfig, NgDevConfig} from '../../../utils/config.js';\nimport {GithubClient} from '../../../utils/git/github.js';\nimport {ActiveReleaseTrains} from '../../../release/versioning/index.js';\nimport {TargetLabel} from '../labels/target.js';\n\n/** Type describing the determined target of a pull request. */\nexport interface PullRequestTarget {\n  /** Branches which the pull request targets. */\n  branches: string[];\n  /** Target label applied to the pull request. */\n  label: TargetLabel;\n}\n\n/**\n * Configuration for a target label. The config is responsible for\n * mapping a label to its branches.\n */\nexport interface TargetLabelConfig {\n  /** Target label for which the config applies to. */\n  label: TargetLabel;\n  /**\n   * List of branches a pull request with this target label should be merged into.\n   * Can also be wrapped in a function that accepts the target branch specified in the\n   * Github Web UI. This is useful for supporting labels like `target: development-branch`.\n   *\n   * @throws {InvalidTargetLabelError} Invalid label has been applied to pull request.\n   * @throws {InvalidTargetBranchError} Invalid Github target branch has been selected.\n   */\n  branches: (githubTargetBranch: string) => string[] | Promise;\n}\n\n/**\n * Unique error that will be thrown if an invalid branch is targeted.\n */\nexport class InvalidTargetBranchError {\n  constructor(public failureMessage: string) {}\n}\n\n/**\n * Unique error that will be thrown if an invalid label has been\n * applied to a pull request.\n */\nexport class InvalidTargetLabelError {\n  constructor(public failureMessage: string) {}\n}\n\n/**\n * Gets the matching target label config based on pull request labels.\n *\n * @throws {InvalidTargetLabelError} An invalid target label error is thrown\n *   if no single valid target label is applied.\n */\nexport async function getMatchingTargetLabelConfigForPullRequest(\n  labelsOnPullRequest: string[],\n  labelConfigs: TargetLabelConfig[],\n): Promise {\n  const matches: TargetLabelConfig[] = [];\n\n  for (const prLabelName of labelsOnPullRequest) {\n    const match = labelConfigs.find(({label}) => label.name === prLabelName);\n    if (match !== undefined) {\n      matches.push(match);\n    }\n  }\n  if (matches.length === 1) {\n    return matches[0];\n  }\n  if (matches.length === 0) {\n    throw new InvalidTargetLabelError(\n      'Unable to determine target for the PR as it has no target label.',\n    );\n  }\n  throw new InvalidTargetLabelError(\n    'Unable to determine target for the PR as it has multiple target labels.',\n  );\n}\n\n/**\n * Gets the target branches and label of the given pull request.\n *\n * @throws {InvalidTargetLabelError} An invalid target label error is thrown\n *   if no single valid target label is applied.\n */\nexport async function getTargetBranchesAndLabelForPullRequest(\n  activeReleaseTrains: ActiveReleaseTrains,\n  github: GithubClient,\n  config: NgDevConfig<{pullRequest: PullRequestConfig; github: GithubConfig}>,\n  labelsOnPullRequest: string[],\n  githubTargetBranch: string,\n): Promise {\n  const labelConfigs = await getTargetLabelConfigsForActiveReleaseTrains(\n    activeReleaseTrains,\n    github,\n    config,\n  );\n  const matchingConfig = await getMatchingTargetLabelConfigForPullRequest(\n    labelsOnPullRequest,\n    labelConfigs,\n  );\n\n  return {\n    branches: await getBranchesForTargetLabel(matchingConfig, githubTargetBranch),\n    label: matchingConfig.label,\n  };\n}\n\n/**\n * Gets the branches for the specified target label config.\n *\n * @throws {InvalidTargetLabelError} Invalid label has been applied to pull request.\n * @throws {InvalidTargetBranchError} Invalid Github target branch has been selected.\n */\nexport async function getBranchesForTargetLabel(\n  labelConfig: TargetLabelConfig,\n  githubTargetBranch: string,\n): Promise {\n  return typeof labelConfig.branches === 'function'\n    ? await labelConfig.branches(githubTargetBranch)\n    : await labelConfig.branches;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertValidGithubConfig, getConfig, GithubConfig, NgDevConfig} from '../../utils/config.js';\nimport {Log} from '../../utils/logging.js';\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {assertValidPullRequestConfig, PullRequestConfig} from '../config/index.js';\nimport {getTargetBranchesAndLabelForPullRequest} from '../common/targeting/target-label.js';\nimport {ActiveReleaseTrains} from '../../release/versioning/active-release-trains.js';\nimport {getNextBranchName} from '../../release/versioning/version-branches.js';\n\nasync function getTargetBranchesForPr(\n  prNumber: number,\n  config: NgDevConfig<{github: GithubConfig; pullRequest: PullRequestConfig}>,\n) {\n  /** Repo owner and name for the github repository. */\n  const {owner, name: repo} = config.github;\n  /** The singleton instance of the GitClient. */\n  const git = await GitClient.get();\n\n  /** The current state of the pull request from Github. */\n  const prData = (await git.github.pulls.get({owner, repo, pull_number: prNumber})).data;\n  /** The list of labels on the PR as strings. */\n  const labels = prData.labels.map((l) => l.name);\n  /** The branch targeted via the Github UI. */\n  const githubTargetBranch = prData.base.ref;\n\n  const activeReleaseTrains = await ActiveReleaseTrains.fetch({\n    name: repo,\n    owner: owner,\n    nextBranchName: getNextBranchName(config.github),\n    api: git.github,\n  });\n\n  // Note: We do not pass a list of commits here because we did not fetch this information\n  // and the commits are only used for validation (which we can skip here).\n  return getTargetBranchesAndLabelForPullRequest(\n    activeReleaseTrains,\n    git.github,\n    config,\n    labels,\n    githubTargetBranch,\n  );\n}\n\nexport async function printTargetBranchesForPr(prNumber: number) {\n  const config = await getConfig();\n  assertValidGithubConfig(config);\n  assertValidPullRequestConfig(config);\n\n  if (config.pullRequest.__noTargetLabeling) {\n    Log.info(`This repository does not use target labeling (special flag enabled).`);\n    Log.info(`PR #${prNumber} will merge into: ${config.github.mainBranchName}`);\n    return;\n  }\n\n  const target = await getTargetBranchesForPr(prNumber, config);\n  Log.info(`PR has the following target label: ${target.label.name}`);\n  Log.info.group(`PR #${prNumber} will merge into:`);\n  target.branches.forEach((name) => Log.info(`- ${name}`));\n  Log.info.groupEnd();\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {printTargetBranchesForPr} from './check-target-branches.js';\n\nexport interface CheckTargetBranchesOptions {\n  pr: number;\n}\n\n/** Builds the command. */\nfunction builder(argv: Argv) {\n  return argv.positional('pr', {\n    description: 'The pull request number',\n    type: 'number',\n    demandOption: true,\n  });\n}\n\n/** Handles the command. */\nasync function handler({pr}: Arguments) {\n  await printTargetBranchesForPr(pr);\n}\n\n/** yargs command module describing the command.  */\nexport const CheckTargetBranchesModule: CommandModule<{}, CheckTargetBranchesOptions> = {\n  handler,\n  builder,\n  command: 'check-target-branches ',\n  describe: 'Check a PR to determine what branches it is currently targeting',\n};\n", "import {GithubConfig, NgDevConfig} from '../../utils/config.js';\nimport {dirname, join} from 'path';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {Log, bold, green} from '../../utils/logging.js';\nimport {checkOutPullRequestLocally} from '../common/checkout-pr.js';\nimport {fileURLToPath} from 'url';\nimport {ActiveReleaseTrains} from '../../release/versioning/active-release-trains.js';\nimport {getNextBranchName} from '../../release/versioning/version-branches.js';\nimport {addTokenToGitHttpsUrl} from '../../utils/git/github-urls.js';\nimport {Prompt} from '../../utils/prompt.js';\n\n/** List of accounts that are supported for takeover. */\nconst takeoverAccounts = ['angular-robot'];\n\nexport interface CheckoutPullRequestParams {\n  pr: number;\n  takeover?: boolean;\n  target?: string;\n}\n\nexport async function checkoutPullRequest(\n  params: CheckoutPullRequestParams,\n  config: NgDevConfig<{github: GithubConfig}>,\n): Promise {\n  const {pr, takeover, target} = params;\n  /** An authenticated git client. */\n  const git = await AuthenticatedGitClient.get();\n\n  if (takeover && target) {\n    Log.error(` ✘ You cannot specify both takeover and target branch at the same time`);\n    return;\n  }\n\n  // Make sure the local repository is clean.\n  if (git.hasUncommittedChanges()) {\n    Log.error(\n      ` ✘ Local working repository not clean. Please make sure there are no uncommitted changes`,\n    );\n    return;\n  }\n\n  const {resetGitState, pullRequest, pushToUpstreamCommand} = await checkOutPullRequestLocally(pr, {\n    allowIfMaintainerCannotModify: true,\n  });\n\n  if (!target) {\n    const branchName = `pr-takeover-${pr}`;\n    // if maintainer can modify is false or if takeover is provided do takeover\n\n    if (pullRequest.maintainerCanModify === false || takeover) {\n      if (takeover !== true) {\n        Log.info('The author of this pull request does not allow maintainers to modify the pull');\n        Log.info(\n          'request. Since you will not be able to push changes to the original pull request',\n        );\n        Log.info('you will instead need to perform a \"takeover.\" In a takeover the original pull');\n        Log.info('request will be checked out, the commits are modified to close the original on');\n        Log.info('merge of the newly created branch.\\n');\n\n        if (\n          !(await Prompt.confirm({\n            message: `Would you like to create a takeover pull request?`,\n            default: true,\n          }))\n        ) {\n          Log.info('Aborting takeover..');\n          await resetGitState();\n          return;\n        }\n      }\n\n      if (git.runGraceful(['rev-parse', '-q', '--verify', branchName]).status === 0) {\n        Log.error(` ✘ Expected branch name \\`${branchName}\\` already exists locally`);\n        return;\n      }\n\n      // Confirm that the takeover request is being done on a valid pull request.\n      if (!takeoverAccounts.includes(pullRequest.author.login)) {\n        Log.warn(\n          ` ⚠ ${bold(pullRequest.author.login)} is not an account fully supported for takeover.`,\n        );\n        Log.warn(`   Supported accounts: ${bold(takeoverAccounts.join(', '))}`);\n        if (\n          await Prompt.confirm({\n            message: `Continue with pull request takeover anyway?`,\n            default: true,\n          })\n        ) {\n          Log.debug('Continuing per user confirmation in prompt');\n        } else {\n          Log.info('Aborting takeover..');\n          await resetGitState();\n          return;\n        }\n      }\n\n      Log.info(`Setting local branch name based on the pull request`);\n      git.run(['checkout', '-q', '-b', branchName]);\n\n      Log.info('Updating commit messages to close previous pull request');\n      git.run([\n        'filter-branch',\n        '-f',\n        '--msg-filter',\n        `${getCommitMessageFilterScriptPath()} ${pr}`,\n        `${pullRequest.baseRefOid}..HEAD`,\n      ]);\n\n      Log.info(` ${green('✔')} Checked out pull request #${pr} into branch: ${branchName}`);\n      return;\n    }\n\n    Log.info(`Checked out the remote branch for pull request #${pr}\\n`);\n    Log.info('To push the checked out branch back to its PR, run the following command:');\n    Log.info(`  $ ${pushToUpstreamCommand}`);\n  } else {\n    const branchName = `pr-${target.toLowerCase().replaceAll(/[\\W_]/gm, '-')}-${pr}`;\n    const {owner, name: repo} = config.github;\n    const activeReleaseTrains = await ActiveReleaseTrains.fetch({\n      name: repo,\n      owner: owner,\n      nextBranchName: getNextBranchName(config.github),\n      api: git.github,\n    });\n\n    let targetBranch = target;\n    let targetName = target;\n\n    if (\n      target === 'patch' ||\n      target === 'latest' ||\n      activeReleaseTrains.latest.branchName === target\n    ) {\n      targetName = 'patch';\n      targetBranch = activeReleaseTrains.latest.branchName;\n    } else if (\n      target === 'main' ||\n      target === 'next' ||\n      target === 'minor' ||\n      activeReleaseTrains.next.branchName === target\n    ) {\n      targetName = 'main';\n      targetBranch = activeReleaseTrains.next.branchName;\n    } else if (\n      activeReleaseTrains.releaseCandidate &&\n      (target === 'rc' || activeReleaseTrains.releaseCandidate.branchName === target)\n    ) {\n      targetName = 'rc';\n      targetBranch = activeReleaseTrains.releaseCandidate.branchName;\n    }\n    Log.info(`Targeting '${targetBranch}' branch\\n`);\n\n    const baseRefUrl = addTokenToGitHttpsUrl(pullRequest.baseRef.repository.url, git.githubToken);\n\n    git.run(['checkout', '-q', targetBranch]);\n    git.run(['fetch', '-q', baseRefUrl, targetBranch, '--deepen=500']);\n    git.run(['checkout', '-b', branchName]);\n\n    Log.info(`Running cherry-pick\\n`);\n\n    try {\n      const revisionRange = `${pullRequest.baseRefOid}..${pullRequest.headRefOid}`;\n      git.run(['cherry-pick', revisionRange]);\n      Log.info(`Cherry-pick is complete. You can now push to create a new pull request.`);\n    } catch {\n      Log.info(\n        `Cherry-pick resulted in conflicts. Please resolve them manually and push to create your patch PR`,\n      );\n      return;\n    }\n\n    return;\n  }\n}\n\n/** Gets the absolute file path to the commit-message filter script. */\nfunction getCommitMessageFilterScriptPath(): string {\n  // This file is getting bundled and ends up in `/bundles/`. We also\n  // bundle the commit-message-filter script as another entry-point and can reference\n  // it relatively as the path is preserved inside `bundles/`.\n  // *Note*: Relying on package resolution is problematic within ESM and with `local-dev.sh`\n  const bundlesDir = dirname(fileURLToPath(import.meta.url));\n  return join(bundlesDir, './pr/checkout/commit-message-filter.mjs');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {types as graphqlTypes} from 'typed-graphqlify';\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {addTokenToGitHttpsUrl} from '../../utils/git/github-urls.js';\nimport {getPr} from '../../utils/github.js';\n\n/* Graphql schema for the response body for a pending PR. */\nconst PR_SCHEMA = {\n  author: {\n    login: graphqlTypes.string,\n  },\n  state: graphqlTypes.string,\n  maintainerCanModify: graphqlTypes.boolean,\n  viewerDidAuthor: graphqlTypes.boolean,\n  headRefOid: graphqlTypes.string,\n  headRef: {\n    name: graphqlTypes.string,\n    repository: {\n      url: graphqlTypes.string,\n      nameWithOwner: graphqlTypes.string,\n    },\n  },\n  baseRefOid: graphqlTypes.string,\n  baseRef: {\n    name: graphqlTypes.string,\n    repository: {\n      url: graphqlTypes.string,\n      nameWithOwner: graphqlTypes.string,\n    },\n  },\n};\n\n/** Error being thrown if there are unexpected local changes in the project repo. */\nexport class UnexpectedLocalChangesError extends Error {}\n/** Error being thrown if a requested pull request could not be found upstream. */\nexport class PullRequestNotFoundError extends Error {}\n/** Error being thrown if the pull request does not allow for maintainer modifications. */\nexport class MaintainerModifyAccessError extends Error {}\n\n/** Options for checking out a PR */\nexport interface PullRequestCheckoutOptions {\n  /** Whether the PR should be checked out if the maintainer cannot modify. */\n  allowIfMaintainerCannotModify?: boolean;\n}\n\n/**\n * Rebase the provided PR onto its merge target branch, and push up the resulting\n * commit to the PRs repository.\n *\n * @throws {UnexpectedLocalChangesError} If the pull request cannot be checked out\n *   due to uncommitted local changes.\n * @throws {PullRequestNotFoundError} If the pull request cannot be checked out\n *   because it is unavailable on Github.\n * @throws {MaintainerModifyAccessError} If the pull request does not allow maintainers\n *   to modify a pull request. Skipped if `allowIfMaintainerCannotModify` is set.\n */\nexport async function checkOutPullRequestLocally(\n  prNumber: number,\n  opts: PullRequestCheckoutOptions = {},\n) {\n  /** The singleton instance of the authenticated git client. */\n  const git = await AuthenticatedGitClient.get();\n\n  // In order to preserve local changes, checkouts cannot occur if local changes are present in the\n  // git environment. Checked before retrieving the PR to fail fast.\n  if (git.hasUncommittedChanges()) {\n    throw new UnexpectedLocalChangesError('Unable to checkout PR due to uncommitted changes.');\n  }\n\n  /**\n   * The branch or revision originally checked out before this method performed\n   * any Git operations that may change the working branch.\n   */\n  const previousBranchOrRevision = git.getCurrentBranchOrRevision();\n  /** The PR information from Github. */\n  const pr = await getPr(PR_SCHEMA, prNumber, git);\n\n  if (pr === null) {\n    throw new PullRequestNotFoundError(`Pull request #${prNumber} could not be found.`);\n  }\n\n  /** The branch name of the PR from the repository the PR came from. */\n  const headRefName = pr.headRef.name;\n  /** The full ref for the repository and branch the PR came from. */\n  const fullHeadRef = `${pr.headRef.repository.nameWithOwner}:${headRefName}`;\n  /** The full URL path of the repository the PR came from with github token as authentication. */\n  const headRefUrl = addTokenToGitHttpsUrl(pr.headRef.repository.url, git.githubToken);\n  // Note: Since we use a detached head for rebasing the PR and therefore do not have\n  // remote-tracking branches configured, we need to set our expected ref and SHA. This\n  // allows us to use `--force-with-lease` for the detached head while ensuring that we\n  // never accidentally override upstream changes that have been pushed in the meanwhile.\n  // See:\n  // https://git-scm.com/docs/git-push#Documentation/git-push.txt---force-with-leaseltrefnamegtltexpectgt\n  /** Flag for a force push with lease back to upstream. */\n  const forceWithLeaseFlag = `--force-with-lease=${headRefName}:${pr.headRefOid}`;\n\n  // If the PR does not allow maintainers to modify it, exit as the rebased PR cannot\n  // be pushed up.\n  if (!pr.maintainerCanModify && !pr.viewerDidAuthor && !opts.allowIfMaintainerCannotModify) {\n    throw new MaintainerModifyAccessError('PR is not set to allow maintainers to modify the PR');\n  }\n\n  try {\n    // Fetch the branch at the commit of the PR, and check it out in a detached state.\n    git.run(['fetch', '-q', headRefUrl, headRefName]);\n    git.run(['checkout', '--detach', 'FETCH_HEAD']);\n  } catch (e) {\n    git.checkout(previousBranchOrRevision, true);\n    throw e;\n  }\n\n  return {\n    /**\n     * Pushes the current local branch to the PR on the upstream repository.\n     *\n     * @returns true If the command did not fail causing a GitCommandError to be thrown.\n     * @throws {GitCommandError} Thrown when the push back to upstream fails.\n     */\n    pushToUpstream: (): true => {\n      git.run(['push', headRefUrl, `HEAD:${headRefName}`, forceWithLeaseFlag]);\n      return true;\n    },\n    /** Restores the state of the local repository to before the PR checkout occured. */\n    resetGitState: (): boolean => {\n      return git.checkout(previousBranchOrRevision, true);\n    },\n    pushToUpstreamCommand: `git push ${pr.headRef.repository.url} HEAD:${headRefName} ${forceWithLeaseFlag}`,\n    resetGitStateCommand: `git rebase --abort && git reset --hard && git checkout ${previousBranchOrRevision}`,\n    pullRequest: pr,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {params, types} from 'typed-graphqlify';\nimport {AuthenticatedGitClient} from './git/authenticated-git-client.js';\nimport {GraphqlResponseError} from '@octokit/graphql';\n\n/**\n * Gets the given pull request from Github using the GraphQL API endpoint.\n */\nexport async function getPr(\n  prSchema: PrSchema,\n  prNumber: number,\n  git: AuthenticatedGitClient,\n): Promise {\n  /** The owner and name of the repository */\n  const {owner, name} = git.remoteConfig;\n  /** The Graphql query object to get a the PR */\n  const PR_QUERY = params(\n    {\n      $number: 'Int!', // The PR number\n      $owner: 'String!', // The organization to query for\n      $name: 'String!', // The organization to query for\n    },\n    {\n      repository: params(\n        {owner: '$owner', name: '$name'},\n        {\n          pullRequest: params({number: '$number'}, prSchema),\n        },\n      ),\n    },\n  );\n\n  try {\n    const result = await git.github.graphql(PR_QUERY, {number: prNumber, owner, name});\n    return result.repository.pullRequest;\n  } catch (e) {\n    // If we know the error is just about the pull request not being found, we explicitly\n    // return `null`. This allows convenient and graceful handling if a PR does not exist.\n    if (e instanceof GraphqlResponseError && e.errors?.every((e) => e.type === 'NOT_FOUND')) {\n      return null;\n    }\n    throw e;\n  }\n}\n\n/** Get all pending PRs from github  */\nexport async function getPendingPrs(prSchema: PrSchema, git: AuthenticatedGitClient) {\n  /** The owner and name of the repository */\n  const {owner, name} = git.remoteConfig;\n  /** The Graphql query object to get a page of pending PRs */\n  const PRS_QUERY = params(\n    {\n      $first: 'Int', // How many entries to get with each request\n      $after: 'String', // The cursor to start the page at\n      $owner: 'String!', // The organization to query for\n      $name: 'String!', // The repository to query for\n    },\n    {\n      repository: params(\n        {owner: '$owner', name: '$name'},\n        {\n          pullRequests: params(\n            {\n              first: '$first',\n              after: '$after',\n              states: `OPEN`,\n            },\n            {\n              nodes: [prSchema],\n              pageInfo: {\n                hasNextPage: types.boolean,\n                endCursor: types.string,\n              },\n            },\n          ),\n        },\n      ),\n    },\n  );\n  /** The current cursor */\n  let cursor: string | undefined;\n  /** If an additional page of members is expected */\n  let hasNextPage = true;\n  /** Array of pending PRs */\n  const prs: Array = [];\n\n  // For each page of the response, get the page and add it to the list of PRs\n  while (hasNextPage) {\n    const paramsValue = {\n      after: cursor || null,\n      first: 100,\n      owner,\n      name,\n    };\n    const results = (await git.github.graphql(PRS_QUERY, paramsValue)) as typeof PRS_QUERY;\n    prs.push(...results.repository.pullRequests.nodes);\n    hasNextPage = results.repository.pullRequests.pageInfo.hasNextPage;\n    cursor = results.repository.pullRequests.pageInfo.endCursor;\n  }\n  return prs;\n}\n\n/** Get all files in a PR from github  */\nexport async function getPrFiles(\n  fileSchema: PrFileSchema,\n  prNumber: number,\n  git: AuthenticatedGitClient,\n) {\n  /** The owner and name of the repository */\n  const {owner, name} = git.remoteConfig;\n  /** The Graphql query object to get a page of pending PRs */\n  const PRS_QUERY = params(\n    {\n      $first: 'Int', // How many entries to get with each request\n      $after: 'String', // The cursor to start the page at\n      $owner: 'String!', // The organization to query for\n      $name: 'String!', // The repository to query for\n    },\n    {\n      repository: params(\n        {owner: '$owner', name: '$name'},\n        {\n          pullRequest: params(\n            {\n              number: prNumber,\n            },\n            {\n              files: params(\n                {\n                  first: '$first',\n                  after: '$after',\n                },\n                {\n                  nodes: [fileSchema],\n                  pageInfo: {\n                    hasNextPage: types.boolean,\n                    endCursor: types.string,\n                  },\n                },\n              ),\n            },\n          ),\n        },\n      ),\n    },\n  );\n  /** The current cursor */\n  let cursor: string | undefined;\n  /** If an additional page of members is expected */\n  let hasNextPage = true;\n  /** Array of pending PRs */\n  const files: Array = [];\n\n  // For each page of the response, get the page and add it to the list of PRs\n  while (hasNextPage) {\n    const paramsValue = {\n      after: cursor || null,\n      first: 100,\n      owner,\n      name,\n    };\n    const results = await git.github.graphql(PRS_QUERY, paramsValue);\n    files.push(...results.repository.pullRequest.files.nodes);\n    hasNextPage = results.repository.pullRequest.files.pageInfo.hasNextPage;\n    cursor = results.repository.pullRequest.files.pageInfo.endCursor;\n  }\n  return files;\n}\n\n/** Get all files in a PR from github  */\nexport async function getPrComments(\n  commentsSchema: PrCommentsSchema,\n  prNumber: number,\n  git: AuthenticatedGitClient,\n) {\n  /** The owner and name of the repository */\n  const {owner, name} = git.remoteConfig;\n  /** The Graphql query object to get a page of pending PRs */\n  const PRS_QUERY = params(\n    {\n      $first: 'Int', // How many entries to get with each request\n      $after: 'String', // The cursor to start the page at\n      $owner: 'String!', // The organization to query for\n      $name: 'String!', // The repository to query for\n    },\n    {\n      repository: params(\n        {owner: '$owner', name: '$name'},\n        {\n          pullRequest: params(\n            {\n              number: prNumber,\n            },\n            {\n              comments: params(\n                {\n                  first: '$first',\n                  after: '$after',\n                },\n                {\n                  nodes: [commentsSchema],\n                  pageInfo: {\n                    hasNextPage: types.boolean,\n                    endCursor: types.string,\n                  },\n                },\n              ),\n            },\n          ),\n        },\n      ),\n    },\n  );\n  /** The current cursor */\n  let cursor: string | undefined;\n  /** If an additional page of members is expected */\n  let hasNextPage = true;\n  /** Array of pending PRs */\n  const comments: Array = [];\n\n  // For each page of the response, get the page and add it to the list of PRs\n  while (hasNextPage) {\n    const paramsValue = {\n      after: cursor || null,\n      first: 100,\n      owner,\n      name,\n    };\n    const results = await git.github.graphql(PRS_QUERY, paramsValue);\n    comments.push(...results.repository.pullRequest.comments.nodes);\n    hasNextPage = results.repository.pullRequest.comments.pageInfo.hasNextPage;\n    cursor = results.repository.pullRequest.comments.pageInfo.endCursor;\n  }\n  return comments;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {assertValidGithubConfig, getConfig, GithubConfig, NgDevConfig} from '../../utils/config.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\nimport {checkoutPullRequest, CheckoutPullRequestParams} from './checkout.js';\n\n/** Builds the checkout pull request command. */\nfunction builder(yargs: Argv) {\n  return addGithubTokenOption(yargs)\n    .positional('pr', {\n      type: 'number',\n      demandOption: true,\n      describe: 'The pull request number for the pull request to checkout',\n    })\n    .option('takeover', {\n      type: 'boolean',\n      demandOption: false,\n      describe: 'Check out the pull request to perform a takeover',\n    })\n    .option('target', {\n      type: 'string',\n      demandOption: false,\n      describe: 'Check out the pull request targeting the specified base branch',\n    });\n}\n\n/** Handles the checkout pull request command. */\nasync function handler({pr, takeover, target}: Arguments) {\n  const config = await getConfig();\n  assertValidGithubConfig(config);\n\n  await checkoutPullRequest({pr, takeover, target}, config);\n}\n\n/** yargs command module for checking out a PR  */\nexport const CheckoutCommandModule: CommandModule<{}, CheckoutPullRequestParams> = {\n  handler,\n  builder,\n  command: 'checkout ',\n  describe: 'Checkout a PR from the upstream repo',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Bar} from 'cli-progress';\n\nimport {Log} from '../../utils/logging.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {GitCommandError} from '../../utils/git/git-client.js';\nimport {\n  fetchPendingPullRequestsFromGithub,\n  PullRequestFromGithub,\n} from '../common/fetch-pull-request.js';\n\n/** Name of a temporary local branch that is used for checking conflicts. **/\nconst tempWorkingBranch = '__NgDevRepoBaseAfterChange__';\n\n/** Checks if the provided PR will cause new conflicts in other pending PRs. */\nexport async function discoverNewConflictsForPr(newPrNumber: number, updatedAfter: number) {\n  /** The singleton instance of the authenticated git client. */\n  const git = await AuthenticatedGitClient.get();\n\n  // If there are any local changes in the current repository state, the\n  // check cannot run as it needs to move between branches.\n  if (git.hasUncommittedChanges()) {\n    Log.error('Cannot run with local changes. Please make sure there are no local changes.');\n    process.exit(1);\n  }\n\n  /** The active github branch or revision before we performed any Git commands. */\n  const previousBranchOrRevision = git.getCurrentBranchOrRevision();\n  /* Progress bar to indicate progress. */\n  const progressBar = new Bar({format: `[{bar}] ETA: {eta}s | {value}/{total}`});\n  /* PRs which were found to be conflicting. */\n  const conflicts: Array = [];\n\n  Log.info(`Requesting pending PRs from Github`);\n  /** List of PRs from github currently known as mergable. */\n  const allPendingPRs = await fetchPendingPullRequestsFromGithub(git);\n\n  if (allPendingPRs === null) {\n    Log.error('Unable to find any pending PRs in the repository');\n    process.exit(1);\n  }\n\n  /** The PR which is being checked against. */\n  const requestedPr = allPendingPRs.find((pr) => pr.number === newPrNumber);\n  if (requestedPr === undefined) {\n    Log.error(\n      `The request PR, #${newPrNumber} was not found as a pending PR on github, please confirm`,\n    );\n    Log.error(`the PR number is correct and is an open PR`);\n    process.exit(1);\n  }\n\n  const pendingPrs = allPendingPRs.filter((pr) => {\n    return (\n      // PRs being merged into the same target branch as the requested PR\n      pr.baseRef.name === requestedPr.baseRef.name &&\n      // PRs which either have not been processed or are determined as mergable by Github\n      pr.mergeable !== 'CONFLICTING' &&\n      // PRs updated after the provided date\n      new Date(pr.updatedAt).getTime() >= updatedAfter\n    );\n  });\n  Log.info(`Retrieved ${allPendingPRs.length} total pending PRs`);\n  Log.info(`Checking ${pendingPrs.length} PRs for conflicts after a merge of #${newPrNumber}`);\n\n  // Fetch and checkout the PR being checked.\n  git.run(['fetch', '-q', requestedPr.headRef.repository.url, requestedPr.headRef.name]);\n  git.run(['checkout', '-q', '-B', tempWorkingBranch, 'FETCH_HEAD']);\n\n  // Rebase the PR against the PRs target branch.\n  git.run(['fetch', '-q', requestedPr.baseRef.repository.url, requestedPr.baseRef.name]);\n  try {\n    git.run(['rebase', 'FETCH_HEAD'], {stdio: 'ignore'});\n  } catch (err) {\n    if (err instanceof GitCommandError) {\n      Log.error('The requested PR currently has conflicts');\n      git.checkout(previousBranchOrRevision, true);\n      process.exit(1);\n    }\n    throw err;\n  }\n\n  // Start the progress bar\n  progressBar.start(pendingPrs.length, 0);\n\n  // Check each PR to determine if it can merge cleanly into the repo after the target PR.\n  for (const pr of pendingPrs) {\n    // Fetch and checkout the next PR\n    git.run(['fetch', '-q', pr.headRef.repository.url, pr.headRef.name]);\n    git.run(['checkout', '-q', '--detach', 'FETCH_HEAD']);\n    // Check if the PR cleanly rebases into the repo after the target PR.\n    try {\n      git.run(['rebase', tempWorkingBranch], {stdio: 'ignore'});\n    } catch (err) {\n      if (err instanceof GitCommandError) {\n        conflicts.push(pr);\n      } else {\n        throw err;\n      }\n    }\n    // Abort any outstanding rebase attempt.\n    git.runGraceful(['rebase', '--abort'], {stdio: 'ignore'});\n\n    progressBar.increment(1);\n  }\n  // End the progress bar as all PRs have been processed.\n  progressBar.stop();\n  Log.info();\n  Log.info(`Result:`);\n\n  git.checkout(previousBranchOrRevision, true);\n\n  // If no conflicts are found, exit successfully.\n  if (conflicts.length === 0) {\n    Log.info(`No new conflicting PRs found after #${newPrNumber} merging`);\n    process.exit(0);\n  }\n\n  // Inform about discovered conflicts, exit with failure.\n  Log.error.group(`${conflicts.length} PR(s) which conflict(s) after #${newPrNumber} merges:`);\n  for (const pr of conflicts) {\n    Log.error(`  - #${pr.number}: ${pr.title}`);\n  }\n  Log.error.groupEnd();\n  process.exit(1);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  CheckConclusionState,\n  CheckStatusState,\n  MergeableState,\n  PullRequestState,\n  StatusState,\n  CommentAuthorAssociation,\n} from '@octokit/graphql-schema';\nimport {getPendingPrs, getPr, getPrFiles, getPrComments} from '../../utils/github.js';\nimport {alias, types as graphqlTypes, onUnion, optional, params} from 'typed-graphqlify';\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\n\n/** A status for a pull request status or check. */\nexport enum PullRequestStatus {\n  PASSING,\n  FAILING,\n  PENDING,\n}\n\n/** Graphql schema for the response body the requested pull request. */\nexport const PR_SCHEMA = {\n  url: graphqlTypes.string,\n  isDraft: graphqlTypes.boolean,\n  state: graphqlTypes.custom(),\n  number: graphqlTypes.number,\n  mergeable: graphqlTypes.custom(),\n  updatedAt: graphqlTypes.string,\n  // Along with the `commits` queried below, we always query the oldest commit in the PR and\n  // determine its parent SHA. This is the base SHA of a pull request. Note that this is different\n  // to the `baseRefOid` which is based on when the PR has been created and the attached base branch.\n  [alias('baseCommitInfo', 'commits')]: params(\n    {first: 1},\n    {nodes: [{commit: {parents: params({first: 1}, {nodes: [{oid: graphqlTypes.string}]})}}]},\n  ),\n  // Only the last 100 commits from a pull request are obtained as we likely will never see a pull\n  // requests with more than 100 commits.\n  commits: params(\n    {last: 100},\n    {\n      totalCount: graphqlTypes.number,\n      nodes: [\n        {\n          commit: {\n            oid: graphqlTypes.string,\n            authoredDate: graphqlTypes.string,\n            statusCheckRollup: optional({\n              state: graphqlTypes.custom(),\n              contexts: params(\n                {last: 100},\n                {\n                  nodes: [\n                    onUnion({\n                      CheckRun: {\n                        __typename: graphqlTypes.constant('CheckRun'),\n                        status: graphqlTypes.custom(),\n                        conclusion: graphqlTypes.custom(),\n                        name: graphqlTypes.string,\n                      },\n                      StatusContext: {\n                        __typename: graphqlTypes.constant('StatusContext'),\n                        state: graphqlTypes.custom(),\n                        context: graphqlTypes.string,\n                      },\n                    }),\n                  ],\n                },\n              ),\n            }),\n            message: graphqlTypes.string,\n          },\n        },\n      ],\n    },\n  ),\n  reviewRequests: {\n    totalCount: graphqlTypes.number,\n  },\n  reviews: params(\n    {last: 100, states: 'APPROVED'},\n    {\n      nodes: [\n        {\n          author: {\n            login: graphqlTypes.string,\n          },\n          authorAssociation: graphqlTypes.custom(),\n          bodyText: graphqlTypes.string,\n          commit: {\n            oid: graphqlTypes.string,\n          },\n        },\n      ],\n    },\n  ),\n  maintainerCanModify: graphqlTypes.boolean,\n  viewerDidAuthor: graphqlTypes.boolean,\n  headRefOid: graphqlTypes.string,\n  headRef: {\n    name: graphqlTypes.string,\n    repository: {\n      url: graphqlTypes.string,\n      nameWithOwner: graphqlTypes.string,\n    },\n  },\n  baseRef: {\n    name: graphqlTypes.string,\n    repository: {\n      url: graphqlTypes.string,\n      nameWithOwner: graphqlTypes.string,\n    },\n  },\n  baseRefName: graphqlTypes.string,\n  title: graphqlTypes.string,\n  labels: params(\n    {first: 100},\n    {\n      nodes: [\n        {\n          name: graphqlTypes.string,\n        },\n      ],\n    },\n  ),\n};\n\nexport type PullRequestFromGithub = typeof PR_SCHEMA;\n\nexport const PR_FILES_SCHEMA = params(\n  {first: 100},\n  {\n    path: graphqlTypes.string,\n  },\n);\n\nexport type PullRequestFilesFromGithub = typeof PR_FILES_SCHEMA;\n\nexport const PR_COMMENTS_SCHEMA = params(\n  {first: 100},\n  {\n    author: {\n      login: graphqlTypes.string,\n    },\n    authorAssociation: graphqlTypes.custom(),\n    bodyText: graphqlTypes.string,\n  },\n);\n\nexport type PullRequestCommentsFromGithub = typeof PR_COMMENTS_SCHEMA;\n\n/** Type describing the normalized and combined status of a pull request. */\nexport type PullRequestStatusInfo = {\n  combinedStatus: PullRequestStatus;\n  statuses: {\n    status: PullRequestStatus;\n    type: 'check' | 'status';\n    name: string;\n  }[];\n};\n\n/** Fetches a pull request from Github. Returns null if an error occurred. */\nexport async function fetchPullRequestFromGithub(\n  git: AuthenticatedGitClient,\n  prNumber: number,\n): Promise {\n  return await getPr(PR_SCHEMA, prNumber, git);\n}\n\n/** Fetches a pull request from Github. Returns null if an error occurred. */\nexport async function fetchPendingPullRequestsFromGithub(\n  git: AuthenticatedGitClient,\n): Promise {\n  return await getPendingPrs(PR_SCHEMA, git);\n}\n\n/** Fetches a pull request from Github. Returns null if an error occurred. */\nexport async function fetchPullRequestFilesFromGithub(\n  git: AuthenticatedGitClient,\n  prNumber: number,\n): Promise {\n  return await getPrFiles(PR_FILES_SCHEMA, prNumber, git);\n}\n\n/** Fetches a pull request from Github. Returns null if an error occurred. */\nexport async function fetchPullRequestCommentsFromGithub(\n  git: AuthenticatedGitClient,\n  prNumber: number,\n): Promise {\n  return await getPrComments(PR_COMMENTS_SCHEMA, prNumber, git);\n}\n\n/**\n * Gets the statuses for a commit from a pull request, using a consistent interface\n * for both status and checks results.\n */\nexport function getStatusesForPullRequest(\n  pullRequest: PullRequestFromGithub,\n): PullRequestStatusInfo {\n  const nodes = pullRequest.commits.nodes;\n  /** The combined github status and github checks object. */\n  const {statusCheckRollup} = nodes[nodes.length - 1].commit;\n\n  // If there is no status check rollup (i.e. no status nor checks), we\n  // consider the pull request status as failing.\n  if (!statusCheckRollup) {\n    return {\n      combinedStatus: PullRequestStatus.FAILING,\n      statuses: [],\n    };\n  }\n\n  const statuses = statusCheckRollup.contexts.nodes.map((context) => {\n    switch (context.__typename) {\n      case 'CheckRun':\n        return {\n          type: 'check' as const,\n          name: context.name,\n          status: normalizeGithubCheckState(context.conclusion, context.status),\n        };\n      case 'StatusContext':\n        return {\n          type: 'status' as const,\n          name: context.context,\n          status: normalizeGithubStatusState(context.state),\n        };\n    }\n  });\n\n  return {\n    combinedStatus: normalizeGithubStatusState(statusCheckRollup.state),\n    statuses,\n  };\n}\n\n/** Retrieve the normalized PullRequestStatus for the provided github status state. */\nfunction normalizeGithubStatusState(state: StatusState): PullRequestStatus {\n  switch (state) {\n    case 'FAILURE':\n    case 'ERROR':\n      return PullRequestStatus.FAILING;\n    case 'PENDING':\n      return PullRequestStatus.PENDING;\n    case 'SUCCESS':\n    case 'EXPECTED':\n      return PullRequestStatus.PASSING;\n  }\n}\n\n/** Retrieve the normalized PullRequestStatus for the provided github check state. */\nfunction normalizeGithubCheckState(\n  conclusion: CheckConclusionState | null,\n  status: CheckStatusState,\n): PullRequestStatus {\n  if (status !== 'COMPLETED') {\n    return PullRequestStatus.PENDING;\n  }\n\n  // If the `status` is completed, a conclusion is guaranteed to be set.\n  switch (conclusion!) {\n    case 'ACTION_REQUIRED':\n    case 'TIMED_OUT':\n    case 'CANCELLED':\n    case 'FAILURE':\n    case 'SKIPPED':\n    case 'STALE':\n    case 'STARTUP_FAILURE':\n      return PullRequestStatus.FAILING;\n    case 'SUCCESS':\n    case 'NEUTRAL':\n      return PullRequestStatus.PASSING;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {Log} from '../../utils/logging.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n\nimport {discoverNewConflictsForPr} from './index.js';\n\n/** The options available to the discover-new-conflicts command via CLI. */\nexport interface DiscoverNewConflictsOptions {\n  date: number;\n  pr: number;\n}\n\n/** Builds the discover-new-conflicts pull request command. */\nfunction builder(argv: Argv): Argv {\n  return addGithubTokenOption(argv)\n    .option('date', {\n      description: 'Only consider PRs updated since provided date',\n      defaultDescription: '30 days ago',\n      coerce: (date) => (typeof date === 'number' ? date : Date.parse(date)),\n      default: getThirtyDaysAgoDate(),\n    })\n    .positional('pr', {demandOption: true, type: 'number'});\n}\n\n/** Handles the discover-new-conflicts pull request command. */\nasync function handler({pr, date}: Arguments) {\n  // If a provided date is not able to be parsed, yargs provides it as NaN.\n  if (isNaN(date)) {\n    Log.error('Unable to parse the value provided via --date flag');\n    process.exit(1);\n  }\n  await discoverNewConflictsForPr(pr, date);\n}\n\n/** Gets a date object 30 days ago from today. */\nfunction getThirtyDaysAgoDate() {\n  const date = new Date();\n  // Set the hours, minutes and seconds to 0 to only consider date.\n  date.setHours(0, 0, 0, 0);\n  // Set the date to 30 days in the past.\n  date.setDate(date.getDate() - 30);\n  return date.getTime();\n}\n\n/** yargs command module for discovering new conflicts for a PR  */\nexport const DiscoverNewConflictsCommandModule: CommandModule<{}, DiscoverNewConflictsOptions> = {\n  handler,\n  builder,\n  command: 'discover-new-conflicts ',\n  describe: 'Check if a pending PR causes new conflicts for other pending PRs',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {red, bold} from '../../utils/logging.js';\n\nimport {PullRequest} from './pull-request.js';\n\nexport function getCaretakerNotePromptMessage(pullRequest: PullRequest): string {\n  return (\n    red('Pull request has a caretaker note applied. Please make sure you read it.') +\n    `\\nQuick link to PR: ${pullRequest.url}\\nDo you want to proceed merging?`\n  );\n}\n\nexport function getTargetedBranchesConfirmationPromptMessage(): string {\n  return `Do you want to proceed merging?`;\n}\n\nexport function getTargetedBranchesMessage(pullRequest: PullRequest): string {\n  const targetBranchListAsString = pullRequest.targetBranches\n    .map((b) => `  - ${bold(b)}`)\n    .join('\\n');\n  return `Pull Request #${pullRequest.prNumber} will merge into:\\n${targetBranchListAsString}`;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Error class that indicates a fatal merge tool error that cannot be ignored. */\nexport class FatalMergeToolError extends Error {\n  constructor(message: string) {\n    super(message);\n  }\n}\n\nexport class UserAbortedMergeToolError extends FatalMergeToolError {\n  constructor() {\n    super('Tool exited due to user aborting merge attempt.');\n  }\n}\n\nexport class MismatchedTargetBranchFatalError extends FatalMergeToolError {\n  constructor(allowedBranches: string[]) {\n    super(\n      `Pull request is set to wrong base branch. Please update the PR in the Github UI ` +\n        `to one of the following branches: ${allowedBranches.join(', ')}.`,\n    );\n  }\n}\n\nexport class UnsatisfiedBaseShaFatalError extends FatalMergeToolError {\n  constructor() {\n    super(\n      `Pull request has not been rebased recently and could be bypassing CI checks. ` +\n        `Please rebase the PR.`,\n    );\n  }\n}\n\nexport class MergeConflictsFatalError extends FatalMergeToolError {\n  constructor(public failedBranches: string[]) {\n    super(\n      `Cannot not merge pull request into the following branches due to merge ` +\n        `conflicts: ${failedBranches.join(', ')}. Please rebase the PR or update the target label.`,\n    );\n  }\n}\n\nexport class PullRequestValidationError extends FatalMergeToolError {\n  constructor() {\n    super('Tool exited as at least one pull request validation error was discovered.');\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestValidationConfig} from '../../config/index.js';\n\n/** Class that can be used to describe pull request validation failures. */\nexport class PullRequestValidationFailure {\n  constructor(\n    /** Human-readable message for the failure */\n    public readonly message: string,\n    /** Validation config name for the failure. */\n    public readonly validationName: keyof PullRequestValidationConfig,\n    /** Validation config name for the failure. */\n    public readonly canBeForceIgnored: boolean,\n  ) {}\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestValidationConfig} from '../../config/index.js';\nimport {PullRequestValidationFailure} from './validation-failure.js';\n\n/**\n * Pull request validation configuration controlling which assertions\n * should run or not. This enables the forcibly non-fatal ignore feature.\n */\nconst defaultConfig: PullRequestValidationConfig = {\n  assertPending: true,\n  assertMergeReady: true,\n  assertSignedCla: true,\n  assertChangesAllowForTargetLabel: true,\n  assertPassingCi: true,\n  assertCompletedReviews: true,\n  assertEnforcedStatuses: true,\n  assertMinimumReviews: true,\n  assertIsolatedSeparateFiles: false,\n  assertEnforceTested: false,\n};\n\nexport function createPullRequestValidationConfig(\n  config: PullRequestValidationConfig,\n): PullRequestValidationConfig {\n  return {...defaultConfig, ...config};\n}\n\n/** Type describing a helper function for validations to create a validation failure. */\nexport type PullRequestValidationErrorCreateFn = (message: string) => PullRequestValidationFailure;\n\n/**\n * Base class for pull request validations, providing helpers for the validation errors,\n * and a consistent interface for checking the activation state of validations\n */\nexport abstract class PullRequestValidation {\n  constructor(\n    protected name: keyof PullRequestValidationConfig,\n    protected _createError: PullRequestValidationErrorCreateFn,\n  ) {}\n\n  /** Assertion function to be defined for the specific validator. */\n  abstract assert(...parameters: unknown[]): void | Promise;\n}\n\n/** Creates a pull request validation from a configuration and implementation class. */\nexport function createPullRequestValidation(\n  {name, canBeForceIgnored}: {name: keyof PullRequestValidationConfig; canBeForceIgnored: boolean},\n  getValidationCtor: () => new (...args: ConstructorParameters) => T,\n) {\n  return {\n    async run(\n      validationConfig: PullRequestValidationConfig,\n      ...args: Parameters\n    ): Promise {\n      if (validationConfig[name]) {\n        const validation = new (getValidationCtor())(\n          name,\n          (message) => new PullRequestValidationFailure(message, name, canBeForceIgnored),\n        );\n        try {\n          await validation.assert(...args);\n        } catch (e) {\n          if (e instanceof PullRequestValidationFailure) {\n            return e;\n          }\n          throw e;\n        }\n      }\n      return null;\n    },\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Commit} from '../../../commit-message/parse.js';\nimport {ActiveReleaseTrains} from '../../../release/versioning/active-release-trains.js';\nimport {Log, red} from '../../../utils/logging.js';\nimport {PullRequestConfig} from '../../config/index.js';\nimport {mergeLabels} from '../labels/index.js';\nimport {TargetLabel, targetLabels} from '../labels/target.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the commits provided are allowed to merge to the provided target label. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const changesAllowForTargetLabelValidation = createPullRequestValidation(\n  {name: 'assertChangesAllowForTargetLabel', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(\n    commits: Commit[],\n    targetLabel: TargetLabel,\n    config: PullRequestConfig,\n    releaseTrains: ActiveReleaseTrains,\n    labelsOnPullRequest: string[],\n  ) {\n    if (labelsOnPullRequest.includes(mergeLabels.MERGE_FIX_COMMIT_MESSAGE.name)) {\n      Log.debug(\n        'Skipping commit message target label validation because the commit message fixup label is ' +\n          'applied.',\n      );\n      return;\n    }\n\n    // List of commit scopes which are exempted from target label content requirements. i.e. no `feat`\n    // scopes in patch branches, no breaking changes in minor or patch changes.\n    const exemptedScopes = config.targetLabelExemptScopes || [];\n    // List of commits which are subject to content requirements for the target label.\n    commits = commits.filter((commit) => !exemptedScopes.includes(commit.scope));\n    const hasBreakingChanges = commits.some((commit) => commit.breakingChanges.length !== 0);\n    const hasDeprecations = commits.some((commit) => commit.deprecations.length !== 0);\n    const hasFeatureCommits = commits.some((commit) => commit.type === 'feat');\n    switch (targetLabel) {\n      case targetLabels.TARGET_MAJOR:\n        break;\n      case targetLabels.TARGET_MINOR:\n        if (hasBreakingChanges) {\n          throw this._createHasBreakingChangesError(targetLabel);\n        }\n        break;\n      case targetLabels.TARGET_RC:\n      case targetLabels.TARGET_LTS:\n      case targetLabels.TARGET_PATCH:\n        if (hasBreakingChanges) {\n          throw this._createHasBreakingChangesError(targetLabel);\n        }\n        if (hasFeatureCommits) {\n          throw this._createHasFeatureCommitsError(targetLabel);\n        }\n        // Deprecations should not be merged into RC, patch or LTS branches.\n        // https://semver.org/#spec-item-7. Deprecations should be part of\n        // minor releases, or major releases according to SemVer.\n        if (hasDeprecations && !releaseTrains.isFeatureFreeze()) {\n          throw this._createHasDeprecationsError(targetLabel);\n        }\n        break;\n      default:\n        Log.warn(red('WARNING: Unable to confirm all commits in the pull request are'));\n        Log.warn(red(`eligible to be merged into the target branches for: ${targetLabel.name}`));\n        break;\n    }\n  }\n\n  private _createHasBreakingChangesError(label: TargetLabel) {\n    const message =\n      `Cannot merge into branch for \"${label.name}\" as the pull request has ` +\n      `breaking changes. Breaking changes can only be merged with the \"target: major\" label.`;\n    return this._createError(message);\n  }\n\n  private _createHasDeprecationsError(label: TargetLabel) {\n    const message =\n      `Cannot merge into branch for \"${label.name}\" as the pull request ` +\n      `contains deprecations. Deprecations can only be merged with the \"target: minor\" or ` +\n      `\"target: major\" label.`;\n    return this._createError(message);\n  }\n\n  private _createHasFeatureCommitsError(label: TargetLabel) {\n    const message =\n      `Cannot merge into branch for \"${label.name}\" as the pull request has ` +\n      'commits with the \"feat\" type. New features can only be merged with the \"target: minor\" ' +\n      'or \"target: major\" label.';\n    return this._createError(message);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Commit} from '../../../commit-message/parse.js';\nimport {managedLabels} from '../labels/index.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request is properly denoted if it contains breaking changes. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const breakingChangeInfoValidation = createPullRequestValidation(\n  {name: 'assertPending', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(commits: Commit[], labels: string[]) {\n    // Whether the PR has a label noting a breaking change.\n    const hasLabel = labels.includes(managedLabels.DETECTED_BREAKING_CHANGE.name);\n    // Whether the PR has at least one commit which notes a breaking change.\n    const hasCommit = commits.some((commit) => commit.breakingChanges.length !== 0);\n\n    if (!hasLabel && hasCommit) {\n      throw this._createMissingBreakingChangeLabelError();\n    }\n\n    if (hasLabel && !hasCommit) {\n      throw this._createMissingBreakingChangeCommitError();\n    }\n  }\n\n  private _createMissingBreakingChangeLabelError() {\n    const message =\n      `Pull Request has at least one commit containing a breaking change note, ` +\n      `but does not have a breaking change label. Make sure to apply the ` +\n      `following label: ${managedLabels.DETECTED_BREAKING_CHANGE.name}`;\n    return this._createError(message);\n  }\n\n  private _createMissingBreakingChangeCommitError() {\n    const message =\n      'Pull Request has a breaking change label, but does not contain any commits with ' +\n      'breaking change notes (i.e. commits do not have a `BREAKING CHANGE: <..>` section).';\n    return this._createError(message);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has completed all requested reviews. */\nexport const completedReviewsValidation = createPullRequestValidation(\n  {name: 'assertCompletedReviews', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    const totalCount = pullRequest.reviewRequests.totalCount;\n    if (totalCount !== 0) {\n      throw this._createError(\n        `Pull request cannot be merged with pending reviews, it current has ${totalCount} pending review(s)`,\n      );\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Minimatch} from 'minimatch';\nimport path from 'path';\nimport {\n  CaretakerConfig,\n  GithubConfig,\n  GoogleSyncConfig,\n  NgDevConfig,\n  assertValidCaretakerConfig,\n} from '../../../utils/config.js';\nimport {SyncFileMatchFn, getGoogleSyncConfig} from '../../../utils/g3-sync-config.js';\nimport {G3StatsData, G3Stats} from '../../../utils/g3.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\nimport {fetchPullRequestFilesFromGithub} from '../fetch-pull-request.js';\n\n/** Assert the pull request has passing enforced statuses. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const isolatedSeparateFilesValidation = createPullRequestValidation(\n  {name: 'assertIsolatedSeparateFiles', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  async assert(\n    config: NgDevConfig<{\n      github: GithubConfig;\n    }>,\n    prNumber: number,\n    gitClient: AuthenticatedGitClient,\n  ) {\n    try {\n      assertValidCaretakerConfig(config);\n    } catch {\n      throw this._createError('No Caretaker Config was found.');\n    }\n\n    const g3SyncConfigWithMatchers = await getGsyncConfig(config.caretaker, gitClient);\n    if (g3SyncConfigWithMatchers === null) {\n      return;\n    }\n\n    // diffStats tells you what's already been merged in github, but hasn't yet been synced to G3\n    const diffStats = await getDiffStats(config, g3SyncConfigWithMatchers.config, gitClient);\n    if (diffStats === undefined) {\n      return;\n    }\n\n    const hasSeparateSyncFiles = await PullRequestFiles.create(\n      gitClient,\n      prNumber,\n      g3SyncConfigWithMatchers.config,\n    ).pullRequestHasSeparateFiles();\n\n    // This validation applies to PRs that get merged when changes have not yet been synced into G3.\n    // The rules are as follows:\n    //   1. if pure framework changes have been merged, separate file changes should not be merged.\n    //   2. if separate file changes have been merged, pure framework changes should not be merged.\n    //   3. if separate file changes have been merged, any change merged MUST have separate file changes in it.\n    //   4. framework changes can be merged with separate file changes as long as that change ALSO\n    //       has separate file changes also.\n\n    // covers 2 & 3\n    if (diffStats.separateFiles > 0 && !hasSeparateSyncFiles) {\n      throw this._createError(\n        `This PR cannot be merged as Shared Primitives code has already been merged. ` +\n          `Primitives and Framework code must be merged and synced separately. Try again after a g3sync has finished.`,\n      );\n    }\n\n    // covers 1 & 4\n    if (diffStats.files > 0 && diffStats.separateFiles === 0 && hasSeparateSyncFiles) {\n      throw this._createError(\n        `This PR cannot be merged as Angular framework code has already been merged. ` +\n          `Primitives and Framework code must be merged and synced separately. Try again after a g3sync has finished.`,\n      );\n    }\n  }\n}\n\nasync function getGsyncConfig(\n  config: CaretakerConfig,\n  git: AuthenticatedGitClient,\n): Promise<{\n  ngMatchFn: SyncFileMatchFn;\n  separateMatchFn: SyncFileMatchFn;\n  config: GoogleSyncConfig;\n} | null> {\n  let googleSyncConfig = null;\n  if (config.g3SyncConfigPath) {\n    try {\n      const configPath = path.join(git.baseDir, config.g3SyncConfigPath);\n      googleSyncConfig = await getGoogleSyncConfig(configPath);\n    } catch {}\n  }\n  return googleSyncConfig;\n}\n\nexport class PullRequestFiles {\n  constructor(\n    private git: AuthenticatedGitClient,\n    private prNumber: number,\n    private config: GoogleSyncConfig,\n  ) {}\n  /**\n   * Loads the files from a given pull request.\n   */\n  async loadPullRequestFiles(): Promise {\n    const files = await fetchPullRequestFilesFromGithub(this.git, this.prNumber);\n    return files?.map((x) => x.path) ?? [];\n  }\n\n  /**\n   * checks for separate files against the pull request files\n   */\n  async pullRequestHasSeparateFiles(): Promise {\n    const pullRequestFiles = await this.loadPullRequestFiles();\n    const separateFilePatterns = this.config.separateFilePatterns.map((p) => new Minimatch(p));\n    for (let path of pullRequestFiles) {\n      if (separateFilePatterns.some((p) => p.match(path))) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  static create(git: AuthenticatedGitClient, prNumber: number, config: GoogleSyncConfig) {\n    return new PullRequestFiles(git, prNumber, config);\n  }\n}\n\nasync function getDiffStats(\n  ngDevConfig: NgDevConfig<{\n    github: GithubConfig;\n    caretaker: CaretakerConfig;\n  }>,\n  googleSyncConfig: GoogleSyncConfig,\n  git: AuthenticatedGitClient,\n): Promise {\n  if (googleSyncConfig && googleSyncConfig.separateFilePatterns.length > 0) {\n    return G3Stats.retrieveDiffStats(git, {\n      caretaker: ngDevConfig.caretaker,\n      github: ngDevConfig.github,\n    });\n  }\n  return;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestConfig} from '../../config/index.js';\nimport {getStatusesForPullRequest, PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has passing enforced statuses. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const enforcedStatusesValidation = createPullRequestValidation(\n  {name: 'assertEnforcedStatuses', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub, config: PullRequestConfig) {\n    if (config.requiredStatuses === undefined) {\n      return;\n    }\n\n    const {statuses} = getStatusesForPullRequest(pullRequest);\n    const missing: string[] = [];\n\n    for (const enforced of config.requiredStatuses) {\n      if (!statuses.some((s) => s.name === enforced.name && s.type === enforced.type)) {\n        missing.push(enforced.name);\n      }\n    }\n\n    if (missing.length > 0) {\n      throw this._createError(\n        `Required statuses are missing on the pull request (${missing.join(', ')}).`,\n      );\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport githubMacros from '../../../utils/git/github-macros.js';\nimport {\n  fetchPullRequestCommentsFromGithub,\n  PullRequestFromGithub,\n  PullRequestCommentsFromGithub,\n} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\nimport {requiresLabels} from '../labels/index.js';\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\n\n/** Assert the pull request has passing enforced statuses. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const enforceTestedValidation = createPullRequestValidation(\n  {name: 'assertEnforceTested', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  async assert(pullRequest: PullRequestFromGithub, gitClient: AuthenticatedGitClient) {\n    if (!pullRequestRequiresTGP(pullRequest)) {\n      return;\n    }\n\n    const comments = await PullRequestComments.create(\n      gitClient,\n      pullRequest.number,\n    ).loadPullRequestComments();\n\n    if (await pullRequestHasValidTestedComment(comments, gitClient)) {\n      return;\n    }\n\n    // TODO(jessicajaniuk): Add the actual validation that a TGP has been run.\n\n    throw this._createError(\n      `Pull Request requires a TGP and does not have one. Either run a TGP or specify the PR is fully tested by adding a comment with \"TESTED=[reason]\".`,\n    );\n  }\n}\n\n/**\n * Checks the list of labels for the `requires: TGP` label\n */\nfunction pullRequestRequiresTGP(pullRequest: PullRequestFromGithub): boolean {\n  return pullRequest.labels.nodes.some(({name}) => name === requiresLabels.REQUIRES_TGP.name);\n}\n\nexport class PullRequestComments {\n  constructor(\n    private git: AuthenticatedGitClient,\n    private prNumber: number,\n  ) {}\n  /**\n   * Loads the files from a given pull request.\n   */\n  async loadPullRequestComments(): Promise {\n    return (await fetchPullRequestCommentsFromGithub(this.git, this.prNumber)) ?? [];\n  }\n\n  static create(git: AuthenticatedGitClient, prNumber: number) {\n    return new PullRequestComments(git, prNumber);\n  }\n}\n\n/**\n * Checks for `TESTED=[reason]` comment on a current commit sha from a google organization member\n */\nexport async function pullRequestHasValidTestedComment(\n  comments: PullRequestCommentsFromGithub[],\n  gitClient: AuthenticatedGitClient,\n): Promise {\n  for (const {bodyText, author} of comments) {\n    if (\n      bodyText.startsWith(`TESTED=`) &&\n      (await githubMacros.isGooglerOrgMember(gitClient.github, author.login))\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {actionLabels} from '../labels/index.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request is merge ready. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const mergeReadyValidation = createPullRequestValidation(\n  {name: 'assertMergeReady', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    if (!pullRequest.labels.nodes.some(({name}) => name === actionLabels.ACTION_MERGE.name)) {\n      throw this._createError('Pull request is not marked as merge ready.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has completed all requested reviews. */\nexport const minimumReviewsValidation = createPullRequestValidation(\n  {name: 'assertMinimumReviews', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    const totalCount = pullRequest.reviews.nodes.filter(\n      ({authorAssociation}) => authorAssociation === 'MEMBER',\n    ).length;\n    if (totalCount === 0) {\n      throw this._createError(\n        `Pull request cannot be merged without at least one review from a team member`,\n      );\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  getStatusesForPullRequest,\n  PullRequestFromGithub,\n  PullRequestStatus,\n} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has a passing combined CI status. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const passingCiValidation = createPullRequestValidation(\n  {name: 'assertPassingCi', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    const {combinedStatus, statuses} = getStatusesForPullRequest(pullRequest);\n\n    // TODO(josephperrott): Find a way to not need to do this kind of detection.\n    // Because its not possible to determine if workflow is pending approval or if all checks and\n    // statuses have run, we use the `CI / lint (pull_request)` as a marker for if the expected\n    // checks have run already.  If they have not yet run, we mark the combined status as missing.\n    if (statuses.find((status) => status.name === 'lint') === undefined) {\n      throw this._createError(\n        'Pull request is missing expected status checks. Check the pull request for pending workflows',\n      );\n    }\n    if (combinedStatus === PullRequestStatus.PENDING) {\n      throw this._createError('Pull request has pending status checks.');\n    }\n    if (combinedStatus === PullRequestStatus.FAILING) {\n      throw this._createError('Pull request has failing status checks.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request is pending, not closed, merged or in draft. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const pendingStateValidation = createPullRequestValidation(\n  {name: 'assertPending', canBeForceIgnored: false},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    if (pullRequest.isDraft) {\n      throw this._createError('Pull request is still a draft.');\n    }\n    switch (pullRequest.state) {\n      case 'CLOSED':\n        throw this._createError('Pull request is already closed.');\n      case 'MERGED':\n        throw this._createError('Pull request is already merged.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  getStatusesForPullRequest,\n  PullRequestFromGithub,\n  PullRequestStatus,\n} from '../fetch-pull-request.js';\nimport {createPullRequestValidation, PullRequestValidation} from './validation-config.js';\n\n/** Assert the pull request has a signed CLA. */\n// TODO: update typings to make sure portability is properly handled for windows build.\nexport const signedClaValidation = createPullRequestValidation(\n  // CLA check can be force-ignored but the caretaker needs to make sure\n  // the target pull requests has a signed CLA or is authored by another Googler.\n  {name: 'assertSignedCla', canBeForceIgnored: true},\n  () => Validation,\n);\n\nclass Validation extends PullRequestValidation {\n  assert(pullRequest: PullRequestFromGithub) {\n    const passing = getStatusesForPullRequest(pullRequest).statuses.some(({name, status}) => {\n      return name === 'cla/google' && status === PullRequestStatus.PASSING;\n    });\n\n    if (!passing) {\n      throw this._createError('CLA is not signed by the contributor.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {parseCommitMessage} from '../../../commit-message/parse.js';\nimport {ActiveReleaseTrains} from '../../../release/versioning/active-release-trains.js';\nimport {NgDevConfig, GithubConfig} from '../../../utils/config.js';\nimport {PullRequestConfig, PullRequestValidationConfig} from '../../config/index.js';\nimport {PullRequestFromGithub} from '../fetch-pull-request.js';\nimport {PullRequestTarget} from '../targeting/target-label.js';\nimport {changesAllowForTargetLabelValidation} from './assert-allowed-target-label.js';\nimport {breakingChangeInfoValidation} from './assert-breaking-change-info.js';\nimport {completedReviewsValidation} from './assert-completed-reviews.js';\nimport {isolatedSeparateFilesValidation} from './assert-isolated-separate-files.js';\nimport {enforcedStatusesValidation} from './assert-enforced-statuses.js';\nimport {enforceTestedValidation} from './assert-enforce-tested.js';\nimport {mergeReadyValidation} from './assert-merge-ready.js';\nimport {minimumReviewsValidation} from './assert-minimum-reviews.js';\nimport {passingCiValidation} from './assert-passing-ci.js';\nimport {pendingStateValidation} from './assert-pending.js';\nimport {signedClaValidation} from './assert-signed-cla.js';\nimport {PullRequestValidationFailure} from './validation-failure.js';\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\n\n/**\n * Runs all valiations that the given pull request is valid, returning a list of all failing\n * validations.\n *\n * Active release trains may be available for additional checks or not.\n */\nexport async function assertValidPullRequest(\n  pullRequest: PullRequestFromGithub,\n  validationConfig: PullRequestValidationConfig,\n  ngDevConfig: NgDevConfig<{\n    pullRequest: PullRequestConfig;\n    github: GithubConfig;\n  }>,\n  activeReleaseTrains: ActiveReleaseTrains | null,\n  target: PullRequestTarget,\n  gitClient: AuthenticatedGitClient,\n): Promise {\n  const labels = pullRequest.labels.nodes.map((l) => l.name);\n  const commitsInPr = pullRequest.commits.nodes.map((n) => {\n    return parseCommitMessage(n.commit.message);\n  });\n\n  const validationResults = [\n    minimumReviewsValidation.run(validationConfig, pullRequest),\n    completedReviewsValidation.run(validationConfig, pullRequest),\n    mergeReadyValidation.run(validationConfig, pullRequest),\n    signedClaValidation.run(validationConfig, pullRequest),\n    pendingStateValidation.run(validationConfig, pullRequest),\n    breakingChangeInfoValidation.run(validationConfig, commitsInPr, labels),\n    passingCiValidation.run(validationConfig, pullRequest),\n    enforcedStatusesValidation.run(validationConfig, pullRequest, ngDevConfig.pullRequest),\n    isolatedSeparateFilesValidation.run(\n      validationConfig,\n      ngDevConfig,\n      pullRequest.number,\n      gitClient,\n    ),\n    enforceTestedValidation.run(validationConfig, pullRequest, gitClient),\n  ];\n\n  if (activeReleaseTrains !== null) {\n    validationResults.push(\n      changesAllowForTargetLabelValidation.run(\n        validationConfig,\n        commitsInPr,\n        target.label,\n        ngDevConfig.pullRequest,\n        activeReleaseTrains,\n        labels,\n      ),\n    );\n  }\n\n  return await Promise.all(validationResults).then((results) => {\n    return results.filter(\n      <(result: null | PullRequestValidationFailure) => result is PullRequestValidationFailure>(\n        ((result) => result !== null)\n      ),\n    );\n  });\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\nimport {\n  FatalMergeToolError,\n  MergeConflictsFatalError,\n  MismatchedTargetBranchFatalError,\n  UnsatisfiedBaseShaFatalError,\n} from '../failures.js';\nimport {PullRequest} from '../pull-request.js';\n\n/**\n * Name of a temporary branch that contains the head of a currently-processed PR. Note\n * that a branch name should be used that most likely does not conflict with other local\n * development branches.\n */\nexport const TEMP_PR_HEAD_BRANCH = 'merge_pr_head';\n\n/**\n * Base class for merge strategies. A merge strategy accepts a pull request and\n * merges it into the determined target branches.\n */\nexport abstract class MergeStrategy {\n  constructor(protected git: AuthenticatedGitClient) {}\n\n  /**\n   * Prepares a merge of the given pull request. The strategy by default will\n   * fetch all target branches and the pull request into local temporary branches.\n   */\n  async prepare(pullRequest: PullRequest) {\n    this.fetchTargetBranches(\n      pullRequest.targetBranches,\n      `pull/${pullRequest.prNumber}/head:${TEMP_PR_HEAD_BRANCH}`,\n    );\n  }\n\n  /**\n   * Performs the merge of the given pull request. This needs to be implemented\n   * by individual merge strategies.\n   *\n   * @throws {FatalMergeToolError} A fatal error has occurred when attempting to merge the\n   *   pull request.\n   */\n  abstract merge(pullRequest: PullRequest): Promise;\n\n  /**\n   * Checks to confirm that a pull request in its current state is able to merge as expected to\n   * the targeted branches. This method notably does not commit any attempted cherry-picks during\n   * its check, but instead leaves this to the merging action.\n   *\n   * @throws {GitCommandError} An unknown Git command error occurred that is not\n   *   specific to the pull request merge.\n   * @throws {UnsatisfiedBaseShaFatalError} A fatal error if a specific is required to be present\n   *   in the pull requests branch and is not present in that branch.\n   * @throws {MismatchedTargetBranchFatalError} A fatal error if the pull request does not target\n   *   a branch via the Github UI that is managed by merge tooling.\n   */\n  async check(pullRequest: PullRequest): Promise {\n    const {githubTargetBranch, targetBranches, requiredBaseSha} = pullRequest;\n    // If the pull request does not have its base branch set to any determined target\n    // branch, we cannot merge using the API.\n    if (targetBranches.every((t) => t !== githubTargetBranch)) {\n      throw new MismatchedTargetBranchFatalError(targetBranches);\n    }\n\n    // In cases where a required base commit is specified for this pull request, check if\n    // the pull request contains the given commit. If not, return a pull request failure.\n    // This check is useful for enforcing that PRs are rebased on top of a given commit.\n    // e.g. a commit that changes the code ownership validation. PRs which are not rebased\n    // could bypass new codeowner ship rules.\n    if (requiredBaseSha && !this.git.hasCommit(TEMP_PR_HEAD_BRANCH, requiredBaseSha)) {\n      throw new UnsatisfiedBaseShaFatalError();\n    }\n\n    // First cherry-pick the PR into all local target branches in dry-run mode. This is\n    // purely for testing so that we can figure out whether the PR can be cherry-picked\n    // into the other target branches. We don't want to merge the PR through the API, and\n    // then run into cherry-pick conflicts after the initial merge already completed.\n    await this._assertMergeableOrThrow(pullRequest, targetBranches);\n  }\n\n  /** Cleans up the pull request merge. e.g. deleting temporary local branches. */\n  async cleanup(pullRequest: PullRequest) {\n    // Delete all temporary target branches.\n    pullRequest.targetBranches.forEach((branchName) =>\n      this.git.run(['branch', '-D', this.getLocalTargetBranchName(branchName)]),\n    );\n\n    // Delete temporary branch for the pull request head.\n    this.git.run(['branch', '-D', TEMP_PR_HEAD_BRANCH]);\n  }\n\n  /** Gets a deterministic local branch name for a given branch. */\n  protected getLocalTargetBranchName(targetBranch: string): string {\n    return `merge_pr_target_${targetBranch.replace(/\\//g, '_')}`;\n  }\n\n  /**\n   * Cherry-picks the given revision range into the specified target branches.\n   * @returns A list of branches for which the revisions could not be cherry-picked into.\n   */\n  protected cherryPickIntoTargetBranches(\n    revisionRange: string,\n    targetBranches: string[],\n    options: {\n      dryRun?: boolean;\n      linkToOriginalCommits?: boolean;\n    } = {},\n  ) {\n    const cherryPickArgs = [revisionRange];\n    const failedBranches: string[] = [];\n\n    const revisionCountOutput = this.git.run(['rev-list', '--count', revisionRange]);\n    const revisionCount = Number(revisionCountOutput.stdout.trim());\n    if (isNaN(revisionCount)) {\n      throw new FatalMergeToolError(\n        'Unexpected revision range for cherry-picking. No commit count could be determined.',\n      );\n    }\n\n    if (options.linkToOriginalCommits) {\n      // We add `-x` when cherry-picking as that will allow us to easily jump to original\n      // commits for cherry-picked commits. With that flag set, Git will automatically append\n      // the original SHA/revision to the commit message. e.g. `(cherry picked from commit <..>)`.\n      // https://git-scm.com/docs/git-cherry-pick#Documentation/git-cherry-pick.txt--x.\n      cherryPickArgs.push('-x');\n    }\n\n    // Cherry-pick the refspec into all determined target branches.\n    for (const branchName of targetBranches) {\n      const localTargetBranch = this.getLocalTargetBranchName(branchName);\n      // Checkout the local target branch.\n      this.git.run(['checkout', localTargetBranch]);\n      // Cherry-pick the refspec into the target branch.\n      const cherryPickResult = this.git.runGraceful(['cherry-pick', ...cherryPickArgs]);\n      if (cherryPickResult.status !== 0) {\n        // Abort the failed cherry-pick. We do this because Git persists the failed\n        // cherry-pick state globally in the repository. This could prevent future\n        // pull request merges as a Git thinks a cherry-pick is still in progress.\n        this.git.runGraceful(['cherry-pick', '--abort']);\n        failedBranches.push(branchName);\n      }\n      // If we run with dry run mode, we reset the local target branch so that all dry-run\n      // cherry-pick changes are discard. Changes are applied to the working tree and index.\n      if (options.dryRun) {\n        this.git.run(['reset', '--hard', `HEAD~${revisionCount}`]);\n      }\n    }\n    return failedBranches;\n  }\n\n  /**\n   * Fetches the given target branches. Also accepts a list of additional refspecs that\n   * should be fetched. This is helpful as multiple slow fetches could be avoided.\n   */\n  protected fetchTargetBranches(names: string[], ...extraRefspecs: string[]) {\n    const fetchRefspecs = names.map((targetBranch) => {\n      const localTargetBranch = this.getLocalTargetBranchName(targetBranch);\n      return `refs/heads/${targetBranch}:${localTargetBranch}`;\n    });\n    // Fetch all target branches with a single command. We don't want to fetch them\n    // individually as that could cause an unnecessary slow-down.\n    this.git.run([\n      'fetch',\n      '-q',\n      '-f',\n      this.git.getRepoGitUrl(),\n      ...fetchRefspecs,\n      ...extraRefspecs,\n    ]);\n  }\n\n  /** Pushes the given target branches upstream. */\n  protected pushTargetBranchesUpstream(names: string[]) {\n    const pushRefspecs = names.map((targetBranch) => {\n      const localTargetBranch = this.getLocalTargetBranchName(targetBranch);\n      return `${localTargetBranch}:refs/heads/${targetBranch}`;\n    });\n    // Push all target branches with a single command if we don't run in dry-run mode.\n    // We don't want to push them individually as that could cause an unnecessary slow-down.\n    this.git.run(['push', '--atomic', this.git.getRepoGitUrl(), ...pushRefspecs]);\n  }\n\n  /** Asserts that given pull request could be merged into the given target branches. */\n  protected async _assertMergeableOrThrow(\n    {revisionRange}: PullRequest,\n    targetBranches: string[],\n  ): Promise {\n    const failedBranches = this.cherryPickIntoTargetBranches(revisionRange, targetBranches, {\n      dryRun: true,\n    });\n\n    if (failedBranches.length) {\n      throw new MergeConflictsFatalError(failedBranches);\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  getTargetBranchesAndLabelForPullRequest,\n  PullRequestTarget,\n} from '../common/targeting/target-label.js';\nimport {fetchPullRequestFromGithub} from '../common/fetch-pull-request.js';\nimport {FatalMergeToolError} from './failures.js';\nimport {ActiveReleaseTrains} from '../../release/versioning/active-release-trains.js';\nimport {assertValidPullRequest} from '../common/validation/validate-pull-request.js';\nimport {TEMP_PR_HEAD_BRANCH} from './strategies/strategy.js';\nimport {mergeLabels} from '../common/labels/merge.js';\nimport {PullRequestValidationFailure} from '../common/validation/validation-failure.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {GithubConfig, NgDevConfig, CaretakerConfig, GoogleSyncConfig} from '../../utils/config.js';\nimport {PullRequestConfig, PullRequestValidationConfig} from '../config/index.js';\nimport {targetLabels} from '../common/labels/target.js';\n\n/** Interface that describes a pull request. */\nexport interface PullRequest {\n  /** URL to the pull request. */\n  url: string;\n  /** Number of the pull request. */\n  prNumber: number;\n  /** Title of the pull request. */\n  title: string;\n  /** Labels applied to the pull request. */\n  labels: string[];\n  /** List of branches this PR should be merged into. */\n  targetBranches: string[];\n  /** Branch that the PR targets in the Github UI. */\n  githubTargetBranch: string;\n  /** Count of commits in this pull request. */\n  commitCount: number;\n  /** Optional SHA that this pull request needs to be based on. */\n  requiredBaseSha?: string;\n  /** Whether the pull request commit message fixup. */\n  needsCommitMessageFixup: boolean;\n  /** Whether the pull request has a caretaker note. */\n  hasCaretakerNote: boolean;\n  /** The SHA for the first commit the pull request is based on. */\n  baseSha: string;\n  /** Git revision range that matches the pull request commits. */\n  revisionRange: string;\n  /** A list of validation failures found for the pull request, empty if no failures are discovered. */\n  validationFailures: PullRequestValidationFailure[];\n  /** The SHA for the latest commit in the pull request. */\n  headSha: string;\n}\n\n/**\n * Loads and validates the specified pull request against the given configuration.\n * If the pull requests fails, a pull request failure is returned.\n *\n * @throws {FatalMergeToolError} A fatal error might be thrown when e.g. the pull request\n *   does not exist upstream.\n * @throws {InvalidTargetLabelError} Error thrown if an invalid target label is applied.\n * @throws {InvalidTargetBranchError} Error thrown if an invalid GitHub PR destination branch\n *   is selected.\n */\nexport async function loadAndValidatePullRequest(\n  {\n    git,\n    config,\n  }: {\n    git: AuthenticatedGitClient;\n    config: NgDevConfig<{\n      pullRequest: PullRequestConfig;\n      github: GithubConfig;\n    }>;\n  },\n  prNumber: number,\n  validationConfig: PullRequestValidationConfig,\n): Promise {\n  const prData = await fetchPullRequestFromGithub(git, prNumber);\n\n  if (prData === null) {\n    throw new FatalMergeToolError('Pull request could not be found.');\n  }\n\n  const labels = prData.labels.nodes.map((l) => l.name);\n  const githubTargetBranch = prData.baseRefName;\n\n  const {mainBranchName, name, owner} = config.github;\n\n  // Active release trains fetched. May be `null` if e.g. target labeling is disabled\n  // and the active release train information is not available/computable.\n  let activeReleaseTrains: ActiveReleaseTrains | null = null;\n  let target: PullRequestTarget | null = null;\n\n  if (config.pullRequest.__noTargetLabeling) {\n    // If there is no target labeling, we always target the main branch and treat the PR as\n    // if it has been labeled with the `target: major` label (allowing for all types of changes).\n    target = {branches: [config.github.mainBranchName], label: targetLabels.TARGET_MAJOR};\n  } else {\n    activeReleaseTrains = await ActiveReleaseTrains.fetch({\n      name,\n      nextBranchName: mainBranchName,\n      owner,\n      api: git.github,\n    });\n\n    target = await getTargetBranchesAndLabelForPullRequest(\n      activeReleaseTrains,\n      git.github,\n      config,\n      labels,\n      githubTargetBranch,\n    );\n  }\n\n  const validationFailures = await assertValidPullRequest(\n    prData,\n    validationConfig,\n    config,\n    activeReleaseTrains,\n    target,\n    git,\n  );\n\n  const requiredBaseSha =\n    config.pullRequest.requiredBaseCommits &&\n    config.pullRequest.requiredBaseCommits[githubTargetBranch];\n  const needsCommitMessageFixup = labels.includes(mergeLabels.MERGE_FIX_COMMIT_MESSAGE.name);\n  const hasCaretakerNote = labels.includes(mergeLabels.MERGE_CARETAKER_NOTE.name);\n\n  // The parent of the first commit in a PR is the base SHA.\n  const baseSha = prData.baseCommitInfo.nodes[0].commit.parents.nodes[0].oid;\n\n  // Typically we would be able to rely on referencing the base revision as the pull\n  // request head commit minus the number of commits in the pull request. This is not always\n  // reliable when we rebase e.g. the PR with autosquash where the amount of commits could\n  // change. We avoid this issue around this by using the resolved base revision so that we are\n  // able to reference an explicit SHA before a autosquash rebase could be performed.\n  const revisionRange = `${baseSha}..${TEMP_PR_HEAD_BRANCH}`;\n\n  return {\n    url: prData.url,\n    prNumber,\n    labels,\n    requiredBaseSha,\n    githubTargetBranch,\n    needsCommitMessageFixup,\n    baseSha,\n    revisionRange,\n    hasCaretakerNote,\n    validationFailures,\n    targetBranches: target.branches,\n    title: prData.title,\n    commitCount: prData.commits.totalCount,\n    headSha: prData.headRefOid,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {RestEndpointMethodTypes} from '@octokit/plugin-rest-endpoint-methods';\n\nimport {parseCommitMessage} from '../../../commit-message/parse.js';\nimport {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client.js';\nimport {GithubApiMergeMethod, GithubApiMergeStrategyConfig} from '../../config/index.js';\nimport {PullRequest} from '../pull-request.js';\n\nimport {MergeStrategy} from './strategy.js';\nimport {isGithubApiError} from '../../../utils/git/github.js';\nimport {FatalMergeToolError, MergeConflictsFatalError} from '../failures.js';\nimport {Prompt} from '../../../utils/prompt.js';\n\n/** Type describing the parameters for the Octokit `merge` API endpoint. */\ntype OctokitMergeParams = RestEndpointMethodTypes['pulls']['merge']['parameters'];\n\ntype OctokitPullRequestCommitsList =\n  RestEndpointMethodTypes['pulls']['listCommits']['response']['data'];\n\n/** Separator between commit message header and body. */\nconst COMMIT_HEADER_SEPARATOR = '\\n\\n';\n\n/**\n * Merge strategy that primarily leverages the Github API. The strategy merges a given\n * pull request into a target branch using the API. This ensures that Github displays\n * the pull request as merged. The merged commits are then cherry-picked into the remaining\n * target branches using the local Git instance. The benefit is that the Github merged state\n * is properly set, but a notable downside is that PRs cannot use fixup or squash commits.\n */\nexport class GithubApiMergeStrategy extends MergeStrategy {\n  constructor(\n    git: AuthenticatedGitClient,\n    private _config: GithubApiMergeStrategyConfig,\n  ) {\n    super(git);\n  }\n\n  /**\n   * Merges the specified pull request via the Github API, cherry-picks the change into the other\n   * target branhces and pushes the branches upstream.\n   *\n   * @throws {GitCommandError} An unknown Git command error occurred that is not\n   *   specific to the pull request merge.\n   * @throws {FatalMergeToolError} A fatal error if the merge could not be performed.\n   */\n  override async merge(pullRequest: PullRequest): Promise {\n    const {githubTargetBranch, prNumber, needsCommitMessageFixup, targetBranches} = pullRequest;\n    const method = this._getMergeActionFromPullRequest(pullRequest);\n    const cherryPickTargetBranches = targetBranches.filter((b) => b !== githubTargetBranch);\n\n    const mergeOptions: OctokitMergeParams = {\n      pull_number: prNumber,\n      merge_method: method,\n      ...this.git.remoteParams,\n    };\n\n    if (needsCommitMessageFixup) {\n      // Commit message fixup does not work with other merge methods as the Github API only\n      // allows commit message modifications for squash merging.\n      if (method !== 'squash') {\n        throw new FatalMergeToolError(\n          `Unable to fixup commit message of pull request. Commit message can only be ` +\n            `modified if the PR is merged using squash.`,\n        );\n      }\n      await this._promptCommitMessageEdit(pullRequest, mergeOptions);\n    }\n\n    let mergeStatusCode: number;\n    let mergeResponseMessage: string;\n    let targetSha: string;\n\n    try {\n      // Merge the pull request using the Github API into the selected base branch.\n      const result = await this.git.github.pulls.merge(mergeOptions);\n\n      mergeStatusCode = result.status;\n      mergeResponseMessage = result.data.message;\n      targetSha = result.data.sha;\n    } catch (e) {\n      // Note: Github usually returns `404` as status code if the API request uses a\n      // token with insufficient permissions. Github does this because it doesn't want\n      // to leak whether a repository exists or not. In our case we expect a certain\n      // repository to exist, so we always treat this as a permission failure.\n      if (isGithubApiError(e) && (e.status === 403 || e.status === 404)) {\n        throw new FatalMergeToolError('Insufficient Github API permissions to merge pull request.');\n      }\n      throw e;\n    }\n\n    // https://developer.github.com/v3/pulls/#response-if-merge-cannot-be-performed\n    // Pull request cannot be merged due to merge conflicts.\n    if (mergeStatusCode === 405) {\n      throw new MergeConflictsFatalError([githubTargetBranch]);\n    }\n    if (mergeStatusCode !== 200) {\n      throw new FatalMergeToolError(\n        `Unexpected merge status code: ${mergeStatusCode}: ${mergeResponseMessage}`,\n      );\n    }\n\n    // If the PR does not need to be merged into any other target branches,\n    // we exit here as we already completed the merge.\n    if (!cherryPickTargetBranches.length) {\n      return;\n    }\n\n    // Refresh the target branch the PR has been merged into through the API. We need\n    // to re-fetch as otherwise we cannot cherry-pick the new commits into the remaining\n    // target branches.\n    this.fetchTargetBranches([githubTargetBranch]);\n\n    // Number of commits that have landed in the target branch. This could vary from\n    // the count of commits in the PR due to squashing.\n    const targetCommitsCount = method === 'squash' ? 1 : pullRequest.commitCount;\n\n    // Cherry pick the merged commits into the remaining target branches.\n    const failedBranches = await this.cherryPickIntoTargetBranches(\n      `${targetSha}~${targetCommitsCount}..${targetSha}`,\n      cherryPickTargetBranches,\n      {\n        // Commits that have been created by the Github API do not necessarily contain\n        // a reference to the source pull request (unless the squash strategy is used).\n        // To ensure that original commits can be found when a commit is viewed in a\n        // target branch, we add a link to the original commits when cherry-picking.\n        linkToOriginalCommits: true,\n      },\n    );\n\n    // We already checked whether the PR can be cherry-picked into the target branches,\n    // but in case the cherry-pick somehow fails, we still handle the conflicts here. The\n    // commits created through the Github API could be different (i.e. through squash).\n    if (failedBranches.length) {\n      throw new MergeConflictsFatalError(failedBranches);\n    }\n\n    this.pushTargetBranchesUpstream(cherryPickTargetBranches);\n\n    // Because our process brings changes into multiple branchces, we include a comment which\n    // expresses all of the branches the changes were merged into.\n    await this.git.github.issues.createComment({\n      ...this.git.remoteParams,\n      issue_number: pullRequest.prNumber,\n      body: `The changes were merged into the following branches: ${targetBranches.join(', ')}`,\n    });\n  }\n\n  /**\n   * Prompts the user for the commit message changes. Unlike as in the autosquash merge\n   * strategy, we cannot start an interactive rebase because we merge using the Github API.\n   * The Github API only allows modifications to PR title and body for squash merges.\n   */\n  private async _promptCommitMessageEdit(\n    pullRequest: PullRequest,\n    mergeOptions: OctokitMergeParams,\n  ) {\n    const commitMessage = await this._getDefaultSquashCommitMessage(pullRequest);\n    const result = await Prompt.editor({\n      message: 'Please update the commit message',\n      default: commitMessage,\n    });\n\n    // Split the new message into title and message. This is necessary because the\n    // Github API expects title and message to be passed separately.\n    const [newTitle, ...newMessage] = result.split(COMMIT_HEADER_SEPARATOR);\n\n    // Update the merge options so that the changes are reflected in there.\n    mergeOptions.commit_title = `${newTitle} (#${pullRequest.prNumber})`;\n    mergeOptions.commit_message = newMessage.join(COMMIT_HEADER_SEPARATOR);\n  }\n\n  /**\n   * Gets a commit message for the given pull request. Github by default concatenates\n   * multiple commit messages if a PR is merged in squash mode. We try to replicate this\n   * behavior here so that we have a default commit message that can be fixed up.\n   */\n  private async _getDefaultSquashCommitMessage(pullRequest: PullRequest): Promise {\n    const commits = (await this._getPullRequestCommitMessages(pullRequest)).map((message) => ({\n      message,\n      parsed: parseCommitMessage(message),\n    }));\n    const messageBase = `${pullRequest.title}${COMMIT_HEADER_SEPARATOR}`;\n    if (commits.length <= 1) {\n      return `${messageBase}${commits[0].parsed.body}`;\n    }\n    const joinedMessages = commits.map((c) => `* ${c.message}`).join(COMMIT_HEADER_SEPARATOR);\n    return `${messageBase}${joinedMessages}`;\n  }\n\n  /** Gets all commit messages of commits in the pull request. */\n  private async _getPullRequestCommitMessages({prNumber}: PullRequest) {\n    const allCommits: OctokitPullRequestCommitsList = await this.git.github.paginate(\n      this.git.github.pulls.listCommits,\n      {\n        ...this.git.remoteParams,\n        pull_number: prNumber,\n      },\n    );\n    return allCommits.map(({commit}) => commit.message);\n  }\n\n  /** Determines the merge action from the given pull request. */\n  private _getMergeActionFromPullRequest({labels}: PullRequest): GithubApiMergeMethod {\n    if (this._config.labels) {\n      const matchingLabel = this._config.labels.find(({pattern}) => labels.includes(pattern));\n      if (matchingLabel !== undefined) {\n        return matchingLabel.method;\n      }\n    }\n    return this._config.default;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {dirname, join} from 'path';\nimport {fileURLToPath} from 'url';\nimport {PullRequest} from '../pull-request.js';\nimport {MergeStrategy, TEMP_PR_HEAD_BRANCH} from './strategy.js';\nimport {MergeConflictsFatalError} from '../failures.js';\n\n/**\n * Merge strategy that does not use the Github API for merging. Instead, it fetches\n * all target branches and the PR locally. The PR is then cherry-picked with autosquash\n * enabled into the target branches. The benefit is the support for fixup and squash commits.\n * A notable downside though is that Github does not show the PR as `Merged` due to non\n * fast-forward merges\n */\nexport class AutosquashMergeStrategy extends MergeStrategy {\n  /**\n   * Merges the specified pull request into the target branches and pushes the target\n   * branches upstream. This method requires the temporary target branches to be fetched\n   * already as we don't want to fetch the target branches per pull request merge. This\n   * would causes unnecessary multiple fetch requests when multiple PRs are merged.\n   *\n   * @throws {GitCommandError} An unknown Git command error occurred that is not\n   *   specific to the pull request merge.\n   * @throws {FatalMergeToolError} A fatal error if the merge could not be performed.\n   */\n  override async merge(pullRequest: PullRequest): Promise {\n    const {\n      githubTargetBranch,\n      targetBranches,\n      revisionRange,\n      needsCommitMessageFixup,\n      baseSha,\n      prNumber,\n    } = pullRequest;\n\n    // We always rebase the pull request so that fixup or squash commits are automatically\n    // collapsed. Git's autosquash functionality does only work in interactive rebases, so\n    // our rebase is always interactive. In reality though, unless a commit message fixup\n    // is desired, we set the `GIT_SEQUENCE_EDITOR` environment variable to `true` so that\n    // the rebase seems interactive to Git, while it's not interactive to the user.\n    // See: https://github.com/git/git/commit/891d4a0313edc03f7e2ecb96edec5d30dc182294.\n    const branchOrRevisionBeforeRebase = this.git.getCurrentBranchOrRevision();\n    const rebaseEnv = needsCommitMessageFixup\n      ? undefined\n      : {...process.env, GIT_SEQUENCE_EDITOR: 'true'};\n    this.git.run(['rebase', '--interactive', '--autosquash', baseSha, TEMP_PR_HEAD_BRANCH], {\n      stdio: 'inherit',\n      env: rebaseEnv,\n    });\n\n    // Update pull requests commits to reference the pull request. This matches what\n    // Github does when pull requests are merged through the Web UI. The motivation is\n    // that it should be easy to determine which pull request contained a given commit.\n    // Note: The filter-branch command relies on the working tree, so we want to make sure\n    // that we are on the initial branch or revision where the merge script has been invoked.\n    this.git.run(['checkout', '-f', branchOrRevisionBeforeRebase]);\n    this.git.run([\n      'filter-branch',\n      '-f',\n      '--msg-filter',\n      `${getCommitMessageFilterScriptPath()} ${prNumber}`,\n      revisionRange, // Range still captures the squashed commits (`base..PR_HEAD`).\n    ]);\n\n    // Perform the actual cherry picking into target branches.\n    // Note: Range still captures the squashed commits (`base..PR_HEAD`).\n    const failedBranches = this.cherryPickIntoTargetBranches(revisionRange, targetBranches);\n\n    // We already checked whether the PR can be cherry-picked into the target branches,\n    // but in case the cherry-pick somehow fails, we still handle the conflicts here. The\n    // commits created through the Github API could be different (i.e. through squash).\n    if (failedBranches.length) {\n      throw new MergeConflictsFatalError(failedBranches);\n    }\n\n    // Push the cherry picked branches upstream.\n    this.pushTargetBranchesUpstream(targetBranches);\n\n    /** The local branch name of the github targeted branch. */\n    const localBranch = this.getLocalTargetBranchName(githubTargetBranch);\n    /** The SHA of the commit pushed to github which represents closing the PR. */\n    const sha = this.git.run(['rev-parse', localBranch]).stdout.trim();\n    // Allow user to set an amount of time to wait to account for rate limiting of the token usage\n    // during merge otherwise just waits 0 seconds.\n    await new Promise((resolve) =>\n      setTimeout(resolve, parseInt(process.env['AUTOSQUASH_TIMEOUT'] || '0')),\n    );\n    // Github automatically closes PRs whose commits are merged into the main branch on Github.\n    // However, it does not note them as merged using the purple merge badge as occurs when done via\n    // the UI. To inform users that the PR was in fact merged, add a comment expressing the fact\n    // that the PR is merged and what branches the changes were merged into.\n    await this.git.github.issues.createComment({\n      ...this.git.remoteParams,\n      issue_number: pullRequest.prNumber,\n      body:\n        `This PR was merged into the repository by commit ${sha}.\\n\\n` +\n        `The changes were merged into the following branches: ${targetBranches.join(', ')}`,\n    });\n\n    // For PRs which do not target the `main` branch on Github, Github does not automatically\n    // close the PR when its commit is pushed into the repository. To ensure these PRs are\n    // correctly marked as closed, we must detect this situation and close the PR via the API after\n    // the upstream pushes are completed.\n    if (githubTargetBranch !== this.git.mainBranchName) {\n      await this.git.github.pulls.update({\n        ...this.git.remoteParams,\n        pull_number: pullRequest.prNumber,\n        state: 'closed',\n      });\n    }\n  }\n}\n\n/** Gets the absolute file path to the commit-message filter script. */\nfunction getCommitMessageFilterScriptPath(): string {\n  // This file is getting bundled and ends up in `/bundles/`. We also\n  // bundle the commit-message-filter script as another entry-point and can reference\n  // it relatively as the path is preserved inside `bundles/`.\n  // *Note*: Relying on package resolution is problematic within ESM and with `local-dev.sh`\n  const bundlesDir = dirname(fileURLToPath(import.meta.url));\n  return join(bundlesDir, './pr/merge/strategies/commit-message-filter.mjs');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport semver from 'semver';\nimport {bold, green, Log, red, yellow} from '../../utils/logging.js';\n\nimport {PullRequestConfig, PullRequestValidationConfig} from '../config/index.js';\nimport {\n  getCaretakerNotePromptMessage,\n  getTargetedBranchesConfirmationPromptMessage,\n  getTargetedBranchesMessage,\n} from './messages.js';\nimport {loadAndValidatePullRequest, PullRequest} from './pull-request.js';\nimport {GithubApiMergeStrategy} from './strategies/api-merge.js';\nimport {AutosquashMergeStrategy} from './strategies/autosquash-merge.js';\nimport {GithubConfig, NgDevConfig} from '../../utils/config.js';\nimport {assertValidReleaseConfig} from '../../release/config/index.js';\nimport {\n  ActiveReleaseTrains,\n  fetchLongTermSupportBranchesFromNpm,\n  getNextBranchName,\n} from '../../release/versioning/index.js';\nimport {\n  FatalMergeToolError,\n  PullRequestValidationError,\n  UserAbortedMergeToolError,\n} from './failures.js';\nimport {createPullRequestValidationConfig} from '../common/validation/validation-config.js';\nimport {Prompt} from '../../utils/prompt.js';\n\nexport interface PullRequestMergeFlags {\n  branchPrompt: boolean;\n  forceManualBranches: boolean;\n  dryRun: boolean;\n  ignorePendingReviews: boolean;\n}\n\nconst defaultPullRequestMergeFlags: PullRequestMergeFlags = {\n  branchPrompt: true,\n  forceManualBranches: false,\n  dryRun: false,\n  ignorePendingReviews: false,\n};\n\n/**\n * Class that accepts a merge script configuration and Github token. It provides\n * a programmatic interface for merging multiple pull requests based on their\n * labels that have been resolved through the merge script configuration.\n */\nexport class MergeTool {\n  private flags: PullRequestMergeFlags;\n\n  constructor(\n    public config: NgDevConfig<{\n      pullRequest: PullRequestConfig;\n      github: GithubConfig;\n    }>,\n    public git: AuthenticatedGitClient,\n    flags: Partial,\n  ) {\n    // Update flags property with the provided flags values as patches to the default flag values.\n    this.flags = {...defaultPullRequestMergeFlags, ...flags};\n  }\n\n  /**\n   * Merges the given pull request and pushes it upstream.\n   * @param prNumber Pull request that should be merged.\n   * @param partialValidationConfig Pull request validation config. Can be modified to skip\n   *   certain non-fatal validations.\n   */\n  async merge(\n    prNumber: number,\n    partialValidationConfig: PullRequestValidationConfig,\n  ): Promise {\n    /** The full validation config, using the provided config from flags, config and defaults. */\n    const validationConfig = createPullRequestValidationConfig({\n      ...this.config.pullRequest.validators,\n      ...partialValidationConfig,\n    });\n\n    if (this.git.hasUncommittedChanges()) {\n      throw new FatalMergeToolError(\n        'Local working repository not clean. Please make sure there are ' +\n          'no uncommitted changes.',\n      );\n    }\n\n    if (this.git.isShallowRepo()) {\n      throw new FatalMergeToolError(\n        `Unable to perform merge in a local repository that is configured as shallow.\\n` +\n          `Please convert the repository to a complete one by syncing with upstream.\\n` +\n          `https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---unshallow`,\n      );\n    }\n\n    await this.confirmMergeAccess();\n\n    const pullRequest = await loadAndValidatePullRequest(this, prNumber, validationConfig);\n\n    if (pullRequest.validationFailures.length > 0) {\n      Log.error(`Pull request did not pass one or more validation checks. Error:`);\n\n      for (const failure of pullRequest.validationFailures) {\n        Log.error(` -> ${bold(failure.message)}`);\n      }\n      Log.info();\n\n      if (pullRequest.validationFailures.some((failure) => !failure.canBeForceIgnored)) {\n        Log.debug('Discovered a fatal error, which cannot be forced');\n        throw new PullRequestValidationError();\n      }\n\n      Log.info(yellow(`All discovered validations are non-fatal and can be forcibly ignored.`));\n      if (\n        !(await Prompt.confirm({\n          message: 'Do you want to forcibly ignore these validation failures?',\n        }))\n      ) {\n        throw new PullRequestValidationError();\n      }\n    }\n\n    if (this.flags.forceManualBranches) {\n      await this.updatePullRequestTargetedBranchesFromPrompt(pullRequest);\n    }\n\n    // If the pull request has a caretaker note applied, raise awareness by prompting\n    // the caretaker. The caretaker can then decide to proceed or abort the merge.\n    if (\n      pullRequest.hasCaretakerNote &&\n      !(await Prompt.confirm({message: getCaretakerNotePromptMessage(pullRequest)}))\n    ) {\n      throw new UserAbortedMergeToolError();\n    }\n\n    const strategy = this.config.pullRequest.githubApiMerge\n      ? new GithubApiMergeStrategy(this.git, this.config.pullRequest.githubApiMerge)\n      : new AutosquashMergeStrategy(this.git);\n\n    // Branch or revision that is currently checked out so that we can switch back to\n    // it once the pull request has been merged.\n    const previousBranchOrRevision = this.git.getCurrentBranchOrRevision();\n\n    // The following block runs Git commands as child processes. These Git commands can fail.\n    // We want to capture these command errors and return an appropriate merge request status.\n    try {\n      // Run preparations for the merge (e.g. fetching branches).\n      await strategy.prepare(pullRequest);\n\n      // Print the target branches.\n      Log.info();\n      Log.info(getTargetedBranchesMessage(pullRequest));\n\n      // Check for conflicts between the pull request and target branches.\n      await strategy.check(pullRequest);\n\n      Log.info('');\n      Log.info(green(`     PR: ${bold(pullRequest.title)}`));\n      Log.info(green(`  ✓  Pull request can be merged into all target branches.`));\n      Log.info();\n\n      if (this.flags.dryRun) {\n        Log.info(green(`  ✓  Exiting due to dry run mode.`));\n        return;\n      }\n\n      if (\n        // If there is no target labeling then the pull request is always just directly merged, so\n        // the confirmation can be skipped.\n        !this.config.pullRequest.__noTargetLabeling &&\n        // In cases where manual branch targeting is used, the user already confirmed.\n        !this.flags.forceManualBranches &&\n        this.flags.branchPrompt &&\n        !(await Prompt.confirm({message: getTargetedBranchesConfirmationPromptMessage()}))\n      ) {\n        throw new UserAbortedMergeToolError();\n      }\n\n      // Perform the merge and pass-through potential failures.\n      await strategy.merge(pullRequest);\n      Log.info(green(`  ✓  Successfully merged the pull request: #${prNumber}`));\n    } finally {\n      // Switch back to the previous branch. We need to do this before deleting the temporary\n      // branches because we cannot delete branches which are currently checked out.\n      this.git.run(['checkout', '-f', previousBranchOrRevision]);\n\n      await strategy.cleanup(pullRequest);\n    }\n  }\n\n  /**\n   * Modifies the pull request in place with new target branches based on user\n   * selection from the available active branches.\n   */\n  private async updatePullRequestTargetedBranchesFromPrompt(\n    pullRequest: PullRequest,\n  ): Promise {\n    const {name: repoName, owner} = this.config.github;\n\n    // Attempt to retrieve the active LTS branches to be included in the selection.\n    let ltsBranches: {branchName: string; version: semver.SemVer}[] = [];\n    try {\n      assertValidReleaseConfig(this.config);\n      const ltsBranchesFromNpm = await fetchLongTermSupportBranchesFromNpm(this.config.release);\n      ltsBranches = ltsBranchesFromNpm.active.map(({name, version}) => ({\n        branchName: name,\n        version,\n      }));\n    } catch {\n      Log.warn(\n        'Unable to determine the active LTS branches as a release config is not set for this repo.',\n      );\n    }\n\n    // Gather the current active release trains.\n    const {latest, next, releaseCandidate} = await ActiveReleaseTrains.fetch({\n      name: repoName,\n      nextBranchName: getNextBranchName(this.config.github),\n      owner,\n      api: this.git.github,\n    });\n\n    // Collate the known active branches into a single list.\n    const activeBranches: {branchName: string; version: semver.SemVer}[] = [\n      next,\n      latest,\n      ...ltsBranches,\n    ];\n    if (releaseCandidate !== null) {\n      // Since the next version will always be the primary github branch rather than semver, the RC\n      // branch should be included as the second item in the list.\n      activeBranches.splice(1, 0, releaseCandidate);\n    }\n\n    const selectedBranches = await Prompt.checkbox({\n      choices: activeBranches.map(({branchName, version}) => {\n        return {\n          checked: pullRequest.targetBranches.includes(branchName),\n          value: branchName,\n          short: branchName,\n          name: `${branchName} (${version})${\n            branchName === pullRequest.githubTargetBranch ? ' [Targeted via Github UI]' : ''\n          }`,\n        };\n      }),\n      message: 'Select branches to merge pull request into:',\n    });\n    const confirmation = await Prompt.confirm({\n      default: false,\n      message:\n        red('!!!!!! WARNING !!!!!!!\\n') +\n        yellow(\n          'Using manual branch selection disables protective checks provided by the merge ' +\n            'tooling. This means that the merge tooling will not prevent changes which are not ' +\n            'allowed for the targeted branches. Please proceed with caution.\\n',\n        ) +\n        'Are you sure you would like to proceed with the selected branches?',\n    });\n\n    if (confirmation === false) {\n      throw new UserAbortedMergeToolError();\n    }\n\n    // The Github Targeted branch must always be selected. It is not currently possible\n    // to make a readonly selection in inquirer's checkbox.\n    if (!selectedBranches.includes(pullRequest.githubTargetBranch)) {\n      throw new FatalMergeToolError(\n        `Pull Requests must merge into their targeted Github branch. If this branch (${pullRequest.githubTargetBranch}) ` +\n          'should not be included, please change the targeted branch via the Github UI.',\n      );\n    }\n\n    pullRequest.targetBranches = selectedBranches;\n  }\n\n  async confirmMergeAccess() {\n    if (this.git.userType === 'user') {\n      // Check whether the given Github token has sufficient permissions for writing\n      // to the configured repository. If the repository is not private, only the\n      // reduced `public_repo` OAuth scope is sufficient for performing merges.\n      const hasOauthScopes = await this.git.hasOauthScopes((scopes, missing) => {\n        if (!scopes.includes('repo')) {\n          if (this.config.github.private) {\n            missing.push('repo');\n          } else if (!scopes.includes('public_repo')) {\n            missing.push('public_repo');\n          }\n        }\n\n        // Pull requests can modify Github action workflow files. In such cases Github requires us to\n        // push with a token that has the `workflow` oauth scope set. To avoid errors when the\n        // caretaker intends to merge such PRs, we ensure the scope is always set on the token before\n        // the merge process starts.\n        // https://docs.github.com/en/developers/apps/scopes-for-oauth-apps#available-scopes\n        if (!scopes.includes('workflow')) {\n          missing.push('workflow');\n        }\n      });\n\n      if (hasOauthScopes !== true) {\n        throw new FatalMergeToolError(hasOauthScopes.error);\n      }\n      return;\n    } else {\n      // TODO(josephperrott): Find a way to check access of the installation without using a JWT.\n      Log.debug('Assuming correct access because this a bot account.');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertValidGithubConfig, ConfigValidationError, getConfig} from '../../utils/config.js';\nimport {bold, Log} from '../../utils/logging.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {isGithubApiError} from '../../utils/git/github.js';\nimport {GITHUB_TOKEN_GENERATE_URL} from '../../utils/git/github-urls.js';\n\nimport {assertValidPullRequestConfig} from '../config/index.js';\nimport {MergeTool, PullRequestMergeFlags} from './merge-tool.js';\nimport {\n  FatalMergeToolError,\n  PullRequestValidationError,\n  UserAbortedMergeToolError,\n} from './failures.js';\nimport {\n  InvalidTargetBranchError,\n  InvalidTargetLabelError,\n} from '../common/targeting/target-label.js';\n\n/**\n * Merges a given pull request based on labels configured in the given merge configuration.\n * Pull requests can be merged with different strategies such as the Github API merge\n * strategy, or the local autosquash strategy. Either strategy has benefits and downsides.\n * More information on these strategies can be found in their dedicated strategy classes.\n *\n * See {@link GithubApiMergeStrategy} and {@link AutosquashMergeStrategy}\n *\n * @param prNumber Number of the pull request that should be merged.\n * @param flags Configuration options for merging pull requests.\n */\nexport async function mergePullRequest(prNumber: number, flags: PullRequestMergeFlags) {\n  // Set the environment variable to skip all git commit hooks triggered by husky. We are unable to\n  // rely on `--no-verify` as some hooks still run, notably the `prepare-commit-msg` hook.\n  process.env['HUSKY'] = '0';\n\n  const tool = await createPullRequestMergeTool(flags);\n\n  // Perform the merge. If the merge fails with non-fatal failures, the script\n  // will prompt whether it should rerun in force mode with the ignored failure.\n  if (!(await performMerge())) {\n    process.exit(1);\n  }\n\n  /** Performs the merge and returns whether it was successful or not. */\n  async function performMerge(\n    validationConfig = {\n      assertCompletedReviews: !flags.ignorePendingReviews,\n    },\n  ): Promise {\n    try {\n      await tool.merge(prNumber, validationConfig);\n      return true;\n    } catch (e) {\n      // Catch errors to the Github API for invalid requests. We want to\n      // exit the script with a better explanation of the error.\n      if (isGithubApiError(e) && e.status === 401) {\n        Log.error('Github API request failed: ' + bold(e.message));\n        Log.error('Please ensure that your provided token is valid.');\n        Log.warn(`You can generate a token here: ${GITHUB_TOKEN_GENERATE_URL}`);\n        return false;\n      }\n      if (isGithubApiError(e)) {\n        Log.error('Github API request failed: ' + bold(e.message));\n        return false;\n      }\n      if (e instanceof UserAbortedMergeToolError) {\n        Log.warn('Manually aborted merging..');\n        return false;\n      }\n      if (e instanceof InvalidTargetBranchError) {\n        Log.error(`Pull request selects an invalid GitHub destination branch:`);\n        Log.error(` -> ${bold(e.failureMessage)}`);\n      }\n      if (e instanceof InvalidTargetLabelError) {\n        Log.error(`Pull request target label could not be determined:`);\n        Log.error(` -> ${bold(e.failureMessage)}`);\n      }\n\n      if (e instanceof PullRequestValidationError) {\n        Log.error('Pull request failed at least one validation check.');\n        Log.error('See above for specific error information');\n        return false;\n      }\n\n      // Note: Known errors in the merge tooling extend from the FatalMergeToolError, as such\n      // the instance check for FatalMergeToolError should remain last as it will be truthy for\n      // all of the subclasses.\n      if (e instanceof FatalMergeToolError) {\n        Log.error(`Could not merge the specified pull request. Error:`);\n        Log.error(` -> ${bold(e.message)}`);\n        return false;\n      }\n\n      // For unknown errors, always re-throw.\n      throw e;\n    }\n  }\n}\n\n/**\n * Creates the pull request merge tool using the given configuration options.\n *\n * Explicit configuration options can be specified when the merge script is used\n * outside of an `ng-dev` configured repository.\n */\nasync function createPullRequestMergeTool(flags: PullRequestMergeFlags) {\n  try {\n    const config = await getConfig();\n\n    assertValidGithubConfig(config);\n    assertValidPullRequestConfig(config);\n\n    /** The singleton instance of the authenticated git client. */\n    const git = await AuthenticatedGitClient.get();\n    return new MergeTool(config, git, flags);\n  } catch (e) {\n    if (e instanceof ConfigValidationError) {\n      if (e.errors.length) {\n        Log.error('Invalid merge configuration:');\n        e.errors.forEach((desc) => Log.error(`  -  ${desc}`));\n      } else {\n        Log.error(e.message);\n      }\n      process.exit(1);\n    }\n    throw e;\n  }\n}\n\n/**\n * Parses the pull request number from either the number or url string\n */\nexport function parsePrNumber(prUrlOrNumber: string): number {\n  // There is no url validation here other than presence of `/`.\n  // So whatever is the last segment of that string, url or not, will be\n  // parsed as a PR number.\n  const prNumber = parseInt(prUrlOrNumber.split('/').pop()!);\n  if (isNaN(prNumber)) {\n    throw new Error('Pull Request was unable to be parsed from the parameters');\n  }\n  return prNumber;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\nimport {addDryRunFlag} from '../../utils/dry-run.js';\n\nimport {mergePullRequest, parsePrNumber} from './merge-pull-request.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n/** The options available to the merge command via CLI. */\nexport interface MergeCommandOptions {\n  pr: number;\n  branchPrompt: boolean;\n  forceManualBranches: boolean;\n  dryRun: boolean;\n  ignorePendingReviews: boolean;\n}\n\n/** Builds the command. */\nasync function builder(argv: Argv) {\n  return addDryRunFlag(addGithubTokenOption(argv))\n    .help()\n    .strict()\n    .positional('pr', {\n      demandOption: true,\n      coerce: (prUrlOrNumber: string) => parsePrNumber(prUrlOrNumber),\n      type: 'string',\n      description: 'The PR to be merged.',\n    })\n    .option('branch-prompt' as 'branchPrompt', {\n      type: 'boolean',\n      default: true,\n      description: 'Whether to prompt to confirm the branches a PR will merge into.',\n    })\n    .option('force-manual-branches' as 'forceManualBranches', {\n      type: 'boolean',\n      default: false,\n      description: 'Whether to manually select the branches you wish to merge the PR into.',\n    })\n    .option('ignore-pending-reviews' as 'ignorePendingReviews', {\n      type: 'boolean',\n      default: false,\n      description: 'Bypass the check for pending reviews on the pull request',\n    });\n}\n\n/** Handles the command. */\nasync function handler({\n  pr,\n  branchPrompt,\n  forceManualBranches,\n  dryRun,\n  ignorePendingReviews,\n}: Arguments) {\n  await mergePullRequest(pr, {branchPrompt, forceManualBranches, dryRun, ignorePendingReviews});\n}\n\n/** yargs command module describing the command. */\nexport const MergeCommandModule: CommandModule<{}, MergeCommandOptions> = {\n  handler,\n  builder,\n  command: 'merge ',\n  describe: 'Merge a PR into its targeted branches.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Commit} from '../../commit-message/parse.js';\nimport {getCommitsInRange} from '../../commit-message/utils.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {addTokenToGitHttpsUrl} from '../../utils/git/github-urls.js';\nimport {Log} from '../../utils/logging.js';\nimport {Prompt} from '../../utils/prompt.js';\nimport {fetchPullRequestFromGithub} from '../common/fetch-pull-request.js';\n\n/**\n * Rebase the provided PR onto its merge target branch, and push up the resulting\n * commit to the PRs repository.\n *\n * @returns a status code indicating whether the rebase was successful.\n */\nexport async function rebasePr(prNumber: number): Promise {\n  /** The singleton instance of the authenticated git client. */\n  const git = await AuthenticatedGitClient.get();\n\n  if (git.hasUncommittedChanges()) {\n    Log.error('Cannot perform rebase of PR with local changes.');\n    return 1;\n  }\n\n  /**\n   * The branch or revision originally checked out before this method performed\n   * any Git operations that may change the working branch.\n   */\n  const previousBranchOrRevision = git.getCurrentBranchOrRevision();\n  /* Get the PR information from Github. */\n  const pr = await fetchPullRequestFromGithub(git, prNumber);\n\n  if (pr === null) {\n    Log.error(`Specified pull request does not exist.`);\n    return 1;\n  }\n\n  const headRefName = pr.headRef.name;\n  const baseRefName = pr.baseRef.name;\n  const fullHeadRef = `${pr.headRef.repository.nameWithOwner}:${headRefName}`;\n  const fullBaseRef = `${pr.baseRef.repository.nameWithOwner}:${baseRefName}`;\n  const headRefUrl = addTokenToGitHttpsUrl(pr.headRef.repository.url, git.githubToken);\n  const baseRefUrl = addTokenToGitHttpsUrl(pr.baseRef.repository.url, git.githubToken);\n\n  // Note: Since we use a detached head for rebasing the PR and therefore do not have\n  // remote-tracking branches configured, we need to set our expected ref and SHA. This\n  // allows us to use `--force-with-lease` for the detached head while ensuring that we\n  // never accidentally override upstream changes that have been pushed in the meanwhile.\n  // See:\n  // https://git-scm.com/docs/git-push#Documentation/git-push.txt---force-with-leaseltrefnamegtltexpectgt\n  const forceWithLeaseFlag = `--force-with-lease=${headRefName}:${pr.headRefOid}`;\n\n  // If the PR does not allow maintainers to modify it, exit as the rebased PR cannot\n  // be pushed up.\n  if (!pr.maintainerCanModify && !pr.viewerDidAuthor) {\n    Log.error(\n      `Cannot rebase as you did not author the PR and the PR does not allow maintainers` +\n        `to modify the PR`,\n    );\n    return 1;\n  }\n\n  try {\n    // Fetches are done with --deepen=500 increase the likelihood of finding a common ancestor when\n    // a shallow clone is being used.\n\n    // Fetch the branch at the commit of the PR, and check it out in a detached state.\n    Log.info(`Checking out PR #${prNumber} from ${fullHeadRef}`);\n    git.run(['fetch', '-q', headRefUrl, headRefName, '--deepen=500']);\n    git.run(['checkout', '-q', '--detach', 'FETCH_HEAD']);\n    // Fetch the PRs target branch and rebase onto it.\n    Log.info(`Fetching ${fullBaseRef} to rebase #${prNumber} on`);\n    git.run(['fetch', '-q', baseRefUrl, baseRefName, '--deepen=500']);\n\n    const commonAncestorSha = git.run(['merge-base', 'HEAD', 'FETCH_HEAD']).stdout.trim();\n\n    const commits = await getCommitsInRange(commonAncestorSha, 'HEAD');\n\n    let squashFixups =\n      process.env['CI'] !== undefined ||\n      commits.filter((commit: Commit) => commit.isFixup).length === 0\n        ? false\n        : await Prompt.confirm({\n            message: `PR #${prNumber} contains fixup commits, would you like to squash them during rebase?`,\n            default: true,\n          });\n\n    Log.info(`Attempting to rebase PR #${prNumber} on ${fullBaseRef}`);\n\n    /**\n     * Tuple of flags to be added to the rebase command and env object to run the git command.\n     *\n     * Additional flags to perform the autosquashing are added when the user confirm squashing of\n     * fixup commits should occur.\n     */\n    const [flags, env] = squashFixups\n      ? [['--interactive', '--autosquash'], {...process.env, GIT_SEQUENCE_EDITOR: 'true'}]\n      : [[], undefined];\n    const rebaseResult = git.runGraceful(['rebase', ...flags, 'FETCH_HEAD'], {env: env});\n\n    // If the rebase was clean, push the rebased PR up to the authors fork.\n    if (rebaseResult.status === 0) {\n      Log.info(`Rebase was able to complete automatically without conflicts`);\n      Log.info(`Pushing rebased PR #${prNumber} to ${fullHeadRef}`);\n      git.run(['push', headRefUrl, `HEAD:${headRefName}`, forceWithLeaseFlag]);\n      Log.info(`Rebased and updated PR #${prNumber}`);\n      git.checkout(previousBranchOrRevision, true);\n      return 0;\n    }\n  } catch (err) {\n    Log.error(err);\n    git.checkout(previousBranchOrRevision, true);\n    return 1;\n  }\n\n  // On automatic rebase failures, prompt to choose if the rebase should be continued\n  // manually or aborted now.\n  Log.info(`Rebase was unable to complete automatically without conflicts.`);\n  // If the command is run in a non-CI environment, prompt to allow for the user to\n  // manually complete the rebase.\n  const continueRebase =\n    process.env['CI'] === undefined &&\n    (await Prompt.confirm({message: 'Manually complete rebase?'}));\n\n  if (continueRebase) {\n    Log.info(\n      `After manually completing rebase, run the following command to update PR #${prNumber}:`,\n    );\n    Log.info(` $ git push ${pr.headRef.repository.url} HEAD:${headRefName} ${forceWithLeaseFlag}`);\n    Log.info();\n    Log.info(`To abort the rebase and return to the state of the repository before this command`);\n    Log.info(`run the following command:`);\n    Log.info(\n      ` $ git rebase --abort && git reset --hard && git checkout ${previousBranchOrRevision}`,\n    );\n    return 1;\n  } else {\n    Log.info(`Cleaning up git state, and restoring previous state.`);\n  }\n\n  git.checkout(previousBranchOrRevision, true);\n  return 1;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\n\nimport {rebasePr} from './index.js';\n\n/** The options available to the rebase command via CLI. */\nexport interface RebaseOptions {\n  pr: number;\n}\n\n/** Builds the rebase pull request command. */\nfunction builder(argv: Argv): Argv {\n  return addGithubTokenOption(argv).positional('pr', {type: 'number', demandOption: true});\n}\n\n/** Handles the rebase pull request command. */\nasync function handler({pr}: Arguments) {\n  process.exitCode = await rebasePr(pr);\n}\n\n/** yargs command module for rebasing a PR  */\nexport const RebaseCommandModule: CommandModule<{}, RebaseOptions> = {\n  handler,\n  builder,\n  command: 'rebase ',\n  describe: 'Rebase a pending PR and push the rebased commits back to Github',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv} from 'yargs';\n\nimport {CheckTargetBranchesModule} from './check-target-branches/cli.js';\nimport {CheckoutCommandModule} from './checkout/cli.js';\nimport {DiscoverNewConflictsCommandModule} from './discover-new-conflicts/cli.js';\nimport {MergeCommandModule} from './merge/cli.js';\nimport {RebaseCommandModule} from './rebase/cli.js';\n\n/** Build the parser for pull request commands. */\nexport function buildPrParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .command(DiscoverNewConflictsCommandModule)\n    .command(RebaseCommandModule)\n    .command(MergeCommandModule)\n    .command(CheckoutCommandModule)\n    .command(CheckTargetBranchesModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {readFileSync} from 'fs';\nimport {resolve} from 'path';\n\nimport {Log} from '../utils/logging.js';\nimport {GitClient} from '../utils/git/git-client.js';\nimport {logGroup, logHeader} from './logging.js';\nimport {getGroupsFromYaml} from './parse-yaml.js';\n\nexport async function verify() {\n  const git = await GitClient.get();\n  /** Full path to PullApprove config file */\n  const PULL_APPROVE_YAML_PATH = resolve(git.baseDir, '.pullapprove.yml');\n  /** All tracked files in the repository. */\n  const REPO_FILES = git.allFiles();\n  /** The pull approve config file. */\n  const pullApproveYamlRaw = readFileSync(PULL_APPROVE_YAML_PATH, 'utf8');\n  /** All of the groups defined in the pullapprove yaml. */\n  const groups = getGroupsFromYaml(pullApproveYamlRaw);\n  /**\n   * PullApprove groups without conditions. These are skipped in the verification\n   * as those would always be active and cause zero unmatched files.\n   */\n  const groupsSkipped = groups.filter((group) => !group.conditions.length);\n  /** PullApprove groups with conditions. */\n  const groupsWithConditions = groups.filter((group) => !!group.conditions.length);\n  /** Files which are matched by at least one group. */\n  const matchedFiles: string[] = [];\n  /** Files which are not matched by at least one group. */\n  const unmatchedFiles: string[] = [];\n\n  // Test each file in the repo against each group for being matched.\n  REPO_FILES.forEach((file: string) => {\n    if (groupsWithConditions.filter((group) => group.testFile(file)).length) {\n      matchedFiles.push(file);\n    } else {\n      unmatchedFiles.push(file);\n    }\n  });\n  /** Results for each group */\n  const resultsByGroup = groupsWithConditions.map((group) => group.getResults());\n  /**\n   * Whether all group condition lines match at least one file and all files\n   * are matched by at least one group.\n   */\n  const allGroupConditionsValid =\n    resultsByGroup.every((r) => !r.unmatchedCount) && !unmatchedFiles.length;\n  /** Whether all groups have at least one reviewer user or team defined.  */\n  const groupsWithoutReviewers = groups.filter(\n    (group) => Object.keys(group.reviewers).length === 0,\n  );\n  /** The overall result of the verifcation. */\n  const overallResult = allGroupConditionsValid && groupsWithoutReviewers.length === 0;\n\n  /**\n   * Overall result\n   */\n  logHeader('Overall Result');\n  if (overallResult) {\n    Log.info('PullApprove verification succeeded!');\n  } else {\n    Log.info(`PullApprove verification failed.`);\n    Log.info();\n    Log.info(`Please update '.pullapprove.yml' to ensure that all necessary`);\n    Log.info(`files/directories have owners and all patterns that appear in`);\n    Log.info(`the file correspond to actual files/directories in the repo.`);\n  }\n  /** Reviewers check */\n  logHeader(`Group Reviewers Check`);\n  if (groupsWithoutReviewers.length === 0) {\n    Log.info('All group contain at least one reviewer user or team.');\n  } else {\n    Log.info.group(\n      `Discovered ${groupsWithoutReviewers.length} group(s) without a reviewer defined`,\n    );\n    groupsWithoutReviewers.forEach((g) => Log.info(g.groupName));\n    Log.info.groupEnd();\n  }\n  /**\n   * File by file Summary\n   */\n  logHeader('PullApprove results by file');\n  Log.info.group(`Matched Files (${matchedFiles.length} files)`);\n  matchedFiles.forEach((file) => Log.debug(file));\n  Log.info.groupEnd();\n  Log.info.group(`Unmatched Files (${unmatchedFiles.length} files)`);\n  unmatchedFiles.forEach((file) => Log.info(file));\n  Log.info.groupEnd();\n  /**\n   * Group by group Summary\n   */\n  logHeader('PullApprove results by group');\n  Log.info.group(`Groups skipped (${groupsSkipped.length} groups)`);\n  groupsSkipped.forEach((group) => Log.debug(`${group.groupName}`));\n  Log.info.groupEnd();\n  const matchedGroups = resultsByGroup.filter((group) => !group.unmatchedCount);\n  Log.info.group(`Matched conditions by Group (${matchedGroups.length} groups)`);\n  matchedGroups.forEach((group) => logGroup(group, 'matchedConditions', Log.debug));\n  Log.info.groupEnd();\n  const unmatchedGroups = resultsByGroup.filter((group) => group.unmatchedCount);\n  Log.info.group(`Unmatched conditions by Group (${unmatchedGroups.length} groups)`);\n  unmatchedGroups.forEach((group) => logGroup(group, 'unmatchedConditions'));\n  Log.info.groupEnd();\n  const unverifiableConditionsInGroups = resultsByGroup.filter(\n    (group) => group.unverifiableConditions.length > 0,\n  );\n  Log.info.group(\n    `Unverifiable conditions by Group (${unverifiableConditionsInGroups.length} groups)`,\n  );\n  unverifiableConditionsInGroups.forEach((group) => logGroup(group, 'unverifiableConditions'));\n  Log.info.groupEnd();\n\n  // Provide correct exit code based on verification success.\n  process.exit(overallResult ? 0 : 1);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Log} from '../utils/logging.js';\nimport {PullApproveGroupResult} from './group.js';\n\ntype ConditionGrouping = keyof Pick<\n  PullApproveGroupResult,\n  'matchedConditions' | 'unmatchedConditions' | 'unverifiableConditions'\n>;\n\n/** Create logs for each pullapprove group result. */\nexport function logGroup(\n  group: PullApproveGroupResult,\n  conditionsToPrint: ConditionGrouping,\n  printMessageFn = Log.info,\n) {\n  const conditions = group[conditionsToPrint];\n  printMessageFn.group(`[${group.groupName}]`);\n  if (conditions.length) {\n    conditions.forEach((groupCondition) => {\n      const count = groupCondition.matchedFiles.size;\n      if (conditionsToPrint === 'unverifiableConditions') {\n        printMessageFn(`${groupCondition.expression}`);\n      } else {\n        printMessageFn(\n          `${count} ${count === 1 ? 'match' : 'matches'} - ${groupCondition.expression}`,\n        );\n      }\n    });\n    printMessageFn.groupEnd();\n  }\n}\n\n/** Logs a header within a text drawn box. */\nexport function logHeader(...params: string[]) {\n  const totalWidth = 80;\n  const fillWidth = totalWidth - 2;\n  const headerText = params.join(' ').substr(0, fillWidth);\n  const leftSpace = Math.ceil((fillWidth - headerText.length) / 2);\n  const rightSpace = fillWidth - leftSpace - headerText.length;\n  const fill = (count: number, content: string) => content.repeat(count);\n\n  Log.info(`┌${fill(fillWidth, '─')}┐`);\n  Log.info(`│${fill(leftSpace, ' ')}${headerText}${fill(rightSpace, ' ')}│`);\n  Log.info(`└${fill(fillWidth, '─')}┘`);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {parse as parseYaml} from 'yaml';\nimport {PullApproveGroup} from './group.js';\n\nexport interface PullApproveGroupConfig {\n  conditions?: string[];\n  reviewers?:\n    | {\n        users: string[];\n        teams?: string[];\n      }\n    | {\n        teams: string[];\n      };\n}\n\nexport interface PullApproveConfig {\n  version: number;\n  github_api_version?: string;\n  pullapprove_conditions?: {\n    condition: string;\n    unmet_status: string;\n    explanation: string;\n  }[];\n  groups: {\n    [key: string]: PullApproveGroupConfig;\n  };\n}\n\nexport function parsePullApproveYaml(rawYaml: string): PullApproveConfig {\n  return parseYaml(rawYaml, {merge: true}) as PullApproveConfig;\n}\n\n/** Parses all of the groups defined in the pullapprove yaml. */\nexport function getGroupsFromYaml(pullApproveYamlRaw: string): PullApproveGroup[] {\n  /** JSON representation of the pullapprove yaml file. */\n  const pullApprove = parsePullApproveYaml(pullApproveYamlRaw);\n  return Object.entries(pullApprove.groups).reduce((groups, [groupName, group]) => {\n    return groups.concat(new PullApproveGroup(groupName, group, groups));\n  }, [] as PullApproveGroup[]);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport class PullApproveGroupStateDependencyError extends Error {}\n\nexport class PullApproveAuthorStateDependencyError extends Error {}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Minimatch} from 'minimatch';\n\n/** Map that holds patterns and their corresponding Minimatch globs. */\nconst patternCache = new Map();\n\n/**\n * Gets a glob for the given pattern. The cached glob will be returned\n * if available. Otherwise a new glob will be created and cached.\n */\nexport function getOrCreateGlob(pattern: string) {\n  if (patternCache.has(pattern)) {\n    return patternCache.get(pattern)!;\n  }\n  const glob = new Minimatch(pattern, {dot: false, nobrace: false});\n  patternCache.set(pattern, glob);\n  return glob;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullApproveGroup} from './group.js';\nimport {PullApproveGroupStateDependencyError} from './condition_errors.js';\nimport {getOrCreateGlob} from './utils.js';\n\n/**\n * Superset of a native array. The superset provides methods which mimic the\n * list data structure used in PullApprove for files in conditions.\n */\nexport class PullApproveStringArray extends Array {\n  /** Returns a new array which only includes files that match the given pattern. */\n  include(pattern: string): PullApproveStringArray {\n    return new PullApproveStringArray(...this.filter((s) => getOrCreateGlob(pattern).match(s)));\n  }\n\n  /** Returns a new array which only includes files that did not match the given pattern. */\n  exclude(pattern: string): PullApproveStringArray {\n    return new PullApproveStringArray(...this.filter((s) => !getOrCreateGlob(pattern).match(s)));\n  }\n}\n\n/**\n * Superset of a native array. The superset provides methods which mimic the\n * list data structure used in PullApprove for groups in conditions.\n */\nexport class PullApproveGroupArray extends Array {\n  include(pattern: string): PullApproveGroupArray {\n    return new PullApproveGroupArray(...this.filter((s) => s.groupName.match(pattern)));\n  }\n\n  /** Returns a new array which only includes files that did not match the given pattern. */\n  exclude(pattern: string): PullApproveGroupArray {\n    return new PullApproveGroupArray(...this.filter((s) => s.groupName.match(pattern)));\n  }\n\n  get approved() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get pending() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get active() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get inactive() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get rejected() {\n    throw new PullApproveGroupStateDependencyError();\n  }\n\n  get names() {\n    return this.map((g) => g.groupName);\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PullApproveGroupArray, PullApproveStringArray} from './pullapprove_arrays.js';\n\nimport {PullApproveAuthorStateDependencyError} from './condition_errors.js';\nimport {PullApproveGroup} from './group.js';\nimport {getOrCreateGlob} from './utils.js';\nimport {runInNewContext} from 'vm';\n\n/**\n * Context object that will be used as global context in condition evaluation.\n *\n * Conditions can use various helpers that PullApprove provides. We try to\n * mock them here. Consult the official docs for more details:\n * https://docs.pullapprove.com/config/conditions.\n */\nconst conditionEvaluationContext: object = (() => {\n  const context = {\n    'len': (value: any[]) => value.length,\n    'contains_any_globs': (files: PullApproveStringArray, patterns: string[]) => {\n      // Note: Do not always create globs for the same pattern again. This method\n      // could be called for each source file. Creating glob's is expensive.\n      return files.some((f) => patterns.some((pattern) => getOrCreateGlob(pattern).match(f)));\n    },\n  };\n\n  // We cannot process references to `author` in conditions.\n  Object.defineProperty(context, 'author', {\n    get: () => {\n      const x: any = new String();\n      x.matchesAny = true;\n      return x;\n    },\n  });\n\n  return context;\n})();\n\n/**\n * Converts a given condition to a function that accepts a set of files. The returned\n * function can be called to check if the set of files matches the condition.\n */\nexport function convertConditionToFunction(\n  expr: string,\n): (files: string[], groups: PullApproveGroup[]) => boolean {\n  const jsExpression = `\n    (files, groups) => {\n      return (${transformExpressionToJs(expr)});\n    }\n  `;\n  const isMatchingFn = runInNewContext(jsExpression, conditionEvaluationContext);\n\n  return (files, groups) => {\n    const result = isMatchingFn(\n      new PullApproveStringArray(...files),\n      new PullApproveGroupArray(...groups),\n    );\n\n    // If an array is returned, we consider the condition as active if the array is not\n    // empty. This matches PullApprove's condition evaluation that is based on Python.\n    if (Array.isArray(result)) {\n      return result.length !== 0;\n    }\n    return !!result;\n  };\n}\n\n/**\n * Transforms a condition expression from PullApprove that is based on python\n * so that it can be run inside JavaScript. Current transformations:\n *\n *   1. `aExpr not in bExpr` --> `!bExpr.includes(aExpr)`\n *   2. `aExpr in bExpr`     --> `bExpr.includes(aExpr`)\n *   3. `not expr`           --> `!expr`\n */\nfunction transformExpressionToJs(expression: string): string {\n  return expression\n    .replace(/^(.+)\\s+not in\\s+(\\[.+\\])$/, '!$2.includes($1)')\n    .replace(/^(.+)\\s+in\\s+(.+)$/, '$2.some(x => $1.matchesAny || $1 == x)')\n    .replace(/^(.+)\\s+not in\\s+(.+)$/, '!$2.includes($1)')\n    .replace(/^(.+)\\s+in\\s+(.+)$/, '$2.includes($1)')\n    .replace(/not\\s+/g, '!');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  PullApproveAuthorStateDependencyError,\n  PullApproveGroupStateDependencyError,\n} from './condition_errors.js';\n\nimport {PullApproveGroupConfig} from './parse-yaml.js';\nimport {convertConditionToFunction} from './condition_evaluator.js';\nimport {Log} from '../utils/logging.js';\n\n/** A condition for a group. */\ninterface GroupCondition {\n  expression: string;\n  checkFn: (files: string[], groups: PullApproveGroup[]) => boolean;\n  matchedFiles: Set;\n  unverifiable: boolean;\n}\n\ninterface GroupReviewers {\n  users?: string[];\n  teams?: string[];\n}\n\n/** Result of testing files against the group. */\nexport interface PullApproveGroupResult {\n  groupName: string;\n  matchedConditions: GroupCondition[];\n  matchedCount: number;\n  unmatchedConditions: GroupCondition[];\n  unmatchedCount: number;\n  unverifiableConditions: GroupCondition[];\n}\n\n/** A PullApprove group to be able to test files against. */\nexport class PullApproveGroup {\n  /** List of conditions for the group. */\n  readonly conditions: GroupCondition[] = [];\n  /** List of reviewers for the group. */\n  readonly reviewers: GroupReviewers;\n\n  constructor(\n    public groupName: string,\n    config: PullApproveGroupConfig,\n    readonly precedingGroups: PullApproveGroup[] = [],\n  ) {\n    this._captureConditions(config);\n    this.reviewers = config.reviewers ?? {users: [], teams: []};\n  }\n\n  private _captureConditions(config: PullApproveGroupConfig) {\n    if (config.conditions) {\n      return config.conditions.forEach((condition) => {\n        const expression = condition.trim();\n\n        try {\n          this.conditions.push({\n            expression,\n            checkFn: convertConditionToFunction(expression),\n            matchedFiles: new Set(),\n            unverifiable: false,\n          });\n        } catch (e) {\n          Log.error(`Could not parse condition in group: ${this.groupName}`);\n          Log.error(` - ${expression}`);\n          Log.error(`Error:`, e);\n          process.exit(1);\n        }\n      });\n    }\n  }\n\n  /**\n   * Tests a provided file path to determine if it would be considered matched by\n   * the pull approve group's conditions.\n   */\n  testFile(filePath: string): boolean {\n    let allConditionsMet: boolean | null = null;\n\n    for (const condition of this.conditions) {\n      const {matchedFiles, checkFn, expression} = condition;\n      try {\n        const matchesFile = checkFn([filePath], this.precedingGroups);\n\n        if (matchesFile) {\n          matchedFiles.add(filePath);\n        }\n\n        allConditionsMet = (allConditionsMet ?? true) && matchesFile;\n      } catch (e) {\n        // If a group relies on the author state, we assume this group to never match\n        // or own a file. This is a strict assumption but prevents false-positives.\n        if (e instanceof PullApproveAuthorStateDependencyError) {\n          condition.unverifiable = true;\n          allConditionsMet = false;\n        }\n        // In the case of a condition that depends on the state of groups, we want to ignore\n        // that the verification can't accurately evaluate the condition and continue processing.\n        // Other types of errors fail the verification, as conditions should otherwise be able to\n        // execute without throwing.\n        else if (e instanceof PullApproveGroupStateDependencyError) {\n          condition.unverifiable = true;\n        } else {\n          const errMessage =\n            `Condition could not be evaluated: \\n\\n` +\n            `From the [${this.groupName}] group:\\n` +\n            ` - ${expression}`;\n          Log.error(errMessage, '\\n\\n', e, '\\n\\n');\n          process.exit(1);\n        }\n      }\n    }\n\n    // A file matches the group when all conditions are met. A group is not considered\n    // as matching when all conditions have been skipped.\n    return allConditionsMet === true;\n  }\n\n  /** Retrieve the results for the Group, all matched and unmatched conditions. */\n  getResults(): PullApproveGroupResult {\n    const matchedConditions = this.conditions.filter((c) => c.matchedFiles.size > 0);\n    const unmatchedConditions = this.conditions.filter(\n      (c) => c.matchedFiles.size === 0 && !c.unverifiable,\n    );\n    const unverifiableConditions = this.conditions.filter((c) => c.unverifiable);\n    return {\n      matchedConditions,\n      matchedCount: matchedConditions.length,\n      unmatchedConditions,\n      unmatchedCount: unmatchedConditions.length,\n      unverifiableConditions,\n      groupName: this.groupName,\n    };\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\nimport {verify} from './verify.js';\n\n/** Build the parser for the pullapprove commands. */\nexport function buildPullapproveParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .command('verify', 'Verify the pullapprove config', {}, () => verify());\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {getConfig} from '../../utils/config.js';\nimport {green, Log} from '../../utils/logging.js';\nimport {assertValidReleaseConfig, BuiltPackage} from '../config/index.js';\n\nimport {BuildWorker} from './index.js';\n\n/**\n * Type describing the JSON output of this command.\n *\n * @important When changing this, make sure the release action\n *   invocation is updated as well.\n */\nexport type ReleaseBuildJsonStdout = BuiltPackage[];\n\n/** Command line options for building a release. */\nexport interface ReleaseBuildOptions {\n  json: boolean;\n}\n\n/** Yargs command builder for configuring the `ng-dev release build` command. */\nfunction builder(argv: Argv): Argv {\n  return argv.option('json', {\n    type: 'boolean',\n    description: 'Whether the built packages should be printed to stdout as JSON.',\n    default: false,\n  });\n}\n\n/** Yargs command handler for building a release. */\nasync function handler(args: Arguments) {\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n  const {npmPackages} = config.release;\n  let builtPackages = await BuildWorker.invokeBuild();\n\n  // If package building failed, print an error and exit with an error code.\n  if (builtPackages === null) {\n    Log.error(`  ✘   Could not build release output. Please check output above.`);\n    process.exit(1);\n  }\n\n  // If no packages have been built, we assume that this is never correct\n  // and exit with an error code.\n  if (builtPackages.length === 0) {\n    Log.error(`  ✘   No release packages have been built. Please ensure that the`);\n    Log.error(`      build script is configured correctly in \".ng-dev\".`);\n    process.exit(1);\n  }\n\n  const missingPackages = npmPackages.filter(\n    (pkg) => !builtPackages!.find((b) => b.name === pkg.name),\n  );\n\n  // Check for configured release packages which have not been built. We want to\n  // error and exit if any configured package has not been built.\n  if (missingPackages.length > 0) {\n    Log.error(`  ✘   Release output missing for the following packages:`);\n    missingPackages.forEach((pkg) => Log.error(`      - ${pkg.name}`));\n    process.exit(1);\n  }\n\n  if (args.json) {\n    process.stdout.write(JSON.stringify(builtPackages, null, 2));\n  } else {\n    Log.info(green('  ✓   Built release packages.'));\n    builtPackages.forEach(({name}) => Log.info(green(`      - ${name}`)));\n  }\n}\n\n/** CLI command module for building release output. */\nexport const ReleaseBuildCommandModule: CommandModule<{}, ReleaseBuildOptions> = {\n  builder,\n  handler,\n  command: 'build',\n  describe: 'Builds the release output for the current branch.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {blue, bold, underline, Log} from '../../utils/logging.js';\nimport {ReleaseConfig} from '../config/index.js';\n\nimport {ActiveReleaseTrains} from './active-release-trains.js';\nimport {fetchLongTermSupportBranchesFromNpm} from './long-term-support.js';\nimport {isVersionPublishedToNpm} from './npm-registry.js';\n\n/**\n * Prints the active release trains to the console.\n * @params active Active release trains that should be printed.\n * @params config Release configuration used for querying NPM on published versions.\n */\nexport async function printActiveReleaseTrains(\n  active: ActiveReleaseTrains,\n  config: ReleaseConfig,\n): Promise {\n  const {releaseCandidate, next, latest, exceptionalMinor} = active;\n  const isNextPublishedToNpm = await isVersionPublishedToNpm(next.version, config);\n  const nextTrainType = next.isMajor ? 'major' : 'minor';\n  const ltsBranches = await fetchLongTermSupportBranchesFromNpm(config);\n\n  Log.info();\n  Log.info(blue('Current version branches in the project:'));\n\n  if (exceptionalMinor !== null) {\n    const version = exceptionalMinor.version;\n    const exceptionalMinorPublished = await isVersionPublishedToNpm(version, config);\n    const trainPhase = version.prerelease[0] === 'next' ? 'next' : 'release-candidate';\n    const minorLabel = underline('exceptional minor');\n\n    Log.info(\n      ` • ${bold(exceptionalMinor.branchName)} contains changes for an ${minorLabel} ` +\n        `that is currently in ${bold(trainPhase)} phase.`,\n    );\n    // An exceptional minor may not be published yet. e.g. when we branch off there\n    // will not be a release immediately.\n    if (exceptionalMinorPublished) {\n      Log.info(`   Most recent pre-release for this branch is \"${bold(`v${version}`)}\".`);\n    } else {\n      Log.info(`   Version is set to \"${bold(`v${version}`)}\", but has not been published yet.`);\n    }\n  }\n\n  // Print information for release trains in the feature-freeze/release-candidate phase.\n  if (releaseCandidate !== null) {\n    const rcVersion = releaseCandidate.version;\n    const rcTrainType = releaseCandidate.isMajor ? 'major' : 'minor';\n    const rcTrainPhase =\n      rcVersion.prerelease[0] === 'next' ? 'feature-freeze' : 'release-candidate';\n    Log.info(\n      ` • ${bold(releaseCandidate.branchName)} contains changes for an upcoming ` +\n        `${rcTrainType} that is currently in ${bold(rcTrainPhase)} phase.`,\n    );\n    Log.info(`   Most recent pre-release for this branch is \"${bold(`v${rcVersion}`)}\".`);\n  }\n\n  // Print information about the release-train in the latest phase. i.e. the patch branch.\n  Log.info(` • ${bold(latest.branchName)} contains changes for the most recent patch.`);\n  Log.info(`   Most recent patch version for this branch is \"${bold(`v${latest.version}`)}\".`);\n\n  // Print information about the release-train in the next phase.\n  Log.info(\n    ` • ${bold(next.branchName)} contains changes for a ${nextTrainType} ` +\n      `currently in active development.`,\n  );\n  // Note that there is a special case for versions in the next release-train. The version in\n  // the next branch is not always published to NPM. This can happen when we recently branched\n  // off for a feature-freeze release-train. More details are in the next pre-release action.\n  if (isNextPublishedToNpm) {\n    Log.info(\n      `   Most recent pre-release version for this branch is \"${bold(`v${next.version}`)}\".`,\n    );\n  } else {\n    Log.info(\n      `   Version is currently set to \"${bold(`v${next.version}`)}\", but has not been ` +\n        `published yet.`,\n    );\n  }\n\n  // If no release-train in release-candidate or feature-freeze phase is active,\n  // we print a message as last bullet point to make this clear.\n  if (releaseCandidate === null) {\n    Log.info(' • No release-candidate or feature-freeze branch currently active.');\n  }\n\n  Log.info();\n  Log.info(blue('Current active LTS version branches:'));\n\n  // Print all active LTS branches (each branch as own bullet point).\n  if (ltsBranches.active.length !== 0) {\n    for (const ltsBranch of ltsBranches.active) {\n      Log.info(` • ${bold(ltsBranch.name)} is currently in active long-term support phase.`);\n      Log.info(\n        `   Most recent patch version for this branch is \"${bold(`v${ltsBranch.version}`)}\".`,\n      );\n    }\n  }\n\n  Log.info();\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {assertValidReleaseConfig, NpmPackage} from '../config/index.js';\nimport {ActiveReleaseTrains} from '../versioning/active-release-trains.js';\nimport {printActiveReleaseTrains} from '../versioning/print-active-trains.js';\nimport {getNextBranchName, ReleaseRepoWithApi} from '../versioning/index.js';\nimport {getConfig} from '../../utils/config.js';\n\n/**\n * Type describing the JSON output of this command.\n *\n * @important When changing this, make sure the release action\n *   invocation is updated as well.\n */\nexport type ReleaseInfoJsonStdout = {npmPackages: NpmPackage[]};\n\n/** Command line options for printing release information. */\nexport interface ReleaseInfoOptions {\n  json: boolean;\n}\n\n/** Yargs command builder for the `ng-dev release info` command. */\nfunction builder(argv: Argv): Argv {\n  return argv.option('json', {\n    type: 'boolean',\n    description: 'Whether information should be written as JSON to stdout.',\n    default: false,\n  });\n}\n\n/** Yargs command handler for printing release information. */\nasync function handler(argv: Arguments) {\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n\n  // If JSON output is requested, print the information as JSON to stdout.\n  if (argv.json) {\n    process.stdout.write(JSON.stringify(config.release, null, 2));\n    return;\n  }\n\n  const git = await GitClient.get();\n  const nextBranchName = getNextBranchName(git.config.github);\n  const repo: ReleaseRepoWithApi = {api: git.github, ...git.remoteConfig, nextBranchName};\n  const releaseTrains = await ActiveReleaseTrains.fetch(repo);\n\n  // Print the active release trains.\n  await printActiveReleaseTrains(releaseTrains, config.release);\n}\n\n/** CLI command module for retrieving release information. */\nexport const ReleaseInfoCommandModule: CommandModule<{}, ReleaseInfoOptions> = {\n  builder,\n  handler,\n  command: 'info',\n  describe: 'Prints information for the current release state.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport semver from 'semver';\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {Log} from '../../utils/logging.js';\n\nimport {ReleaseNotes} from './release-notes.js';\nimport {GitClient} from '../../utils/git/git-client.js';\n\n/** Command line options for building a release. */\nexport interface Options {\n  from: string;\n  to: string;\n  prependToChangelog: boolean;\n  releaseVersion: semver.SemVer;\n  type: 'github-release' | 'changelog';\n}\n\n/** Yargs command builder for configuring the `ng-dev release build` command. */\nfunction builder(argv: Argv): Argv {\n  return argv\n    .option('releaseVersion', {\n      type: 'string',\n      default: '0.0.0',\n      coerce: (version: string) => new semver.SemVer(version),\n    })\n    .option('from', {\n      type: 'string',\n      description: 'The git tag or ref to start the changelog entry from',\n      demandOption: true,\n    })\n    .option('to', {\n      type: 'string',\n      description: 'The git tag or ref to end the changelog entry with',\n      default: 'HEAD',\n    })\n    .option('type', {\n      type: 'string',\n      description: 'The type of release notes to create',\n      choices: ['github-release', 'changelog'] as const,\n      default: 'changelog' as const,\n    })\n    .option('prependToChangelog', {\n      type: 'boolean',\n      default: false,\n      description: 'Whether to update the changelog with the newly created entry',\n    });\n}\n\n/** Yargs command handler for generating release notes. */\nasync function handler({releaseVersion, from, to, prependToChangelog, type}: Arguments) {\n  /** Git client to use for generating the release notes. */\n  const git = await GitClient.get();\n  /** The ReleaseNotes instance to generate release notes. */\n  const releaseNotes = await ReleaseNotes.forRange(git, releaseVersion, from, to);\n\n  if (prependToChangelog) {\n    await releaseNotes.prependEntryToChangelogFile();\n    Log.info(`Added release notes for \"${releaseVersion}\" to the changelog`);\n    return;\n  }\n\n  /** The requested release notes entry. */\n  const releaseNotesEntry =\n    type === 'changelog'\n      ? await releaseNotes.getChangelogEntry()\n      : await releaseNotes.getGithubReleaseEntry();\n\n  process.stdout.write(releaseNotesEntry);\n}\n\n/** CLI command module for generating release notes. */\nexport const ReleaseNotesCommandModule: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'notes',\n  describe: 'Generate release notes',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {render} from 'ejs';\nimport semver from 'semver';\nimport {CommitFromGitLog} from '../../commit-message/parse.js';\n\nimport {formatFiles} from '../../format/format.js';\nimport {GitClient} from '../../utils/git/git-client.js';\nimport {assertValidReleaseConfig, ReleaseConfig} from '../config/index.js';\nimport {RenderContext} from './context.js';\n\nimport changelogTemplate from './templates/changelog.js';\nimport githubReleaseTemplate from './templates/github-release.js';\nimport {getCommitsForRangeWithDeduping} from './commits/get-commits-in-range.js';\nimport {getConfig, NgDevConfig} from '../../utils/config.js';\nimport {assertValidFormatConfig} from '../../format/config.js';\nimport {Changelog} from './changelog.js';\nimport {Prompt} from '../../utils/prompt.js';\n\n/** Workspace-relative path for the changelog file. */\nexport const workspaceRelativeChangelogPath = 'CHANGELOG.md';\n\n/** Release note generation. */\nexport class ReleaseNotes {\n  static async forRange(git: GitClient, version: semver.SemVer, baseRef: string, headRef: string) {\n    const config = await getConfig([assertValidReleaseConfig]);\n    const commits = getCommitsForRangeWithDeduping(git, baseRef, headRef);\n    return new ReleaseNotes(config, version, commits, git);\n  }\n\n  /** The RenderContext to be used during rendering. */\n  private renderContext: RenderContext | undefined;\n\n  /** The title to use for the release. */\n  private title: string | false | undefined;\n\n  protected constructor(\n    public config: NgDevConfig<{release: ReleaseConfig}>,\n    public version: semver.SemVer,\n    private commits: CommitFromGitLog[],\n    private git: GitClient,\n  ) {}\n\n  /** Retrieve the release note generated for a Github Release. */\n  async getGithubReleaseEntry(): Promise {\n    return render(githubReleaseTemplate, await this.generateRenderContext(), {\n      rmWhitespace: true,\n    });\n  }\n\n  /** Retrieve the release note generated for a CHANGELOG entry. */\n  async getChangelogEntry() {\n    return render(changelogTemplate, await this.generateRenderContext(), {rmWhitespace: true});\n  }\n\n  /**\n   * Prepend generated release note to the CHANGELOG.md file in the base directory of the repository\n   * provided by the GitClient. Removes entries for related prerelease entries as appropriate.\n   */\n  async prependEntryToChangelogFile() {\n    // When the version for the entry is a non-prelease (i.e. 1.0.0 rather than 1.0.0-next.1), the\n    // pre-release entries for the version should be removed from the changelog.\n    if (semver.prerelease(this.version) === null) {\n      Changelog.removePrereleaseEntriesForVersion(this.git, this.version);\n    }\n    Changelog.prependEntryToChangelogFile(this.git, await this.getChangelogEntry());\n\n    // TODO(josephperrott): Remove file formatting calls.\n    //   Upon reaching a standardized formatting for markdown files, rather than calling a formatter\n    //   for all creation of changelogs, we instead will confirm in our testing that the new changes\n    //   created for changelogs meet on standardized markdown formats via unit testing.\n    try {\n      assertValidFormatConfig(await this.config);\n      await formatFiles([Changelog.getChangelogFilePaths(this.git).filePath]);\n    } catch {\n      // If the formatting is either unavailable or fails, continue on with the unformatted result.\n    }\n  }\n\n  /** Retrieve the number of commits included in the release notes after filtering and deduping. */\n  async getCommitCountInReleaseNotes() {\n    const context = await this.generateRenderContext();\n    return context.commits.filter(context.includeInReleaseNotes()).length;\n  }\n\n  /**\n   * Gets the URL fragment for the release notes. The URL fragment identifier\n   * can be used to point to a specific changelog entry through an URL.\n   */\n  async getUrlFragmentForRelease() {\n    return (await this.generateRenderContext()).urlFragmentForRelease;\n  }\n\n  /**\n   * Prompt the user for a title for the release, if the project's configuration is defined to use a\n   * title.\n   */\n  async promptForReleaseTitle() {\n    const notesConfig = await this._getNotesConfig();\n\n    if (this.title === undefined) {\n      if (notesConfig.useReleaseTitle) {\n        this.title = await Prompt.input({message: 'Please provide a title for the release:'});\n      } else {\n        this.title = false;\n      }\n    }\n    return this.title;\n  }\n\n  /** Build the render context data object for constructing the RenderContext instance. */\n  private async generateRenderContext(): Promise {\n    const notesConfig = await this._getNotesConfig();\n\n    if (!this.renderContext) {\n      this.renderContext = new RenderContext({\n        commits: this.commits,\n        github: this.git.remoteConfig,\n        version: this.version.format(),\n        groupOrder: notesConfig.groupOrder,\n        hiddenScopes: notesConfig.hiddenScopes,\n        categorizeCommit: notesConfig.categorizeCommit,\n        title: await this.promptForReleaseTitle(),\n      });\n    }\n    return this.renderContext;\n  }\n\n  /** Gets the configuration for the release notes. */\n  private async _getNotesConfig() {\n    return (await this.config).release.releaseNotes ?? {};\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {COMMIT_TYPES, ReleaseNotesLevel} from '../../commit-message/config.js';\nimport {CommitFromGitLog} from '../../commit-message/parse.js';\nimport {GithubConfig} from '../../utils/config.js';\nimport {ReleaseNotesConfig} from '../config/index.js';\nimport {compareString} from '../../utils/locale.js';\n\n/** List of types to be included in the release notes. */\nconst typesToIncludeInReleaseNotes = Object.values(COMMIT_TYPES)\n  .filter((type) => type.releaseNotesLevel === ReleaseNotesLevel.Visible)\n  .map((type) => type.name);\n\n/** List of commit authors which are bots. */\nconst botsAuthorNames = [\n  'dependabot[bot]',\n  'Renovate Bot',\n  'angular-robot',\n  'angular-robot[bot]',\n  'Angular Robot',\n];\n\n/** Data used for context during rendering. */\nexport interface RenderContextData {\n  title: string | false;\n  groupOrder: ReleaseNotesConfig['groupOrder'];\n  hiddenScopes: ReleaseNotesConfig['hiddenScopes'];\n  categorizeCommit: ReleaseNotesConfig['categorizeCommit'];\n  commits: CommitFromGitLog[];\n  version: string;\n  github: GithubConfig;\n  date?: Date;\n}\n\n/** Interface describing an categorized commit. */\nexport interface CategorizedCommit extends CommitFromGitLog {\n  groupName: string;\n  description: string;\n}\n\n/** Context class used for rendering release notes. */\nexport class RenderContext {\n  /** An array of group names in sort order if defined. */\n  private readonly groupOrder = this.data.groupOrder || [];\n  /** An array of scopes to hide from the release entry output. */\n  private readonly hiddenScopes = this.data.hiddenScopes || [];\n  /** The title of the release, or `false` if no title should be used. */\n  readonly title = this.data.title;\n  /** The version of the release. */\n  readonly version = this.data.version;\n  /** The date stamp string for use in the release notes entry. */\n  readonly dateStamp = buildDateStamp(this.data.date);\n  /** URL fragment that is used to create an anchor for the release. */\n  readonly urlFragmentForRelease = this.data.version;\n  /** List of categorized commits in the release period. */\n  readonly commits = this._categorizeCommits(this.data.commits);\n\n  constructor(private readonly data: RenderContextData) {}\n\n  /** Gets a list of categorized commits from all commits in the release period. */\n  _categorizeCommits(commits: CommitFromGitLog[]): CategorizedCommit[] {\n    return commits.map((commit) => {\n      const {description, groupName} = this.data.categorizeCommit?.(commit) ?? {};\n      return {\n        groupName: groupName ?? commit.scope,\n        description: description ?? commit.subject,\n        ...commit,\n      };\n    });\n  }\n\n  /**\n   * Comparator used for sorting commits within a release notes group. Commits\n   * are sorted alphabetically based on their type. Commits having the same type\n   * will be sorted alphabetically based on their determined description\n   */\n  private _commitsWithinGroupComparator = (a: CategorizedCommit, b: CategorizedCommit): number => {\n    const typeCompareOrder = compareString(a.type, b.type);\n    if (typeCompareOrder === 0) {\n      return compareString(a.description, b.description);\n    }\n    return typeCompareOrder;\n  };\n\n  /**\n   * Organizes and sorts the commits into groups of commits.\n   *\n   * Groups are sorted either by default `Array.sort` order, or using the provided group order from\n   * the configuration. Commits are order in the same order within each groups commit list as they\n   * appear in the provided list of commits.\n   * */\n  asCommitGroups(commits: CategorizedCommit[]) {\n    /** The discovered groups to organize into. */\n    const groups = new Map();\n\n    // Place each commit in the list into its group.\n    commits.forEach((commit) => {\n      const key = commit.groupName;\n      const groupCommits = groups.get(key) || [];\n      groups.set(key, groupCommits);\n      groupCommits.push(commit);\n    });\n\n    /**\n     * List of discovered commit groups which are sorted in alphanumeric order\n     * based on the group title.\n     */\n    const commitGroups = Array.from(groups.entries())\n      .map(([title, groupCommits]) => ({\n        title,\n        commits: groupCommits.sort(this._commitsWithinGroupComparator),\n      }))\n      .sort((a, b) => compareString(a.title, b.title));\n\n    // If the configuration provides a sorting order, updated the sorted list of group keys to\n    // satisfy the order of the groups provided in the list with any groups not found in the list at\n    // the end of the sorted list.\n    if (this.groupOrder.length) {\n      for (const groupTitle of this.groupOrder.reverse()) {\n        const currentIdx = commitGroups.findIndex((k) => k.title === groupTitle);\n        if (currentIdx !== -1) {\n          const removedGroups = commitGroups.splice(currentIdx, 1);\n          commitGroups.splice(0, 0, ...removedGroups);\n        }\n      }\n    }\n    return commitGroups;\n  }\n\n  /** Whether the specified commit contains breaking changes. */\n  hasBreakingChanges(commit: CategorizedCommit) {\n    return commit.breakingChanges.length !== 0;\n  }\n\n  /** Whether the specified commit contains deprecations. */\n  hasDeprecations(commit: CategorizedCommit) {\n    return commit.deprecations.length !== 0;\n  }\n\n  /**\n   * A filter function for filtering a list of commits to only include commits which\n   * should appear in release notes.\n   */\n  includeInReleaseNotes() {\n    return (commit: CategorizedCommit) => {\n      if (this.hiddenScopes.includes(commit.scope)) {\n        return false;\n      }\n\n      // Commits which contain breaking changes or deprecations are always included\n      // in release notes. The breaking change or deprecations will already be listed\n      // in a dedicated section but it is still valuable to include the actual commit.\n      if (this.hasBreakingChanges(commit) || this.hasDeprecations(commit)) {\n        return true;\n      }\n\n      return typesToIncludeInReleaseNotes.includes(commit.type);\n    };\n  }\n\n  /**\n   * A filter function for filtering a list of commits to only include commits which contain a\n   * unique value for the provided field across all commits in the list.\n   */\n  unique(field: keyof CategorizedCommit) {\n    const set = new Set();\n    return (commit: CategorizedCommit) => {\n      const include = !set.has(commit[field]);\n      set.add(commit[field]);\n      return include;\n    };\n  }\n\n  /**\n   * Convert a commit object to a Markdown link.\n   */\n  commitToLink(commit: CategorizedCommit): string {\n    const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/commit/${commit.hash}`;\n    return `[${commit.shortHash}](${url})`;\n  }\n\n  /**\n   * Convert a pull request number to a Markdown link.\n   */\n  pullRequestToLink(prNumber: number): string {\n    const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/pull/${prNumber}`;\n    return `[#${prNumber}](${url})`;\n  }\n\n  /**\n   * Transform a given string by replacing any pull request references with their\n   * equivalent markdown links.\n   *\n   * This is useful for the changelog output. Github transforms pull request references\n   * automatically in release note entries, issues and pull requests, but not for plain\n   * markdown files (like the changelog file).\n   */\n  convertPullRequestReferencesToLinks(content: string): string {\n    return content.replace(/#(\\d+)/g, (_, g) => this.pullRequestToLink(Number(g)));\n  }\n\n  /**\n   * Bulletize a paragraph.\n   */\n  bulletizeText(text: string): string {\n    return '- ' + text.replace(/\\n/g, '\\n  ');\n  }\n\n  /**\n   * Convert a commit object to a Markdown linked badged.\n   */\n  commitToBadge(commit: CategorizedCommit): string {\n    let color = 'yellow';\n    switch (commit.type) {\n      case 'fix':\n        color = 'green';\n        break;\n      case 'feat':\n        color = 'blue';\n        break;\n      case 'perf':\n        color = 'orange';\n        break;\n    }\n    const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/commit/${commit.hash}`;\n    const imgSrc = `https://img.shields.io/badge/${commit.shortHash}-${commit.type}-${color}`;\n    return `[![${commit.type} - ${commit.shortHash}](${imgSrc})](${url})`;\n  }\n}\n\n/**\n * Builds a date stamp for stamping in release notes.\n *\n * Uses the current date, or a provided date in the format of YYYY-MM-DD, i.e. 1970-11-05.\n */\nexport function buildDateStamp(date = new Date()) {\n  const year = `${date.getFullYear()}`;\n  const month = `${date.getMonth() + 1}`.padStart(2, '0');\n  const day = `${date.getDate()}`.padStart(2, '0');\n\n  return [year, month, day].join('-');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport default `\n\">\n# <%- version %><% if (title) { %> \"<%- title %>\"<% } %> (<%- dateStamp %>)\n\n<%_\nconst breakingChanges = commits.filter(hasBreakingChanges);\nif (breakingChanges.length) {\n_%>\n## Breaking Changes\n\n<%_\n  for (const group of asCommitGroups(breakingChanges)) {\n_%>\n### <%- group.title %>\n<%_\n    for (const commit of group.commits) {\n      for (const breakingChange of commit.breakingChanges) {\n_%>\n<%- bulletizeText(breakingChange.text) %>\n<%_\n      }\n    }\n  }\n}\n_%>\n\n<%_\nconst deprecations = commits.filter(hasDeprecations);\nif (deprecations.length) {\n_%>\n## Deprecations\n<%_\n  for (const group of asCommitGroups(deprecations)) {\n_%>\n### <%- group.title %>\n<%_\n    for (const commit of group.commits) {\n      for (const deprecation of commit.deprecations) {\n_%>\n<%- bulletizeText(deprecation.text) %>\n<%_\n      }\n    }\n  }\n}\n_%>\n\n<%_\nconst commitsInChangelog = commits.filter(includeInReleaseNotes());\nfor (const group of asCommitGroups(commitsInChangelog)) {\n_%>\n\n### <%- group.title %>\n| Commit | Type | Description |\n| -- | -- | -- |\n<%_\n  for (const commit of group.commits) {\n    const descriptionWithMarkdownLinks = convertPullRequestReferencesToLinks(\n      commit.description);\n_%>\n| <%- commitToLink(commit) %> | <%- commit.type %> | <%- descriptionWithMarkdownLinks %> |\n<%_\n  }\n}\n_%>\n\n`;\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport default `\n\">\n# <%- version %><% if (title) { %> \"<%- title %>\"<% } %> (<%- dateStamp %>)\n\n<%_\nconst commitsInChangelog = commits.filter(includeInReleaseNotes());\nfor (const group of asCommitGroups(commitsInChangelog)) {\n_%>\n\n### <%- group.title %>\n| Commit | Description |\n| -- | -- |\n<%_\n  for (const commit of group.commits) {\n_%>\n| <%- commitToBadge(commit) %> | <%- commit.description %> |\n<%_\n  }\n}\n_%>\n\n<%_\nconst breakingChanges = commits.filter(hasBreakingChanges);\nif (breakingChanges.length) {\n_%>\n## Breaking Changes\n\n<%_\n  for (const group of asCommitGroups(breakingChanges)) {\n_%>\n### <%- group.title %>\n<%_\n    for (const commit of group.commits) {\n      for (const breakingChange of commit.breakingChanges) {\n_%>\n<%- bulletizeText(breakingChange.text) %>\n<%_\n      }\n    }\n  }\n}\n_%>\n\n<%_\nconst deprecations = commits.filter(hasDeprecations);\nif (deprecations.length) {\n_%>\n## Deprecations\n<%_\n  for (const group of asCommitGroups(deprecations)) {\n_%>\n### <%- group.title %>\n<%_\n    for (const commit of group.commits) {\n      for (const deprecation of commit.deprecations) {\n_%>\n<%- bulletizeText(deprecation.text) %>\n<%_\n      }\n    }\n  }\n}\n_%>\n`;\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Commit} from '../../../commit-message/parse.js';\n\n/**\n * Fields from a `Commit` to incorporate when building up an unique\n * id for a commit message.\n *\n * Note: The header incorporates the commit type, scope and message\n * but lacks information for fixup, revert or squash commits..\n */\nconst fieldsToIncorporateForId: (keyof Commit)[] = ['header', 'isFixup', 'isRevert', 'isSquash'];\n\n/**\n * Computes an unique id for the given commit using its commit message.\n * This can be helpful for comparisons, if commits differ in SHAs due\n * to cherry-picking.\n */\nexport function computeUniqueIdFromCommitMessage(commit: Commit): string {\n  // Join all resolved fields with a special character to build up an id.\n  return fieldsToIncorporateForId.map((f) => commit[f]).join('ɵɵ');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GitClient} from '../../../utils/git/git-client.js';\nimport {\n  CommitFromGitLog,\n  gitLogFormatForParsing,\n  parseCommitFromGitLog,\n} from '../../../commit-message/parse.js';\nimport {computeUniqueIdFromCommitMessage} from './unique-commit-id.js';\n\n/**\n * Gets all commits the head branch contains, but the base branch does not include.\n * This follows the same semantics as Git's double-dot revision range.\n *\n * i.e. `..` revision range as per Git.\n * https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection.\n *\n * Branches in the Angular organization are diverging quickly due to multiple factors\n * concerning the versioning and merging. i.e. Commits are cherry-picked into branches,\n * resulting in different SHAs for each branch. Additionally, branches diverge quickly\n * because changes can be made only for specific branches (e.g. a master-only change).\n *\n * In order to allow for comparisons that follow similar semantics as Git's double-dot\n * revision range syntax, the logic re-implementing the semantics need to account for\n * the mentioned semi-diverged branches. We achieve this by excluding commits in the\n * head branch which have a similarly-named commit in the base branch. We cannot rely on\n * SHAs for determining common commits between the two branches (as explained above).\n *\n * More details can be found in the `get-commits-in-range.png` file which illustrates a\n * scenario where commits from the patch branch need to be excluded from the main branch.\n */\nexport function getCommitsForRangeWithDeduping(\n  client: GitClient,\n  baseRef: string,\n  headRef: string,\n): CommitFromGitLog[] {\n  const commits: CommitFromGitLog[] = [];\n  const commitsForHead = fetchCommitsForRevisionRange(client, `${baseRef}..${headRef}`);\n  const commitsForBase = fetchCommitsForRevisionRange(client, `${headRef}..${baseRef}`);\n\n  // Map that keeps track of commits within the base branch. Commits are\n  // stored with an unique id based on the commit message. If a similarly-named\n  // commit appears multiple times, the value number will reflect that.\n  const knownCommitsOnlyInBase = new Map();\n\n  for (const commit of commitsForBase) {\n    const id = computeUniqueIdFromCommitMessage(commit);\n    const numSimilarCommits = knownCommitsOnlyInBase.get(id) ?? 0;\n    knownCommitsOnlyInBase.set(id, numSimilarCommits + 1);\n  }\n\n  for (const commit of commitsForHead) {\n    const id = computeUniqueIdFromCommitMessage(commit);\n    const numSimilarCommits = knownCommitsOnlyInBase.get(id) ?? 0;\n\n    // If there is a similar commit in the base branch, the current commit in the head branch\n    // needs to be skipped. We keep track of the number of similar commits so that we do not\n    // accidentally \"dedupe\" a commit. e.g. consider a case where commit `X` lands in the\n    // patch branch and next branch. Then a similar similarly named commits lands only in the\n    // next branch. We would not want to omit that one as it is not part of the patch branch.\n    if (numSimilarCommits > 0) {\n      knownCommitsOnlyInBase.set(id, numSimilarCommits - 1);\n      continue;\n    }\n\n    commits.push(commit);\n  }\n  return commits;\n}\n\n/** Fetches commits for the given revision range using `git log`. */\nexport function fetchCommitsForRevisionRange(\n  client: GitClient,\n  revisionRange: string,\n): CommitFromGitLog[] {\n  const splitDelimiter = '-------------ɵɵ------------';\n  const output = client.run([\n    'log',\n    `--format=${gitLogFormatForParsing}${splitDelimiter}`,\n    revisionRange,\n  ]);\n\n  return output.stdout\n    .split(splitDelimiter)\n    .filter((entry) => !!entry.trim())\n    .map(santizeCommitMessage)\n    .map((entry) => parseCommitFromGitLog(Buffer.from(entry, 'utf-8')));\n}\n\n/**\n * Santized a raw Github message to avoid unintended results in github rendered contexts.\n *\n * Currently sanitization does:\n *  - Removes unexpected references to users\n */\nfunction santizeCommitMessage(content: string): string {\n  return content.replace(/ (@[A-z0-9]+) /g, ' `$1` ');\n}\n", "import {existsSync, readFileSync, writeFileSync} from 'fs';\nimport {join} from 'path';\nimport semver from 'semver';\nimport {GitClient} from '../../utils/git/git-client.js';\n\n/** Project-relative path for the changelog file. */\nconst changelogPath = 'CHANGELOG.md';\n\n/** Project-relative path for the changelog archive file. */\nconst changelogArchivePath = 'CHANGELOG_ARCHIVE.md';\n\n/** A marker used to split a CHANGELOG.md file into individual entries. */\nexport const splitMarker = '';\n\n/**\n * A string to use between each changelog entry when joining them together.\n *\n * Since all every changelog entry's content is trimmed, when joining back together, two new lines\n * must be placed around the splitMarker to create a one line buffer around the comment in the\n * markdown.\n * i.e.\n * \n *\n * \n *\n * \n */\nconst joinMarker = `\\n\\n${splitMarker}\\n\\n`;\n\n/** A RegExp matcher to extract the version of a changelog entry from the entry content. */\nconst versionAnchorMatcher = new RegExp(``);\n\n/** An individual changelog entry. */\ninterface ChangelogEntry {\n  content: string;\n  version: semver.SemVer;\n}\n\nexport class Changelog {\n  /** Prepend a changelog entry to the current changelog file. */\n  static prependEntryToChangelogFile(git: GitClient, entry: string) {\n    const changelog = new this(git);\n    changelog.prependEntryToChangelogFile(entry);\n  }\n\n  /**\n   * Move all changelog entries from the CHANGELOG.md file for versions prior to the provided\n   * version to the changelog archive.\n   *\n   * Versions should be used to determine which entries are moved to archive as versions are the\n   * most accurate piece of context found within a changelog entry to determine its relationship to\n   * other changelog entries.  This allows for example, moving all changelog entries out of the\n   * main changelog when a version moves out of support.\n   */\n  static moveEntriesPriorToVersionToArchive(git: GitClient, version: semver.SemVer) {\n    const changelog = new this(git);\n    changelog.moveEntriesPriorToVersionToArchive(version);\n  }\n\n  /**\n   * Remove all changelog entries from the CHANGELOG.md file for versions which are prereleases\n   * for the provided version. This is expected to be done on each major and minor release to remove\n   * the changelog entries which will be made redundant by the first major/minor changelog for a\n   * version.\n   */\n  static removePrereleaseEntriesForVersion(git: GitClient, version: semver.SemVer) {\n    const changelog = new this(git);\n    changelog.removePrereleaseEntriesForVersion(version);\n  }\n\n  // TODO(josephperrott): Remove this after it is unused.\n  /** Retrieve the file paths for the changelog files. */\n  static getChangelogFilePaths(git: GitClient) {\n    return new this(git);\n  }\n\n  /** The absolute path to the changelog file. */\n  readonly filePath = join(this.git.baseDir, changelogPath);\n  /** The absolute path to the changelog archive file. */\n  readonly archiveFilePath = join(this.git.baseDir, changelogArchivePath);\n  /**\n   * The changelog entries in the CHANGELOG.md file.\n   * Delays reading the CHANGELOG.md file until it is actually used.\n   */\n  private get entries() {\n    if (this._entries === undefined) {\n      return (this._entries = this.getEntriesFor(this.filePath));\n    }\n    return this._entries;\n  }\n  private _entries: undefined | ChangelogEntry[] = undefined;\n  /**\n   * The changelog entries in the CHANGELOG_ARCHIVE.md file.\n   * Delays reading the CHANGELOG_ARCHIVE.md file until it is actually used.\n   */\n  private get archiveEntries() {\n    if (this._archiveEntries === undefined) {\n      return (this._archiveEntries = this.getEntriesFor(this.archiveFilePath));\n    }\n    return this._archiveEntries;\n  }\n  private _archiveEntries: undefined | ChangelogEntry[] = undefined;\n\n  private constructor(private git: GitClient) {}\n\n  /** Prepend a changelog entry to the changelog. */\n  private prependEntryToChangelogFile(entry: string) {\n    this.entries.unshift(parseChangelogEntry(entry));\n    this.writeToChangelogFile();\n  }\n\n  /**\n   * Remove all changelog entries from the CHANGELOG.md file for versions which are prereleases\n   * for the provided version. This is expected to be done on each major and minor release to remove\n   * the changelog entries which will be made redundant by the first major/minor changelog for a\n   * version.\n   */\n  private removePrereleaseEntriesForVersion(version: semver.SemVer) {\n    this._entries = this.entries.filter((entry: ChangelogEntry) => {\n      // For entries which are a prerelease, ensure that at least one segment of the version is\n      // divergent from the version we are checking against.\n      if (entry.version.prerelease.length !== 0) {\n        return (\n          version.major !== entry.version.major ||\n          version.minor !== entry.version.minor ||\n          version.patch !== entry.version.patch\n        );\n      }\n      return true;\n    });\n    this.writeToChangelogFile();\n  }\n\n  /**\n   * Move all changelog entries from the CHANGELOG.md file for versions prior to the provided\n   * version to the changelog archive.\n   *\n   * Versions should be used to determine which entries are moved to archive as versions are the\n   * most accurate piece of context found within a changelog entry to determine its relationship to\n   * other changelog entries.  This allows for example, moving all changelog entries out of the\n   * main changelog when a version moves out of support.\n   */\n  private moveEntriesPriorToVersionToArchive(version: semver.SemVer) {\n    [...this.entries].reverse().forEach((entry: ChangelogEntry) => {\n      if (semver.lt(entry.version, version)) {\n        this.archiveEntries.unshift(entry);\n        this.entries.splice(this.entries.indexOf(entry), 1);\n      }\n    });\n\n    this.writeToChangelogFile();\n    if (this.archiveEntries.length) {\n      this.writeToChangelogArchiveFile();\n    }\n  }\n\n  /** Update the changelog archive file with the known changelog archive entries. */\n  private writeToChangelogArchiveFile(): void {\n    const changelogArchive = this.archiveEntries.map((entry) => entry.content).join(joinMarker);\n    writeFileSync(this.archiveFilePath, changelogArchive);\n  }\n\n  /** Update the changelog file with the known changelog entries. */\n  private writeToChangelogFile(): void {\n    const changelog = this.entries.map((entry) => entry.content).join(joinMarker);\n    writeFileSync(this.filePath, changelog);\n  }\n\n  /**\n   * Retrieve the changelog entries for the provide changelog path, if the file does not exist an\n   * empty array is returned.\n   */\n  private getEntriesFor(path: string): ChangelogEntry[] {\n    if (!existsSync(path)) {\n      return [];\n    }\n\n    return (\n      readFileSync(path, {encoding: 'utf8'})\n        // Use the versionMarker as the separator for .split().\n        .split(splitMarker)\n        // If the `split()` method finds the separator at the beginning or end of a string, it\n        // includes an empty string at the respective locaiton, so we filter to remove all of these\n        // potential empty strings.\n        .filter((entry) => entry.trim().length !== 0)\n        // Create a ChangelogEntry for each of the string entry.\n        .map(parseChangelogEntry)\n    );\n  }\n}\n\n/** Parse the provided string into a ChangelogEntry object. */\nfunction parseChangelogEntry(content: string): ChangelogEntry {\n  const versionMatcherResult = versionAnchorMatcher.exec(content);\n  if (versionMatcherResult === null) {\n    throw Error(`Unable to determine version for changelog entry: ${content}`);\n  }\n  const version = semver.parse(versionMatcherResult[1]);\n\n  if (version === null) {\n    throw Error(\n      `Unable to determine version for changelog entry, with tag: ${versionMatcherResult[1]}`,\n    );\n  }\n\n  return {\n    content: content.trim(),\n    version,\n  };\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport semver from 'semver';\nimport {CommandModule} from 'yargs';\n\nimport {assertPassingReleasePrechecks} from './index.js';\nimport {getConfig} from '../../utils/config.js';\nimport {readBufferFromStdinUntilClosed} from '../../utils/read-stdin-until-closed.js';\nimport {assertValidReleaseConfig, BuiltPackageWithInfo} from '../config/index.js';\nimport {Log} from '../../utils/logging.js';\n\n/**\n * Type describing the JSON stdin input of this command. The release tool will\n * deliver this information through `stdin` because command line arguments are\n * less reliable and have max-length limits.\n *\n * @important When changing this, make sure the release action\n *   invocation is updated as well.\n */\nexport interface ReleasePrecheckJsonStdin {\n  /** Package output that has been built and can be checked. */\n  builtPackagesWithInfo: BuiltPackageWithInfo[];\n  /** New version that is intended to be released. */\n  newVersion: string;\n}\n\nasync function handler() {\n  // Note: Stdin input is buffered until we start reading from it. This allows us to\n  // asynchronously start reading the `stdin` input. With the default `readableFlowing`\n  // value of `null`, data is buffered. See: https://nodejs.org/api/stream.html#three-states.\n  const stdin = await readBufferFromStdinUntilClosed();\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n\n  // Parse the JSON metadata read from `stdin`.\n  const {builtPackagesWithInfo, newVersion: newVersionRaw} = JSON.parse(\n    stdin.toString('utf8'),\n  ) as ReleasePrecheckJsonStdin;\n\n  if (!Array.isArray(builtPackagesWithInfo)) {\n    Log.error(`  ✘   Release pre-checks failed. Invalid list of built packages was provided.`);\n    process.exitCode = 1;\n    return;\n  }\n\n  const newVersion = semver.parse(newVersionRaw);\n  if (newVersion === null) {\n    Log.error(`  ✘   Release pre-checks failed. Invalid new version was provided.`);\n    process.exitCode = 1;\n    return;\n  }\n\n  if (!(await assertPassingReleasePrechecks(config.release, newVersion, builtPackagesWithInfo))) {\n    process.exitCode = 1;\n  }\n}\n\n/** CLI command module for running checks before releasing. */\nexport const ReleasePrecheckCommandModule: CommandModule<{}, {}> = {\n  handler,\n  command: 'precheck',\n  describe: false,\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Unique error class for failures when reading from the stdin. */\nexport class ReadBufferFromStdinError extends Error {}\n\n/**\n * Reads a `Buffer` from `stdin` until the stream is closed.\n *\n * @returns a Promise resolving with the `Buffer`. Rejects with `ReadBufferFromStdinError`\n *   on unexpected read errors.\n */\nexport function readBufferFromStdinUntilClosed(\n  input: NodeJS.ReadStream = process.stdin,\n): Promise {\n  return new Promise((resolve, reject) => {\n    const data: Buffer[] = [];\n\n    input.on('data', (chunk) => data.push(chunk));\n    input.on('end', () => resolve(Buffer.concat(data)));\n    input.on('error', () => reject(new ReadBufferFromStdinError()));\n    input.on('timeout', () => reject(new ReadBufferFromStdinError('Unexpected timeout')));\n  });\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ChildProcess} from '../../utils/child-process.js';\n\nimport {NpmDistTag} from './npm-registry.js';\n\nexport abstract class NpmCommand {\n  /**\n   * Runs NPM publish within a specified package directory.\n   * @throws With the process log output if the publish failed.\n   */\n  static async publish(packagePath: string, distTag: NpmDistTag, registryUrl: string | undefined) {\n    const args = ['publish', '--access', 'public', '--tag', distTag];\n    // If a custom registry URL has been specified, add the `--registry` flag.\n    if (registryUrl !== undefined) {\n      args.push('--registry', registryUrl);\n    }\n    await ChildProcess.spawn('npm', args, {cwd: packagePath, mode: 'silent'});\n  }\n\n  /**\n   * Sets the NPM tag to the specified version for the given package.\n   * @throws With the process log output if the tagging failed.\n   */\n  static async setDistTagForPackage(\n    packageName: string,\n    distTag: string,\n    version: semver.SemVer,\n    registryUrl: string | undefined,\n  ) {\n    const args = ['dist-tag', 'add', `${packageName}@${version}`, distTag];\n    // If a custom registry URL has been specified, add the `--registry` flag.\n    if (registryUrl !== undefined) {\n      args.push('--registry', registryUrl);\n    }\n    await ChildProcess.spawn('npm', args, {mode: 'silent'});\n  }\n\n  /**\n   * Deletes the specified NPM tag for the given package.\n   * @throws With the process log output if the removal failed.\n   */\n  static async deleteDistTagForPackage(\n    packageName: string,\n    distTag: string,\n    registryUrl: string | undefined,\n  ) {\n    const args = ['dist-tag', 'rm', packageName, distTag];\n    // If a custom registry URL has been specified, add the `--registry` flag.\n    if (registryUrl !== undefined) {\n      args.push('--registry', registryUrl);\n    }\n    await ChildProcess.spawn('npm', args, {mode: 'silent'});\n  }\n\n  /**\n   * Checks whether the user is currently logged into NPM.\n   * @returns Whether the user is currently logged into NPM.\n   */\n  static async checkIsLoggedIn(registryUrl: string | undefined): Promise {\n    const args = ['whoami'];\n    // If a custom registry URL has been specified, add the `--registry` flag.\n    if (registryUrl !== undefined) {\n      args.push('--registry', registryUrl);\n    }\n    try {\n      await ChildProcess.spawn('npm', args, {mode: 'silent'});\n    } catch (e) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Log into NPM at a provided registry using an interactive invocation.\n   * @throws With the `npm login` status code if the login failed.\n   */\n  static async startInteractiveLogin(registryUrl: string | undefined) {\n    const args = ['login', '--no-browser'];\n    // If a custom registry URL has been specified, add the `--registry` flag. The `--registry` flag\n    // must be spliced into the correct place in the command as npm expects it to be the flag\n    // immediately following the login subcommand.\n    if (registryUrl !== undefined) {\n      args.splice(1, 0, '--registry', registryUrl);\n    }\n    // The login command prompts for username, password and other profile information. Hence\n    // the process needs to be interactive (i.e. respecting current TTYs stdin).\n    await ChildProcess.spawnInteractive('npm', args);\n  }\n\n  /**\n   * Log out of NPM at a provided registry.\n   * @returns Whether the user was logged out of NPM.\n   */\n  static async logout(registryUrl: string | undefined): Promise {\n    const args = ['logout'];\n    // If a custom registry URL has been specified, add the `--registry` flag. The `--registry` flag\n    // must be spliced into the correct place in the command as npm expects it to be the flag\n    // immediately following the logout subcommand.\n    if (registryUrl !== undefined) {\n      args.splice(1, 0, '--registry', registryUrl);\n    }\n    try {\n      await ChildProcess.spawn('npm', args, {mode: 'silent'});\n    } finally {\n      return this.checkIsLoggedIn(registryUrl);\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Error that will be thrown if the user manually aborted a release action. */\nexport class UserAbortedReleaseActionError extends Error {}\n\n/** Error that will be thrown if the action has been aborted due to a fatal error. */\nexport class FatalReleaseActionError extends Error {}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {green, Log} from '../../../utils/logging.js';\nimport {workspaceRelativePackageJsonPath} from '../../../utils/constants.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {ReleaseAction} from '../actions.js';\nimport {getCommitMessageForNextBranchMajorSwitch} from '../commit-message.js';\nimport {isFirstNextPrerelease} from '../../versioning/prerelease-version.js';\nimport {isVersionPublishedToNpm} from '../../versioning/npm-registry.js';\nimport {ReleaseConfig} from '../../config/index.js';\n\n/**\n * Release action that configures the active next release-train to be for a major\n * version. This means that major changes can land in the next branch.\n */\nexport class ConfigureNextAsMajorAction extends ReleaseAction {\n  private _newVersion = semver.parse(`${this.active.next.version.major + 1}.0.0-next.0`)!;\n\n  override async getDescription() {\n    const {branchName} = this.active.next;\n    const newVersion = this._newVersion;\n    return `Configure the \"${branchName}\" branch to be released as major (v${newVersion}).`;\n  }\n\n  override async perform() {\n    const {branchName} = this.active.next;\n    const newVersion = this._newVersion;\n    const beforeStagingSha = await this.getLatestCommitOfBranch(branchName);\n\n    await this.assertPassingGithubStatus(beforeStagingSha, branchName);\n    await this.checkoutUpstreamBranch(branchName);\n    await this.updateProjectVersion(newVersion);\n\n    await this.createCommit(getCommitMessageForNextBranchMajorSwitch(newVersion), [\n      workspaceRelativePackageJsonPath,\n      ...this.getAspectLockFiles(),\n    ]);\n    const pullRequest = await this.pushChangesToForkAndCreatePullRequest(\n      branchName,\n      `switch-next-to-major-${newVersion}`,\n      `Configure next branch to receive major changes for v${newVersion}`,\n    );\n\n    Log.info(green('  ✓   Next branch update pull request has been created.'));\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n  }\n\n  static override async isActive(active: ActiveReleaseTrains, config: ReleaseConfig) {\n    // The `next` branch can be switched to a major version, unless it already\n    // is targeting a new major, or if pre-releases have already started.\n    return (\n      !active.next.isMajor &&\n      isFirstNextPrerelease(active.next.version) &&\n      !(await isVersionPublishedToNpm(active.next.version, config))\n    );\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** NPM package name that is used for the `ng-dev` tool. */\nexport const ngDevNpmPackageName = '@angular/ng-dev';\n\n/** Workspace-relative path for the \"package.json\" file. */\nexport const workspaceRelativePackageJsonPath = 'package.json';\n\n/** Workspace-relative path for the \"yarn.lock\" file. */\nexport const workspaceRelativeYarnLockFilePath = 'yarn.lock';\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {promises as fs, existsSync} from 'fs';\nimport path, {join} from 'path';\nimport semver from 'semver';\n\nimport {workspaceRelativePackageJsonPath} from '../../utils/constants.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {isGithubApiError} from '../../utils/git/github.js';\nimport githubMacros from '../../utils/git/github-macros.js';\nimport {\n  getFileContentsUrl,\n  getListCommitsInBranchUrl,\n  getRepositoryGitUrl,\n} from '../../utils/git/github-urls.js';\nimport {green, Log} from '../../utils/logging.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {BuiltPackage, BuiltPackageWithInfo, ReleaseConfig} from '../config/index.js';\nimport {ReleaseNotes, workspaceRelativeChangelogPath} from '../notes/release-notes.js';\nimport {NpmDistTag, PackageJson} from '../versioning/index.js';\nimport {ActiveReleaseTrains} from '../versioning/active-release-trains.js';\nimport {createExperimentalSemver} from '../versioning/experimental-versions.js';\nimport {NpmCommand} from '../versioning/npm-command.js';\nimport {getReleaseTagForVersion} from '../versioning/version-tags.js';\nimport {FatalReleaseActionError, UserAbortedReleaseActionError} from './actions-error.js';\nimport {\n  analyzeAndExtendBuiltPackagesWithInfo,\n  assertIntegrityOfBuiltPackages,\n} from './built-package-info.js';\nimport {\n  getCommitMessageForRelease,\n  getReleaseNoteCherryPickCommitMessage,\n} from './commit-message.js';\nimport {githubReleaseBodyLimit} from './constants.js';\nimport {ExternalCommands} from './external-commands.js';\nimport {promptToInitiatePullRequestMerge} from './prompt-merge.js';\nimport {Prompt} from '../../utils/prompt.js';\nimport {glob} from 'fast-glob';\n\n/** Interface describing a Github repository. */\nexport interface GithubRepo {\n  owner: string;\n  name: string;\n}\n\n/** Interface describing a Github pull request. */\nexport interface PullRequest {\n  /** Unique id for the pull request (i.e. the PR number). */\n  id: number;\n  /** URL that resolves to the pull request in Github. */\n  url: string;\n  /** Fork containing the head branch of this pull request. */\n  fork: GithubRepo;\n  /** Branch name in the fork that defines this pull request. */\n  forkBranch: string;\n}\n\n/** Options that can be used to control the staging of a new version. */\nexport interface StagingOptions {\n  /**\n   * As part of staging, the `package.json` can be updated before the\n   * new version is set.\n   * @see {ReleaseAction.updateProjectVersion}\n   */\n  updatePkgJsonFn?: (pkgJson: PackageJson) => void;\n}\n\n/** Constructor type for instantiating a release action */\nexport interface ReleaseActionConstructor {\n  /** Whether the release action is currently active. */\n  isActive(active: ActiveReleaseTrains, config: ReleaseConfig): Promise;\n  /** Constructs a release action. */\n  new (...args: [ActiveReleaseTrains, AuthenticatedGitClient, ReleaseConfig, string]): T;\n}\n\n/**\n * Abstract base class for a release action. A release action is selectable by the caretaker\n * if active, and can perform changes for releasing, such as staging a release, bumping the\n * version, cherry-picking the changelog, branching off from the main branch. etc.\n */\nexport abstract class ReleaseAction {\n  /** Whether the release action is currently active. */\n  static isActive(_trains: ActiveReleaseTrains, _config: ReleaseConfig): Promise {\n    throw Error('Not implemented.');\n  }\n\n  /** Gets the description for a release action. */\n  abstract getDescription(): Promise;\n  /**\n   * Performs the given release action.\n   * @throws {UserAbortedReleaseActionError} When the user manually aborted the action.\n   * @throws {FatalReleaseActionError} When the action has been aborted due to a fatal error.\n   */\n  abstract perform(): Promise;\n\n  constructor(\n    protected active: ActiveReleaseTrains,\n    protected git: AuthenticatedGitClient,\n    protected config: ReleaseConfig,\n    protected projectDir: string,\n  ) {}\n\n  /**\n   * Updates the version in the project top-level `package.json` file.\n   *\n   * @param newVersion New SemVer version to be set in the file.\n   * @param additionalUpdateFn Optional update function that runs before\n   *   the version update. Can be used to update other fields.\n   */\n  protected async updateProjectVersion(\n    newVersion: semver.SemVer,\n    additionalUpdateFn?: (pkgJson: PackageJson) => void,\n  ) {\n    const pkgJsonPath = join(this.projectDir, workspaceRelativePackageJsonPath);\n    const pkgJson = JSON.parse(await fs.readFile(pkgJsonPath, 'utf8')) as {\n      version: string;\n      [key: string]: any;\n    };\n    if (additionalUpdateFn !== undefined) {\n      additionalUpdateFn(pkgJson);\n    }\n    pkgJson.version = newVersion.format();\n    // Write the `package.json` file. Note that we add a trailing new line\n    // to avoid unnecessary diff. IDEs usually add a trailing new line.\n    await fs.writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n    Log.info(green(`  ✓   Updated project version to ${pkgJson.version}`));\n\n    if (this.config.rulesJsInteropMode && existsSync(path.join(this.projectDir, '.aspect'))) {\n      await ExternalCommands.invokeBazelUpdateAspectLockFiles(this.projectDir);\n    }\n  }\n\n  /*\n   * Get the modified Aspect lock files if `rulesJsInteropMode` is enabled.\n   */\n  protected getAspectLockFiles(): string[] {\n    // TODO: Remove after `rules_js` migration is complete.\n    return this.config.rulesJsInteropMode\n      ? glob.sync(['.aspect/**', 'pnpm-lock.yaml'], {cwd: this.projectDir})\n      : [];\n  }\n\n  /** Gets the most recent commit of a specified branch. */\n  protected async getLatestCommitOfBranch(branchName: string): Promise {\n    const {\n      data: {commit},\n    } = await this.git.github.repos.getBranch({...this.git.remoteParams, branch: branchName});\n    return commit.sha;\n  }\n\n  /** Checks whether the given revision is ahead to the base by the specified amount. */\n  private async _isRevisionAheadOfBase(\n    baseRevision: string,\n    targetRevision: string,\n    expectedAheadCount: number,\n  ) {\n    const {\n      data: {ahead_by, status},\n    } = await this.git.github.repos.compareCommits({\n      ...this.git.remoteParams,\n      base: baseRevision,\n      head: targetRevision,\n    });\n\n    return status === 'ahead' && ahead_by === expectedAheadCount;\n  }\n\n  /**\n   * Verifies that the given commit has passing all statuses.\n   *\n   * Upon error, a link to the branch containing the commit is printed,\n   * allowing the caretaker to quickly inspect the GitHub commit status failures.\n   */\n  protected async assertPassingGithubStatus(commitSha: string, branchNameForError: string) {\n    const {result} = await githubMacros.getCombinedChecksAndStatusesForRef(this.git.github, {\n      ...this.git.remoteParams,\n      ref: commitSha,\n    });\n    const branchCommitsUrl = getListCommitsInBranchUrl(this.git, branchNameForError);\n\n    if (result === 'failing' || result === null) {\n      Log.error(\n        `  ✘   Cannot stage release. Commit \"${commitSha}\" does not pass all github ` +\n          'status checks. Please make sure this commit passes all checks before re-running.',\n      );\n      Log.error(`      Please have a look at: ${branchCommitsUrl}`);\n\n      if (await Prompt.confirm({message: 'Do you want to ignore the Github status and proceed?'})) {\n        Log.warn(\n          '  ⚠   Upstream commit is failing CI checks, but status has been forcibly ignored.',\n        );\n        return;\n      }\n      throw new UserAbortedReleaseActionError();\n    } else if (result === 'pending') {\n      Log.error(\n        `  ✘   Commit \"${commitSha}\" still has pending github statuses that ` +\n          'need to succeed before staging a release.',\n      );\n      Log.error(`      Please have a look at: ${branchCommitsUrl}`);\n      if (await Prompt.confirm({message: 'Do you want to ignore the Github status and proceed?'})) {\n        Log.warn('  ⚠   Upstream commit is pending CI, but status has been forcibly ignored.');\n        return;\n      }\n      throw new UserAbortedReleaseActionError();\n    }\n\n    Log.info(green('  ✓   Upstream commit is passing all github status checks.'));\n  }\n\n  /**\n   * Prompts the user for potential release notes edits that need to be made. Once\n   * confirmed, a new commit for the release point is created.\n   */\n  protected async waitForEditsAndCreateReleaseCommit(newVersion: semver.SemVer) {\n    Log.warn(\n      '  ⚠   Please review the changelog and ensure that the log contains only changes ' +\n        'that apply to the public API surface.',\n    );\n    Log.warn('      Manual changes can be made. When done, please proceed with the prompt below.');\n\n    if (!(await Prompt.confirm({message: 'Do you want to proceed and commit the changes?'}))) {\n      throw new UserAbortedReleaseActionError();\n    }\n\n    // Commit message for the release point.\n    const commitMessage = getCommitMessageForRelease(newVersion);\n    const filesToCommit = [\n      workspaceRelativePackageJsonPath,\n      workspaceRelativeChangelogPath,\n      ...this.getAspectLockFiles(),\n    ];\n\n    // Create a release staging commit including changelog and version bump.\n    await this.createCommit(commitMessage, filesToCommit);\n\n    // The caretaker may have attempted to make additional changes. These changes would\n    // not be captured into the release commit. The working directory should remain clean,\n    // like we assume it being clean when we start the release actions.\n    if (this.git.hasUncommittedChanges()) {\n      Log.error('  ✘   Unrelated changes have been made as part of the changelog editing.');\n      throw new FatalReleaseActionError();\n    }\n\n    Log.info(green(`  ✓   Created release commit for: \"${newVersion}\".`));\n  }\n\n  /**\n   * Gets an owned fork for the configured project of the authenticated user. Aborts the\n   * process with an error if no fork could be found.\n   */\n  private async _getForkOfAuthenticatedUser(): Promise {\n    try {\n      return this.git.getForkOfAuthenticatedUser();\n    } catch {\n      const {owner, name} = this.git.remoteConfig;\n      Log.error('  ✘   Unable to find fork for currently authenticated user.');\n      Log.error(`      Please ensure you created a fork of: ${owner}/${name}.`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /** Checks whether a given branch name is reserved in the specified repository. */\n  private async _isBranchNameReservedInRepo(repo: GithubRepo, name: string): Promise {\n    try {\n      await this.git.github.repos.getBranch({owner: repo.owner, repo: repo.name, branch: name});\n      return true;\n    } catch (e) {\n      // If the error has a `status` property set to `404`, then we know that the branch\n      // does not exist. Otherwise, it might be an API error that we want to report/re-throw.\n      if (isGithubApiError(e) && e.status === 404) {\n        return false;\n      }\n      throw e;\n    }\n  }\n\n  /** Finds a non-reserved branch name in the repository with respect to a base name. */\n  private async _findAvailableBranchName(repo: GithubRepo, baseName: string): Promise {\n    let currentName = baseName;\n    let suffixNum = 0;\n    while (await this._isBranchNameReservedInRepo(repo, currentName)) {\n      suffixNum++;\n      currentName = `${baseName}_${suffixNum}`;\n    }\n    return currentName;\n  }\n\n  /**\n   * Creates a local branch from the current Git `HEAD`. Will override\n   * existing branches in case of a collision.\n   */\n  protected async createLocalBranchFromHead(branchName: string) {\n    this.git.run(['checkout', '-q', '-B', branchName]);\n  }\n\n  /** Pushes the current Git `HEAD` to the given remote branch in the configured project. */\n  protected async pushHeadToRemoteBranch(branchName: string) {\n    // Push the local `HEAD` to the remote branch in the configured project.\n    this.git.run(['push', '-q', this.git.getRepoGitUrl(), `HEAD:refs/heads/${branchName}`]);\n  }\n\n  /**\n   * Pushes the current Git `HEAD` to a fork for the configured project that is owned by\n   * the authenticated user. If the specified branch name exists in the fork already, a\n   * unique one will be generated based on the proposed name to avoid collisions.\n   * @param proposedBranchName Proposed branch name for the fork.\n   * @param trackLocalBranch Whether the fork branch should be tracked locally. i.e. whether\n   *   a local branch with remote tracking should be set up.\n   * @returns The fork and branch name containing the pushed changes.\n   */\n  private async _pushHeadToFork(\n    proposedBranchName: string,\n    trackLocalBranch: boolean,\n  ): Promise<{fork: GithubRepo; branchName: string}> {\n    const fork = await this._getForkOfAuthenticatedUser();\n    // Compute a repository URL for pushing to the fork. Note that we want to respect\n    // the SSH option from the dev-infra github configuration.\n    const repoGitUrl = getRepositoryGitUrl(\n      {...fork, useSsh: this.git.remoteConfig.useSsh},\n      this.git.githubToken,\n    );\n    const branchName = await this._findAvailableBranchName(fork, proposedBranchName);\n    const pushArgs: string[] = [];\n    // If a local branch should track the remote fork branch, create a branch matching\n    // the remote branch. Later with the `git push`, the remote is set for the branch.\n    if (trackLocalBranch) {\n      await this.createLocalBranchFromHead(branchName);\n      pushArgs.push('--set-upstream');\n    }\n    // Push the local `HEAD` to the remote branch in the fork.\n    this.git.run(['push', '-q', repoGitUrl, `HEAD:refs/heads/${branchName}`, ...pushArgs]);\n    return {fork, branchName};\n  }\n\n  /**\n   * Pushes changes to a fork for the configured project that is owned by the currently\n   * authenticated user. A pull request is then created for the pushed changes on the\n   * configured project that targets the specified target branch.\n   * @returns An object describing the created pull request.\n   */\n  protected async pushChangesToForkAndCreatePullRequest(\n    targetBranch: string,\n    proposedForkBranchName: string,\n    title: string,\n    body?: string,\n  ): Promise {\n    const repoSlug = `${this.git.remoteParams.owner}/${this.git.remoteParams.repo}`;\n    const {fork, branchName} = await this._pushHeadToFork(proposedForkBranchName, true);\n    const {data} = await this.git.github.pulls.create({\n      ...this.git.remoteParams,\n      head: `${fork.owner}:${branchName}`,\n      base: targetBranch,\n      body,\n      title,\n    });\n\n    // Add labels to the newly created PR if provided in the configuration.\n    if (this.config.releasePrLabels !== undefined) {\n      await this.git.github.issues.addLabels({\n        ...this.git.remoteParams,\n        issue_number: data.number,\n        labels: this.config.releasePrLabels,\n      });\n    }\n\n    Log.info(green(`  ✓   Created pull request #${data.number} in ${repoSlug}.`));\n    return {\n      id: data.number,\n      url: data.html_url,\n      fork,\n      forkBranch: branchName,\n    };\n  }\n\n  /**\n   * Prepend releases notes for a version published in a given branch to the changelog in\n   * the current Git `HEAD`. This is useful for cherry-picking the changelog.\n   * @returns A boolean indicating whether the release notes have been prepended.\n   */\n  protected async prependReleaseNotesToChangelog(releaseNotes: ReleaseNotes): Promise {\n    await releaseNotes.prependEntryToChangelogFile();\n    Log.info(\n      green(`  ✓   Updated the changelog to capture changes for \"${releaseNotes.version}\".`),\n    );\n  }\n\n  /** Checks out an upstream branch with a detached head. */\n  protected async checkoutUpstreamBranch(branchName: string) {\n    this.git.run(['fetch', '-q', this.git.getRepoGitUrl(), branchName]);\n    this.git.run(['checkout', '-q', 'FETCH_HEAD', '--detach']);\n  }\n\n  /** Installs all Yarn dependencies in the current branch. */\n  protected async installDependenciesForCurrentBranch() {\n    const nodeModulesDir = join(this.projectDir, 'node_modules');\n    // Note: We delete all contents of the `node_modules` first. This is necessary\n    // because Yarn could preserve extraneous/outdated nested modules that will cause\n    // unexpected build failures with the NodeJS Bazel `@npm` workspace generation.\n    // This is a workaround for: https://github.com/yarnpkg/yarn/issues/8146. Even though\n    // we might be able to fix this with Yarn 2+, it is reasonable ensuring clean node modules.\n    // TODO: Remove this when we use Yarn 2+ in all Angular repositories.\n    await fs.rm(nodeModulesDir, {force: true, recursive: true, maxRetries: 3});\n    await ExternalCommands.invokeYarnInstall(this.projectDir);\n  }\n\n  /**\n   * Creates a commit for the specified files with the given message.\n   * @param message Message for the created commit\n   * @param files List of project-relative file paths to be committed.\n   */\n  protected async createCommit(message: string, files: string[]) {\n    // Note: `git add` would not be needed if the files are already known to\n    // Git, but the specified files could also be newly created, and unknown.\n    this.git.run(['add', ...files]);\n    // Note: `--no-verify` skips the majority of commit hooks here, but there are hooks\n    // like `prepare-commit-message` which still run. We have set the `HUSKY=0` environment\n    // variable at the start of the publish command to ignore such hooks as well.\n    this.git.run(['commit', '-q', '--no-verify', '-m', message, ...files]);\n  }\n\n  /**\n   * Builds the release output for the current branch. Assumes the node modules\n   * to be already installed for the current branch.\n   *\n   * @returns A list of built release packages.\n   */\n  protected async buildReleaseForCurrentBranch(): Promise {\n    // Note that we do not directly call the build packages function from the release\n    // config. We only want to build and publish packages that have been configured in the given\n    // publish branch. e.g. consider we publish patch version and a new package has been\n    // created in the `next` branch. The new package would not be part of the patch branch,\n    // so we cannot build and publish it.\n    const builtPackages = await ExternalCommands.invokeReleaseBuild(this.projectDir);\n    const releaseInfo = await ExternalCommands.invokeReleaseInfo(this.projectDir);\n\n    // Extend the built packages with their disk hash and NPM package information. This is\n    // helpful later for verifying integrity and filtering out e.g. experimental packages.\n    return analyzeAndExtendBuiltPackagesWithInfo(builtPackages, releaseInfo.npmPackages);\n  }\n\n  /**\n   * Stages the specified new version for the current branch, builds the release output,\n   * verifies its output and creates a pull request  that targets the given base branch.\n   *\n   * This method assumes the staging branch is already checked-out.\n   *\n   * @param newVersion New version to be staged.\n   * @param compareVersionForReleaseNotes Version used for comparing with the current\n   *   `HEAD` in order build the release notes.\n   * @param pullRequestTargetBranch Branch the pull request should target.\n   * @param opts Non-mandatory options for controlling the staging, e.g.\n   *   allowing for additional `package.json` modifications.\n   * @returns an object capturing actions performed as part of staging.\n   */\n  protected async stageVersionForBranchAndCreatePullRequest(\n    newVersion: semver.SemVer,\n    compareVersionForReleaseNotes: semver.SemVer,\n    pullRequestTargetBranch: string,\n    opts?: StagingOptions,\n  ): Promise<{\n    releaseNotes: ReleaseNotes;\n    pullRequest: PullRequest;\n    builtPackagesWithInfo: BuiltPackageWithInfo[];\n  }> {\n    const releaseNotesCompareTag = getReleaseTagForVersion(compareVersionForReleaseNotes);\n\n    // Fetch the compare tag so that commits for the release notes can be determined.\n    // We forcibly override existing local tags that are named similar as we will fetch\n    // the correct tag for release notes comparison from the upstream remote.\n    this.git.run([\n      'fetch',\n      '--force',\n      this.git.getRepoGitUrl(),\n      `refs/tags/${releaseNotesCompareTag}:refs/tags/${releaseNotesCompareTag}`,\n    ]);\n\n    // Build release notes for commits from `..HEAD`.\n    const releaseNotes = await ReleaseNotes.forRange(\n      this.git,\n      newVersion,\n      releaseNotesCompareTag,\n      'HEAD',\n    );\n\n    await this.updateProjectVersion(newVersion, opts?.updatePkgJsonFn);\n    await this.prependReleaseNotesToChangelog(releaseNotes);\n    await this.waitForEditsAndCreateReleaseCommit(newVersion);\n\n    // Install the project dependencies for the publish branch.\n    await this.installDependenciesForCurrentBranch();\n\n    const builtPackagesWithInfo = await this.buildReleaseForCurrentBranch();\n\n    // Run release pre-checks (e.g. validating the release output).\n    await ExternalCommands.invokeReleasePrecheck(\n      this.projectDir,\n      newVersion,\n      builtPackagesWithInfo,\n    );\n\n    // Verify the packages built are the correct version.\n    await this._verifyPackageVersions(releaseNotes.version, builtPackagesWithInfo);\n\n    const pullRequest = await this.pushChangesToForkAndCreatePullRequest(\n      pullRequestTargetBranch,\n      `release-stage-${newVersion}`,\n      `Bump version to \"v${newVersion}\" with changelog.`,\n    );\n\n    Log.info(green('  ✓   Release staging pull request has been created.'));\n\n    return {releaseNotes, pullRequest, builtPackagesWithInfo};\n  }\n\n  /**\n   * Checks out the specified target branch, verifies its CI status and stages\n   * the specified new version in order to create a pull request.\n   *\n   * @param newVersion New version to be staged.\n   * @param compareVersionForReleaseNotes Version used for comparing with `HEAD` of\n   *   the staging branch in order build the release notes.\n   * @param stagingBranch Branch within the new version should be staged.\n   * @param stagingOptions Non-mandatory options for controlling the staging of\n   *   the new version. e.g. allowing for additional `package.json` modifications.\n   * @returns an object capturing actions performed as part of staging.\n   */\n  protected async checkoutBranchAndStageVersion(\n    newVersion: semver.SemVer,\n    compareVersionForReleaseNotes: semver.SemVer,\n    stagingBranch: string,\n    stagingOpts?: StagingOptions,\n  ): Promise<{\n    releaseNotes: ReleaseNotes;\n    pullRequest: PullRequest;\n    builtPackagesWithInfo: BuiltPackageWithInfo[];\n    beforeStagingSha: string;\n  }> {\n    // Keep track of the commit where we started the staging process on. This will be used\n    // later to ensure that no changes, except for the version bump have landed as part\n    // of the staging time window (where the caretaker could accidentally land other stuff).\n    const beforeStagingSha = await this.getLatestCommitOfBranch(stagingBranch);\n\n    await this.assertPassingGithubStatus(beforeStagingSha, stagingBranch);\n    await this.checkoutUpstreamBranch(stagingBranch);\n\n    const stagingInfo = await this.stageVersionForBranchAndCreatePullRequest(\n      newVersion,\n      compareVersionForReleaseNotes,\n      stagingBranch,\n      stagingOpts,\n    );\n\n    return {\n      ...stagingInfo,\n      beforeStagingSha,\n    };\n  }\n\n  /**\n   * Cherry-picks the release notes of a version that have been pushed to a given branch\n   * into the `next` primary development branch. A pull request is created for this.\n   * @returns a boolean indicating successful creation of the cherry-pick pull request.\n   */\n  protected async cherryPickChangelogIntoNextBranch(\n    releaseNotes: ReleaseNotes,\n    stagingBranch: string,\n  ): Promise {\n    const nextBranch = this.active.next.branchName;\n    const commitMessage = getReleaseNoteCherryPickCommitMessage(releaseNotes.version);\n\n    // Checkout the next branch.\n    await this.checkoutUpstreamBranch(nextBranch);\n\n    await this.prependReleaseNotesToChangelog(releaseNotes);\n\n    // Create a changelog cherry-pick commit.\n    await this.createCommit(commitMessage, [workspaceRelativeChangelogPath]);\n    Log.info(green(`  ✓   Created changelog cherry-pick commit for: \"${releaseNotes.version}\".`));\n\n    // Create a cherry-pick pull request that should be merged by the caretaker.\n    const pullRequest = await this.pushChangesToForkAndCreatePullRequest(\n      nextBranch,\n      `changelog-cherry-pick-${releaseNotes.version}`,\n      commitMessage,\n      `Cherry-picks the changelog from the \"${stagingBranch}\" branch to the next ` +\n        `branch (${nextBranch}).`,\n    );\n\n    Log.info(\n      green(\n        `  ✓   Pull request for cherry-picking the changelog into \"${nextBranch}\" ` +\n          'has been created.',\n      ),\n    );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n\n    return true;\n  }\n\n  /** Prompts the user for merging the pull request, and waits for it to be merged. */\n  protected async promptAndWaitForPullRequestMerged(pullRequest: PullRequest): Promise {\n    await promptToInitiatePullRequestMerge(this.git, pullRequest);\n  }\n\n  /**\n   * Creates a Github release for the specified version. The release is created\n   * by tagging the version bump commit, and by creating the release entry.\n   *\n   * Expects the version bump commit and changelog to be available in the\n   * upstream remote.\n   *\n   * @param releaseNotes The release notes for the version being published.\n   * @param versionBumpCommitSha Commit that bumped the version. The release tag\n   *   will point to this commit.\n   * @param isPrerelease Whether the new version is published as a pre-release.\n   * @param showAsLatestOnGitHub Whether the version released will represent\n   *   the \"latest\" version of the project. I.e. GitHub will show this version as \"latest\".\n   */\n  private async _createGithubReleaseForVersion(\n    releaseNotes: ReleaseNotes,\n    versionBumpCommitSha: string,\n    isPrerelease: boolean,\n    showAsLatestOnGitHub: boolean,\n  ) {\n    const tagName = getReleaseTagForVersion(releaseNotes.version);\n    await this.git.github.git.createRef({\n      ...this.git.remoteParams,\n      ref: `refs/tags/${tagName}`,\n      sha: versionBumpCommitSha,\n    });\n    Log.info(green(`  ✓   Tagged v${releaseNotes.version} release upstream.`));\n\n    let releaseBody = await releaseNotes.getGithubReleaseEntry();\n\n    // If the release body exceeds the Github body limit, we just provide\n    // a link to the changelog entry in the Github release entry.\n    if (releaseBody.length > githubReleaseBodyLimit) {\n      const releaseNotesUrl = await this._getGithubChangelogUrlForRef(releaseNotes, tagName);\n      releaseBody =\n        `Release notes are too large to be captured here. ` +\n        `[View all changes here](${releaseNotesUrl}).`;\n    }\n\n    await this.git.github.repos.createRelease({\n      ...this.git.remoteParams,\n      name: `v${releaseNotes.version}`,\n      tag_name: tagName,\n      prerelease: isPrerelease,\n      make_latest: showAsLatestOnGitHub ? 'true' : 'false',\n      body: releaseBody,\n    });\n    Log.info(green(`  ✓   Created v${releaseNotes.version} release in Github.`));\n  }\n\n  /** Gets a Github URL that resolves to the release notes in the given ref. */\n  private async _getGithubChangelogUrlForRef(releaseNotes: ReleaseNotes, ref: string) {\n    const baseUrl = getFileContentsUrl(this.git, ref, workspaceRelativeChangelogPath);\n    const urlFragment = await releaseNotes.getUrlFragmentForRelease();\n    return `${baseUrl}#${urlFragment}`;\n  }\n\n  /**\n   * Publishes the given packages to the registry and makes the releases\n   * available on GitHub.\n   *\n   * @param builtPackagesWithInfo List of built packages that will be published.\n   * @param releaseNotes The release notes for the version being published.\n   * @param beforeStagingSha Commit SHA that is expected to be the most recent one after\n   *   the actual version bump commit. This exists to ensure that caretakers do not land\n   *   additional changes after the release output has been built locally.\n   * @param publishBranch Name of the branch that contains the new version.\n   * @param npmDistTag NPM dist tag where the version should be published to.\n   * @param additionalOptions Additional options needed for publishing a release.\n   */\n  protected async publish(\n    builtPackagesWithInfo: BuiltPackageWithInfo[],\n    releaseNotes: ReleaseNotes,\n    beforeStagingSha: string,\n    publishBranch: string,\n    npmDistTag: NpmDistTag,\n    additionalOptions: {showAsLatestOnGitHub: boolean},\n  ) {\n    const versionBumpCommitSha = await this.getLatestCommitOfBranch(publishBranch);\n\n    // Ensure the latest commit in the publish branch is the bump commit.\n    if (!(await this._isCommitForVersionStaging(releaseNotes.version, versionBumpCommitSha))) {\n      Log.error(`  ✘   Latest commit in \"${publishBranch}\" branch is not a staging commit.`);\n      Log.error('      Please make sure the staging pull request has been merged.');\n      throw new FatalReleaseActionError();\n    }\n\n    // Ensure no commits have landed since we started the staging process. This would signify\n    // that the locally-built release packages are not matching with the release commit on GitHub.\n    // Note: We expect the version bump commit to be ahead by **one** commit. This means it's\n    // the direct parent of the commit that was latest when we started the staging.\n    if (!(await this._isRevisionAheadOfBase(beforeStagingSha, versionBumpCommitSha, 1))) {\n      Log.error(`  ✘   Unexpected additional commits have landed while staging the release.`);\n      Log.error('      Please revert the bump commit and retry, or cut a new version on top.');\n      throw new FatalReleaseActionError();\n    }\n\n    // Before publishing, we want to ensure that the locally-built packages we\n    // built in the staging phase have not been modified accidentally.\n    await assertIntegrityOfBuiltPackages(builtPackagesWithInfo);\n\n    // Create a Github release for the new version.\n    await this._createGithubReleaseForVersion(\n      releaseNotes,\n      versionBumpCommitSha,\n      npmDistTag === 'next',\n      additionalOptions.showAsLatestOnGitHub,\n    );\n\n    // Walk through all built packages and publish them to NPM.\n    for (const pkg of builtPackagesWithInfo) {\n      await this._publishBuiltPackageToNpm(pkg, npmDistTag);\n    }\n\n    Log.info(green('  ✓   Published all packages successfully'));\n  }\n\n  /** Publishes the given built package to NPM with the specified NPM dist tag. */\n  private async _publishBuiltPackageToNpm(pkg: BuiltPackage, npmDistTag: NpmDistTag) {\n    Log.debug(`Starting publish of \"${pkg.name}\".`);\n    const spinner = new Spinner(`Publishing \"${pkg.name}\"`);\n\n    try {\n      await NpmCommand.publish(pkg.outputPath, npmDistTag, this.config.publishRegistry);\n      spinner.complete();\n      Log.info(green(`  ✓   Successfully published \"${pkg.name}.`));\n    } catch (e) {\n      spinner.complete();\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while publishing \"${pkg.name}\".`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /** Checks whether the given commit represents a staging commit for the specified version. */\n  private async _isCommitForVersionStaging(version: semver.SemVer, commitSha: string) {\n    const {data} = await this.git.github.repos.getCommit({\n      ...this.git.remoteParams,\n      ref: commitSha,\n    });\n    return data.commit.message.startsWith(getCommitMessageForRelease(version));\n  }\n\n  // TODO: Remove this check and run it as part of common release validation.\n  /** Verify the version of each generated package exact matches the specified version. */\n  private async _verifyPackageVersions(version: semver.SemVer, packages: BuiltPackageWithInfo[]) {\n    // Experimental equivalent version for packages.\n    const experimentalVersion = createExperimentalSemver(version);\n\n    for (const pkg of packages) {\n      const {version: packageJsonVersion} = JSON.parse(\n        await fs.readFile(join(pkg.outputPath, 'package.json'), 'utf8'),\n      ) as {version: string; [key: string]: any};\n\n      const expectedVersion = pkg.experimental ? experimentalVersion : version;\n      const mismatchesVersion = expectedVersion.compare(packageJsonVersion) !== 0;\n\n      if (mismatchesVersion) {\n        Log.error(`The built package version does not match for: ${pkg.name}.`);\n        Log.error(`  Actual version:   ${packageJsonVersion}`);\n        Log.error(`  Expected version: ${expectedVersion}`);\n        throw new FatalReleaseActionError();\n      }\n    }\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/** Gets whether the given version denotes an experimental SemVer version. */\nexport function isExperimentalSemver(version: semver.SemVer): boolean {\n  return version.major === 0 && version.minor >= 100;\n}\n\n/** Creates the equivalent experimental version for a provided SemVer. */\nexport function createExperimentalSemver(version: string | semver.SemVer): semver.SemVer {\n  version = new semver.SemVer(version);\n  const experimentalVersion = new semver.SemVer(version.format());\n  experimentalVersion.major = 0;\n  experimentalVersion.minor = version.major * 100 + version.minor;\n  return new semver.SemVer(experimentalVersion.format());\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/** Gets the release tag name for the specified version. */\nexport function getReleaseTagForVersion(version: semver.SemVer): string {\n  return version.format();\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {hashElement} from 'folder-hash';\n\n/** Class holding methods for hashing a directory. */\nexport abstract class DirectoryHash {\n  /** Computes a hash for the given directory. */\n  static async compute(dirPath: string): Promise {\n    return (await hashElement(dirPath, {})).hash;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Log} from '../../utils/logging.js';\n\nimport {BuiltPackage, BuiltPackageWithInfo, NpmPackage} from '../config/index.js';\nimport {FatalReleaseActionError} from './actions-error.js';\nimport {DirectoryHash} from './directory-hash.js';\n\n/**\n * Analyzes and extends the given built packages with additional information,\n * such as their corresponding NPM information or a hash for the package contents.\n */\nexport async function analyzeAndExtendBuiltPackagesWithInfo(\n  builtPackages: BuiltPackage[],\n  npmPackages: NpmPackage[],\n): Promise {\n  const result: BuiltPackageWithInfo[] = [];\n\n  // Note: We sequentially analyze/extend the built packages as we would not want\n  // to risk too many file system operations at the same time. Since workspaces\n  // do not have a lot of packages, this operation is fine to run sequentially.\n  for (const pkg of builtPackages) {\n    const info = npmPackages.find((i) => i.name === pkg.name);\n\n    if (info === undefined) {\n      Log.debug(`Retrieved package information:`, npmPackages);\n      Log.error(`  ✘   Could not find package information for built package: \"${pkg.name}\".`);\n      throw new FatalReleaseActionError();\n    }\n\n    result.push({\n      hash: await computeHashForPackageContents(pkg),\n      ...pkg,\n      ...info,\n    });\n  }\n\n  return result;\n}\n\n/**\n * Asserts that the expected built package content matches the disk\n * contents of the built packages.\n *\n * @throws {FatalReleaseActionError} When the integrity check failed.\n */\nexport async function assertIntegrityOfBuiltPackages(\n  builtPackagesWithInfo: BuiltPackageWithInfo[],\n): Promise {\n  const modifiedPackages: string[] = [];\n\n  // Note: This runs sequentially for the same reason when we analyze/extend the\n  // built package info. See `analyzeAndExtendBuiltPackagesWithInfo`.\n  for (const pkg of builtPackagesWithInfo) {\n    if ((await computeHashForPackageContents(pkg)) !== pkg.hash) {\n      modifiedPackages.push(pkg.name);\n    }\n  }\n\n  if (modifiedPackages.length > 0) {\n    Log.error(`  ✘   Release output has been modified locally since it was built.`);\n    Log.error(`      The following packages changed: ${modifiedPackages.join(', ')}`);\n    throw new FatalReleaseActionError();\n  }\n}\n\n/** Computes a deterministic hash for the package and its contents. */\nasync function computeHashForPackageContents(pkg: BuiltPackage): Promise {\n  return DirectoryHash.compute(pkg.outputPath);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/** Gets the commit message for a new release point in the project. */\nexport function getCommitMessageForRelease(newVersion: semver.SemVer): string {\n  return `release: cut the v${newVersion} release`;\n}\n\n/**\n * Gets the commit message for an exceptional version bump in the next branch. The next\n * branch version will be bumped without the release being published in some situations.\n * More details can be found in the `MoveNextIntoFeatureFreeze` release action and in:\n * https://hackmd.io/2Le8leq0S6G_R5VEVTNK9A.\n */\nexport function getCommitMessageForExceptionalNextVersionBump(newVersion: semver.SemVer) {\n  return `release: bump the next branch to v${newVersion}`;\n}\n\n/**\n * Gets the commit message for a version update in the next branch to a major version. The next\n * branch version will be updated without the release being published if the branch is configured\n * as a major. More details can be found in the `ConfigureNextAsMajor` release action and in:\n * https://hackmd.io/2Le8leq0S6G_R5VEVTNK9A.\n */\nexport function getCommitMessageForNextBranchMajorSwitch(newVersion: semver.SemVer) {\n  return `release: switch the next branch to v${newVersion}`;\n}\n\n/** Gets the commit message for a release notes cherry-pick commit */\nexport function getReleaseNoteCherryPickCommitMessage(newVersion: semver.SemVer): string {\n  return `docs: release notes for the v${newVersion} release`;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Maximum number of characters a Github release entry can use for its body.  This number was\n * confirmed by reaching out to Github support to confirm the character limit.\n */\nexport const githubReleaseBodyLimit = 125000;\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ChildProcess} from '../../utils/child-process.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {NpmDistTag} from '../versioning/index.js';\n\nimport {FatalReleaseActionError} from './actions-error.js';\nimport {resolveYarnScriptForProject} from '../../utils/resolve-yarn-bin.js';\nimport {ReleaseBuildJsonStdout} from '../build/cli.js';\nimport {ReleaseInfoJsonStdout} from '../info/cli.js';\nimport {ReleasePrecheckJsonStdin} from '../precheck/cli.js';\nimport {BuiltPackageWithInfo} from '../config/index.js';\nimport {green, Log} from '../../utils/logging.js';\nimport {getBazelBin} from '../../utils/bazel-bin.js';\n\n/*\n * ###############################################################\n *\n * This file contains helpers for invoking external `ng-dev` commands. A subset of actions,\n * like building release output or setting aν NPM dist tag for release packages, cannot be\n * performed directly as part of the release tool and need to be delegated to external `ng-dev`\n * commands that exist across arbitrary version branches.\n *\n * In a concrete example: Consider a new patch version is released and that a new release\n * package has been added to the `next` branch. The patch branch will not contain the new\n * release package, so we could not build the release output for it. To work around this, we\n * call the ng-dev build command for the patch version branch and expect it to return a list\n * of built packages that need to be released as part of this release train.\n *\n * ###############################################################\n */\n\n/** Class holding method for invoking release action external commands. */\nexport abstract class ExternalCommands {\n  /**\n   * Invokes the `ng-dev release set-dist-tag` command in order to set the specified\n   * NPM dist tag for all packages in the checked out branch to the given version.\n   *\n   * Optionally, the NPM dist tag update can be skipped for experimental packages. This\n   * is useful when tagging long-term-support packages within NPM.\n   */\n  static async invokeSetNpmDist(\n    projectDir: string,\n    npmDistTag: NpmDistTag,\n    version: semver.SemVer,\n    options: {skipExperimentalPackages: boolean} = {skipExperimentalPackages: false},\n  ) {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n\n    try {\n      // Note: No progress indicator needed as that is the responsibility of the command.\n      // TODO: detect yarn berry and handle flag differences properly.\n      await ChildProcess.spawn(\n        yarnCommand.binary,\n        [\n          ...yarnCommand.args,\n          'ng-dev',\n          'release',\n          'set-dist-tag',\n          npmDistTag,\n          version.format(),\n          `--skip-experimental-packages=${options.skipExperimentalPackages}`,\n        ],\n        {cwd: projectDir},\n      );\n      Log.info(green(`  ✓   Set \"${npmDistTag}\" NPM dist tag for all packages to v${version}.`));\n    } catch (e) {\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while setting the NPM dist tag for \"${npmDistTag}\".`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `ng-dev release npm-dist-tag delete` command in order to delete the\n   * NPM dist tag for all packages in the checked-out version branch.\n   */\n  static async invokeDeleteNpmDistTag(projectDir: string, npmDistTag: NpmDistTag) {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n\n    try {\n      // Note: No progress indicator needed as that is the responsibility of the command.\n      // TODO: detect yarn berry and handle flag differences properly.\n      await ChildProcess.spawn(\n        yarnCommand.binary,\n        [...yarnCommand.args, 'ng-dev', 'release', 'npm-dist-tag', 'delete', npmDistTag],\n        {cwd: projectDir},\n      );\n      Log.info(green(`  ✓   Deleted \"${npmDistTag}\" NPM dist tag for all packages.`));\n    } catch (e) {\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while deleting the NPM dist tag: \"${npmDistTag}\".`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `ng-dev release build` command in order to build the release\n   * packages for the currently checked out branch.\n   */\n  static async invokeReleaseBuild(projectDir: string): Promise {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n    // Note: We explicitly mention that this can take a few minutes, so that it's obvious\n    // to caretakers that it can take longer than just a few seconds.\n    const spinner = new Spinner('Building release output. This can take a few minutes.');\n\n    try {\n      // Since we expect JSON to be printed from the `ng-dev release build` command,\n      // we spawn the process in silent mode. We have set up an Ora progress spinner.\n      // TODO: detect yarn berry and handle flag differences properly.\n      const {stdout} = await ChildProcess.spawn(\n        yarnCommand.binary,\n        [...yarnCommand.args, 'ng-dev', 'release', 'build', '--json'],\n        {\n          cwd: projectDir,\n          mode: 'silent',\n        },\n      );\n      spinner.complete();\n      Log.info(green('  ✓   Built release output for all packages.'));\n      // The `ng-dev release build` command prints a JSON array to stdout\n      // that represents the built release packages and their output paths.\n      return JSON.parse(stdout.trim()) as ReleaseBuildJsonStdout;\n    } catch (e) {\n      spinner.complete();\n      Log.error(e);\n      Log.error('  ✘   An error occurred while building the release packages.');\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `ng-dev release info` command in order to retrieve information\n   * about the release for the currently checked-out branch.\n   *\n   * This is useful to e.g. determine whether a built package is currently\n   * denoted as experimental or not.\n   */\n  static async invokeReleaseInfo(projectDir: string): Promise {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n\n    try {\n      // Note: No progress indicator needed as that is expected to be a fast operation.\n      // TODO: detect yarn berry and handle flag differences properly.\n      const {stdout} = await ChildProcess.spawn(\n        yarnCommand.binary,\n        [...yarnCommand.args, 'ng-dev', 'release', 'info', '--json'],\n        {\n          cwd: projectDir,\n          mode: 'silent',\n        },\n      );\n      // The `ng-dev release info` command prints a JSON object to stdout.\n      return JSON.parse(stdout.trim()) as ReleaseInfoJsonStdout;\n    } catch (e) {\n      Log.error(e);\n      Log.error(\n        `  ✘   An error occurred while retrieving the release information for ` +\n          `the currently checked-out branch.`,\n      );\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `ng-dev release precheck` command in order to validate the\n   * built packages or run other validations before actually releasing.\n   *\n   * This is run as an external command because prechecks can be customized\n   * through the `ng-dev` configuration, and we wouldn't want to run prechecks\n   * from the `next` branch for older branches, like patch or an LTS branch.\n   */\n  static async invokeReleasePrecheck(\n    projectDir: string,\n    newVersion: semver.SemVer,\n    builtPackagesWithInfo: BuiltPackageWithInfo[],\n  ): Promise {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n    const precheckStdin: ReleasePrecheckJsonStdin = {\n      builtPackagesWithInfo,\n      newVersion: newVersion.format(),\n    };\n\n    try {\n      // Note: No progress indicator needed as that is expected to be a fast operation. Also\n      // we expect the command to handle console messaging and wouldn't want to clobber it.\n      // TODO: detect yarn berry and handle flag differences properly.\n      await ChildProcess.spawn(\n        yarnCommand.binary,\n        [...yarnCommand.args, 'ng-dev', 'release', 'precheck'],\n        {\n          cwd: projectDir,\n          // Note: We pass the precheck information to the command through `stdin`\n          // because command line arguments are less reliable and have length limits.\n          input: JSON.stringify(precheckStdin),\n        },\n      );\n      Log.info(green(`  ✓   Executed release pre-checks for ${newVersion}`));\n    } catch (e) {\n      // The `spawn` invocation already prints all stdout/stderr, so we don't need re-print.\n      // To ease debugging in case of runtime exceptions, we still print the error to `debug`.\n      Log.debug(e);\n      Log.error(`  ✘   An error occurred while running release pre-checks.`);\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `yarn install` command in order to install dependencies for\n   * the configured project with the currently checked out revision.\n   */\n  static async invokeYarnInstall(projectDir: string): Promise {\n    // Note: We cannot use `yarn` directly as command because we might operate in\n    // a different publish branch and the current `PATH` will point to the Yarn version\n    // that invoked the release tool. More details in the function description.\n    const yarnCommand = await resolveYarnScriptForProject(projectDir);\n\n    try {\n      // Note: No progress indicator needed as that is the responsibility of the command.\n      // TODO: Consider using an Ora spinner instead to ensure minimal console output.\n      await ChildProcess.spawn(\n        yarnCommand.binary,\n        [\n          ...yarnCommand.args,\n          'install',\n          ...(yarnCommand.legacy ? ['--frozen-lockfile', '--non-interactive'] : ['--immutable']),\n        ],\n        {cwd: projectDir},\n      );\n      Log.info(green('  ✓   Installed project dependencies.'));\n    } catch (e) {\n      Log.error(e);\n      Log.error('  ✘   An error occurred while installing dependencies.');\n      throw new FatalReleaseActionError();\n    }\n  }\n\n  /**\n   * Invokes the `yarn bazel run @npm2//:sync` command in order\n   * to refresh Aspect lock files.\n   */\n  static async invokeBazelUpdateAspectLockFiles(projectDir: string): Promise {\n    const spinner = new Spinner('Updating Aspect lock files');\n\n    try {\n      await ChildProcess.spawn(getBazelBin(), ['run', '@npm2//:sync'], {\n        cwd: projectDir,\n        mode: 'silent',\n      });\n    } catch (e) {\n      // Note: Gracefully handling these errors because `sync` command\n      // alway exits with a non-zero exit code.\n      Log.debug(e);\n    }\n\n    spinner.success(green(' Updated Aspect `rules_js` lock files.'));\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GitClient} from '../../utils/git/git-client.js';\n\n/** State of a pull request in Github. */\nexport type PullRequestState = 'merged' | 'unknown';\n\n/**\n * Gets whether a given pull request has been merged.\n *\n * Note: There are situations where GitHub still processes the merging or\n * closing action and temporarily this function would return `false`. Make\n * sure to account for this when logic relies on this method.\n *\n * More details here: https://github.com/angular/angular/pull/40181.\n *\n * @throws May throw Github API request errors if e.g. a pull request\n *   cannot be found, or the repository is not existing/visible.\n */\nexport async function isPullRequestMerged(api: GitClient, id: number): Promise {\n  const {data} = await api.github.pulls.get({...api.remoteParams, pull_number: id});\n  if (data.merged) {\n    return true;\n  }\n  return await isPullRequestClosedWithAssociatedCommit(api, id);\n}\n\n/**\n * Whether the pull request has been closed with an associated commit. This is usually\n * the case if a PR has been merged using the autosquash merge script strategy. Since\n * the merge is not fast-forward, Github does not consider the PR as merged and instead\n * shows the PR as closed. See for example: https://github.com/angular/angular/pull/37918.\n */\nasync function isPullRequestClosedWithAssociatedCommit(api: GitClient, id: number) {\n  const events = await api.github.paginate(api.github.issues.listEvents, {\n    ...api.remoteParams,\n    issue_number: id,\n  });\n  // Iterate through the events of the pull request in reverse. We want to find the most\n  // recent events and check if the PR has been closed with a commit associated with it.\n  // If the PR has been closed through a commit, we assume that the PR has been merged\n  // using the autosquash merge strategy. For more details. See the `AutosquashMergeStrategy`.\n  for (let i = events.length - 1; i >= 0; i--) {\n    const {event, commit_id} = events[i];\n    // If we come across a \"reopened\" event, we abort looking for referenced commits. Any\n    // commits that closed the PR before, are no longer relevant and did not close the PR.\n    if (event === 'reopened') {\n      return false;\n    }\n    // If a `closed` event is captured with a commit assigned, then we assume that\n    // this PR has been merged properly.\n    if (event === 'closed' && commit_id) {\n      return true;\n    }\n    // If the PR has been referenced by a commit, check if the commit closes this pull\n    // request. Note that this is needed besides checking `closed` as PRs could be merged\n    // into any non-default branch where the `Closes <..>` keyword does not work and the PR\n    // is simply closed without an associated `commit_id`. For more details see:\n    // https://docs.github.com/en/enterprise/2.16/user/github/managing-your-work-on-github/closing-issues-using-keywords#:~:text=non-default.\n    if (\n      event === 'referenced' &&\n      commit_id &&\n      (await isCommitClosingPullRequest(api, commit_id, id))\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/** Checks whether the specified commit is closing the given pull request. */\nasync function isCommitClosingPullRequest(api: GitClient, sha: string, id: number) {\n  const {data} = await api.github.repos.getCommit({...api.remoteParams, ref: sha});\n  // Matches the closing keyword supported in commit messages. See:\n  // https://docs.github.com/en/enterprise/2.16/user/github/managing-your-work-on-github/closing-issues-using-keywords.\n  return data.commit.message.match(\n    new RegExp(`(?:close[sd]?|fix(?:e[sd]?)|resolve[sd]?):? #${id}(?!\\\\d)`, 'i'),\n  );\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {bold, green, Log} from '../../utils/logging.js';\nimport {isGithubApiError} from '../../utils/git/github.js';\n\nimport {PullRequest} from './actions.js';\nimport {isPullRequestMerged} from './pull-request-state.js';\nimport {Prompt} from '../../utils/prompt.js';\n\n/**\n * Prints the pull request to the console and informs the user about\n * the process of getting the pull request merged.\n *\n * The user will then be prompted, allowing the user to initiate the\n * merging. The tool will then attempt to merge the pull request\n * automatically.\n */\nexport async function promptToInitiatePullRequestMerge(\n  git: AuthenticatedGitClient,\n  {id, url}: PullRequest,\n): Promise {\n  Log.info();\n  Log.info();\n  Log.info(green(bold(`      Pull request #${id} is sent out for review: ${url}`)));\n  Log.warn(bold(`      Do not merge it manually. The tool will automatically merge it.`));\n  Log.info('');\n  Log.warn(`      The tool is ${bold('not')} ensuring that all tests pass. Branch protection`);\n  Log.warn('      rules always apply, but other non-required checks can be skipped.');\n  Log.info('');\n  Log.info(`      If you think it is ready (i.e. has the necessary approvals), you can continue`);\n  Log.info(`      by confirming the prompt. The tool will then auto-merge the PR if possible.`);\n  Log.info('');\n\n  // We will loop forever until the PR has been merged. If a user wants to abort,\n  // the script needs to be aborted e.g. using CTRL + C.\n  while (true) {\n    if (!(await Prompt.confirm({message: `Do you want to continue with merging PR #${id}?`}))) {\n      continue;\n    }\n\n    Log.info(`      Attempting to merge pull request #${id}..`);\n    Log.info(``);\n\n    try {\n      // Special logic that will check if the pull request is already merged. This should never\n      // happen but there may be situations where a caretaker merged manually. We wouldn't want\n      // the process to stuck forever here but continue given the caretaker explicitly confirming\n      // that they would like to continue (assuming they expect the PR to be recognized as merged).\n      if (await gracefulCheckIfPullRequestIsMerged(git, id)) {\n        break;\n      }\n\n      const {data, status, headers} = await git.github.pulls.merge({\n        ...git.remoteParams,\n        pull_number: id,\n        merge_method: 'rebase',\n      });\n\n      // If merge is successful, break out of the loop and complete the function.\n      if (data.merged) {\n        break;\n      }\n\n      // Octokit throws for non-200 status codes, but there may be unknown cases\n      // where `merged` is false but we have a 200 status code. We handle this here\n      // and allow for the merge to be re-attempted.\n      Log.error(`  ✘   Pull request #${id} could not be merged.`);\n      Log.error(`      ${data.message} (${status})`);\n      Log.debug(data, status, headers);\n    } catch (e) {\n      if (!isGithubApiError(e)) {\n        throw e;\n      }\n\n      // If there is an request error, e.g. 403 permissions or insufficient permissions\n      // due to active branch protections, then we want to print the message and allow\n      // for the user to re-attempt the merge (by continuing in the loop).\n      Log.error(`  ✘   Pull request #${id} could not be merged.`);\n      Log.error(`      ${e.message} (${e.status})`);\n      Log.debug(e);\n    }\n  }\n\n  Log.info(green(`  ✓   Pull request #${id} has been merged.`));\n}\n\n/** Gracefully checks whether the given pull request has been merged. */\nasync function gracefulCheckIfPullRequestIsMerged(\n  git: AuthenticatedGitClient,\n  id: number,\n): Promise {\n  try {\n    return await isPullRequestMerged(git, id);\n  } catch (e) {\n    if (isGithubApiError(e)) {\n      Log.debug(`Unable to determine if pull request #${id} has been merged.`);\n      Log.debug(e);\n      return false;\n    }\n    throw e;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/**\n * Gets whether the given version is the first `-next` pre-release.\n * e.g. returns `true` for `v14.0.0-next.0`, but not for `v14.0.0-next.1`.\n */\nexport function isFirstNextPrerelease(v: semver.SemVer): boolean {\n  return v.prerelease[0] === 'next' && v.prerelease[1] === 0;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\n/**\n * Increments a specified SemVer version. Compared to the original increment in SemVer,\n * the version is cloned to not modify the original version instance.\n */\nexport function semverInc(\n  version: semver.SemVer,\n  release: semver.ReleaseType,\n  identifier?: string,\n) {\n  const clone = new semver.SemVer(version.version);\n  return clone.inc(release, identifier);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Prompt} from '../../../utils/prompt.js';\nimport {semverInc} from '../../../utils/semver.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {\n  fetchLongTermSupportBranchesFromNpm,\n  LtsBranch,\n} from '../../versioning/long-term-support.js';\nimport {ReleaseAction} from '../actions.js';\n\n/**\n * Release action that cuts a new patch release for an active release-train in the long-term\n * support phase. The patch segment is incremented. The changelog is generated for the new\n * patch version, but also needs to be cherry-picked into the next development branch.\n */\nexport class CutLongTermSupportPatchAction extends ReleaseAction {\n  /** Promise resolving an object describing long-term support branches. */\n  ltsBranches = fetchLongTermSupportBranchesFromNpm(this.config);\n\n  override async getDescription() {\n    const {active} = await this.ltsBranches;\n    return `Cut a new release for an active LTS branch (${active.length} active).`;\n  }\n\n  override async perform() {\n    const ltsBranch = await this._promptForTargetLtsBranch();\n    const newVersion = semverInc(ltsBranch.version, 'patch');\n    const compareVersionForReleaseNotes = ltsBranch.version;\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        ltsBranch.name,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      ltsBranch.name,\n      ltsBranch.npmDistTag,\n      {showAsLatestOnGitHub: false},\n    );\n    await this.cherryPickChangelogIntoNextBranch(releaseNotes, ltsBranch.name);\n  }\n\n  /** Prompts the user to select an LTS branch for which a patch should but cut. */\n  private async _promptForTargetLtsBranch(): Promise {\n    const {active, inactive} = await this.ltsBranches;\n    const activeBranchChoices: {name: string; value: LtsBranch | null}[] = active.map((branch) =>\n      this._getChoiceForLtsBranch(branch),\n    );\n    const inactiveBranchChoices = inactive.map((branch) => this._getChoiceForLtsBranch(branch));\n\n    // If there are inactive LTS branches, we allow them to be selected. In some situations,\n    // patch releases are still cut for inactive LTS branches. e.g. when the LTS duration\n    // has been increased due to exceptional events ()\n    if (inactive.length !== 0) {\n      activeBranchChoices.push({name: 'Inactive LTS versions (not recommended)', value: null});\n    }\n\n    const activeLtsBranch = await Prompt.select({\n      message: 'Please select a version for which you want to cut an LTS patch',\n      choices: activeBranchChoices,\n    });\n    if (activeLtsBranch) {\n      return activeLtsBranch;\n    }\n    return await Prompt.select({\n      message: 'Please select an inactive LTS version for which you want to cut an LTS patch',\n      choices: inactiveBranchChoices,\n    });\n  }\n\n  /** Gets an inquirer choice for the given LTS branch. */\n  private _getChoiceForLtsBranch(branch: LtsBranch): {name: string; value: LtsBranch} {\n    return {name: `v${branch.version.major} (from ${branch.name})`, value: branch};\n  }\n\n  static override async isActive(_active: ActiveReleaseTrains) {\n    // LTS patch versions can be only cut if there are release trains in LTS phase.\n    // This action is always selectable as we support publishing of old LTS branches,\n    // and have prompt for selecting an LTS branch when the action performs.\n    return true;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {semverInc} from '../../../utils/semver.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {ReleaseAction} from '../actions.js';\n\n/**\n * Release action that cuts a new patch release for the current latest release-train version\n * branch (i.e. the patch branch). The patch segment is incremented. The changelog is generated\n * for the new patch version, but also needs to be cherry-picked into the next development branch.\n */\nexport class CutNewPatchAction extends ReleaseAction {\n  private _previousVersion = this.active.latest.version;\n  private _newVersion = semverInc(this._previousVersion, 'patch');\n\n  override async getDescription() {\n    const {branchName} = this.active.latest;\n    const newVersion = this._newVersion;\n    return `Cut a new patch release for the \"${branchName}\" branch (v${newVersion}).`;\n  }\n\n  override async perform() {\n    const {branchName} = this.active.latest;\n    const newVersion = this._newVersion;\n    const compareVersionForReleaseNotes = this._previousVersion;\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        branchName,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      branchName,\n      'latest',\n      {showAsLatestOnGitHub: true},\n    );\n    await this.cherryPickChangelogIntoNextBranch(releaseNotes, branchName);\n  }\n\n  static override async isActive(_active: ActiveReleaseTrains) {\n    // Patch versions can be cut at any time. See:\n    // https://hackmd.io/2Le8leq0S6G_R5VEVTNK9A#Release-prompt-options.\n    return true;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {semverInc} from '../../../../utils/semver.js';\nimport {NpmDistTag} from '../../../versioning/npm-registry.js';\nimport {ReleaseTrain} from '../../../versioning/release-trains.js';\nimport {ReleaseAction} from '../../actions.js';\n\n/**\n * Base action that cuts a pre-release increment for a given release train.\n * A minor or major can have an arbitrary amount of next pre-releases.\n *\n * This base action is used for supporting pre-releases of the `next` train,\n * or an exceptional minor train, or an in-progress FF/RC train. Also used\n * for cutting first release-candidates.\n */\nexport abstract class CutPrereleaseBaseAction extends ReleaseAction {\n  abstract releaseTrain: ReleaseTrain;\n  abstract npmDistTag: NpmDistTag;\n\n  /**\n   * Whether the existing version of the release train should be used. This\n   * functionality exists to allow for cases where a release-train is newly\n   * created and uses a version that is \"to be released\".\n   *\n   * This can happen when an exceptional minor branch is created, or when we\n   * branch off from `main` and bump the version for the upcoming version-\n   * which we do not publish immediately.\n   *\n   * If the promise returns `true`- the same version is used. If `false`,\n   * the simple pre-release increment is used. e.g. `next.1` becomes `next.2`.\n   */\n  abstract shouldUseExistingVersion: Promise;\n\n  /**\n   * Compare version used for the release notes generation. This is configurable\n   * because there is no obvious choice for a compare version if `shouldUseExistingVersion`\n   * would evaluate to `true`.\n   */\n  abstract releaseNotesCompareVersion: Promise;\n\n  override async getDescription() {\n    const branch = this._getBranch();\n    const newVersion = await this.getNewVersion();\n    return `Cut a new pre-release for the \"${branch}\" branch (v${newVersion}).`;\n  }\n\n  // This action is also used for cutting a first release candidate. To avoid duplication,\n  // we expose the canonical description here (especially since it's an actual pre-release).\n  async getReleaseCandidateDescription() {\n    const branch = this._getBranch();\n    const newVersion = await this.getNewVersion();\n    return `Cut a first release-candidate for the \"${branch}\" branch (v${newVersion}).`;\n  }\n\n  override async perform() {\n    const branchName = this._getBranch();\n    const newVersion = await this.getNewVersion();\n    const compareVersionForReleaseNotes = await this.releaseNotesCompareVersion;\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        branchName,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      branchName,\n      this.npmDistTag,\n      {showAsLatestOnGitHub: false},\n    );\n\n    // If the pre-release has been cut from a train that is not corresponding to\n    // the next release-train, cherry-pick the changelog into the primary development\n    // branch (i.e. the next branch).\n    if (this.releaseTrain !== this.active.next) {\n      await this.cherryPickChangelogIntoNextBranch(releaseNotes, branchName);\n    }\n  }\n\n  /**\n   * Gets the new version that will be published.\n   * Note: Might be overridden by derived actions for e.g. cutting an RC.\n   */\n  async getNewVersion(): Promise {\n    if (await this.shouldUseExistingVersion) {\n      return this.releaseTrain.version;\n    } else {\n      return semverInc(this.releaseTrain.version, 'prerelease');\n    }\n  }\n\n  private _getBranch(): string {\n    return this.releaseTrain.branchName;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {isVersionPublishedToNpm} from '../../versioning/npm-registry.js';\nimport {isFirstNextPrerelease} from '../../versioning/prerelease-version.js';\nimport {CutPrereleaseBaseAction} from './shared/cut-prerelease.js';\n\n/**\n * Release action that allows NPM `@next` pre-releases. The action will\n * always be active and operate on the an ongoing FF/RC train, or the\n * next release-train.\n *\n * The action will bump the pre-release version to the next increment\n * and publish it to NPM along with the `@npm` dist tag.\n */\nexport class CutNpmNextPrereleaseAction extends CutPrereleaseBaseAction {\n  releaseTrain = this.active.releaseCandidate ?? this.active.next;\n  npmDistTag = 'next' as const;\n\n  shouldUseExistingVersion = (async () => {\n    // Special-case where the version in the `next` release-train is not published yet. This\n    // happens when we recently branched off for feature-freeze. We already bump the version to\n    // the next minor or major, but do not publish immediately. Cutting a release immediately\n    // would be not helpful as there are no other changes than in the feature-freeze branch. If\n    // we happen to detect this case, we stage the release as usual but do not increment the version.\n    if (this.releaseTrain === this.active.next && isFirstNextPrerelease(this.active.next.version)) {\n      return !(await isVersionPublishedToNpm(this.active.next.version, this.config));\n    }\n    return false;\n  })();\n\n  releaseNotesCompareVersion: Promise = (async () => {\n    // If we happen to detect the case from above, we use the most recent patch version as base\n    // for building release notes. This is better than finding the \"next\" version when we\n    // branched off as it also prevents us from duplicating many commits that have already\n    // landed in the new patch that was worked on when we branched off.\n    // For more details see the release notes generation and commit range determination.\n    if (this.releaseTrain === this.active.next && (await this.shouldUseExistingVersion)) {\n      return this.active.latest.version;\n    }\n    return this.releaseTrain.version;\n  })();\n\n  static override async isActive(_active: ActiveReleaseTrains) {\n    // Pre-releases for the `next` NPM dist tag can always be cut. A NPM next\n    // release could always either occur for an in-progress FF/RCm, or `next`.\n    return true;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {semverInc} from '../../../utils/semver.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {CutNpmNextPrereleaseAction} from './cut-npm-next-prerelease.js';\n\n/**\n * Release action that allows for the NPM `@next` first release-candidate. The\n * action is only active when there is a current feature-freeze going on.\n *\n * The action will bump the pre-release version from the `-next` prerelease to\n * the first release-candidate. The action will then become inactive again as\n * additional RC pre-releases would be handled by `CutNpmNextPrereleaseAction` then.\n *\n * Additional note: There is a separate action allowing in-progress minor's to\n * go directly into the RC phase from the `next` train. See `MoveNextIntoReleaseCandidate`.\n */\nexport class CutNpmNextReleaseCandidateAction extends CutNpmNextPrereleaseAction {\n  override async getDescription(): Promise {\n    return await super.getReleaseCandidateDescription();\n  }\n\n  override async getNewVersion(): Promise {\n    return semverInc(this.releaseTrain.version, 'prerelease', 'rc');\n  }\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    // A NPM `@next` release-candidate can only be cut if we are in feature-freeze.\n    return active.isFeatureFreeze();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {getLtsNpmDistTagOfMajor} from '../../versioning/long-term-support.js';\nimport {NpmDistTag} from '../../versioning/npm-registry.js';\nimport {ReleaseTrain} from '../../versioning/release-trains.js';\nimport {exceptionalMinorPackageIndicator} from '../../versioning/version-branches.js';\nimport {FatalReleaseActionError} from '../actions-error.js';\nimport {ReleaseAction, StagingOptions} from '../actions.js';\nimport {ExternalCommands} from '../external-commands.js';\n\n/**\n * Release action that cuts a stable version for the current release-train\n * in the \"release-candidate\" phase.\n *\n * There are only two possible release-trains that can ever be in the RC phase.\n * This is either an exceptional-minor or the dedicated FF/RC release-train.\n */\nexport class CutStableAction extends ReleaseAction {\n  private _train = (this.active.exceptionalMinor ?? this.active.releaseCandidate)!;\n  private _branch = this._train.branchName;\n  private _newVersion = this._computeNewVersion(this._train);\n  private _isNewMajor = this._train.isMajor;\n\n  override async getDescription() {\n    if (this._isNewMajor) {\n      return `Cut a stable release for the \"${this._branch}\" branch — published as \\`@next\\` (v${this._newVersion}).`;\n    } else {\n      return `Cut a stable release for the \"${this._branch}\" branch — published as \\`@latest\\` (v${this._newVersion}).`;\n    }\n  }\n\n  override async perform() {\n    // This should never happen, but we add a sanity check just to be sure.\n    if (this._isNewMajor && this._train === this.active.exceptionalMinor) {\n      throw new FatalReleaseActionError('Unexpected major release of an `exceptional-minor`.');\n    }\n\n    const branchName = this._branch;\n    const newVersion = this._newVersion;\n\n    // When cutting a new stable minor/major or an exceptional minor, we want to build the\n    // notes capturing all changes that have landed in the individual `-next`/RC pre-releases.\n    const compareVersionForReleaseNotes = this.active.latest.version;\n\n    // We always remove a potential exceptional-minor indicator. If we would\n    // publish a stable version of an exceptional minor here- it would leave\n    // the exceptional minor train and the indicator should be removed.\n    const stagingOpts: StagingOptions = {\n      updatePkgJsonFn: (pkgJson) => {\n        pkgJson[exceptionalMinorPackageIndicator] = undefined;\n      },\n    };\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        branchName,\n        stagingOpts,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      branchName,\n      this._getNpmDistTag(),\n      {showAsLatestOnGitHub: true},\n    );\n\n    // If we turned an exceptional minor into the new patch, the temporary\n    // NPM dist tag for the exceptional minor can be deleted. For more details\n    // see the `CutExceptionalMinorPrereleaseAction` class.\n    if (this._train === this.active.exceptionalMinor) {\n      await ExternalCommands.invokeDeleteNpmDistTag(\n        this.projectDir,\n        'do-not-use-exceptional-minor',\n      );\n    }\n\n    // If a new major version is published and becomes the \"latest\" release-train, we need\n    // to set the LTS npm dist tag for the previous latest release-train (the current patch).\n    if (this._isNewMajor) {\n      const previousPatch = this.active.latest;\n      const ltsTagForPatch = getLtsNpmDistTagOfMajor(previousPatch.version.major);\n\n      // Instead of directly setting the NPM dist tags, we invoke the ng-dev command for\n      // setting the NPM dist tag to the specified version. We do this because release NPM\n      // packages could be different in the previous patch branch, and we want to set the\n      // LTS tag for all packages part of the last major. It would not be possible to set the\n      // NPM dist tag for new packages part of the released major, nor would it be acceptable\n      // to skip the LTS tag for packages which are no longer part of the new major.\n      await this.checkoutUpstreamBranch(previousPatch.branchName);\n      await this.installDependenciesForCurrentBranch();\n\n      await ExternalCommands.invokeSetNpmDist(\n        this.projectDir,\n        ltsTagForPatch,\n        previousPatch.version,\n        {\n          // We do not intend to tag experimental NPM packages as LTS.\n          skipExperimentalPackages: true,\n        },\n      );\n    }\n\n    await this.cherryPickChangelogIntoNextBranch(releaseNotes, branchName);\n  }\n\n  private _getNpmDistTag(): NpmDistTag {\n    // If a new major version is published, we publish to the `next` NPM dist tag temporarily.\n    // We do this because for major versions, we want all main Angular projects to have their\n    // new major become available at the same time. Publishing immediately to the `latest` NPM\n    // dist tag could cause inconsistent versions when users install packages with `@latest`.\n    // For example: Consider Angular Framework releases v12. CLI and Components would need to\n    // wait for that release to complete. Once done, they can update their dependencies to point\n    // to v12. Afterwards they could start the release process. In the meanwhile though, the FW\n    // dependencies were already available as `@latest`, so users could end up installing v12 while\n    // still having the older (but currently still latest) CLI version that is incompatible.\n    // The major release can be re-tagged to `latest` through a separate release action.\n    return this._isNewMajor ? 'next' : 'latest';\n  }\n\n  /** Gets the new stable version of the given release-train. */\n  private _computeNewVersion({version}: ReleaseTrain): semver.SemVer {\n    return semver.parse(`${version.major}.${version.minor}.${version.patch}`)!;\n  }\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    // -- Notes -- :\n    //   * A stable version can be cut for an active release-train currently in the\n    //     release-candidate phase.\n    //   * If there is an exceptional minor, **only** the exceptional minor considered\n    //     because it would be problematic if an in-progress RC would suddenly take over\n    //     while there is still an in-progress exceptional minor.\n    //   * It is impossible to directly release from feature-freeze phase into stable.\n    if (active.exceptionalMinor !== null) {\n      return active.exceptionalMinor.version.prerelease[0] === 'rc';\n    }\n    if (active.releaseCandidate !== null) {\n      return active.releaseCandidate.version.prerelease[0] === 'rc';\n    }\n    return false;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\nimport {isVersionPublishedToNpm} from '../../../versioning/npm-registry.js';\nimport {isFirstNextPrerelease} from '../../../versioning/prerelease-version.js';\nimport {CutPrereleaseBaseAction} from '../shared/cut-prerelease.js';\n\n/**\n * Release action that allows for `-next` pre-releases of an in-progress\n * exceptional minor. The action is active when there is an exceptional minor.\n *\n * The action will bump the pre-release version to the next increment\n * and publish it to NPM. Note that it would not be tagged on NPM as `@next`.\n */\nexport class CutExceptionalMinorPrereleaseAction extends CutPrereleaseBaseAction {\n  releaseTrain = this.active.exceptionalMinor!;\n\n  // An exceptional minor will never be released as `@next`. The NPM next dist tag\n  // will be reserved for the normal FF/RC or `next` release trains. Specifically\n  // we cannot override the `@next` NPM dist tag when it already points to a more\n  // recent major. This would most commonly be the case, and in the other edge-case\n  // of where no NPM next release has occurred yet- arguably an exceptional minor\n  // should not prevent actual pre-releases for an on-going FF/RC or the next branch.\n  // Note that NPM always requires a dist-tag, so we explicitly have one dedicated\n  // for exceptional minors. This tag could be deleted in the future.\n  npmDistTag = 'do-not-use-exceptional-minor' as const;\n\n  shouldUseExistingVersion = (async () => {\n    // If an exceptional minor branch has just been created, the actual version\n    // will not be published directly. To account for this case, based on if the\n    // version is already published or not, the version is NOT incremented.\n    return (\n      isFirstNextPrerelease(this.releaseTrain.version) &&\n      !(await isVersionPublishedToNpm(this.releaseTrain.version, this.config))\n    );\n  })();\n\n  releaseNotesCompareVersion: Promise = (async () => {\n    if (await this.shouldUseExistingVersion) {\n      return this.active.latest.version;\n    }\n    return this.releaseTrain.version;\n  })();\n\n  override async getDescription(): Promise {\n    // Make it more obvious that this action is for an exceptional minor.\n    return `Exceptional Minor: ${await super.getDescription()}`;\n  }\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    return active.exceptionalMinor !== null;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {semverInc} from '../../../../utils/semver.js';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\nimport {CutExceptionalMinorPrereleaseAction} from './cut-exceptional-minor-prerelease.js';\n\n/**\n * Release action that allows for the first exceptional minor release-candidate. The\n * action is only active when there is an in-progress exceptional minor that\n * is still in the `-next` pre-release phase.\n *\n * The action will bump the pre-release version from the `-next` prerelease to\n * the first release-candidate. The action will then become inactive again as\n * additional RC pre-releases would be handled by `CutExceptionalMinorPrereleaseAction`\n * then.\n */\nexport class CutExceptionalMinorReleaseCandidateAction extends CutExceptionalMinorPrereleaseAction {\n  override async getDescription(): Promise {\n    // Use the RC description and make it clear that this action is for an exceptional minor.\n    return `Exceptional Minor: ${await super.getReleaseCandidateDescription()}`;\n  }\n\n  override async getNewVersion(): Promise {\n    return semverInc(this.releaseTrain.version, 'prerelease', 'rc');\n  }\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    return (\n      // If there is an exceptional minor and we are still in `-next` pre-releases,\n      // the first RC pre-release can be cut.\n      active.exceptionalMinor !== null && active.exceptionalMinor.version.prerelease[0] === 'next'\n    );\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {workspaceRelativePackageJsonPath} from '../../../../utils/constants.js';\nimport {green, Log} from '../../../../utils/logging.js';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\nimport {exceptionalMinorPackageIndicator} from '../../../versioning/version-branches.js';\nimport {ReleaseAction} from '../../actions.js';\n\n/**\n * Release action for initiating an exceptional minor release-train. This\n * action is active when a new major is already in-progress but another\n * minor is suddenly needed for the previous major.\n *\n * The action will create a new branch based on the existing \"latest\"\n * release-train. No release will be published immediately to allow for\n * changes to be made. Once changes have been made, an exceptional minor\n * can switch into the `release-candidate` phase, and then become \"latest\".\n *\n * More details can be found here: http://go/angular-exceptional-minor.\n */\nexport class PrepareExceptionalMinorAction extends ReleaseAction {\n  private _patch = this.active.latest;\n  private _baseBranch = this._patch.branchName;\n  private _patchVersion = this._patch.version;\n  private _newBranch = `${this._patchVersion.major}.${this._patchVersion.minor + 1}.x`;\n  private _newVersion = semver.parse(\n    `${this._patchVersion.major}.${this._patchVersion.minor + 1}.0-next.0`,\n  )!;\n\n  async getDescription(): Promise {\n    return `Prepare an exceptional minor based on the existing \"${this._baseBranch}\" branch (${this._newBranch}).`;\n  }\n\n  async perform(): Promise {\n    const latestBaseBranchSha = await this.getLatestCommitOfBranch(this._baseBranch);\n\n    await this.assertPassingGithubStatus(latestBaseBranchSha, this._baseBranch);\n\n    await this.checkoutUpstreamBranch(this._baseBranch);\n    await this.createLocalBranchFromHead(this._newBranch);\n    await this.updateProjectVersion(this._newVersion, (pkgJson) => {\n      pkgJson[exceptionalMinorPackageIndicator] = true;\n    });\n\n    await this.createCommit(`build: prepare exceptional minor branch: ${this._newBranch}`, [\n      workspaceRelativePackageJsonPath,\n      ...this.getAspectLockFiles(),\n    ]);\n\n    await this.pushHeadToRemoteBranch(this._newBranch);\n\n    Log.info(green(`  ✓   Version branch \"${this._newBranch}\" created.`));\n    Log.info(green(`      Exceptional minor release-train is now active.`));\n  }\n\n  static override async isActive(active: ActiveReleaseTrains): Promise {\n    if (active.exceptionalMinor !== null) {\n      return false;\n    }\n    // If a FF/RC train is in-progress and it's for a major, we allow\n    // for an exceptional minor.\n    if (active.releaseCandidate !== null) {\n      return active.releaseCandidate.isMajor;\n    }\n    // Otherwise if there is no FF/RC train and `next` is for a major,\n    // an exceptional minor is allowed.\n    return active.next.isMajor;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {green, Log} from '../../../../utils/logging.js';\nimport {workspaceRelativePackageJsonPath} from '../../../../utils/constants.js';\nimport {ReleaseNotes, workspaceRelativeChangelogPath} from '../../../notes/release-notes.js';\nimport {PullRequest} from '../../actions.js';\nimport {\n  getCommitMessageForExceptionalNextVersionBump,\n  getReleaseNoteCherryPickCommitMessage,\n} from '../../commit-message.js';\nimport {CutNpmNextPrereleaseAction} from '../cut-npm-next-prerelease.js';\nimport {CutNpmNextReleaseCandidateAction} from '../cut-npm-next-release-candidate.js';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\n\n/**\n * Base action that can be used to move the next release-train into the dedicated FF/RC\n * release-train while also cutting a release to move the train into the `feature-freeze`\n * or `release-candidate` phase.\n *\n * This means that a new version branch is created based on the next branch, and a new\n * pre-release (either RC or another `next`) is cut- indicating the new phase.\n */\nexport abstract class BranchOffNextBranchBaseAction extends CutNpmNextPrereleaseAction {\n  /** Phase which the release-train currently in the `next` phase will move into. */\n  abstract newPhaseName: 'feature-freeze' | 'release-candidate';\n\n  // Instances of the action for cutting a NPM next pre-releases. We will re-use\n  // these for determining the \"new versions\" and \"release notes comparison version\".\n  // This helps avoiding duplication, especially since there are is some special logic.\n  private _nextPrerelease = new CutNpmNextPrereleaseAction(\n    new ActiveReleaseTrains({...this.active, releaseCandidate: null}),\n    this.git,\n    this.config,\n    this.projectDir,\n  );\n  private _rcPrerelease = new CutNpmNextReleaseCandidateAction(\n    new ActiveReleaseTrains({...this.active, releaseCandidate: this.active.next}),\n    this.git,\n    this.config,\n    this.projectDir,\n  );\n\n  override async getDescription() {\n    const {branchName} = this.active.next;\n    const newVersion = await this._computeNewVersion();\n    return `Move the \"${branchName}\" branch into ${this.newPhaseName} phase (v${newVersion}).`;\n  }\n\n  override async perform() {\n    const nextBranchName = this.active.next.branchName;\n    const compareVersionForReleaseNotes = await this._computeReleaseNoteCompareVersion();\n    const newVersion = await this._computeNewVersion();\n    const newBranch = `${newVersion.major}.${newVersion.minor}.x`;\n    const beforeStagingSha = await this.getLatestCommitOfBranch(nextBranchName);\n\n    // Verify the current next branch has a passing status, before we branch off.\n    await this.assertPassingGithubStatus(beforeStagingSha, nextBranchName);\n\n    // Branch-off the next branch into a new version branch.\n    await this._createNewVersionBranchFromNext(newBranch);\n\n    // Stage the new version for the newly created branch, and push changes to a\n    // fork in order to create a staging pull request. Note that we re-use the newly\n    // created branch instead of re-fetching from the upstream.\n    const {pullRequest, releaseNotes, builtPackagesWithInfo} =\n      await this.stageVersionForBranchAndCreatePullRequest(\n        newVersion,\n        compareVersionForReleaseNotes,\n        newBranch,\n      );\n\n    // Wait for the staging PR to be merged. Then publish the feature-freeze next pre-release. Finally,\n    // cherry-pick the release notes into the next branch in combination with bumping the version to\n    // the next minor too.\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(builtPackagesWithInfo, releaseNotes, beforeStagingSha, newBranch, 'next', {\n      showAsLatestOnGitHub: false,\n    });\n\n    const branchOffPullRequest = await this._createNextBranchUpdatePullRequest(\n      releaseNotes,\n      newVersion,\n    );\n    await this.promptAndWaitForPullRequestMerged(branchOffPullRequest);\n  }\n\n  /** Computes the new version for the release-train being branched-off. */\n  private async _computeNewVersion(): Promise {\n    if (this.newPhaseName === 'feature-freeze') {\n      return this._nextPrerelease.getNewVersion();\n    } else {\n      return this._rcPrerelease.getNewVersion();\n    }\n  }\n\n  /** Gets the release notes compare version for the branching-off release. */\n  private async _computeReleaseNoteCompareVersion(): Promise {\n    // Regardless of the new phase, the release notes compare version should\n    // always be the one as if a pre-release is cut on the `next` branch.\n    // We cannot rely on the `CutNpmNextReleaseCandidateAction` here because it\n    // assumes a published release for the train. This is not guaranteed.\n    return await this._nextPrerelease.releaseNotesCompareVersion;\n  }\n\n  /** Creates a new version branch from the next branch. */\n  private async _createNewVersionBranchFromNext(newBranch: string) {\n    const {branchName: nextBranch} = this.active.next;\n    await this.checkoutUpstreamBranch(nextBranch);\n    await this.createLocalBranchFromHead(newBranch);\n    await this.pushHeadToRemoteBranch(newBranch);\n    Log.info(green(`  ✓   Version branch \"${newBranch}\" created.`));\n  }\n\n  /**\n   * Creates a pull request for the next branch that bumps the version to the next\n   * minor, and cherry-picks the changelog for the newly branched-off release-candidate\n   * or feature-freeze version.\n   */\n  private async _createNextBranchUpdatePullRequest(\n    releaseNotes: ReleaseNotes,\n    newVersion: semver.SemVer,\n  ): Promise {\n    const {branchName: nextBranch, version} = this.active.next;\n    // We increase the version for the next branch to the next minor. The team can decide\n    // later if they want next to be a major through the `Configure Next as Major` release action.\n    const newNextVersion = semver.parse(`${version.major}.${version.minor + 1}.0-next.0`)!;\n    const bumpCommitMessage = getCommitMessageForExceptionalNextVersionBump(newNextVersion);\n\n    await this.checkoutUpstreamBranch(nextBranch);\n    await this.updateProjectVersion(newNextVersion);\n\n    // Create an individual commit for the next version bump. The changelog should go into\n    // a separate commit that makes it clear where the changelog is cherry-picked from.\n    await this.createCommit(bumpCommitMessage, [\n      workspaceRelativePackageJsonPath,\n      ...this.getAspectLockFiles(),\n    ]);\n\n    await this.prependReleaseNotesToChangelog(releaseNotes);\n\n    const commitMessage = getReleaseNoteCherryPickCommitMessage(releaseNotes.version);\n\n    await this.createCommit(commitMessage, [workspaceRelativeChangelogPath]);\n\n    let nextPullRequestMessage =\n      `The previous \"next\" release-train has moved into the ` +\n      `${this.newPhaseName} phase. This PR updates the next branch to the subsequent ` +\n      `release-train.\\n\\nAlso this PR cherry-picks the changelog for ` +\n      `v${newVersion} into the ${nextBranch} branch so that the changelog is up to date.`;\n\n    const nextUpdatePullRequest = await this.pushChangesToForkAndCreatePullRequest(\n      nextBranch,\n      `next-release-train-${newNextVersion}`,\n      `Update next branch to reflect new release-train \"v${newNextVersion}\".`,\n      nextPullRequestMessage,\n    );\n\n    Log.info(green(`  ✓   Pull request for updating the \"${nextBranch}\" branch has been created.`));\n\n    return nextUpdatePullRequest;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ActiveReleaseTrains} from '../../versioning/index.js';\n\nimport {BranchOffNextBranchBaseAction} from './shared/branch-off-next-branch.js';\n\n/**\n * Release action that moves the next release-train into the feature-freeze phase. This means\n * that a new version branch is created from the next branch, and a new next pre-release is\n * cut indicating the started feature-freeze.\n */\nexport class MoveNextIntoFeatureFreezeAction extends BranchOffNextBranchBaseAction {\n  override newPhaseName = 'feature-freeze' as const;\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    // A new feature-freeze branch can only be created if there is no active\n    // release-train in feature-freeze/release-candidate phase and the version\n    // currently in the `next` branch is for a major. The feature-freeze phase\n    // is not foreseen for minor versions.\n    return active.releaseCandidate === null && active.next.isMajor;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ActiveReleaseTrains} from '../../versioning/index.js';\n\nimport {BranchOffNextBranchBaseAction} from './shared/branch-off-next-branch.js';\n\n/**\n * Release action that moves the next release-train into the release-candidate phase. This means\n * that a new version branch is created from the next branch, and the first release candidate\n * version is cut indicating the new phase.\n */\nexport class MoveNextIntoReleaseCandidateAction extends BranchOffNextBranchBaseAction {\n  override newPhaseName = 'release-candidate' as const;\n\n  static override async isActive(active: ActiveReleaseTrains) {\n    // Directly switching a next release-train into the `release-candidate`\n    // phase is only allowed for minor releases. Major version always need to\n    // go through the `feature-freeze` phase.\n    return active.releaseCandidate === null && !active.next.isMajor;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\nimport {Log} from '../../../../utils/logging.js';\nimport {ActiveReleaseTrains} from '../../../versioning/active-release-trains.js';\nimport {getLtsNpmDistTagOfMajor} from '../../../versioning/long-term-support.js';\nimport {\n  convertVersionBranchToSemVer,\n  isVersionBranch,\n} from '../../../versioning/version-branches.js';\nimport {FatalReleaseActionError} from '../../actions-error.js';\nimport {ReleaseAction} from '../../actions.js';\nimport {Prompt} from '../../../../utils/prompt.js';\n\n/**\n * SPECIAL: Action should only be used by dev-infra members.\n *\n * Release action that cuts a new minor for an LTS major. The new LTS\n * minor branch is required to be created beforehand.\n */\nexport class SpecialCutLongTermSupportMinorAction extends ReleaseAction {\n  override async getDescription() {\n    return `SPECIAL: Cut a new release for an LTS minor.`;\n  }\n\n  override async perform() {\n    const ltsBranch = await this._askForVersionBranch('Please specify the target LTS branch:');\n    const compareVersionForReleaseNotes = semver.parse(\n      await Prompt.input({message: 'Compare version for release'}),\n    )!;\n\n    const newVersion = semver.parse(\n      `${ltsBranch.branchVersion.major}.${ltsBranch.branchVersion.minor}.0`,\n    )!;\n\n    const {pullRequest, releaseNotes, builtPackagesWithInfo, beforeStagingSha} =\n      await this.checkoutBranchAndStageVersion(\n        newVersion,\n        compareVersionForReleaseNotes,\n        ltsBranch.branch,\n      );\n\n    await this.promptAndWaitForPullRequestMerged(pullRequest);\n    await this.publish(\n      builtPackagesWithInfo,\n      releaseNotes,\n      beforeStagingSha,\n      ltsBranch.branch,\n      getLtsNpmDistTagOfMajor(newVersion.major),\n      {showAsLatestOnGitHub: false},\n    );\n    await this.cherryPickChangelogIntoNextBranch(releaseNotes, ltsBranch.branch);\n  }\n\n  private async _askForVersionBranch(message: string): Promise<{\n    branch: string;\n    branchVersion: semver.SemVer;\n  }> {\n    const branch = await Prompt.input({message});\n    if (!isVersionBranch(branch)) {\n      Log.error('Invalid release branch specified.');\n      throw new FatalReleaseActionError();\n    }\n\n    const branchVersion = convertVersionBranchToSemVer(branch);\n    if (branchVersion === null) {\n      Log.error('Could not parse version branch.');\n      throw new FatalReleaseActionError();\n    }\n    return {branch, branchVersion};\n  }\n\n  static override async isActive(_active: ActiveReleaseTrains) {\n    // Only enabled if explicitly enabled for dev-infra team.\n    return process.env['NG_DEV_SPECIAL_RELEASE_ACTIONS'] === '1';\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport semver from 'semver';\n\nimport {ReleaseConfig} from '../../config/index.js';\nimport {ActiveReleaseTrains} from '../../versioning/active-release-trains.js';\nimport {fetchProjectNpmPackageInfo} from '../../versioning/npm-registry.js';\nimport {ReleaseAction} from '../actions.js';\nimport {ExternalCommands} from '../external-commands.js';\nimport {getReleaseTagForVersion} from '../../versioning/version-tags.js';\n\n/**\n * Release action that tags the recently published major as latest within the NPM\n * registry. Major versions are published to the `next` NPM dist tag initially and\n * can be re-tagged to the `latest` NPM dist tag. This allows caretakers to make major\n * releases available at the same time. e.g. Framework, Tooling and Components\n * are able to publish v12 to `@latest` at the same time. This wouldn't be possible if\n * we directly publish to `@latest` because Tooling and Components needs to wait\n * for the major framework release to be available on NPM.\n * @see {CutStableAction#perform} for more details.\n */\nexport class TagRecentMajorAsLatest extends ReleaseAction {\n  override async getDescription() {\n    return `Retag recently published major v${this.active.latest.version} as \"latest\" in NPM.`;\n  }\n\n  override async perform() {\n    await this.updateGithubReleaseEntryToStable(this.active.latest.version);\n    await this.checkoutUpstreamBranch(this.active.latest.branchName);\n    await this.installDependenciesForCurrentBranch();\n    await ExternalCommands.invokeSetNpmDist(this.projectDir, 'latest', this.active.latest.version);\n  }\n\n  /**\n   * Updates the Github release entry for the specified version to show\n   * it as stable release, compared to it being shown as a pre-release.\n   */\n  async updateGithubReleaseEntryToStable(version: semver.SemVer) {\n    const releaseTagName = getReleaseTagForVersion(version);\n    const {data: releaseInfo} = await this.git.github.repos.getReleaseByTag({\n      ...this.git.remoteParams,\n      tag: releaseTagName,\n    });\n\n    await this.git.github.repos.updateRelease({\n      ...this.git.remoteParams,\n      release_id: releaseInfo.id,\n      prerelease: false,\n    });\n  }\n\n  static override async isActive({latest}: ActiveReleaseTrains, config: ReleaseConfig) {\n    // If the latest release-train does currently not have a major version as version. e.g.\n    // the latest branch is `10.0.x` with the version being `10.0.2`. In such cases, a major\n    // has not been released recently, and this action should never become active.\n    if (latest.version.minor !== 0 || latest.version.patch !== 0) {\n      return false;\n    }\n\n    const packageInfo = await fetchProjectNpmPackageInfo(config);\n    const npmLatestVersion = semver.parse(packageInfo['dist-tags']['latest']);\n    // This action only becomes active if a major just has been released recently, but is\n    // not set to the `latest` NPM dist tag in the NPM registry. Note that we only allow\n    // re-tagging if the current `@latest` in NPM is the previous major version.\n    return npmLatestVersion !== null && npmLatestVersion.major === latest.version.major - 1;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReleaseActionConstructor} from '../actions.js';\nimport {ConfigureNextAsMajorAction} from './configure-next-as-major.js';\nimport {CutLongTermSupportPatchAction} from './cut-lts-patch.js';\nimport {CutNewPatchAction} from './cut-new-patch.js';\nimport {CutNpmNextPrereleaseAction} from './cut-npm-next-prerelease.js';\nimport {CutNpmNextReleaseCandidateAction} from './cut-npm-next-release-candidate.js';\nimport {CutStableAction} from './cut-stable.js';\nimport {CutExceptionalMinorPrereleaseAction} from './exceptional-minor/cut-exceptional-minor-prerelease.js';\nimport {CutExceptionalMinorReleaseCandidateAction} from './exceptional-minor/cut-exceptional-minor-release-candidate.js';\nimport {PrepareExceptionalMinorAction} from './exceptional-minor/prepare-exceptional-minor.js';\nimport {MoveNextIntoFeatureFreezeAction} from './move-next-into-feature-freeze.js';\nimport {MoveNextIntoReleaseCandidateAction} from './move-next-into-release-candidate.js';\nimport {SpecialCutLongTermSupportMinorAction} from './special/cut-lts-minor.js';\nimport {TagRecentMajorAsLatest} from './tag-recent-major-as-latest.js';\n\n/**\n * List of release actions supported by the release staging tool. These are sorted\n * by priority. Actions which are selectable are sorted based on this declaration order.\n */\nexport const actions: ReleaseActionConstructor[] = [\n  CutExceptionalMinorReleaseCandidateAction,\n  CutExceptionalMinorPrereleaseAction,\n  TagRecentMajorAsLatest,\n  CutStableAction,\n  CutNpmNextReleaseCandidateAction,\n  CutNewPatchAction,\n  CutNpmNextPrereleaseAction,\n  MoveNextIntoFeatureFreezeAction,\n  MoveNextIntoReleaseCandidateAction,\n  ConfigureNextAsMajorAction,\n  PrepareExceptionalMinorAction,\n  CutLongTermSupportPatchAction,\n\n  // Special actions. Not displayed by default.\n  SpecialCutLongTermSupportMinorAction,\n];\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport lockfile from '@yarnpkg/lockfile';\nimport {parse as parseYaml} from 'yaml';\nimport {\n  ngDevNpmPackageName,\n  workspaceRelativePackageJsonPath,\n  workspaceRelativeYarnLockFilePath,\n} from './constants.js';\nimport {Log} from './logging.js';\n\n/**\n * Verifies that the `ng-dev` tool is up-to-date in the workspace. The check will compare\n * the local version of the tool against the requested version in the workspace lock file.\n *\n * This check is helpful ensuring that the caretaker does not accidentally run with an older\n * local version of `ng-dev` due to not running `yarn` after checking out new revisions.\n *\n * @returns a boolean indicating success or failure.\n */\nexport async function verifyNgDevToolIsUpToDate(workspacePath: string): Promise {\n  // The placeholder will be replaced by the `pkg_npm` substitutions.\n  const localVersion = `0.0.0-fa81be50e9a2ea7c9b68819ac5f69f4cc5ff7605`;\n  const workspacePackageJsonFile = path.join(workspacePath, workspaceRelativePackageJsonPath);\n  const workspaceDirLockFile = path.join(workspacePath, workspaceRelativeYarnLockFilePath);\n\n  try {\n    const packageJson = JSON.parse(fs.readFileSync(workspacePackageJsonFile, 'utf8')) as any;\n    // If we are operating in the actual dev-infra repo, always return `true`.\n    if (packageJson.name === ngDevNpmPackageName) {\n      return true;\n    }\n\n    const lockFileContent = fs.readFileSync(workspaceDirLockFile, 'utf8');\n\n    let lockFileObject: Record;\n    try {\n      const lockFile = lockfile.parse(lockFileContent);\n\n      if (lockFile.type !== 'success') {\n        throw Error('Unable to parse workspace lock file. Please ensure the file is valid.');\n      }\n      lockFileObject = lockFile.object as lockfile.LockFileObject;\n    } catch {\n      lockFileObject = parseYaml(lockFileContent);\n    }\n\n    const devInfraPkgVersion =\n      packageJson?.dependencies?.[ngDevNpmPackageName] ??\n      packageJson?.devDependencies?.[ngDevNpmPackageName] ??\n      packageJson?.optionalDependencies?.[ngDevNpmPackageName];\n    const expectedVersion = lockFileObject[`${ngDevNpmPackageName}@${devInfraPkgVersion}`].version;\n\n    if (localVersion !== expectedVersion) {\n      Log.error('  ✘   Your locally installed version of the `ng-dev` tool is outdated and not');\n      Log.error('      matching with the version in the `package.json` file.');\n      Log.error('      Re-install the dependencies to ensure you are using the correct version.');\n      return false;\n    }\n    return true;\n  } catch (e) {\n    Log.error(e);\n    return false;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GithubConfig} from '../../utils/config.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {ReleaseConfig} from '../config/index.js';\nimport {ActiveReleaseTrains} from '../versioning/active-release-trains.js';\nimport {NpmCommand} from '../versioning/npm-command.js';\nimport {printActiveReleaseTrains} from '../versioning/print-active-trains.js';\nimport {getNextBranchName, ReleaseRepoWithApi} from '../versioning/version-branches.js';\n\nimport {ReleaseAction} from './actions.js';\nimport {FatalReleaseActionError, UserAbortedReleaseActionError} from './actions-error.js';\nimport {actions} from './actions/index.js';\nimport {verifyNgDevToolIsUpToDate} from '../../utils/version-check.js';\nimport {Log, yellow} from '../../utils/logging.js';\nimport {Prompt} from '../../utils/prompt.js';\n\nexport enum CompletionState {\n  SUCCESS,\n  FATAL_ERROR,\n  MANUALLY_ABORTED,\n}\n\nexport class ReleaseTool {\n  /** The previous git commit to return back to after the release tool runs. */\n  private previousGitBranchOrRevision = this._git.getCurrentBranchOrRevision();\n\n  constructor(\n    protected _git: AuthenticatedGitClient,\n    protected _config: ReleaseConfig,\n    protected _github: GithubConfig,\n    protected _projectRoot: string,\n  ) {}\n\n  /** Runs the interactive release tool. */\n  async run(): Promise {\n    Log.info();\n    Log.info(yellow('--------------------------------------------'));\n    Log.info(yellow('  Angular Dev-Infra release staging script'));\n    Log.info(yellow('--------------------------------------------'));\n    Log.info();\n\n    const {owner, name} = this._github;\n    const nextBranchName = getNextBranchName(this._github);\n\n    if (\n      !(await this._verifyNoUncommittedChanges()) ||\n      !(await this._verifyRunningFromNextBranch(nextBranchName)) ||\n      !(await this._verifyNoShallowRepository()) ||\n      !(await verifyNgDevToolIsUpToDate(this._projectRoot))\n    ) {\n      return CompletionState.FATAL_ERROR;\n    }\n\n    if (!(await this._verifyNpmLoginState())) {\n      return CompletionState.MANUALLY_ABORTED;\n    }\n\n    // Set the environment variable to skip all git commit hooks triggered by husky. We are unable to\n    // rely on `--no-verify` as some hooks still run, notably the `prepare-commit-msg` hook.\n    // Running hooks has the downside of potentially running code (like the `ng-dev` tool) when a version\n    // branch is checked out, but the node modules are not re-installed. The tool switches branches\n    // multiple times per execution, and it is not desirable re-running Yarn all the time.\n    process.env['HUSKY'] = '0';\n\n    const repo: ReleaseRepoWithApi = {owner, name, api: this._git.github, nextBranchName};\n    const releaseTrains = await ActiveReleaseTrains.fetch(repo);\n\n    // Print the active release trains so that the caretaker can access\n    // the current project branching state without switching context.\n    await printActiveReleaseTrains(releaseTrains, this._config);\n\n    const action = await this._promptForReleaseAction(releaseTrains);\n\n    try {\n      await action.perform();\n    } catch (e) {\n      if (e instanceof UserAbortedReleaseActionError) {\n        return CompletionState.MANUALLY_ABORTED;\n      }\n      // Only print the error message and stack if the error is not a known fatal release\n      // action error (for which we print the error gracefully to the console with colors).\n      if (!(e instanceof FatalReleaseActionError) && e instanceof Error) {\n        console.error(e);\n      }\n      return CompletionState.FATAL_ERROR;\n    } finally {\n      await this.cleanup();\n    }\n\n    return CompletionState.SUCCESS;\n  }\n\n  /** Run post release tool cleanups. */\n  private async cleanup(): Promise {\n    // Return back to the git state from before the release tool ran.\n    this._git.checkout(this.previousGitBranchOrRevision, true);\n    // Ensure log out of NPM.\n    await NpmCommand.logout(this._config.publishRegistry);\n  }\n\n  /** Prompts the caretaker for a release action that should be performed. */\n  private async _promptForReleaseAction(activeTrains: ActiveReleaseTrains) {\n    const choices: {name: string; value: ReleaseAction}[] = [];\n\n    // Find and instantiate all release actions which are currently valid.\n    for (let actionType of actions) {\n      if (await actionType.isActive(activeTrains, this._config)) {\n        const action: ReleaseAction = new actionType(\n          activeTrains,\n          this._git,\n          this._config,\n          this._projectRoot,\n        );\n        choices.push({name: await action.getDescription(), value: action});\n      }\n    }\n\n    Log.info('Please select the type of release you want to perform.');\n\n    const releaseAction = await Prompt.select({\n      message: 'Please select an action:',\n      choices,\n    });\n\n    return releaseAction;\n  }\n\n  /**\n   * Verifies that there are no uncommitted changes in the project.\n   * @returns a boolean indicating success or failure.\n   */\n  private async _verifyNoUncommittedChanges(): Promise {\n    if (this._git.hasUncommittedChanges()) {\n      Log.error('  ✘   There are changes which are not committed and should be discarded.');\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Verifies that the local repository is not configured as shallow.\n   * @returns a boolean indicating success or failure.\n   */\n  private async _verifyNoShallowRepository(): Promise {\n    if (this._git.isShallowRepo()) {\n      Log.error('  ✘   The local repository is configured as shallow.');\n      Log.error(`      Please convert the repository to a complete one by syncing with upstream.`);\n      Log.error(`      https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---unshallow`);\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Verifies that the next branch from the configured repository is checked out.\n   * @returns a boolean indicating success or failure.\n   */\n  private async _verifyRunningFromNextBranch(nextBranchName: string): Promise {\n    const headSha = this._git.run(['rev-parse', 'HEAD']).stdout.trim();\n    const {data} = await this._git.github.repos.getBranch({\n      ...this._git.remoteParams,\n      branch: this._git.mainBranchName,\n    });\n\n    if (headSha !== data.commit.sha) {\n      Log.error('  ✘   Running release tool from an outdated local branch.');\n      Log.error(`      Please make sure you are running from the \"${nextBranchName}\" branch.`);\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Verifies that the user is logged into NPM at the correct registry, if defined for the release.\n   * @returns a boolean indicating whether the user is logged into NPM.\n   */\n  private async _verifyNpmLoginState(): Promise {\n    const registry = `NPM at the ${this._config.publishRegistry ?? 'default NPM'} registry`;\n    // TODO(josephperrott): remove wombat specific block once wombot allows `npm whoami` check to\n    // check the status of the local token in the .npmrc file.\n    if (this._config.publishRegistry?.includes('wombat-dressing-room.appspot.com')) {\n      Log.info('Unable to determine NPM login state for wombat proxy, requiring login now.');\n      try {\n        await NpmCommand.startInteractiveLogin(this._config.publishRegistry);\n      } catch {\n        return false;\n      }\n      return true;\n    }\n    if (await NpmCommand.checkIsLoggedIn(this._config.publishRegistry)) {\n      Log.debug(`Already logged into ${registry}.`);\n      return true;\n    }\n    Log.warn(`  ✘   Not currently logged into ${registry}.`);\n    const shouldLogin = await Prompt.confirm({message: 'Would you like to log into NPM now?'});\n    if (shouldLogin) {\n      Log.debug('Starting NPM login.');\n      try {\n        await NpmCommand.startInteractiveLogin(this._config.publishRegistry);\n      } catch {\n        return false;\n      }\n      return true;\n    }\n    return false;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {assertValidGithubConfig, getConfig} from '../../utils/config.js';\nimport {addGithubTokenOption} from '../../utils/git/github-yargs.js';\nimport {assertValidReleaseConfig} from '../config/index.js';\n\nimport {CompletionState, ReleaseTool} from './index.js';\nimport {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';\nimport {green, Log, yellow} from '../../utils/logging.js';\n\n/** Command line options for publishing a release. */\nexport interface ReleasePublishOptions {}\n\n/** Yargs command builder for configuring the `ng-dev release publish` command. */\nfunction builder(argv: Argv): Argv {\n  return addGithubTokenOption(argv);\n}\n\n/** Yargs command handler for staging a release. */\nasync function handler() {\n  const git = await AuthenticatedGitClient.get();\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n  assertValidGithubConfig(config);\n\n  const task = new ReleaseTool(git, config.release, config.github, git.baseDir);\n  const result = await task.run();\n\n  switch (result) {\n    case CompletionState.FATAL_ERROR:\n      Log.error(`Release action has been aborted due to fatal errors. See above.`);\n      process.exitCode = 2;\n      break;\n    case CompletionState.MANUALLY_ABORTED:\n      Log.info(yellow(`Release action has been manually aborted.`));\n      process.exitCode = 1;\n      break;\n    case CompletionState.SUCCESS:\n      Log.info(green(`Release action has completed successfully.`));\n      break;\n  }\n}\n\n/** CLI command module for publishing a release. */\nexport const ReleasePublishCommandModule: CommandModule<{}, ReleasePublishOptions> = {\n  builder,\n  handler,\n  command: 'publish',\n  describe: 'Publish new releases and configure version branches.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport semver from 'semver';\nimport {Argv, Arguments, CommandModule} from 'yargs';\nimport {getConfig} from '../../../utils/config.js';\n\nimport {Log, bold, green} from '../../../utils/logging.js';\nimport {Spinner} from '../../../utils/spinner.js';\nimport {assertValidReleaseConfig} from '../../config/index.js';\nimport {NpmCommand} from '../../versioning/npm-command.js';\nimport {\n  createExperimentalSemver,\n  isExperimentalSemver,\n} from '../../versioning/experimental-versions.js';\n\n/** Command line options for setting an NPM dist tag. */\nexport interface ReleaseNpmDistTagSetOptions {\n  tagName: string;\n  targetVersion: string;\n  skipExperimentalPackages: boolean;\n}\n\nfunction builder(args: Argv): Argv {\n  return args\n    .positional('tagName', {\n      type: 'string',\n      demandOption: true,\n      description: 'Name of the NPM dist tag.',\n    })\n    .positional('targetVersion', {\n      type: 'string',\n      demandOption: true,\n      description:\n        'Version to which the NPM dist tag should be set.\\nThis version will be ' +\n        'converted to an experimental version for experimental packages.',\n    })\n    .option('skipExperimentalPackages', {\n      type: 'boolean',\n      description: 'Whether the dist tag should not be set for experimental NPM packages.',\n      default: false,\n    });\n}\n\n/** Yargs command handler for setting an NPM dist tag. */\nasync function handler(args: Arguments) {\n  const {targetVersion: rawVersion, tagName, skipExperimentalPackages} = args;\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n  const {npmPackages, publishRegistry} = config.release;\n  const version = semver.parse(rawVersion);\n\n  if (version === null) {\n    Log.error(`Invalid version specified (${rawVersion}). Unable to set NPM dist tag.`);\n    process.exit(1);\n  } else if (isExperimentalSemver(version)) {\n    Log.error(\n      `Unexpected experimental SemVer version specified. This command expects a ` +\n        `non-experimental project SemVer version.`,\n    );\n    process.exit(1);\n  }\n\n  Log.debug(`Setting \"${tagName}\" NPM dist tag for release packages to v${version}.`);\n  const spinner = new Spinner('');\n\n  for (const pkg of npmPackages) {\n    // If `--skip-experimental-packages` is specified, all NPM packages which\n    // are marked as experimental will not receive the NPM dist tag update.\n    if (pkg.experimental && skipExperimentalPackages) {\n      spinner.update(`Skipping \"${pkg.name}\" due to it being experimental.`);\n      continue;\n    }\n\n    spinner.update(`Setting NPM dist tag for \"${pkg.name}\"`);\n    const distTagVersion = pkg.experimental ? createExperimentalSemver(version!) : version!;\n\n    try {\n      await NpmCommand.setDistTagForPackage(pkg.name, tagName, distTagVersion, publishRegistry);\n      Log.debug(`Successfully set \"${tagName}\" NPM dist tag for \"${pkg.name}\".`);\n    } catch (e) {\n      spinner.complete();\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while setting the NPM dist tag for \"${pkg.name}\".`);\n      process.exit(1);\n    }\n  }\n\n  spinner.complete();\n  Log.info(green(`  ✓   Set NPM dist tag for all release packages.`));\n  Log.info(green(`      ${bold(tagName)} will now point to ${bold(`v${version}`)}.`));\n}\n\n/** CLI command module for setting an NPM dist tag. */\nexport const ReleaseNpmDistTagSetCommand: CommandModule<{}, ReleaseNpmDistTagSetOptions> = {\n  builder,\n  handler,\n  command: 'set  ',\n  describe: 'Sets a given NPM dist tag for all release packages.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReleaseNpmDistTagSetCommand} from '../npm-dist-tag/set/cli.js';\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\n// TODO(devversion): Remove this command in 2024 Jan. It only exists for backwards compat.\n//  If all active and LTS release trains support the new `release npm-dist-tag`\n//  command, this can be removed.\n\n/** CLI command module for setting an NPM dist tag. */\nexport const ReleaseSetDistTagCommand: typeof ReleaseNpmDistTagSetCommand = {\n  ...ReleaseNpmDistTagSetCommand,\n  command: 'set-dist-tag  ',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport path from 'path';\nimport url from 'url';\nimport {Argv, Arguments, CommandModule} from 'yargs';\n\nimport {printEnvStamp, EnvStampMode} from './env-stamp.js';\n\n/**\n * Type describing a custom stamping function that\n * can be exposed through the `--additional-stamping-script`.\n */\nexport type EnvStampCustomPrintFn = (mode: EnvStampMode) => Promise;\n\nexport interface Options {\n  mode: EnvStampMode;\n  includeVersion: boolean;\n  additionalStampingScript: string | undefined;\n}\n\nfunction builder(args: Argv): Argv {\n  return args\n    .option('mode', {\n      demandOption: true,\n      description: 'Whether the env-stamp should be built for a snapshot or release',\n      choices: ['snapshot' as const, 'release' as const],\n    })\n    .option('includeVersion', {\n      type: 'boolean',\n      description: 'Whether the version should be included in the stamp.',\n      default: true,\n    })\n    .option('additionalStampingScript', {\n      type: 'string',\n      description:\n        'Working-dir relative or absolute path to an ESM script which can ' +\n        'print additional stamping variables',\n    });\n}\n\nasync function handler({mode, includeVersion, additionalStampingScript}: Arguments) {\n  await printEnvStamp(mode, includeVersion);\n\n  // Support for additional stamping. We import the script and call the default\n  // function while providing the stamping mode.\n  if (additionalStampingScript !== undefined) {\n    const scriptURL = url.pathToFileURL(path.resolve(additionalStampingScript));\n    const stampingExports = (await import(scriptURL.toString())) as {\n      default: EnvStampCustomPrintFn;\n    };\n    await stampingExports.default(mode);\n  }\n}\n\n/** CLI command module for building the environment stamp. */\nexport const BuildEnvStampCommand: CommandModule<{}, Options> = {\n  builder,\n  handler,\n  command: 'build-env-stamp',\n  describe: 'Build the environment stamping information',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as fs from 'fs';\n\nimport {GitClient} from '../../utils/git/git-client.js';\nimport semver from 'semver';\nimport {createExperimentalSemver} from '../../release/versioning/experimental-versions.js';\nimport {join} from 'path';\n\nexport type EnvStampMode = 'snapshot' | 'release';\n\n/** Log the environment variables expected by Bazel for stamping. */\nexport async function printEnvStamp(mode: EnvStampMode, includeVersion: boolean) {\n  const git = await GitClient.get();\n\n  console.info(`BUILD_SCM_BRANCH ${getCurrentBranch(git)}`);\n  console.info(`BUILD_SCM_COMMIT_SHA ${getCurrentSha(git)}`);\n  console.info(`BUILD_SCM_HASH ${getCurrentSha(git)}`);\n  console.info(`BUILD_SCM_ABBREV_HASH ${getCurrentAbbrevSha(git)}`);\n  console.info(`BUILD_SCM_BRANCH ${getCurrentBranchOrRevision(git)}`);\n  console.info(`BUILD_SCM_LOCAL_CHANGES ${hasLocalChanges(git)}`);\n  console.info(`BUILD_SCM_USER ${getCurrentGitUser(git)}`);\n\n  if (includeVersion === true) {\n    const {version, experimentalVersion} = getSCMVersions(git, mode);\n    // Note: We need to use the `STABLE_` prefix to tell Bazel that these\n    // variables are changing rarely, and if they do- the targets relying\n    // on it should be rebuilt. e.g. the NPM package would need to be re-assembled.\n    // https://bazel.build/docs/user-manual#workspace-status-command.\n    console.info(`STABLE_PROJECT_VERSION ${version}`);\n    console.info(`STABLE_PROJECT_EXPERIMENTAL_VERSION ${experimentalVersion}`);\n  }\n}\n\n/** Whether the repo has local changes. */\nfunction hasLocalChanges(git: GitClient) {\n  try {\n    return git.hasUncommittedChanges();\n  } catch {\n    return true;\n  }\n}\n\n/**\n * Get the versions for generated packages. The stamped versions are always based\n * on the workspace version. Relying on tags is less reliable because tags can be\n * modified easily in an untracked/uncontrolled way, and are less predictable with\n * regards to the source control revision currently being checked out.\n *\n * A concrete use-case: The release tool tags the versioning commit only after building\n * and publishing to NPM, causing snapshot-docs deployment to display versions from\n * a previous version because the CI push for the bump commits executes earlier.\n *\n * In snapshot mode, we will include the current SHA along with the workspace version.\n */\nfunction getSCMVersions(\n  git: GitClient,\n  mode: EnvStampMode,\n): {version: string; experimentalVersion: string} {\n  const version = getVersionFromWorkspacePackageJson(git).format();\n  const experimentalVersion = createExperimentalSemver(version).format();\n\n  if (mode === 'release') {\n    return {\n      version,\n      experimentalVersion,\n    };\n  }\n\n  const headShaAbbreviated = getCurrentSha(git).slice(0, 7);\n  const localChanges = hasLocalChanges(git) ? '-with-local-changes' : '';\n\n  return {\n    version: `${version}+sha-${headShaAbbreviated}${localChanges}`,\n    experimentalVersion: `${experimentalVersion}+sha-${headShaAbbreviated}${localChanges}`,\n  };\n}\n\n/** Get the current SHA of HEAD. */\nfunction getCurrentSha(git: GitClient) {\n  try {\n    return git.run(['rev-parse', 'HEAD']).stdout.trim();\n  } catch {\n    return '';\n  }\n}\n\n/** Get the current abbreviated SHA of HEAD. */\nfunction getCurrentAbbrevSha(git: GitClient) {\n  try {\n    return git.run(['rev-parse', '--short', 'HEAD']).stdout.trim();\n  } catch {\n    return '';\n  }\n}\n\n/** Get the current branch or revision of HEAD. */\nfunction getCurrentBranchOrRevision(git: GitClient) {\n  try {\n    return git.getCurrentBranchOrRevision();\n  } catch {\n    return '';\n  }\n}\n\n/** Get the currently checked out branch. */\nfunction getCurrentBranch(git: GitClient) {\n  try {\n    return git.run(['symbolic-ref', '--short', 'HEAD']).stdout.trim();\n  } catch {\n    return '';\n  }\n}\n\n/** Get the current git user based on the git config. */\nfunction getCurrentGitUser(git: GitClient) {\n  try {\n    let userName = git.runGraceful(['config', 'user.name']).stdout.trim() || 'Unknown User';\n    let userEmail = git.runGraceful(['config', 'user.email']).stdout.trim() || 'unknown_email';\n    return `${userName} <${userEmail}>`;\n  } catch {\n    return '';\n  }\n}\n\n/** Gets the `version` from the workspace top-level `package.json` file. */\nfunction getVersionFromWorkspacePackageJson(git: GitClient): semver.SemVer {\n  const packageJsonPath = join(git.baseDir, 'package.json');\n  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as {\n    version: string | undefined;\n  };\n\n  if (packageJson.version === undefined) {\n    throw new Error(`No workspace version found in: ${packageJsonPath}`);\n  }\n\n  return new semver.SemVer(packageJson.version);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// ---- **IMPORTANT** ----\n// This command is part of our external commands invoked by the release publish\n// command. Before making changes, keep in mind that more recent `ng-dev` versions\n// can still invoke this command.\n// ------------------------\n\nimport {Arguments, Argv, CommandModule} from 'yargs';\nimport {getConfig} from '../../../utils/config.js';\n\nimport {bold, green, Log} from '../../../utils/logging.js';\nimport {Spinner} from '../../../utils/spinner.js';\nimport {assertValidReleaseConfig} from '../../config/index.js';\nimport {NpmCommand} from '../../versioning/npm-command.js';\n\n/** Command line options for deleting a NPM dist tag. */\nexport interface ReleaseNpmDistTagDeleteOptions {\n  tagName: string;\n}\n\nfunction builder(args: Argv): Argv {\n  return args.positional('tagName', {\n    type: 'string',\n    demandOption: true,\n    description: 'Name of the NPM dist tag.',\n  });\n}\n\n/** Yargs command handler for deleting an NPM dist tag. */\nasync function handler(args: Arguments) {\n  const {tagName} = args;\n  const config = await getConfig();\n  assertValidReleaseConfig(config);\n  const {npmPackages, publishRegistry} = config.release;\n\n  Log.debug(`Deleting \"${tagName}\" NPM dist tag for release packages.`);\n  const spinner = new Spinner('');\n\n  for (const pkg of npmPackages) {\n    spinner.update(`Deleting NPM dist tag for \"${pkg.name}\"`);\n\n    try {\n      await NpmCommand.deleteDistTagForPackage(pkg.name, tagName, publishRegistry);\n      Log.debug(`Successfully deleted \"${tagName}\" NPM dist tag for \"${pkg.name}\".`);\n    } catch (e) {\n      spinner.complete();\n      Log.error(e);\n      Log.error(`  ✘   An error occurred while deleting the NPM dist tag for \"${pkg.name}\".`);\n      process.exit(1);\n    }\n  }\n\n  spinner.complete();\n  Log.info(green(`  ✓   Deleted \"${bold(tagName)}\" NPM dist tag for all packages.`));\n}\n\n/** CLI command module for deleting an NPM dist tag. */\nexport const ReleaseNpmDistTagDeleteCommand: CommandModule<{}, ReleaseNpmDistTagDeleteOptions> = {\n  builder,\n  handler,\n  command: 'delete ',\n  describe: 'Deletes a given NPM dist tag for all release packages.',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv, CommandModule} from 'yargs';\n\nimport {ReleaseNpmDistTagDeleteCommand} from './delete/cli.js';\nimport {ReleaseNpmDistTagSetCommand} from './set/cli.js';\n\nfunction subCommandsBuilder(argv: Argv) {\n  return argv\n    .help()\n    .strict()\n    .demandCommand()\n    .command(ReleaseNpmDistTagDeleteCommand)\n    .command(ReleaseNpmDistTagSetCommand);\n}\n\nexport const ReleaseNpmDistTagCommand: CommandModule<{}, {}> = {\n  describe: 'Update the NPM dist tags for release packages.',\n  command: 'npm-dist-tag',\n  builder: subCommandsBuilder,\n  handler: () => {},\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Argv} from 'yargs';\n\nimport {ReleaseBuildCommandModule} from './build/cli.js';\nimport {ReleaseInfoCommandModule} from './info/cli.js';\nimport {ReleaseNotesCommandModule} from './notes/cli.js';\nimport {ReleasePrecheckCommandModule} from './precheck/cli.js';\nimport {ReleasePublishCommandModule} from './publish/cli.js';\nimport {ReleaseSetDistTagCommand} from './set-dist-tag/cli.js';\nimport {BuildEnvStampCommand} from './stamping/cli.js';\nimport {ReleaseNpmDistTagCommand} from './npm-dist-tag/cli.js';\n\n/** Build the parser for the release commands. */\nexport function buildReleaseParser(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .command(ReleasePublishCommandModule)\n    .command(ReleaseBuildCommandModule)\n    .command(ReleaseInfoCommandModule)\n    .command(ReleaseNpmDistTagCommand)\n    .command(ReleasePrecheckCommandModule)\n    .command(ReleaseSetDistTagCommand)\n    .command(BuildEnvStampCommand)\n    .command(ReleaseNotesCommandModule);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {existsSync, readFileSync, writeFileSync} from 'fs';\nimport {isAbsolute, relative, resolve} from 'path';\nimport {Argv} from 'yargs';\n\nimport ts from 'typescript';\nimport {globSync} from 'fast-glob';\n\nimport {green, Log, yellow} from '../utils/logging.js';\n\nimport {Analyzer, ReferenceChain} from './analyzer.js';\nimport {CircularDependenciesTestConfig, loadTestConfig} from './config.js';\nimport {convertPathToForwardSlash} from './file_system.js';\nimport {compareGoldens, convertReferenceChainToGolden, Golden} from './golden.js';\n\nexport function tsCircularDependenciesBuilder(localYargs: Argv) {\n  return localYargs\n    .help()\n    .strict()\n    .demandCommand()\n    .option('config', {\n      type: 'string',\n      demandOption: true,\n      description: 'Path to the configuration file.',\n    })\n    .option('warnings', {type: 'boolean', description: 'Prints all warnings.'})\n    .command(\n      'check',\n      'Checks if the circular dependencies have changed.',\n      (args) => args,\n      async (argv) => {\n        const {config: configArg, warnings} = argv;\n        const configPath = isAbsolute(configArg) ? configArg : resolve(configArg);\n        const config = await loadTestConfig(configPath);\n        process.exit(main(false, config, !!warnings));\n      },\n    )\n    .command(\n      'approve',\n      'Approves the current circular dependencies.',\n      (args) => args,\n      async (argv) => {\n        const {config: configArg, warnings} = argv;\n        const configPath = isAbsolute(configArg) ? configArg : resolve(configArg);\n        const config = await loadTestConfig(configPath);\n        process.exit(main(true, config, !!warnings));\n      },\n    );\n}\n\n/**\n * Runs the ts-circular-dependencies tool.\n * @param approve Whether the detected circular dependencies should be approved.\n * @param config Configuration for the current circular dependencies test.\n * @param printWarnings Whether warnings should be printed out.\n * @returns Status code.\n */\nexport function main(\n  approve: boolean,\n  config: CircularDependenciesTestConfig,\n  printWarnings: boolean,\n): number {\n  const {\n    baseDir,\n    goldenFile,\n    glob: globPattern,\n    resolveModule,\n    approveCommand,\n    ignoreTypeOnlyChecks,\n  } = config;\n  const analyzer = new Analyzer(resolveModule, ignoreTypeOnlyChecks);\n  const cycles: ReferenceChain[] = [];\n  const checkedNodes = new WeakSet();\n\n  globSync(globPattern, {absolute: true, ignore: ['**/node_modules/**']}).forEach((filePath) => {\n    const sourceFile = analyzer.getSourceFile(filePath);\n    cycles.push(...analyzer.findCycles(sourceFile, checkedNodes));\n  });\n\n  const actual = convertReferenceChainToGolden(cycles, baseDir);\n\n  Log.info(green(`   Current number of cycles: ${yellow(cycles.length.toString())}`));\n\n  if (approve) {\n    writeFileSync(goldenFile, JSON.stringify(actual, null, 2));\n    Log.info(green('✔  Updated golden file.'));\n    return 0;\n  } else if (!existsSync(goldenFile)) {\n    Log.error(`x  Could not find golden file: ${goldenFile}`);\n    return 1;\n  }\n\n  const warningsCount = analyzer.unresolvedFiles.size + analyzer.unresolvedModules.size;\n\n  // By default, warnings for unresolved files or modules are not printed. This is because\n  // it's common that third-party modules are not resolved/visited. Also generated files\n  // from the View Engine compiler (i.e. factories, summaries) cannot be resolved.\n  if (printWarnings && warningsCount !== 0) {\n    Log.info(yellow('⚠  The following imports could not be resolved:'));\n    Array.from(analyzer.unresolvedModules)\n      .sort()\n      .forEach((specifier) => Log.info(`  • ${specifier}`));\n    analyzer.unresolvedFiles.forEach((value, key) => {\n      Log.info(`  • ${getRelativePath(baseDir, key)}`);\n      value.sort().forEach((specifier) => Log.info(`      ${specifier}`));\n    });\n  } else {\n    Log.warn(`⚠  ${warningsCount} imports could not be resolved.`);\n    Log.warn(`   Please rerun with \"--warnings\" to inspect unresolved imports.`);\n  }\n\n  const expected = JSON.parse(readFileSync(goldenFile, 'utf8')) as Golden;\n  const {fixedCircularDeps, newCircularDeps} = compareGoldens(actual, expected);\n  const isMatching = fixedCircularDeps.length === 0 && newCircularDeps.length === 0;\n\n  if (isMatching) {\n    Log.info(green('✔  Golden matches current circular dependencies.'));\n    return 0;\n  }\n\n  Log.error('✘  Golden does not match current circular dependencies.');\n  if (newCircularDeps.length !== 0) {\n    Log.error(`   New circular dependencies which are not allowed:`);\n    newCircularDeps.forEach((c) => Log.error(`     • ${convertReferenceChainToString(c)}`));\n    Log.error();\n  }\n  if (fixedCircularDeps.length !== 0) {\n    Log.error(`   Fixed circular dependencies that need to be removed from the golden:`);\n    fixedCircularDeps.forEach((c) => Log.error(`     • ${convertReferenceChainToString(c)}`));\n    Log.info(\n      yellow(\n        `\\n   Total: ${newCircularDeps.length} new cycle(s), ${fixedCircularDeps.length} fixed cycle(s). \\n`,\n      ),\n    );\n  }\n\n  if (approveCommand) {\n    Log.info(yellow(`   Please approve the new golden with: ${approveCommand}`));\n  } else {\n    Log.info(\n      yellow(\n        `   Please update the golden. The following command can be ` +\n          `run: yarn ng-dev ts-circular-deps approve ${getRelativePath(process.cwd(), goldenFile)}.`,\n      ),\n    );\n  }\n\n  return 1;\n}\n\n/** Gets the specified path relative to the base directory. */\nfunction getRelativePath(baseDir: string, path: string) {\n  return convertPathToForwardSlash(relative(baseDir, path));\n}\n\n/** Converts the given reference chain to its string representation. */\nfunction convertReferenceChainToString(chain: ReferenceChain) {\n  return chain.join(' → ');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {readFileSync} from 'fs';\nimport {dirname, join, resolve} from 'path';\nimport ts from 'typescript';\nimport {CircularDependenciesParserOptions} from './config.js';\n\nimport {getFileStatus} from './file_system.js';\nimport {getModuleReferences} from './parser.js';\n\nexport type ModuleResolver = (specifier: string) => string | null;\n\n/**\n * Reference chains describe a sequence of source files which are connected through imports.\n * e.g. `file_a.ts` imports `file_b.ts`, whereas `file_b.ts` imports `file_c.ts`. The reference\n * chain data structure could be used to represent this import sequence.\n */\nexport type ReferenceChain = T[];\n\n/** Default extensions that the analyzer uses for resolving imports. */\nconst DEFAULT_EXTENSIONS = ['ts', 'js', 'd.ts'];\n\n/**\n * Analyzer that can be used to detect import cycles within source files. It supports\n * custom module resolution, source file caching and collects unresolved specifiers.\n */\nexport class Analyzer {\n  private _sourceFileCache = new Map();\n\n  private _ignoreTypeOnlyChecks: boolean;\n\n  unresolvedModules = new Set();\n  unresolvedFiles = new Map();\n\n  constructor(\n    public resolveModuleFn?: ModuleResolver,\n    ignoreTypeOnlyChecks: boolean = false,\n    public extensions: string[] = DEFAULT_EXTENSIONS,\n  ) {\n    this._ignoreTypeOnlyChecks = !!ignoreTypeOnlyChecks;\n  }\n\n  /** Finds all cycles in the specified source file. */\n  findCycles(\n    sf: ts.SourceFile,\n    visited = new WeakSet(),\n    path: ReferenceChain = [],\n  ): ReferenceChain[] {\n    const previousIndex = path.indexOf(sf);\n    // If the given node is already part of the current path, then a cycle has\n    // been found. Add the reference chain which represents the cycle to the results.\n    if (previousIndex !== -1) {\n      return [path.slice(previousIndex)];\n    }\n    // If the node has already been visited, then it's not necessary to go check its edges\n    // again. Cycles would have been already detected and collected in the first check.\n    if (visited.has(sf)) {\n      return [];\n    }\n    path.push(sf);\n    visited.add(sf);\n    // Go through all edges, which are determined through import/exports, and collect cycles.\n    const result: ReferenceChain[] = [];\n    for (const ref of getModuleReferences(sf, this._ignoreTypeOnlyChecks)) {\n      const targetFile = this._resolveImport(ref, sf.fileName);\n      if (targetFile !== null) {\n        result.push(...this.findCycles(this.getSourceFile(targetFile), visited, path.slice()));\n      }\n    }\n    return result;\n  }\n\n  /** Gets the TypeScript source file of the specified path. */\n  getSourceFile(filePath: string): ts.SourceFile {\n    const resolvedPath = resolve(filePath);\n    if (this._sourceFileCache.has(resolvedPath)) {\n      return this._sourceFileCache.get(resolvedPath)!;\n    }\n    const fileContent = readFileSync(resolvedPath, 'utf8');\n    const sourceFile = ts.createSourceFile(\n      resolvedPath,\n      fileContent,\n      ts.ScriptTarget.Latest,\n      false,\n    );\n    this._sourceFileCache.set(resolvedPath, sourceFile);\n    return sourceFile;\n  }\n\n  /** Resolves the given import specifier with respect to the specified containing file path. */\n  private _resolveImport(specifier: string, containingFilePath: string): string | null {\n    if (specifier.charAt(0) === '.') {\n      const resolvedPath = this._resolveFileSpecifier(specifier, containingFilePath);\n      if (resolvedPath === null) {\n        this._trackUnresolvedFileImport(specifier, containingFilePath);\n      }\n      return resolvedPath;\n    }\n    if (this.resolveModuleFn) {\n      const targetFile = this.resolveModuleFn(specifier);\n      if (targetFile !== null) {\n        const resolvedPath = this._resolveFileSpecifier(targetFile);\n        if (resolvedPath !== null) {\n          return resolvedPath;\n        }\n      }\n    }\n    this.unresolvedModules.add(specifier);\n    return null;\n  }\n\n  /** Tracks the given file import as unresolved. */\n  private _trackUnresolvedFileImport(specifier: string, originFilePath: string) {\n    if (!this.unresolvedFiles.has(originFilePath)) {\n      this.unresolvedFiles.set(originFilePath, [specifier]);\n    }\n    this.unresolvedFiles.get(originFilePath)!.push(specifier);\n  }\n\n  /** Resolves the given import specifier to the corresponding source file. */\n  private _resolveFileSpecifier(specifier: string, containingFilePath?: string): string | null {\n    const importFullPath =\n      containingFilePath !== undefined ? join(dirname(containingFilePath), specifier) : specifier;\n    const stat = getFileStatus(importFullPath);\n    if (stat && stat.isFile()) {\n      return importFullPath;\n    }\n    for (const extension of this.extensions) {\n      const pathWithExtension = `${importFullPath}.${extension}`;\n      const withExtensionStat = getFileStatus(pathWithExtension);\n      if (withExtensionStat?.isFile()) {\n        return pathWithExtension;\n      }\n    }\n    // Directories should be considered last. TypeScript first looks for source files, then\n    // falls back to directories if no file with appropriate extension could be found.\n    if (stat && stat.isDirectory()) {\n      return this._resolveFileSpecifier(join(importFullPath, 'index'));\n    }\n    return null;\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Stats, statSync} from 'fs';\n\n/** Gets the status of the specified file. Returns null if the file does not exist. */\nexport function getFileStatus(filePath: string): Stats | null {\n  try {\n    return statSync(filePath);\n  } catch {\n    return null;\n  }\n}\n\n/** Ensures that the specified path uses forward slashes as delimiter. */\nexport function convertPathToForwardSlash(path: string) {\n  return path.replace(/\\\\/g, '/');\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport ts from 'typescript';\n\n/**\n * Finds all module references in the specified source file.\n * @param node Source file which should be parsed.\n * @returns List of import specifiers in the source file.\n */\nexport function getModuleReferences(\n  initialNode: ts.SourceFile,\n  ignoreTypeOnlyChecks: boolean,\n): string[] {\n  const references: string[] = [];\n  const visitNode = (node: ts.Node) => {\n    if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {\n      // When ignoreTypeOnlyChecks are enabled, if the declaration is found to be type only, it is skipped.\n      if (\n        ignoreTypeOnlyChecks &&\n        ((ts.isImportDeclaration(node) && node.importClause?.isTypeOnly) ||\n          (ts.isExportDeclaration(node) && node.isTypeOnly))\n      ) {\n        return;\n      }\n\n      if (node.moduleSpecifier !== undefined && ts.isStringLiteral(node.moduleSpecifier)) {\n        references.push(node.moduleSpecifier.text);\n      }\n    }\n    ts.forEachChild(node, visitNode);\n  };\n\n  ts.forEachChild(initialNode, visitNode);\n\n  return references;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {dirname, extname, isAbsolute, resolve} from 'path';\n\nimport {Log} from '../utils/logging.js';\n\nimport {ModuleResolver} from './analyzer.js';\n\n/** Options used at runtime by the parser.  */\nexport interface CircularDependenciesParserOptions {\n  /** Whether to ignore type only imports in circular dependency checks. */\n  ignoreTypeOnlyChecks?: true;\n}\n\n/** Configuration for a circular dependencies test. */\nexport interface CircularDependenciesTestConfig extends CircularDependenciesParserOptions {\n  /** Base directory used for shortening paths in the golden file. */\n  baseDir: string;\n  /** Path to the golden file that is used for checking and approving. */\n  goldenFile: string;\n  /** Glob that resolves source files which should be checked. */\n  glob: string;\n  /**\n   * Optional module resolver function that can be used to resolve modules\n   * to absolute file paths.\n   */\n  resolveModule?: ModuleResolver;\n  /**\n   * Optional command that will be displayed if the golden check failed. This can be used\n   * to consistently use script aliases for checking/approving the golden.\n   */\n  approveCommand?: string;\n}\n\n/**\n * Loads the configuration for the circular dependencies test. If the config cannot be\n * loaded, an error will be printed and the process exists with a non-zero exit code.\n */\nexport async function loadTestConfig(configPath: string): Promise {\n  const configBaseDir = dirname(configPath);\n  const resolveRelativePath = (relativePath: string) => resolve(configBaseDir, relativePath);\n\n  try {\n    let config: CircularDependenciesTestConfig;\n    switch (extname(configPath)) {\n      case '.mjs':\n        // Load the ESM configuration file using the TypeScript dynamic import workaround.\n        // Once TypeScript provides support for keeping the dynamic import this workaround can be\n        // changed to a direct dynamic import.\n        config = await loadEsmModule(configPath);\n        break;\n      case '.cjs':\n        config = require(configPath);\n        break;\n      default:\n        // The file could be either CommonJS or ESM.\n        // CommonJS is tried first then ESM if loading fails.\n        try {\n          config = require(configPath);\n        } catch (e) {\n          if ((e as any).code === 'ERR_REQUIRE_ESM') {\n            // Load the ESM configuration file using the TypeScript dynamic import workaround.\n            // Once TypeScript provides support for keeping the dynamic import this workaround can be\n            // changed to a direct dynamic import.\n            config = await loadEsmModule(configPath);\n          }\n\n          throw e;\n        }\n    }\n\n    // Clone to config object. This is needed because in ESM the properties are non writeable\n    config = {...config};\n\n    if (!isAbsolute(config.baseDir)) {\n      config.baseDir = resolveRelativePath(config.baseDir);\n    }\n    if (!isAbsolute(config.goldenFile)) {\n      config.goldenFile = resolveRelativePath(config.goldenFile);\n    }\n    if (!isAbsolute(config.glob)) {\n      config.glob = resolveRelativePath(config.glob);\n    }\n    return config;\n  } catch (e) {\n    Log.error('Could not load test configuration file at: ' + configPath);\n    Log.error(`Failed with error:`, e);\n    process.exit(1);\n  }\n}\n\n/**\n * Lazily compiled dynamic import loader function.\n */\nlet load: ((modulePath: string | URL) => Promise) | undefined;\n\n/**\n * This uses a dynamic import to load a module which may be ESM.\n * CommonJS code can load ESM code via a dynamic import. Unfortunately, TypeScript\n * will currently, unconditionally downlevel dynamic import into a require call.\n * require calls cannot load ESM code and will result in a runtime error. To workaround\n * this, a Function constructor is used to prevent TypeScript from changing the dynamic import.\n * Once TypeScript provides support for keeping the dynamic import this workaround can\n * be dropped.\n *\n * @param modulePath The path of the module to load.\n * @returns A Promise that resolves to the dynamically imported module.\n */\nexport function loadEsmModule(modulePath: string | URL): Promise {\n  load ??= new Function('modulePath', `return import(modulePath);`) as Exclude<\n    typeof load,\n    undefined\n  >;\n\n  return load(modulePath);\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {relative} from 'path';\n\nimport {ReferenceChain} from './analyzer.js';\nimport {convertPathToForwardSlash} from './file_system.js';\n\nexport type CircularDependency = ReferenceChain;\nexport type Golden = CircularDependency[];\n\n/**\n * Converts a list of reference chains to a JSON-compatible golden object. Reference chains\n * by default use TypeScript source file objects. In order to make those chains printable,\n * the source file objects are mapped to their relative file names.\n */\nexport function convertReferenceChainToGolden(refs: ReferenceChain[], baseDir: string): Golden {\n  return (\n    refs\n      .map(\n        // Normalize cycles as the paths can vary based on which node in the cycle is visited\n        // first in the analyzer. The paths represent cycles. Hence we can shift nodes in a\n        // deterministic way so that the goldens don't change unnecessarily and cycle comparison\n        // is simpler.\n        (chain) =>\n          normalizeCircularDependency(\n            chain.map(({fileName}) => convertPathToForwardSlash(relative(baseDir, fileName))),\n          ),\n      )\n      // Sort cycles so that the golden doesn't change unnecessarily when cycles are detected\n      // in different order (e.g. new imports cause cycles to be detected earlier or later).\n      .sort(compareCircularDependency)\n  );\n}\n\n/**\n * Compares the specified goldens and returns two lists that describe newly\n * added circular dependencies, or fixed circular dependencies.\n */\nexport function compareGoldens(actual: Golden, expected: Golden) {\n  const newCircularDeps: CircularDependency[] = [];\n  const fixedCircularDeps: CircularDependency[] = [];\n  actual.forEach((a) => {\n    if (!expected.find((e) => isSameCircularDependency(a, e))) {\n      newCircularDeps.push(a);\n    }\n  });\n  expected.forEach((e) => {\n    if (!actual.find((a) => isSameCircularDependency(e, a))) {\n      fixedCircularDeps.push(e);\n    }\n  });\n  return {newCircularDeps, fixedCircularDeps};\n}\n\n/**\n * Normalizes the a circular dependency by ensuring that the path starts with the first\n * node in alphabetical order. Since the path array represents a cycle, we can make a\n * specific node the first element in the path that represents the cycle.\n *\n * This method is helpful because the path of circular dependencies changes based on which\n * file in the path has been visited first by the analyzer. e.g. Assume we have a circular\n * dependency represented as: `A -> B -> C`. The analyzer will detect this cycle when it\n * visits `A`. Though when a source file that is analyzed before `A` starts importing `B`,\n * the cycle path will detected as `B -> C -> A`. This represents the same cycle, but is just\n * different due to a limitation of using a data structure that can be written to a text-based\n * golden file.\n *\n * To account for this non-deterministic behavior in goldens, we shift the circular\n * dependency path to the first node based on alphabetical order. e.g. `A` will always\n * be the first node in the path that represents the cycle.\n */\nfunction normalizeCircularDependency(path: CircularDependency): CircularDependency {\n  if (path.length <= 1) {\n    return path;\n  }\n\n  let indexFirstNode: number = 0;\n  let valueFirstNode: string = path[0];\n\n  // Find a node in the cycle path that precedes all other elements\n  // in terms of alphabetical order.\n  for (let i = 1; i < path.length; i++) {\n    const value = path[i];\n    if (value.localeCompare(valueFirstNode, 'en') < 0) {\n      indexFirstNode = i;\n      valueFirstNode = value;\n    }\n  }\n\n  // If the alphabetically first node is already at start of the path, just\n  // return the actual path as no changes need to be made.\n  if (indexFirstNode === 0) {\n    return path;\n  }\n\n  // Move the determined first node (as of alphabetical order) to the start of a new\n  // path array. The nodes before the first node in the old path are then concatenated\n  // to the end of the new path. This is possible because the path represents a cycle.\n  return [...path.slice(indexFirstNode), ...path.slice(0, indexFirstNode)];\n}\n\n/** Checks whether the specified circular dependencies are equal. */\nfunction isSameCircularDependency(actual: CircularDependency, expected: CircularDependency) {\n  if (actual.length !== expected.length) {\n    return false;\n  }\n  for (let i = 0; i < actual.length; i++) {\n    if (actual[i] !== expected[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Compares two circular dependencies by respecting the alphabetic order of nodes in the\n * cycle paths. The first nodes which don't match in both paths are decisive on the order.\n */\nfunction compareCircularDependency(a: CircularDependency, b: CircularDependency): number {\n  // Go through nodes in both cycle paths and determine whether `a` should be ordered\n  // before `b`. The first nodes which don't match decide on the order.\n  for (let i = 0; i < Math.min(a.length, b.length); i++) {\n    const compareValue = a[i].localeCompare(b[i], 'en');\n    if (compareValue !== 0) {\n      return compareValue;\n    }\n  }\n  // If all nodes are equal in the cycles, the order is based on the length of both cycles.\n  return a.length - b.length;\n}\n", "import {Argv, CommandModule} from 'yargs';\nimport {Log} from '../../utils/logging.js';\n\nexport interface Options {}\n\n/** Builds the command. */\nasync function builder(yargs: Argv) {\n  return yargs;\n}\n\n/** Handles the command. */\nasync function handler() {\n  Log.warn('ng-dev auth login has been deprecated. Authentication will be done');\n  Log.warn('using TOKEN from the local environment.');\n}\n\n/** yargs command module for logging into the ng-dev service. */\nexport const LoginModule: CommandModule<{}, Options> = {\n  handler,\n  builder,\n  command: 'login',\n  describe: 'Log into the ng-dev service',\n};\n", "import {Argv, CommandModule} from 'yargs';\nimport {Log} from '../../utils/logging.js';\n\nexport interface Options {}\n\n/** Builds the command. */\nasync function builder(yargs: Argv) {\n  return yargs;\n}\n\n/** Handles the command. */\nasync function handler() {\n  Log.warn('ng-dev auth logout has been deprecated. Authentication will be done');\n  Log.warn('using local environment.');\n}\n\n/** yargs command module for logging out of the ng-dev service. */\nexport const LogoutModule: CommandModule<{}, Options> = {\n  handler,\n  builder,\n  command: 'logout',\n  describe: 'Log out of the ng-dev service',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv} from 'yargs';\nimport {LoginModule} from './login/cli.js';\nimport {LogoutModule} from './logout/cli.js';\n\n/** CLI command module. */\nexport function buildAuthParser(yargs: Argv) {\n  return yargs.command(LoginModule).command(LogoutModule);\n}\n", "import {ChildProcess} from '../../utils/child-process.js';\nimport {Spinner} from '../../utils/spinner.js';\nimport {Workflow} from './loader.js';\n\nexport async function measureWorkflow({name, workflow, prepare, cleanup}: Workflow) {\n  const spinner = new Spinner();\n  try {\n    if (prepare) {\n      spinner.update('Preparing environment for workflow execution');\n      // Run the `prepare` commands to establish the environment, caching, etc prior to running the\n      // workflow.\n      await runCommands(prepare);\n      spinner.update('Environment preperation completed');\n    }\n\n    spinner.update(`Executing workflow (${name})`);\n    // Mark the start time of the workflow, execute all of the commands provided in the workflow and\n    // then mark the ending time.\n    performance.mark('start');\n    await runCommands(workflow);\n    performance.mark('end');\n\n    spinner.update('Workflow completed');\n\n    if (cleanup) {\n      spinner.update('Cleaning up environment after workflow');\n      // Run the clean up commands to reset the environment and undo changes made during the workflow.\n      await runCommands(cleanup);\n      spinner.update('Environment cleanup complete');\n    }\n\n    const results = performance.measure(name, 'start', 'end');\n\n    spinner.success(`${name}: ${results.duration.toFixed(2)}ms`);\n\n    return {\n      name,\n      value: results.duration,\n    };\n  } finally {\n    spinner.complete();\n  }\n}\n\n/**\n * Run a set of commands provided as a multiline text block. Commands are assumed to always be\n * provided on a single line.\n */\nasync function runCommands(commands?: string[]) {\n  if (!commands || commands.length === 0) {\n    return;\n  }\n  for (let cmd of commands) {\n    await ChildProcess.exec(cmd, {mode: 'silent'});\n  }\n}\n", "import {readFile} from 'fs/promises';\nimport {parse} from 'yaml';\n\nexport interface Workflow {\n  // The friendly name of the workflow.\n  name: string;\n  // The set of commands to run under timing test for the workflow.\n  workflow: string[];\n  // The set of commands to run in preparation for the workflow.\n  prepare?: string[];\n  // The set of commands to run as a cleanup.\n  cleanup?: string[];\n  // Whether the workflow is temporarily disabled.\n  disabled?: true;\n}\n\nexport async function loadWorkflows(src: string) {\n  /** The set of workflows which can be executed. */\n  const filteredWorkflows: {[key: string]: Workflow} = {};\n  /** The workflow configuration file content as a string.  */\n  const rawWorkflows = await readFile(src, {encoding: 'utf-8'});\n  /** The object parsed from the workflow configuration file, holding the workflow configurations. */\n  const workflows = parse(rawWorkflows).workflows as {[key: string]: Workflow};\n\n  // Remove any workflow which is marked as disabled.\n  for (const [name, workflow] of Object.entries(workflows)) {\n    if (workflow.disabled !== true) {\n      filteredWorkflows[name] = workflow;\n    }\n  }\n\n  return filteredWorkflows;\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv, CommandModule} from 'yargs';\nimport {measureWorkflow} from './workflow.js';\nimport {loadWorkflows} from './loader.js';\nimport {join} from 'path';\nimport {determineRepoBaseDirFromCwd} from '../../utils/repo-directory.js';\nimport {addWorkflowPerformanceResult} from './database.js';\nimport {Spinner} from '../../utils/spinner.js';\n\ninterface WorkflowsParams {\n  configFile: string;\n  list: boolean;\n  name?: string;\n  commitSha?: string;\n}\n\n/** Builds the checkout pull request command. */\nfunction builder(yargs: Argv) {\n  return yargs\n    .option('config-file' as 'configFile', {\n      default: '.ng-dev/dx-perf-workflows.yml',\n      type: 'string',\n      description: 'The path to the workflow definitions in a yml file',\n    })\n    .option('list', {\n      default: false,\n      type: 'boolean',\n      description: 'Whether to get back a list of workflows that can be executed',\n    })\n    .option('name', {\n      type: 'string',\n      description: 'A specific workflow to run by name',\n    })\n    .option('commit-sha' as 'commitSha', {\n      type: 'string',\n      description: 'The commit sha to associate the measurement with, uploading it to our database',\n    });\n}\n\n/** Handles the checkout pull request command. */\nasync function handler({configFile, list, name, commitSha}: WorkflowsParams) {\n  const workflows = await loadWorkflows(join(determineRepoBaseDirFromCwd(), configFile));\n\n  if (list) {\n    process.stdout.write(JSON.stringify(Object.keys(workflows)));\n    return;\n  }\n\n  const results: {name: string; value: number}[] = [];\n\n  if (name) {\n    const {value} = await measureWorkflow(workflows[name]);\n    results.push({value, name});\n  } else {\n    for (const workflow of Object.values(workflows)) {\n      const {name, value} = await measureWorkflow(workflow);\n      results.push({value, name});\n    }\n  }\n\n  if (commitSha) {\n    const spinner = new Spinner('Uploading performance results to database');\n    try {\n      for (let {value, name} of results) {\n        await addWorkflowPerformanceResult({\n          name,\n          value,\n          commit_sha: commitSha,\n        });\n      }\n    } finally {\n      spinner.success('Upload complete');\n    }\n  }\n}\n\n/** yargs command module for checking out a PR. */\nexport const WorkflowsModule: CommandModule<{}, WorkflowsParams> = {\n  handler,\n  builder,\n  command: 'workflows',\n  describe: 'Evaluate the performance of the provided workflows',\n};\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Spanner} from '@google-cloud/spanner';\n\n/**\n * The workflow performance results are stored in a spanner database within our\n * project to be able to retrieve later, The commit sha will be used as a foreign\n * key to point to specific commits found in the table of commit shas expressing\n * the full graph of commits within the git graph for the repository.\n *\n * The workflow performance table is defined with the following characteristics.\n *\n * |--------------------------------------------------------------------|\n * |              Column              |     Type     |       Notes      |\n * |--------------------------------------------------------------------|\n * |     workflow_performance_id      |  STRING(36)  |   Autogenerated  |\n * |     commit_sha                   |  STRING(40)  |                  |\n * |     value                        |  FLOAT64     |                  |\n * |     name                         |  STRING(256) |                  |\n * |--------------------------------------------------------------------|\n */\n\n/** The reuslt of workflow performance eresult to be stored in the database. */\nexport interface WorkflowPerformanceRowResult {\n  commit_sha: string;\n  value: number;\n  name: string;\n}\n\n/** Add a single workflow performance result to the spanner database. */\nexport async function addWorkflowPerformanceResult(result: WorkflowPerformanceRowResult) {\n  /** The spanner client instance. */\n  const spanner = new Spanner({\n    projectId: 'internal-200822',\n  });\n  /** The spanner instance within our project. */\n  const instance = spanner.instance('ng-measurables');\n  /** The commit performance database within our spanner instance. */\n  const database = instance.database('commit_performance');\n  /** The table holding workflow performance information. */\n  const workflowPerformanceTable = database.table('WorkflowPerformance');\n\n  try {\n    await workflowPerformanceTable.insert(result);\n  } finally {\n    await database.close();\n  }\n}\n", "/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Argv} from 'yargs';\n\nimport {WorkflowsModule} from './workflow/cli.js';\n\n/** Build the parser for pull request commands. */\nexport function buildPerfParser(localYargs: Argv) {\n  return localYargs.help().strict().demandCommand().command(WorkflowsModule);\n}\n", "#!/usr/bin/env node\n\n/**\n * @license\n * Copyright Google LLC\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {runParserWithCompletedFunctions} from './utils/yargs.js';\n\nimport {buildCaretakerParser} from './caretaker/cli.js';\nimport {buildCommitMessageParser} from './commit-message/cli.js';\nimport {buildFormatParser} from './format/cli.js';\nimport {buildMiscParser} from './misc/cli.js';\nimport {buildNgbotParser} from './ngbot/cli.js';\nimport {buildPrParser} from './pr/cli.js';\nimport {buildPullapproveParser} from './pullapprove/cli.js';\nimport {buildReleaseParser} from './release/cli.js';\nimport {tsCircularDependenciesBuilder} from './ts-circular-dependencies/index.js';\nimport {captureLogOutputForCommand} from './utils/logging.js';\nimport {buildAuthParser} from './auth/cli.js';\nimport {buildPerfParser} from './perf/cli.js';\nimport {Argv} from 'yargs';\n\nrunParserWithCompletedFunctions((yargs: Argv) => {\n  return yargs\n    .scriptName('ng-dev')\n    .middleware(captureLogOutputForCommand, true)\n    .demandCommand()\n    .recommendCommands()\n    .command('auth ', false, buildAuthParser)\n    .command('commit-message ', '', buildCommitMessageParser)\n    .command('format ', '', buildFormatParser)\n    .command('pr ', '', buildPrParser)\n    .command('pullapprove ', '', buildPullapproveParser)\n    .command('release ', '', buildReleaseParser)\n    .command('ts-circular-deps ', '', tsCircularDependenciesBuilder)\n    .command('caretaker ', '', buildCaretakerParser)\n    .command('misc ', '', buildMiscParser)\n    .command('ngbot ', false, buildNgbotParser)\n    .command('perf ', '', buildPerfParser)\n    .wrap(120)\n    .strict();\n});\n"],
+  "mappings": "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,MAAM;AAC5CA,sBAAeA,gBAAe,QAAQ,MAAM;AAC5CA,sBAAeA,gBAAe,QAAQ,MAAM;AAC5CA,sBAAeA,gBAAe,QAAQ,MAAM;AAC5CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,OAAO;AAC5CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO,MAAM;AAC3CA,sBAAeA,gBAAe,OAAO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AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,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AM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,QAC5C;AAAA,MACF;AAEA,WAAK,SAAS,WAAW;AACvB,eAAO;AAAA,UACL,IAAI,eAAe,MAAM;AAAA,YACvB;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,UACxE,CAAC;AAAA,UACD,IAAI,eAAe,MAAM;AAAA,YACvB;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,UACxE,CAAC;AAAA,UACD,IAAI,eAAe,MAAM;AAAA,YACvB;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,UACxE,CAAC;AAAA,UACD,IAAI,eAAe,MAAM;AAAA,YACvB;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YACtE;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,YAAU;AAAA,UACxE,CAAC;AAAA,QACH;AAAA,MACF;AAEA,WAAK,OAAO,SAAS,KAAK;AACxB,eAAQ,OAAO,IAAI,WAAY,iBAAiB;AAAA,MAClD;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,YAAY,IAAI;AAG7C,WAAO,QAAQ,aAAa,WAAW;AACrC,WAAK,UAAU,WAAW;AACxB,eAAO;AAAA,UACL;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,U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C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,QAC5C;AAAA,MACF;AAEA,WAAK,SAAS,WAAW;AACvB,eAAO;AAAA,UACL;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,QACxE;AAAA,MACF;AAEA,WAAK,OAAO,SAAS,KAAK;AACxB,eAAO;AAAA,MACT;AAEA,WAAK,WAAW,WAAW;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,YAAY,IAAI;AAG7C,WAAO,QAAQ,aAAa,WAAW;AACrC,WAAK,UAAU,WAAW;AACxB,eAAO;AAAA,UACL;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,QAC5C;AAAA,MACF;AAEA,WAAK,SAAS,WAAW;AACvB,eAAO;AAAA,UACL;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UACtE;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,QACxE;AAAA,MACF;AAEA,WAAK,OAAO,SAAS,KAAK;AACxB,eAAQ,OAAO,IAAI,WAAY,iBAAiB;AAAA,MAClD;AAEA,WAAK,WAAW,WAAW;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AACA,SAAK,SAAS,OAAO,QAAQ,YAAY,IAAI;AAE7C,WAAO,QAAQ,aAAa,WAAW;AAErC,WAAK,UAAU,WAAW;AACxB,eAAO;AAAA,UACL;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UA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UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;A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AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,U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M;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAA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AAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAAM;AAAA,UAC1C;AAAA,UAAM;AAAA,UAAM;A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",
+  "names": ["left", "right", "expand", "createScanner", "findNodeAtLocation", "findNodeAtOffset", "format", "getLocation", "getNodePath", "getNodeValue", "parse", "parseTree", "printParseErrorCode", "stripComments", "visit", "__toCommonJS", "value", "CharacterCodes", "ParseOptions", "sep", "path", "edit", "ScanError", "SyntaxKind", "ParseErrorCode", "_a", "_b", "_c", "format", "colors", "cliWidth", "stripAnsi", "ansi", "match", "path", "wrap", "stripAnsi", "wrapAnsi", "code", "MuteStream", "_a", "_b", "ansiEscapes", "url", "arr", "searchValue", "left", "right", "parser", "fs", "match", "handler", "sample", "Buffer", "Buffer", "Buffer", "Buffer", "i", "Buffer", "Buffer", "i", "Buffer", "Buffer", "require_lib", "Buffer", "path", "fs", "path", "_c", "err", "dir", "file", "d", "b", "CreateFileError", "d", "b", "LaunchEditorError", "d", "b", "ReadFileError", "d", "b", "RemoveFileError", "editAsync", "ExternalEditor", "lines", "parser", "_a", "_b", "_c", "headerCorrespondence", "join", "parser", "split", "split", "params", "match", "parse", "_options", "params", "_options", "_options", "path", "match", "check", "node", "wrap", "max", "wrap", "format", "expand", "parse", "index", "expand", "parse", "require_constants", "path", "require_utils", "path", "match", "glob", "require_parse", "parse", "opts", "star", "value", "increment", "match", "rest", "source", "path", "parse", "glob", "state", "match", "format", "require_picomatch", "match", "glob", "path", "GLOBSTAR", "basename", "pattern", "makeRe", "relative", "isAbsolute", "require_utils", "fs", "path", "path", "path", "require_fs", "fs", "fs", "_options", "path", "statSync", "queueMicrotask", "require_constants", "require_fs", "require_utils", "fs", "require_async", "common", "path", "require_sync", "common", "require_fs", "fs", "require_settings", "path", "fs", "_options", "require_out", "path", "handler", "resolve", "require_common", "filter", "common", "_root", "require_async", "common", "_root", "require_async", "_root", "require_stream", "_root", "require_sync", "common", "require_sync", "_root", "require_settings", "path", "_options", "require_out", "require_reader", "path", "require_stream", "resolve", "require_async", "resolve", "info", "match", "require_entry", "path", "require_async", "require_stream", "require_sync", "require_sync", "require_settings", "fs", "_options", "require_out", "FastGlob", "posix", "escapePath", "convertPathToPattern", "win32", "require_utils", "match", "fs", "path", "dirname", "extname", "resolve", "ext", "match", "lines", "basename", "parse", "match", "require_common", "env", "match", "format", "split", "load", "match", "load", "useColors", "posixClasses", "braceEscape", "regexpEscape", "rangesToString", "parseClass", "glob", "escape", "unescape", "minimatch", "assertValidPattern", "Minimatch", "starDotExtRE", "starDotExtTest", "ext", "starDotExtTestDot", "starDotExtTestNocase", "starDotExtTestNocaseDot", "starDotStarRE", "starDotStarTest", "starDotStarTestDot", "dotStarRE", "dotStarTest", "starRE", "starTest", "starTestDot", "qmarksRE", "qmarksTestNocase", "qmarksTestNoExt", "qmarksTestNocaseDot", "qmarksTestNoExtDot", "qmarksTestDot", "qmarksTest", "defaultPlatform", "path", "qmark", "star", "twoStarDot", "twoStarNoDot", "reSpecials", "filter", "defaults", "braceExpand", "MAX_PATTERN_LENGTH", "makeRe", "match", "globMagic", "regExpEscape", "addPatternStart", "minimatch", "path", "params", "fs", "hashElement", "basename", "dir", "options", "isFunction", "dirname", "promise", "resolve", "err", "HashedFolder", "HashedFile", "_a", "lines", "ts", "match", "readFileSync", "resolve", "DefaultValuesForTypeKey", "mixin", "defaults", "key", "alias", "args", "value", "val", "argv", "env", "aliases", "match", "guessType", "resolve", "path", "dirname", "resolve", "readFileSync", "statSync", "format", "resolve", "y18n", "y18n", "dirname", "resolve", "readFileSync", "shim", "cmd", "optional", "global", "result", "usage", "validation", "shim", "builder", "handler", "command", "alias", "c", "optional", "parseOptions", "defaults", "filter", "shim", "fail", "command", "wrap", "ui", "usage", "alias", "sep", "maxWidth", "usage", "command", "shim", "_a", "_b", "_c", "builder", "filter", "alias", "desc", "argv", "usage", "shim", "_a", "key", "shim", "defaultConfig", "shim", "global", "alias", "builder", "handler", "resolve", "parse", "parseOptions", "type", "key", "value", "_a", "_b", "_c", "validation", "k", "completion", "params", "path", "glob", "_a", "_b", "_c", "glob", "start", "final", "i", "acc", "ext", "_hasMagic", "ext", "qmark", "star", "expand", "regExpEscape", "path", "main", "_a", "url", "AsyncResource", "render", "_a", "_b", "process", "esm_default", "colors", "esm_default", "AsyncResource", "handler", "wrapAnsi", "cliWidth", "readline", "AsyncResource", "process", "global", "handler", "ansiEscapes", "stripAnsi", "resolve", "_a", "_b", "MuteStream", "resolve", "signal", "AsyncResource", "import_yoctocolors_cjs", "colors", "esm_default", "import_yoctocolors_cjs", "import_ansi_escapes", "colors", "esm_default", "ansiEscapes", "AsyncResource", "esm_default", "AsyncResource", "error", "esm_default", "esm_default", "esm_default", "_a", "import_yoctocolors_cjs", "normalizeChoices", "esm_default", "colors", "import_yoctocolors_cjs", "normalizeChoices", "esm_default", "colors", "import_ansi_escapes", "esm_default", "ansiEscapes", "import_yoctocolors_cjs", "esm_default", "colors", "isSelectable", "normalizeChoices", "error", "import_yoctocolors_cjs", "import_ansi_escapes", "esm_default", "colors", "isSelectable", "normalizeChoices", "ansiEscapes", "esm_default", "builder", "handler", "writeFileSync", "readFileSync", "writeFileSync", "builder", "handler", "readFileSync", "resolve", "NoteSections", "parse", "_a", "readFileSync", "resolve", "builder", "handler", "_a", "resolve", "gitCommits", "builder", "handler", "import_brace_expansion", "MAX_PATTERN_LENGTH", "assertValidPattern", "posixClasses", "braceEscape", "regexpEscape", "rangesToString", "parseClass", "glob", "unescape", "types", "isExtglobType", "startNoTraversal", "startNoDot", "addPatternStart", "justDots", "reSpecials", "regExpEscape", "qmark", "star", "starNoEmpty", "_root", "_hasMagic", "_uflag", "_parts", "_parent", "_parentIndex", "_negs", "_filledNegs", "_options", "_toString", "_emptyExt", "_fillNegs", "fillNegs_fn", "_parseAST", "parseAST_fn", "_partsToRegExp", "partsToRegExp_fn", "_parseGlob", "parseGlob_fn", "_AST", "_a", "_b", "_c", "glob", "start", "final", "unescape", "AST", "i", "acc", "ext", "parseClass", "escape", "minimatch", "assertValidPattern", "Minimatch", "starDotExtRE", "starDotExtTest", "ext", "starDotExtTestDot", "starDotExtTestNocase", "starDotExtTestNocaseDot", "starDotStarRE", "starDotStarTest", "starDotStarTestDot", "dotStarRE", "dotStarTest", "starRE", "starTest", "starTestDot", "qmarksRE", "qmarksTestNocase", "qmarksTestNoExt", "qmarksTestNocaseDot", "qmarksTestNoExtDot", "qmarksTestDot", "qmarksTest", "defaultPlatform", "path", "sep", "GLOBSTAR", "qmark", "star", "twoStarDot", "twoStarNoDot", "filter", "defaults", "braceExpand", "expand", "makeRe", "match", "globMagic", "regExpEscape", "AST", "escape", "unescape", "process", "minimatch", "join", "join", "resolve", "builder", "handler", "check", "builder", "handler", "check", "builder", "handler", "check", "glob", "builder", "handler", "check", "resolve", "dirname", "join", "fileURLToPath", "resolve", "builder", "path", "resolve", "handler", "readdirSync", "unlinkSync", "join", "builder", "handler", "join", "readdirSync", "unlinkSync", "join", "join", "builder", "handler", "readFileSync", "resolve", "resolve", "readFileSync", "parseYaml", "semver", "match", "builder", "handler", "dirname", "join", "import_typed_graphqlify", "import_typed_graphqlify", "_a", "e", "graphqlTypes", "fileURLToPath", "params", "dirname", "fileURLToPath", "join", "builder", "handler", "import_cli_progress", "import_typed_graphqlify", "PullRequestStatus", "PR_SCHEMA", "graphqlTypes", "builder", "handler", "validation", "Validation", "Validation", "path", "Validation", "path", "Validation", "Validation", "Validation", "Validation", "Validation", "Validation", "Validation", "dirname", "join", "fileURLToPath", "getCommitMessageFilterScriptPath", "resolve", "dirname", "fileURLToPath", "join", "builder", "handler", "env", "builder", "handler", "readFileSync", "resolve", "params", "import_yaml", "glob", "parseYaml", "verify", "resolve", "readFileSync", "verify", "builder", "handler", "builder", "handler", "import_semver", "import_semver", "_a", "_b", "url", "import_semver", "existsSync", "readFileSync", "writeFileSync", "join", "semver", "path", "semver", "builder", "semver", "handler", "import_semver", "resolve", "handler", "semver", "import_semver", "fs", "existsSync", "path", "join", "import_semver", "semver", "info", "url", "import_fast_glob", "join", "fs", "existsSync", "path", "fork", "semver", "import_semver", "semver", "import_semver", "semver", "import_semver", "semver", "import_semver", "semver", "import_semver", "semver", "import_semver", "semver", "import_yaml", "path", "fs", "_a", "_b", "_c", "parseYaml", "CompletionState", "_a", "builder", "handler", "import_semver", "builder", "handler", "semver", "path", "fs", "import_semver", "join", "semver", "builder", "handler", "path", "builder", "handler", "import_fast_glob", "existsSync", "readFileSync", "writeFileSync", "isAbsolute", "relative", "resolve", "readFileSync", "dirname", "join", "resolve", "ts", "statSync", "path", "_a", "path", "resolve", "readFileSync", "ts", "join", "dirname", "dirname", "extname", "resolve", "dirname", "resolve", "extname", "load", "relative", "relative", "path", "isAbsolute", "resolve", "writeFileSync", "existsSync", "readFileSync", "path", "relative", "builder", "handler", "builder", "handler", "import_yaml", "join", "builder", "handler", "join", "name"]
 }
diff --git a/bundles/index.mjs b/bundles/index.mjs
index e1a1e96..f58600a 100755
--- a/bundles/index.mjs
+++ b/bundles/index.mjs
@@ -38,8 +38,9 @@ import {
   mergeLabels,
   priorityLabels,
   requiresLabels,
+  resolveYarnScriptForProject,
   targetLabels
-} from "./chunk-IPKBAWYB.mjs";
+} from "./chunk-PSBRY2K3.mjs";
 import {
   ConfigValidationError,
   DEFAULT_LOG_LEVEL,
@@ -112,6 +113,7 @@ export {
   red,
   requiresLabels,
   reset,
+  resolveYarnScriptForProject,
   setConfig,
   targetLabels,
   underline,
diff --git a/index.d.ts b/index.d.ts
index 63cac9d..abb70ea 100755
--- a/index.d.ts
+++ b/index.d.ts
@@ -19,3 +19,4 @@ export * from './utils/logging.js';
 export * from './utils/git/authenticated-git-client.js';
 export * from './utils/git/git-client.js';
 export * from './utils/git/github.js';
+export { resolveYarnScriptForProject, YarnCommandInfo } from './utils/resolve-yarn-bin.js';
diff --git a/index.js b/index.js
index b4985b6..d17c696 100755
--- a/index.js
+++ b/index.js
@@ -27,4 +27,6 @@ export * from './utils/logging.js';
 export * from './utils/git/authenticated-git-client.js';
 export * from './utils/git/git-client.js';
 export * from './utils/git/github.js';
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9uZy1kZXYvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNkRBQTZEO0FBQzdELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxvRUFBb0U7QUFDcEUsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QywwRUFBMEU7QUFDMUUsaUVBQWlFO0FBQ2pFLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsNEVBQTRFO0FBQzVFLDhEQUE4RDtBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQU9qRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsNEVBQTRFO0FBQzVFLDJCQUEyQjtBQUMzQixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLyBFeHBvc2VzIGNvbmZpZyB0eXBlcywgaGVscGVycyBmb3IgdGhlIGluZGl2aWR1YWwgY29tbWFuZHMuXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2NvbmZpZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1pdC1tZXNzYWdlL2NvbmZpZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC9jb25maWcuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wci9jb25maWcvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWxlYXNlL2NvbmZpZy9pbmRleC5qcyc7XG5cbi8vIEV4cG9zZSBhbGwgc3RhbmRhcmRpemVkIGxhYmVscyB0byBlYXNlIHRvb2xpbmcgcmVseWluZyBvbiBsYWJlbHMuXG5leHBvcnQgKiBmcm9tICcuL3ByL2NvbW1vbi9sYWJlbHMvaW5kZXguanMnO1xuXG4vLyBFeHBvc2VzIHZlcnNpb25pbmcgdXRpbGl0aWVzIHdoaWNoIGFyZSB1c2VmdWwgZm9yIGJ1aWxkaW5nIHNjcmlwdHMgd2l0aFxuLy8gcmVzcGVjdCB0byBBbmd1bGFyJ3MgYnJhbmNoaW5nL3ZlcnNpb25pbmcgYW5kIHJlbGVhc2UgcHJvY2Vzcy5cbmV4cG9ydCAqIGZyb20gJy4vcmVsZWFzZS92ZXJzaW9uaW5nL2luZGV4LmpzJztcblxuLy8gRXhwb3NlcyB0aGUgcmVsZWFzZSBwcmVjaGVjayBjb21tYW5kIHV0aWxpdGllcy4gVGhlc2Ugc2hvdWxkIGJlIGF2YWlsYWJsZVxuLy8gYXMgdGhleSBhcmUgbmVlZGVkIGZvciBhdXRob3JpbmcgcHJlLXJlbGVhc2UgY3VzdG9tIGNoZWNrcy5cbmV4cG9ydCB7UmVsZWFzZVByZWNoZWNrRXJyb3J9IGZyb20gJy4vcmVsZWFzZS9wcmVjaGVjay9pbmRleC5qcyc7XG5cbi8vIEV4cG9zZSB0aGUgZGVmYXVsdCBCYXplbCB3b3Jrc3BhY2Ugc3RhbXBpbmcuIFRoaXMgbWlnaHQgYmUgdXNlZFxuLy8gYnkgcmVwb3NpdG9yaWVzIGZvciBhZGRpdGlvbmFsIGN1c3RvbSBzdGFtcGluZyB2YXJpYWJsZXMuXG5leHBvcnQge0VudlN0YW1wTW9kZX0gZnJvbSAnLi9yZWxlYXNlL3N0YW1waW5nL2Vudi1zdGFtcC5qcyc7XG5leHBvcnQge0VudlN0YW1wQ3VzdG9tUHJpbnRGbn0gZnJvbSAnLi9yZWxlYXNlL3N0YW1waW5nL2NsaS5qcyc7XG5cbi8vIEV4cG9zZXMgbG9nZ2luZyBhbmQgY29uc29sZSB1dGlscyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGNvbnN1bWVycyB0byBlLmcuIGFkZFxuLy8gbWVzc2FnZXMgdG8gdGhlIGRldi1pbmZyYSBsb2cgd2hpY2ggaXMgc3RvcmVkIG9uIGZhaWx1cmVzLlxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9sb2dnaW5nLmpzJztcblxuLy8gRXhwb3NlcyBHaXQvR2l0aHViIGNsaWVudCBjbGFzc2VzIG5lZWRlZCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBzb21lIG9mIHRoZVxuLy8gcmVsZWFzZSB2ZXJzaW9uaW5nIEFQSXMuXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2dpdC9hdXRoZW50aWNhdGVkLWdpdC1jbGllbnQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9naXQvZ2l0LWNsaWVudC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2dpdC9naXRodWIuanMnO1xuIl19
\ No newline at end of file
+// Exposes common utils needed for consumer scripts
+export { resolveYarnScriptForProject } from './utils/resolve-yarn-bin.js';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9uZy1kZXYvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNkRBQTZEO0FBQzdELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxvRUFBb0U7QUFDcEUsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QywwRUFBMEU7QUFDMUUsaUVBQWlFO0FBQ2pFLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsNEVBQTRFO0FBQzVFLDhEQUE4RDtBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQU9qRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsNEVBQTRFO0FBQzVFLDJCQUEyQjtBQUMzQixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxtREFBbUQ7QUFDbkQsT0FBTyxFQUFDLDJCQUEyQixFQUFrQixNQUFNLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTENcbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8vIEV4cG9zZXMgY29uZmlnIHR5cGVzLCBoZWxwZXJzIGZvciB0aGUgaW5kaXZpZHVhbCBjb21tYW5kcy5cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvY29uZmlnLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWl0LW1lc3NhZ2UvY29uZmlnLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWF0L2NvbmZpZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3ByL2NvbmZpZy9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3JlbGVhc2UvY29uZmlnL2luZGV4LmpzJztcblxuLy8gRXhwb3NlIGFsbCBzdGFuZGFyZGl6ZWQgbGFiZWxzIHRvIGVhc2UgdG9vbGluZyByZWx5aW5nIG9uIGxhYmVscy5cbmV4cG9ydCAqIGZyb20gJy4vcHIvY29tbW9uL2xhYmVscy9pbmRleC5qcyc7XG5cbi8vIEV4cG9zZXMgdmVyc2lvbmluZyB1dGlsaXRpZXMgd2hpY2ggYXJlIHVzZWZ1bCBmb3IgYnVpbGRpbmcgc2NyaXB0cyB3aXRoXG4vLyByZXNwZWN0IHRvIEFuZ3VsYXIncyBicmFuY2hpbmcvdmVyc2lvbmluZyBhbmQgcmVsZWFzZSBwcm9jZXNzLlxuZXhwb3J0ICogZnJvbSAnLi9yZWxlYXNlL3ZlcnNpb25pbmcvaW5kZXguanMnO1xuXG4vLyBFeHBvc2VzIHRoZSByZWxlYXNlIHByZWNoZWNrIGNvbW1hbmQgdXRpbGl0aWVzLiBUaGVzZSBzaG91bGQgYmUgYXZhaWxhYmxlXG4vLyBhcyB0aGV5IGFyZSBuZWVkZWQgZm9yIGF1dGhvcmluZyBwcmUtcmVsZWFzZSBjdXN0b20gY2hlY2tzLlxuZXhwb3J0IHtSZWxlYXNlUHJlY2hlY2tFcnJvcn0gZnJvbSAnLi9yZWxlYXNlL3ByZWNoZWNrL2luZGV4LmpzJztcblxuLy8gRXhwb3NlIHRoZSBkZWZhdWx0IEJhemVsIHdvcmtzcGFjZSBzdGFtcGluZy4gVGhpcyBtaWdodCBiZSB1c2VkXG4vLyBieSByZXBvc2l0b3JpZXMgZm9yIGFkZGl0aW9uYWwgY3VzdG9tIHN0YW1waW5nIHZhcmlhYmxlcy5cbmV4cG9ydCB7RW52U3RhbXBNb2RlfSBmcm9tICcuL3JlbGVhc2Uvc3RhbXBpbmcvZW52LXN0YW1wLmpzJztcbmV4cG9ydCB7RW52U3RhbXBDdXN0b21QcmludEZufSBmcm9tICcuL3JlbGVhc2Uvc3RhbXBpbmcvY2xpLmpzJztcblxuLy8gRXhwb3NlcyBsb2dnaW5nIGFuZCBjb25zb2xlIHV0aWxzIHRoYXQgY2FuIGJlIHVzZWQgYnkgY29uc3VtZXJzIHRvIGUuZy4gYWRkXG4vLyBtZXNzYWdlcyB0byB0aGUgZGV2LWluZnJhIGxvZyB3aGljaCBpcyBzdG9yZWQgb24gZmFpbHVyZXMuXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2xvZ2dpbmcuanMnO1xuXG4vLyBFeHBvc2VzIEdpdC9HaXRodWIgY2xpZW50IGNsYXNzZXMgbmVlZGVkIGZvciBpbnRlcmFjdGluZyB3aXRoIHNvbWUgb2YgdGhlXG4vLyByZWxlYXNlIHZlcnNpb25pbmcgQVBJcy5cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZ2l0L2F1dGhlbnRpY2F0ZWQtZ2l0LWNsaWVudC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2dpdC9naXQtY2xpZW50LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZ2l0L2dpdGh1Yi5qcyc7XG5cbi8vIEV4cG9zZXMgY29tbW9uIHV0aWxzIG5lZWRlZCBmb3IgY29uc3VtZXIgc2NyaXB0c1xuZXhwb3J0IHtyZXNvbHZlWWFyblNjcmlwdEZvclByb2plY3QsIFlhcm5Db21tYW5kSW5mb30gZnJvbSAnLi91dGlscy9yZXNvbHZlLXlhcm4tYmluLmpzJztcbiJdfQ==
\ No newline at end of file
diff --git a/index.mjs b/index.mjs
index b4985b6..d17c696 100755
--- a/index.mjs
+++ b/index.mjs
@@ -27,4 +27,6 @@ export * from './utils/logging.js';
 export * from './utils/git/authenticated-git-client.js';
 export * from './utils/git/git-client.js';
 export * from './utils/git/github.js';
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9uZy1kZXYvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNkRBQTZEO0FBQzdELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxvRUFBb0U7QUFDcEUsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QywwRUFBMEU7QUFDMUUsaUVBQWlFO0FBQ2pFLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsNEVBQTRFO0FBQzVFLDhEQUE4RDtBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQU9qRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsNEVBQTRFO0FBQzVFLDJCQUEyQjtBQUMzQixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLyBFeHBvc2VzIGNvbmZpZyB0eXBlcywgaGVscGVycyBmb3IgdGhlIGluZGl2aWR1YWwgY29tbWFuZHMuXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2NvbmZpZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1pdC1tZXNzYWdlL2NvbmZpZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC9jb25maWcuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wci9jb25maWcvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWxlYXNlL2NvbmZpZy9pbmRleC5qcyc7XG5cbi8vIEV4cG9zZSBhbGwgc3RhbmRhcmRpemVkIGxhYmVscyB0byBlYXNlIHRvb2xpbmcgcmVseWluZyBvbiBsYWJlbHMuXG5leHBvcnQgKiBmcm9tICcuL3ByL2NvbW1vbi9sYWJlbHMvaW5kZXguanMnO1xuXG4vLyBFeHBvc2VzIHZlcnNpb25pbmcgdXRpbGl0aWVzIHdoaWNoIGFyZSB1c2VmdWwgZm9yIGJ1aWxkaW5nIHNjcmlwdHMgd2l0aFxuLy8gcmVzcGVjdCB0byBBbmd1bGFyJ3MgYnJhbmNoaW5nL3ZlcnNpb25pbmcgYW5kIHJlbGVhc2UgcHJvY2Vzcy5cbmV4cG9ydCAqIGZyb20gJy4vcmVsZWFzZS92ZXJzaW9uaW5nL2luZGV4LmpzJztcblxuLy8gRXhwb3NlcyB0aGUgcmVsZWFzZSBwcmVjaGVjayBjb21tYW5kIHV0aWxpdGllcy4gVGhlc2Ugc2hvdWxkIGJlIGF2YWlsYWJsZVxuLy8gYXMgdGhleSBhcmUgbmVlZGVkIGZvciBhdXRob3JpbmcgcHJlLXJlbGVhc2UgY3VzdG9tIGNoZWNrcy5cbmV4cG9ydCB7UmVsZWFzZVByZWNoZWNrRXJyb3J9IGZyb20gJy4vcmVsZWFzZS9wcmVjaGVjay9pbmRleC5qcyc7XG5cbi8vIEV4cG9zZSB0aGUgZGVmYXVsdCBCYXplbCB3b3Jrc3BhY2Ugc3RhbXBpbmcuIFRoaXMgbWlnaHQgYmUgdXNlZFxuLy8gYnkgcmVwb3NpdG9yaWVzIGZvciBhZGRpdGlvbmFsIGN1c3RvbSBzdGFtcGluZyB2YXJpYWJsZXMuXG5leHBvcnQge0VudlN0YW1wTW9kZX0gZnJvbSAnLi9yZWxlYXNlL3N0YW1waW5nL2Vudi1zdGFtcC5qcyc7XG5leHBvcnQge0VudlN0YW1wQ3VzdG9tUHJpbnRGbn0gZnJvbSAnLi9yZWxlYXNlL3N0YW1waW5nL2NsaS5qcyc7XG5cbi8vIEV4cG9zZXMgbG9nZ2luZyBhbmQgY29uc29sZSB1dGlscyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGNvbnN1bWVycyB0byBlLmcuIGFkZFxuLy8gbWVzc2FnZXMgdG8gdGhlIGRldi1pbmZyYSBsb2cgd2hpY2ggaXMgc3RvcmVkIG9uIGZhaWx1cmVzLlxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9sb2dnaW5nLmpzJztcblxuLy8gRXhwb3NlcyBHaXQvR2l0aHViIGNsaWVudCBjbGFzc2VzIG5lZWRlZCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBzb21lIG9mIHRoZVxuLy8gcmVsZWFzZSB2ZXJzaW9uaW5nIEFQSXMuXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2dpdC9hdXRoZW50aWNhdGVkLWdpdC1jbGllbnQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9naXQvZ2l0LWNsaWVudC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2dpdC9naXRodWIuanMnO1xuIl19
\ No newline at end of file
+// Exposes common utils needed for consumer scripts
+export { resolveYarnScriptForProject } from './utils/resolve-yarn-bin.js';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9uZy1kZXYvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNkRBQTZEO0FBQzdELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxvRUFBb0U7QUFDcEUsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QywwRUFBMEU7QUFDMUUsaUVBQWlFO0FBQ2pFLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsNEVBQTRFO0FBQzVFLDhEQUE4RDtBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQU9qRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsNEVBQTRFO0FBQzVFLDJCQUEyQjtBQUMzQixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxtREFBbUQ7QUFDbkQsT0FBTyxFQUFDLDJCQUEyQixFQUFrQixNQUFNLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTENcbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8vIEV4cG9zZXMgY29uZmlnIHR5cGVzLCBoZWxwZXJzIGZvciB0aGUgaW5kaXZpZHVhbCBjb21tYW5kcy5cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvY29uZmlnLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWl0LW1lc3NhZ2UvY29uZmlnLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWF0L2NvbmZpZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3ByL2NvbmZpZy9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3JlbGVhc2UvY29uZmlnL2luZGV4LmpzJztcblxuLy8gRXhwb3NlIGFsbCBzdGFuZGFyZGl6ZWQgbGFiZWxzIHRvIGVhc2UgdG9vbGluZyByZWx5aW5nIG9uIGxhYmVscy5cbmV4cG9ydCAqIGZyb20gJy4vcHIvY29tbW9uL2xhYmVscy9pbmRleC5qcyc7XG5cbi8vIEV4cG9zZXMgdmVyc2lvbmluZyB1dGlsaXRpZXMgd2hpY2ggYXJlIHVzZWZ1bCBmb3IgYnVpbGRpbmcgc2NyaXB0cyB3aXRoXG4vLyByZXNwZWN0IHRvIEFuZ3VsYXIncyBicmFuY2hpbmcvdmVyc2lvbmluZyBhbmQgcmVsZWFzZSBwcm9jZXNzLlxuZXhwb3J0ICogZnJvbSAnLi9yZWxlYXNlL3ZlcnNpb25pbmcvaW5kZXguanMnO1xuXG4vLyBFeHBvc2VzIHRoZSByZWxlYXNlIHByZWNoZWNrIGNvbW1hbmQgdXRpbGl0aWVzLiBUaGVzZSBzaG91bGQgYmUgYXZhaWxhYmxlXG4vLyBhcyB0aGV5IGFyZSBuZWVkZWQgZm9yIGF1dGhvcmluZyBwcmUtcmVsZWFzZSBjdXN0b20gY2hlY2tzLlxuZXhwb3J0IHtSZWxlYXNlUHJlY2hlY2tFcnJvcn0gZnJvbSAnLi9yZWxlYXNlL3ByZWNoZWNrL2luZGV4LmpzJztcblxuLy8gRXhwb3NlIHRoZSBkZWZhdWx0IEJhemVsIHdvcmtzcGFjZSBzdGFtcGluZy4gVGhpcyBtaWdodCBiZSB1c2VkXG4vLyBieSByZXBvc2l0b3JpZXMgZm9yIGFkZGl0aW9uYWwgY3VzdG9tIHN0YW1waW5nIHZhcmlhYmxlcy5cbmV4cG9ydCB7RW52U3RhbXBNb2RlfSBmcm9tICcuL3JlbGVhc2Uvc3RhbXBpbmcvZW52LXN0YW1wLmpzJztcbmV4cG9ydCB7RW52U3RhbXBDdXN0b21QcmludEZufSBmcm9tICcuL3JlbGVhc2Uvc3RhbXBpbmcvY2xpLmpzJztcblxuLy8gRXhwb3NlcyBsb2dnaW5nIGFuZCBjb25zb2xlIHV0aWxzIHRoYXQgY2FuIGJlIHVzZWQgYnkgY29uc3VtZXJzIHRvIGUuZy4gYWRkXG4vLyBtZXNzYWdlcyB0byB0aGUgZGV2LWluZnJhIGxvZyB3aGljaCBpcyBzdG9yZWQgb24gZmFpbHVyZXMuXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2xvZ2dpbmcuanMnO1xuXG4vLyBFeHBvc2VzIEdpdC9HaXRodWIgY2xpZW50IGNsYXNzZXMgbmVlZGVkIGZvciBpbnRlcmFjdGluZyB3aXRoIHNvbWUgb2YgdGhlXG4vLyByZWxlYXNlIHZlcnNpb25pbmcgQVBJcy5cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZ2l0L2F1dGhlbnRpY2F0ZWQtZ2l0LWNsaWVudC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2dpdC9naXQtY2xpZW50LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZ2l0L2dpdGh1Yi5qcyc7XG5cbi8vIEV4cG9zZXMgY29tbW9uIHV0aWxzIG5lZWRlZCBmb3IgY29uc3VtZXIgc2NyaXB0c1xuZXhwb3J0IHtyZXNvbHZlWWFyblNjcmlwdEZvclByb2plY3QsIFlhcm5Db21tYW5kSW5mb30gZnJvbSAnLi91dGlscy9yZXNvbHZlLXlhcm4tYmluLmpzJztcbiJdfQ==
\ No newline at end of file
diff --git a/package.json b/package.json
index 0680e01..6065b18 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@angular/ng-dev",
-  "version": "0.0.0-e8d26efbaea89c31f1580c61c968c8119f5247a6",
+  "version": "0.0.0-fa81be50e9a2ea7c9b68819ac5f69f4cc5ff7605",
   "type": "module",
   "private": true,
   "bin": "./bundles/cli.mjs",
diff --git a/utils/version-check.js b/utils/version-check.js
index 54b778e..39c2604 100755
--- a/utils/version-check.js
+++ b/utils/version-check.js
@@ -22,7 +22,7 @@ import { Log } from './logging.js';
  */
 export async function verifyNgDevToolIsUpToDate(workspacePath) {
     // The placeholder will be replaced by the `pkg_npm` substitutions.
-    const localVersion = `0.0.0-e8d26efbaea89c31f1580c61c968c8119f5247a6`;
+    const localVersion = `0.0.0-fa81be50e9a2ea7c9b68819ac5f69f4cc5ff7605`;
     const workspacePackageJsonFile = path.join(workspacePath, workspaceRelativePackageJsonPath);
     const workspaceDirLockFile = path.join(workspacePath, workspaceRelativeYarnLockFilePath);
     try {
diff --git a/utils/version-check.mjs b/utils/version-check.mjs
index 54b778e..39c2604 100755
--- a/utils/version-check.mjs
+++ b/utils/version-check.mjs
@@ -22,7 +22,7 @@ import { Log } from './logging.js';
  */
 export async function verifyNgDevToolIsUpToDate(workspacePath) {
     // The placeholder will be replaced by the `pkg_npm` substitutions.
-    const localVersion = `0.0.0-e8d26efbaea89c31f1580c61c968c8119f5247a6`;
+    const localVersion = `0.0.0-fa81be50e9a2ea7c9b68819ac5f69f4cc5ff7605`;
     const workspacePackageJsonFile = path.join(workspacePath, workspaceRelativePackageJsonPath);
     const workspaceDirLockFile = path.join(workspacePath, workspaceRelativeYarnLockFilePath);
     try {